From d717f31dbd3e18050c40ada0b9294409d8ca6671 Mon Sep 17 00:00:00 2001 From: achantavy Date: Tue, 19 Sep 2023 15:46:04 +0000 Subject: [PATCH] deploy: 779bde5d324aea72dd3572c4f5bf0289a3cd2d07 --- .buildinfo | 4 + .doctrees/contact.doctree | Bin 0 -> 8822 bytes .doctrees/dev/developer-guide.doctree | Bin 0 -> 34933 bytes .doctrees/dev/index.doctree | Bin 0 -> 2569 bytes .doctrees/dev/testing-with-docker.doctree | Bin 0 -> 8495 bytes .doctrees/dev/writing-analysis-jobs.doctree | Bin 0 -> 30226 bytes .doctrees/dev/writing-intel-modules.doctree | Bin 0 -> 121119 bytes .doctrees/environment.pickle | Bin 0 -> 498347 bytes .doctrees/index.doctree | Bin 0 -> 11784 bytes .doctrees/info.doctree | Bin 0 -> 10278 bytes .doctrees/install.doctree | Bin 0 -> 25225 bytes .../_cartography-metadata/schema.doctree | Bin 0 -> 9553 bytes .doctrees/modules/aws/config.doctree | Bin 0 -> 33502 bytes .doctrees/modules/aws/index.doctree | Bin 0 -> 8375 bytes .../modules/aws/permissions-mapping.doctree | Bin 0 -> 10723 bytes .doctrees/modules/aws/schema.doctree | Bin 0 -> 1005791 bytes .doctrees/modules/azure/config.doctree | Bin 0 -> 9187 bytes .doctrees/modules/azure/index.doctree | Bin 0 -> 3815 bytes .doctrees/modules/azure/schema.doctree | Bin 0 -> 360754 bytes .doctrees/modules/bigfix/config.doctree | Bin 0 -> 4754 bytes .doctrees/modules/bigfix/index.doctree | Bin 0 -> 3264 bytes .doctrees/modules/bigfix/schema.doctree | Bin 0 -> 19505 bytes .doctrees/modules/crowdstrike/config.doctree | Bin 0 -> 6966 bytes .doctrees/modules/crowdstrike/index.doctree | Bin 0 -> 3668 bytes .doctrees/modules/crowdstrike/schema.doctree | Bin 0 -> 36375 bytes .doctrees/modules/crxcavator/config.doctree | Bin 0 -> 7717 bytes .doctrees/modules/crxcavator/index.doctree | Bin 0 -> 3514 bytes .doctrees/modules/crxcavator/schema.doctree | Bin 0 -> 25646 bytes .doctrees/modules/cve/config.doctree | Bin 0 -> 4376 bytes .doctrees/modules/cve/index.doctree | Bin 0 -> 3337 bytes .doctrees/modules/cve/schema.doctree | Bin 0 -> 15292 bytes .doctrees/modules/digitalocean/config.doctree | Bin 0 -> 7654 bytes .doctrees/modules/digitalocean/index.doctree | Bin 0 -> 3692 bytes .doctrees/modules/digitalocean/schema.doctree | Bin 0 -> 30132 bytes .doctrees/modules/duo/config.doctree | Bin 0 -> 5405 bytes .doctrees/modules/duo/index.doctree | Bin 0 -> 3567 bytes .doctrees/modules/duo/schema.doctree | Bin 0 -> 88039 bytes .doctrees/modules/gcp/config.doctree | Bin 0 -> 14568 bytes .doctrees/modules/gcp/index.doctree | Bin 0 -> 4075 bytes .doctrees/modules/gcp/schema.doctree | Bin 0 -> 190306 bytes .doctrees/modules/github/config.doctree | Bin 0 -> 19853 bytes .doctrees/modules/github/index.doctree | Bin 0 -> 3587 bytes .doctrees/modules/github/schema.doctree | Bin 0 -> 64585 bytes .doctrees/modules/gsuite/config.doctree | Bin 0 -> 18896 bytes .doctrees/modules/gsuite/index.doctree | Bin 0 -> 3444 bytes .doctrees/modules/gsuite/schema.doctree | Bin 0 -> 29454 bytes .doctrees/modules/index.doctree | Bin 0 -> 2936 bytes .doctrees/modules/jamf/index.doctree | Bin 0 -> 2714 bytes .doctrees/modules/jamf/schema.doctree | Bin 0 -> 6594 bytes .doctrees/modules/kubernetes/config.doctree | Bin 0 -> 6097 bytes .doctrees/modules/kubernetes/index.doctree | Bin 0 -> 4166 bytes .doctrees/modules/kubernetes/schema.doctree | Bin 0 -> 45111 bytes .doctrees/modules/lastpass/config.doctree | Bin 0 -> 6145 bytes .doctrees/modules/lastpass/index.doctree | Bin 0 -> 3264 bytes .doctrees/modules/lastpass/schema.doctree | Bin 0 -> 15309 bytes .doctrees/modules/okta/config.doctree | Bin 0 -> 11444 bytes .doctrees/modules/okta/index.doctree | Bin 0 -> 4502 bytes .doctrees/modules/okta/schema.doctree | Bin 0 -> 68774 bytes .doctrees/modules/pagerduty/config.doctree | Bin 0 -> 6444 bytes .doctrees/modules/pagerduty/index.doctree | Bin 0 -> 4366 bytes .doctrees/modules/pagerduty/schema.doctree | Bin 0 -> 71980 bytes .doctrees/modules/semgrep/config.doctree | Bin 0 -> 5619 bytes .doctrees/modules/semgrep/index.doctree | Bin 0 -> 3888 bytes .doctrees/modules/semgrep/schema.doctree | Bin 0 -> 31367 bytes .doctrees/ops.doctree | Bin 0 -> 15030 bytes .doctrees/usage/drift-detect.doctree | Bin 0 -> 35672 bytes .doctrees/usage/index.doctree | Bin 0 -> 2544 bytes .doctrees/usage/samplequeries.doctree | Bin 0 -> 18741 bytes .doctrees/usage/schema.doctree | Bin 0 -> 1955230 bytes .doctrees/usage/tutorial.doctree | Bin 0 -> 61334 bytes .nojekyll | 0 _images/accountsandrds.png | Bin 0 -> 850883 bytes _images/anonbuckets.png | Bin 0 -> 75474 bytes _images/customizeview.png | Bin 0 -> 30109 bytes _images/ec2-inet-open.png | Bin 0 -> 83351 bytes _images/exposed-internet.png | Bin 0 -> 87258 bytes _images/logo-horizontal.png | Bin 0 -> 27491 bytes _images/selectnode.png | Bin 0 -> 12183 bytes _images/unencryptedcounts.png | Bin 0 -> 23451 bytes _images/unencryptedinstances.png | Bin 0 -> 58149 bytes _sources/contact.md.txt | 10 + _sources/dev/developer-guide.md.txt | 107 + _sources/dev/index.rst.txt | 6 + _sources/dev/testing-with-docker.md.txt | 49 + _sources/dev/writing-analysis-jobs.md.txt | 122 + _sources/dev/writing-intel-modules.md.txt | 342 + _sources/index.rst.txt | 32 + _sources/info.md.txt | 17 + _sources/install.md.txt | 59 + .../_cartography-metadata/schema.md.txt | 18 + _sources/modules/aws/config.md.txt | 92 + _sources/modules/aws/index.rst.txt | 29 + .../modules/aws/permissions-mapping.md.txt | 33 + _sources/modules/aws/schema.md.txt | 3286 ++++ _sources/modules/azure/config.md.txt | 18 + _sources/modules/azure/index.rst.txt | 15 + _sources/modules/azure/schema.md.txt | 1173 ++ _sources/modules/bigfix/config.md.txt | 10 + _sources/modules/bigfix/index.rst.txt | 12 + _sources/modules/bigfix/schema.md.txt | 49 + _sources/modules/crowdstrike/config.md.txt | 11 + _sources/modules/crowdstrike/index.rst.txt | 14 + _sources/modules/crowdstrike/schema.md.txt | 103 + _sources/modules/crxcavator/config.md.txt | 12 + _sources/modules/crxcavator/index.rst.txt | 13 + _sources/modules/crxcavator/schema.md.txt | 67 + _sources/modules/cve/config.md.txt | 8 + _sources/modules/cve/index.rst.txt | 12 + _sources/modules/cve/schema.md.txt | 36 + _sources/modules/digitalocean/config.md.txt | 15 + _sources/modules/digitalocean/index.rst.txt | 14 + _sources/modules/digitalocean/schema.md.txt | 82 + _sources/modules/duo/config.md.txt | 10 + _sources/modules/duo/index.rst.txt | 14 + _sources/modules/duo/schema.md.txt | 311 + _sources/modules/gcp/config.md.txt | 21 + _sources/modules/gcp/index.rst.txt | 16 + _sources/modules/gcp/schema.md.txt | 639 + _sources/modules/github/config.md.txt | 37 + _sources/modules/github/index.rst.txt | 14 + _sources/modules/github/schema.md.txt | 218 + _sources/modules/gsuite/config.md.txt | 93 + _sources/modules/gsuite/index.rst.txt | 13 + _sources/modules/gsuite/schema.md.txt | 62 + _sources/modules/index.rst.txt | 5 + _sources/modules/jamf/index.rst.txt | 7 + _sources/modules/jamf/schema.md.txt | 17 + _sources/modules/kubernetes/config.md.txt | 9 + _sources/modules/kubernetes/index.rst.txt | 17 + _sources/modules/kubernetes/schema.md.txt | 134 + _sources/modules/lastpass/config.md.txt | 9 + _sources/modules/lastpass/index.rst.txt | 12 + _sources/modules/lastpass/schema.md.txt | 45 + _sources/modules/okta/config.md.txt | 12 + _sources/modules/okta/index.rst.txt | 19 + _sources/modules/okta/schema.md.txt | 267 + _sources/modules/pagerduty/config.md.txt | 10 + _sources/modules/pagerduty/index.rst.txt | 18 + _sources/modules/pagerduty/schema.md.txt | 222 + _sources/modules/semgrep/config.md.txt | 9 + _sources/modules/semgrep/index.rst.txt | 13 + _sources/modules/semgrep/schema.md.txt | 91 + _sources/ops.md.txt | 49 + _sources/usage/drift-detect.md.txt | 166 + _sources/usage/index.rst.txt | 7 + _sources/usage/samplequeries.md.txt | 105 + _sources/usage/schema.md.txt | 36 + _sources/usage/tutorial.md.txt | 190 + _static/basic.css | 905 + _static/doctools.js | 323 + _static/documentation_options.js | 12 + _static/file.png | Bin 0 -> 286 bytes _static/fonts/font-awesome.css | 4 + _static/fonts/material-icons.css | 13 + _static/fonts/specimen/FontAwesome.ttf | Bin 0 -> 165548 bytes _static/fonts/specimen/FontAwesome.woff | Bin 0 -> 98024 bytes _static/fonts/specimen/FontAwesome.woff2 | Bin 0 -> 77160 bytes .../fonts/specimen/MaterialIcons-Regular.ttf | Bin 0 -> 128180 bytes .../fonts/specimen/MaterialIcons-Regular.woff | Bin 0 -> 57620 bytes .../specimen/MaterialIcons-Regular.woff2 | Bin 0 -> 44300 bytes _static/images/favicon.png | Bin 0 -> 521 bytes _static/images/icons/bitbucket.1b09e088.svg | 1 + _static/images/icons/bitbucket.svg | 1 + _static/images/icons/github.f0b8504a.svg | 1 + _static/images/icons/github.svg | 1 + _static/images/icons/gitlab.6dd19c00.svg | 1 + _static/images/icons/gitlab.svg | 1 + _static/javascripts/application.js | 2540 +++ _static/javascripts/lunr/lunr.da.js | 1 + _static/javascripts/lunr/lunr.de.js | 1 + _static/javascripts/lunr/lunr.du.js | 1 + _static/javascripts/lunr/lunr.es.js | 1 + _static/javascripts/lunr/lunr.fi.js | 1 + _static/javascripts/lunr/lunr.fr.js | 1 + _static/javascripts/lunr/lunr.hu.js | 1 + _static/javascripts/lunr/lunr.it.js | 1 + _static/javascripts/lunr/lunr.ja.js | 1 + _static/javascripts/lunr/lunr.jp.js | 1 + _static/javascripts/lunr/lunr.multi.js | 1 + _static/javascripts/lunr/lunr.nl.js | 1 + _static/javascripts/lunr/lunr.no.js | 1 + _static/javascripts/lunr/lunr.pt.js | 1 + _static/javascripts/lunr/lunr.ro.js | 1 + _static/javascripts/lunr/lunr.ru.js | 1 + .../javascripts/lunr/lunr.stemmer.support.js | 1 + _static/javascripts/lunr/lunr.sv.js | 1 + _static/javascripts/lunr/lunr.th.js | 1 + _static/javascripts/lunr/lunr.tr.js | 1 + _static/javascripts/lunr/tinyseg.js | 1 + _static/javascripts/lunr/wordcut.js | 1 + _static/javascripts/modernizr.js | 1 + _static/javascripts/version_dropdown.js | 29 + _static/jquery-3.5.1.js | 10872 +++++++++++ _static/jquery.js | 2 + _static/jquery.min.map | 1 + _static/language_data.js | 297 + _static/logo-vertical.svg | 20 + _static/material.css | 35 + _static/minus.png | Bin 0 -> 90 bytes _static/plus.png | Bin 0 -> 90 bytes _static/pygments.css | 75 + _static/searchtools.js | 529 + _static/stylesheets/application-fixes.css | 423 + _static/stylesheets/application-palette.css | 1352 ++ _static/stylesheets/application.css | 2871 +++ _static/underscore-1.13.1.js | 2042 ++ _static/underscore.js | 6 + contact.html | 558 + dev/developer-guide.html | 725 + dev/index.html | 619 + dev/testing-with-docker.html | 639 + dev/writing-analysis-jobs.html | 756 + dev/writing-intel-modules.html | 1075 ++ index.html | 547 + info.html | 568 + install.html | 607 + modules/_cartography-metadata/schema.html | 555 + modules/aws/config.html | 685 + modules/aws/index.html | 593 + modules/aws/permissions-mapping.html | 626 + modules/aws/schema.html | 8248 ++++++++ modules/azure/config.html | 581 + modules/azure/index.html | 572 + modules/azure/schema.html | 3656 ++++ modules/bigfix/config.html | 571 + modules/bigfix/index.html | 569 + modules/bigfix/schema.html | 703 + modules/crowdstrike/config.html | 575 + modules/crowdstrike/index.html | 571 + modules/crowdstrike/schema.html | 855 + modules/crxcavator/config.html | 578 + modules/crxcavator/index.html | 570 + modules/crxcavator/schema.html | 759 + modules/cve/config.html | 569 + modules/cve/index.html | 569 + modules/cve/schema.html | 673 + modules/digitalocean/config.html | 579 + modules/digitalocean/index.html | 571 + modules/digitalocean/schema.html | 802 + modules/duo/config.html | 571 + modules/duo/index.html | 571 + modules/duo/schema.html | 1242 ++ modules/gcp/config.html | 604 + modules/gcp/index.html | 573 + modules/gcp/schema.html | 1944 ++ modules/github/config.html | 613 + modules/github/index.html | 571 + modules/github/schema.html | 1037 + modules/gsuite/config.html | 675 + modules/gsuite/index.html | 577 + modules/gsuite/schema.html | 751 + modules/index.html | 535 + modules/jamf/index.html | 567 + modules/jamf/schema.html | 611 + modules/kubernetes/config.html | 573 + modules/kubernetes/index.html | 574 + modules/kubernetes/schema.html | 955 + modules/lastpass/config.html | 573 + modules/lastpass/index.html | 569 + modules/lastpass/schema.html | 682 + modules/okta/config.html | 579 + modules/okta/index.html | 576 + modules/okta/schema.html | 1180 ++ modules/pagerduty/config.html | 574 + modules/pagerduty/index.html | 575 + modules/pagerduty/schema.html | 1117 ++ modules/semgrep/config.html | 570 + modules/semgrep/index.html | 570 + modules/semgrep/schema.html | 788 + objects.inv | Bin 0 -> 7968 bytes ops.html | 660 + search.html | 522 + searchindex.js | 1 + usage/drift-detect.html | 753 + usage/index.html | 1351 ++ usage/samplequeries.html | 816 + usage/schema.html | 15589 ++++++++++++++++ usage/tutorial.html | 860 + 278 files changed, 104740 insertions(+) create mode 100644 .buildinfo create mode 100644 .doctrees/contact.doctree create mode 100644 .doctrees/dev/developer-guide.doctree create mode 100644 .doctrees/dev/index.doctree create mode 100644 .doctrees/dev/testing-with-docker.doctree create mode 100644 .doctrees/dev/writing-analysis-jobs.doctree create mode 100644 .doctrees/dev/writing-intel-modules.doctree create mode 100644 .doctrees/environment.pickle create mode 100644 .doctrees/index.doctree create mode 100644 .doctrees/info.doctree create mode 100644 .doctrees/install.doctree create mode 100644 .doctrees/modules/_cartography-metadata/schema.doctree create mode 100644 .doctrees/modules/aws/config.doctree create mode 100644 .doctrees/modules/aws/index.doctree create mode 100644 .doctrees/modules/aws/permissions-mapping.doctree create mode 100644 .doctrees/modules/aws/schema.doctree create mode 100644 .doctrees/modules/azure/config.doctree create mode 100644 .doctrees/modules/azure/index.doctree create mode 100644 .doctrees/modules/azure/schema.doctree create mode 100644 .doctrees/modules/bigfix/config.doctree create mode 100644 .doctrees/modules/bigfix/index.doctree create mode 100644 .doctrees/modules/bigfix/schema.doctree create mode 100644 .doctrees/modules/crowdstrike/config.doctree create mode 100644 .doctrees/modules/crowdstrike/index.doctree create mode 100644 .doctrees/modules/crowdstrike/schema.doctree create mode 100644 .doctrees/modules/crxcavator/config.doctree create mode 100644 .doctrees/modules/crxcavator/index.doctree create mode 100644 .doctrees/modules/crxcavator/schema.doctree create mode 100644 .doctrees/modules/cve/config.doctree create mode 100644 .doctrees/modules/cve/index.doctree create mode 100644 .doctrees/modules/cve/schema.doctree create mode 100644 .doctrees/modules/digitalocean/config.doctree create mode 100644 .doctrees/modules/digitalocean/index.doctree create mode 100644 .doctrees/modules/digitalocean/schema.doctree create mode 100644 .doctrees/modules/duo/config.doctree create mode 100644 .doctrees/modules/duo/index.doctree create mode 100644 .doctrees/modules/duo/schema.doctree create mode 100644 .doctrees/modules/gcp/config.doctree create mode 100644 .doctrees/modules/gcp/index.doctree create mode 100644 .doctrees/modules/gcp/schema.doctree create mode 100644 .doctrees/modules/github/config.doctree create mode 100644 .doctrees/modules/github/index.doctree create mode 100644 .doctrees/modules/github/schema.doctree create mode 100644 .doctrees/modules/gsuite/config.doctree create mode 100644 .doctrees/modules/gsuite/index.doctree create mode 100644 .doctrees/modules/gsuite/schema.doctree create mode 100644 .doctrees/modules/index.doctree create mode 100644 .doctrees/modules/jamf/index.doctree create mode 100644 .doctrees/modules/jamf/schema.doctree create mode 100644 .doctrees/modules/kubernetes/config.doctree create mode 100644 .doctrees/modules/kubernetes/index.doctree create mode 100644 .doctrees/modules/kubernetes/schema.doctree create mode 100644 .doctrees/modules/lastpass/config.doctree create mode 100644 .doctrees/modules/lastpass/index.doctree create mode 100644 .doctrees/modules/lastpass/schema.doctree create mode 100644 .doctrees/modules/okta/config.doctree create mode 100644 .doctrees/modules/okta/index.doctree create mode 100644 .doctrees/modules/okta/schema.doctree create mode 100644 .doctrees/modules/pagerduty/config.doctree create mode 100644 .doctrees/modules/pagerduty/index.doctree create mode 100644 .doctrees/modules/pagerduty/schema.doctree create mode 100644 .doctrees/modules/semgrep/config.doctree create mode 100644 .doctrees/modules/semgrep/index.doctree create mode 100644 .doctrees/modules/semgrep/schema.doctree create mode 100644 .doctrees/ops.doctree create mode 100644 .doctrees/usage/drift-detect.doctree create mode 100644 .doctrees/usage/index.doctree create mode 100644 .doctrees/usage/samplequeries.doctree create mode 100644 .doctrees/usage/schema.doctree create mode 100644 .doctrees/usage/tutorial.doctree create mode 100644 .nojekyll create mode 100644 _images/accountsandrds.png create mode 100644 _images/anonbuckets.png create mode 100644 _images/customizeview.png create mode 100644 _images/ec2-inet-open.png create mode 100644 _images/exposed-internet.png create mode 100644 _images/logo-horizontal.png create mode 100644 _images/selectnode.png create mode 100644 _images/unencryptedcounts.png create mode 100644 _images/unencryptedinstances.png create mode 100644 _sources/contact.md.txt create mode 100644 _sources/dev/developer-guide.md.txt create mode 100644 _sources/dev/index.rst.txt create mode 100644 _sources/dev/testing-with-docker.md.txt create mode 100644 _sources/dev/writing-analysis-jobs.md.txt create mode 100644 _sources/dev/writing-intel-modules.md.txt create mode 100644 _sources/index.rst.txt create mode 100644 _sources/info.md.txt create mode 100644 _sources/install.md.txt create mode 100644 _sources/modules/_cartography-metadata/schema.md.txt create mode 100644 _sources/modules/aws/config.md.txt create mode 100644 _sources/modules/aws/index.rst.txt create mode 100644 _sources/modules/aws/permissions-mapping.md.txt create mode 100644 _sources/modules/aws/schema.md.txt create mode 100644 _sources/modules/azure/config.md.txt create mode 100644 _sources/modules/azure/index.rst.txt create mode 100644 _sources/modules/azure/schema.md.txt create mode 100644 _sources/modules/bigfix/config.md.txt create mode 100644 _sources/modules/bigfix/index.rst.txt create mode 100644 _sources/modules/bigfix/schema.md.txt create mode 100644 _sources/modules/crowdstrike/config.md.txt create mode 100644 _sources/modules/crowdstrike/index.rst.txt create mode 100644 _sources/modules/crowdstrike/schema.md.txt create mode 100644 _sources/modules/crxcavator/config.md.txt create mode 100644 _sources/modules/crxcavator/index.rst.txt create mode 100644 _sources/modules/crxcavator/schema.md.txt create mode 100644 _sources/modules/cve/config.md.txt create mode 100644 _sources/modules/cve/index.rst.txt create mode 100644 _sources/modules/cve/schema.md.txt create mode 100644 _sources/modules/digitalocean/config.md.txt create mode 100644 _sources/modules/digitalocean/index.rst.txt create mode 100644 _sources/modules/digitalocean/schema.md.txt create mode 100644 _sources/modules/duo/config.md.txt create mode 100644 _sources/modules/duo/index.rst.txt create mode 100644 _sources/modules/duo/schema.md.txt create mode 100644 _sources/modules/gcp/config.md.txt create mode 100644 _sources/modules/gcp/index.rst.txt create mode 100644 _sources/modules/gcp/schema.md.txt create mode 100644 _sources/modules/github/config.md.txt create mode 100644 _sources/modules/github/index.rst.txt create mode 100644 _sources/modules/github/schema.md.txt create mode 100644 _sources/modules/gsuite/config.md.txt create mode 100644 _sources/modules/gsuite/index.rst.txt create mode 100644 _sources/modules/gsuite/schema.md.txt create mode 100644 _sources/modules/index.rst.txt create mode 100644 _sources/modules/jamf/index.rst.txt create mode 100644 _sources/modules/jamf/schema.md.txt create mode 100644 _sources/modules/kubernetes/config.md.txt create mode 100644 _sources/modules/kubernetes/index.rst.txt create mode 100644 _sources/modules/kubernetes/schema.md.txt create mode 100644 _sources/modules/lastpass/config.md.txt create mode 100644 _sources/modules/lastpass/index.rst.txt create mode 100644 _sources/modules/lastpass/schema.md.txt create mode 100644 _sources/modules/okta/config.md.txt create mode 100644 _sources/modules/okta/index.rst.txt create mode 100644 _sources/modules/okta/schema.md.txt create mode 100644 _sources/modules/pagerduty/config.md.txt create mode 100644 _sources/modules/pagerduty/index.rst.txt create mode 100644 _sources/modules/pagerduty/schema.md.txt create mode 100644 _sources/modules/semgrep/config.md.txt create mode 100644 _sources/modules/semgrep/index.rst.txt create mode 100644 _sources/modules/semgrep/schema.md.txt create mode 100644 _sources/ops.md.txt create mode 100644 _sources/usage/drift-detect.md.txt create mode 100644 _sources/usage/index.rst.txt create mode 100644 _sources/usage/samplequeries.md.txt create mode 100644 _sources/usage/schema.md.txt create mode 100644 _sources/usage/tutorial.md.txt create mode 100644 _static/basic.css create mode 100644 _static/doctools.js create mode 100644 _static/documentation_options.js create mode 100644 _static/file.png create mode 100644 _static/fonts/font-awesome.css create mode 100644 _static/fonts/material-icons.css create mode 100644 _static/fonts/specimen/FontAwesome.ttf create mode 100644 _static/fonts/specimen/FontAwesome.woff create mode 100644 _static/fonts/specimen/FontAwesome.woff2 create mode 100644 _static/fonts/specimen/MaterialIcons-Regular.ttf create mode 100644 _static/fonts/specimen/MaterialIcons-Regular.woff create mode 100644 _static/fonts/specimen/MaterialIcons-Regular.woff2 create mode 100644 _static/images/favicon.png create mode 100644 _static/images/icons/bitbucket.1b09e088.svg create mode 100644 _static/images/icons/bitbucket.svg create mode 100644 _static/images/icons/github.f0b8504a.svg create mode 100644 _static/images/icons/github.svg create mode 100644 _static/images/icons/gitlab.6dd19c00.svg create mode 100644 _static/images/icons/gitlab.svg create mode 100644 _static/javascripts/application.js create mode 100644 _static/javascripts/lunr/lunr.da.js create mode 100644 _static/javascripts/lunr/lunr.de.js create mode 100644 _static/javascripts/lunr/lunr.du.js create mode 100644 _static/javascripts/lunr/lunr.es.js create mode 100644 _static/javascripts/lunr/lunr.fi.js create mode 100644 _static/javascripts/lunr/lunr.fr.js create mode 100644 _static/javascripts/lunr/lunr.hu.js create mode 100644 _static/javascripts/lunr/lunr.it.js create mode 100644 _static/javascripts/lunr/lunr.ja.js create mode 100644 _static/javascripts/lunr/lunr.jp.js create mode 100644 _static/javascripts/lunr/lunr.multi.js create mode 100644 _static/javascripts/lunr/lunr.nl.js create mode 100644 _static/javascripts/lunr/lunr.no.js create mode 100644 _static/javascripts/lunr/lunr.pt.js create mode 100644 _static/javascripts/lunr/lunr.ro.js create mode 100644 _static/javascripts/lunr/lunr.ru.js create mode 100644 _static/javascripts/lunr/lunr.stemmer.support.js create mode 100644 _static/javascripts/lunr/lunr.sv.js create mode 100644 _static/javascripts/lunr/lunr.th.js create mode 100644 _static/javascripts/lunr/lunr.tr.js create mode 100644 _static/javascripts/lunr/tinyseg.js create mode 100644 _static/javascripts/lunr/wordcut.js create mode 100644 _static/javascripts/modernizr.js create mode 100644 _static/javascripts/version_dropdown.js create mode 100644 _static/jquery-3.5.1.js create mode 100644 _static/jquery.js create mode 100644 _static/jquery.min.map create mode 100644 _static/language_data.js create mode 100644 _static/logo-vertical.svg create mode 100644 _static/material.css create mode 100644 _static/minus.png create mode 100644 _static/plus.png create mode 100644 _static/pygments.css create mode 100644 _static/searchtools.js create mode 100644 _static/stylesheets/application-fixes.css create mode 100644 _static/stylesheets/application-palette.css create mode 100644 _static/stylesheets/application.css create mode 100644 _static/underscore-1.13.1.js create mode 100644 _static/underscore.js create mode 100644 contact.html create mode 100644 dev/developer-guide.html create mode 100644 dev/index.html create mode 100644 dev/testing-with-docker.html create mode 100644 dev/writing-analysis-jobs.html create mode 100644 dev/writing-intel-modules.html create mode 100644 index.html create mode 100644 info.html create mode 100644 install.html create mode 100644 modules/_cartography-metadata/schema.html create mode 100644 modules/aws/config.html create mode 100644 modules/aws/index.html create mode 100644 modules/aws/permissions-mapping.html create mode 100644 modules/aws/schema.html create mode 100644 modules/azure/config.html create mode 100644 modules/azure/index.html create mode 100644 modules/azure/schema.html create mode 100644 modules/bigfix/config.html create mode 100644 modules/bigfix/index.html create mode 100644 modules/bigfix/schema.html create mode 100644 modules/crowdstrike/config.html create mode 100644 modules/crowdstrike/index.html create mode 100644 modules/crowdstrike/schema.html create mode 100644 modules/crxcavator/config.html create mode 100644 modules/crxcavator/index.html create mode 100644 modules/crxcavator/schema.html create mode 100644 modules/cve/config.html create mode 100644 modules/cve/index.html create mode 100644 modules/cve/schema.html create mode 100644 modules/digitalocean/config.html create mode 100644 modules/digitalocean/index.html create mode 100644 modules/digitalocean/schema.html create mode 100644 modules/duo/config.html create mode 100644 modules/duo/index.html create mode 100644 modules/duo/schema.html create mode 100644 modules/gcp/config.html create mode 100644 modules/gcp/index.html create mode 100644 modules/gcp/schema.html create mode 100644 modules/github/config.html create mode 100644 modules/github/index.html create mode 100644 modules/github/schema.html create mode 100644 modules/gsuite/config.html create mode 100644 modules/gsuite/index.html create mode 100644 modules/gsuite/schema.html create mode 100644 modules/index.html create mode 100644 modules/jamf/index.html create mode 100644 modules/jamf/schema.html create mode 100644 modules/kubernetes/config.html create mode 100644 modules/kubernetes/index.html create mode 100644 modules/kubernetes/schema.html create mode 100644 modules/lastpass/config.html create mode 100644 modules/lastpass/index.html create mode 100644 modules/lastpass/schema.html create mode 100644 modules/okta/config.html create mode 100644 modules/okta/index.html create mode 100644 modules/okta/schema.html create mode 100644 modules/pagerduty/config.html create mode 100644 modules/pagerduty/index.html create mode 100644 modules/pagerduty/schema.html create mode 100644 modules/semgrep/config.html create mode 100644 modules/semgrep/index.html create mode 100644 modules/semgrep/schema.html create mode 100644 objects.inv create mode 100644 ops.html create mode 100644 search.html create mode 100644 searchindex.js create mode 100644 usage/drift-detect.html create mode 100644 usage/index.html create mode 100644 usage/samplequeries.html create mode 100644 usage/schema.html create mode 100644 usage/tutorial.html diff --git a/.buildinfo b/.buildinfo new file mode 100644 index 0000000000..9c970828cf --- /dev/null +++ b/.buildinfo @@ -0,0 +1,4 @@ +# Sphinx build info version 1 +# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. +config: 20c30e1e72d3581b39cb4679c80b9b22 +tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/.doctrees/contact.doctree b/.doctrees/contact.doctree new file mode 100644 index 0000000000000000000000000000000000000000..d01254a478ca75ea08e846bf1b6b4a6e739e7c93 GIT binary patch literal 8822 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 literal 0 HcmV?d00001 diff --git a/.doctrees/dev/index.doctree b/.doctrees/dev/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..8964fe9ac01437cb630b28777533555f507488a7 GIT binary patch literal 2569 zcmZWrNpBlB6n5fBmTXI2vUGEb9J;s#Wc5&>NscXgsZk$#=*=LgAvI(@Lr%F^(jh>5 zXb}Uvh5fs2KhBKCmLos_`S=#T_rCXW{^YR}??{J3{b6YZ-{O@E1wH89Gdy1CLYQTJTyP47K%J6xu)2}FQ=3*E! zem#|n@gXtA==PJYuf`~I<1 zju(?sGhe`Ovi=}hiPgqB=TM=Jv#GHz6|gDq8Fn!| zDx~7^{DF8O_Wg{CCupL0hNgdr#vQb6pDf@NHIGz$jH46$KfR1zd?$8cw;hJ01E1Iy zFU2eI`n-SN+g;Nx5AiB_c@V~#H>v-m&F>=YuO;;bFT%ibms$jFl427_cmK8R8O)!E8SJ>{hTW<>NM#!Bcgr-vj?WLBiVmO{_ z?UZ)>&f)okFtR*z=qXvwwJA~1Ft)&MMKD%rDlJ@o(nxs0YY9nUBkMUq#MYo49F)ND zN*hOtg!y>>FzgCiblYAy;!BB&IqJM!EA>K;@tMyNZoHsIp<>W5oR*LbouL^|NyWEe zELG(l;VRP%T9`cV=98BbE3rP=JS5y0ZHS7`eDiQ)OZlY1^i z9>$H++Y78sPc{$kS%$-ufJK!A>Qf-07)AwExu-ctxj_oyA%-qIHaydY5ez9Hf-s3m zEK`lXPl})|B z6;+mdrpdBQcsk_EN?T6uTGkNB9J!WOx*DGcgh@+hMM|W-<<5F0#H+B6WD-%)mS{$; z8d>vGc$QWOV!25=Xm9ey(CCEDcBmI36G&%gN= zbsd{|b}vkl+=e+>hjCitm6F`e>oCHV1wsrRone3&==XdOo&%00=_a$gKCxB8$4xl2 zE9K~t2$_ol|C;%9LjAri!JFiFkCC=0)8l&IY)PRr+7N$uo(YQSLED>ALyhYK!urZr z2$5dYnsZtT0O>;_)f@;|bHZ_A3F~K@dixwt0VA>mfNi>Lv$t-A*n)Eh+0(4h^osD3 z%7Wn4H@tpb--e^)GIiSWV%|{MP1xq@I$ro$7&H`unFRvzs!Gg+BaWJ!gOWh;N4O0T z*8+LwZH)*f^ XPyqDu)Sq3JNUWWA@x9pgv$OvJaFGo1 literal 0 HcmV?d00001 diff --git a/.doctrees/dev/testing-with-docker.doctree b/.doctrees/dev/testing-with-docker.doctree new file mode 100644 index 0000000000000000000000000000000000000000..fa3a23888c141f841768d173406858254aaa6950 GIT binary patch literal 8495 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 !0L}yjGJROR+Fr!OcQI;Ep;=n@o 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 aoIM|t$}hi~OJgUbqpe^$T`I@Omj4I(FJL18 literal 0 HcmV?d00001 diff --git a/.doctrees/index.doctree b/.doctrees/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..c64c21ba9a2fc62948299907873f2d9a6e7eb727 GIT binary patch literal 11784 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 literal 0 HcmV?d00001 diff --git a/.doctrees/info.doctree b/.doctrees/info.doctree new file mode 100644 index 0000000000000000000000000000000000000000..4023c8c57402db4d6fb79abdcde8d4f99926ce17 GIT binary patch literal 10278 zcmeHNON<;x8D4w6UhmpouM;~M$Bvqa$j_ZgLIR27#PTKrtR)-EPRN6V-k$E7soL$w z&{e&&gJdZjBGys~fzmmI6A_UjAx@l7xFZg5BI3pc2_YfDDN=+u!1q@_XFRj(b$kd4 zD@|`#b=6;gef7WUuX=Opo%>Hum_L0;cDV>Q8jk0Mk;i1J_j!?<1T0kP+v%Afq&L#j zdM0*yGD>2XrFsG_TrPYsW?}jUKF(2lC4AY)3CzT-&F~ei3krNn@A0Efl=A5}Qa+=n zMBsD=KEK{*Sf=vAh3vms2so14Lh@zWnEBC++k|lW{!_GL}PZ=46A1y zrDD-a6lO`YniQVI4D__?J5r(&?^B@@WN-Vtq+1nQj=P3wnKqN4obow6nZzR1#|_sb zxlQ$~>x7>0oNP$F>uk!uEE7GgoDR`W`MloSb$}HJ9?*LWj4w5L6tHHTgdvNYy(nI5 zx=yU3PV97ff8f2t&;<0oW-L`xgzcyicqz~pAxoE&mc#GET=_A;ejL9O_&tE1g}Ls< zgtnbR!cX&Aeuhu#8M_n=KFQDWbNoE$V=<>CbCrm~+G_K?w9uz%rIk?rz)Bx^nLEl7 z(t5U<(xpN$_Poe8NbvONR&S+7Ao&!(1fHJej}s@$hLQ0Tr71jx=1*kJiSeZw!}$!b zcMPaC-t~ty#)wbHy4qJf3M~~yzNLtJHwtCsXA5fq^w^OqPF$75%pzG*=oNZs%dD9B z4xuBt=t`@_RF5%`;w(T%w8B#*LWy-|8BVNq!FpCV>OqA(tJTNwE6Xf;Y}LBRmFmh1 z&1SFHYlKwQaHHUv72AScy%vOAsJWBc>K~!c zWb$gCFX4MG3`G8`;CFJ!kbbRLfWquwEGqQ;%e+6r&@YboP>K!zCC2#0?dc4$M7I5d z8cRnYE6XJZpVTd(BLWFCZn4m5`7qU1D~=q`g2A?;w#7EOegtOX8}4;h@=QRRs;hd_k?5?7oG=$@3Afm@#6N!c!WOU zD=-qT3zwaO`^dbAj53FVuU6pnt#v2!I`lmWy2i0sPAf_j`nvGu3iO3slbI`kX8!Ac zaQ=UJ^WD3FKqXNhLPUOj`w~@HpZf~Qs!P->CwEOuT+bHDih2mYNMAy$h{Up`!zy>9 zSjqF&HMsE?8KS+sohPIlt+N>Nq7YSDT}N>=qj+J_PuM_P0f|wfjUXUqjyJy6pRgi59}awoq0(jshz&qDVnV7FkgDzzGw_9}soL<0$EHXhV;+sAs4k zsuY*7xb3*?yoG*QtdeU4X4G~N&_GWRptz2YXtQIYoy%9Rl%n^4pb(aC4OAtezk{g# zcIOg$Y@~$#X!pcKUF~7f!$_G0ib9yHl~Rbxn6e`jPg)dEHod5~8ih#7J!Spf#^QcbCOtpQn(Jc6|gD6~Mebb3-*{DA2{i1dA^71#X zy?XVft5;vmhJmeRBl~zswBS1}*>wFV@dBsYHS>AhI&WbgXhBgt(Kee^C1{g|8p-@N zNp*{nOt%x??=Q5OL!rHA_2DRto(tC~>&kpGip$ z%ed<<_7~7>a%`OSq4W$s>Kcp+$YHYr70qUXUAn{+ptCfd8v(MytC51|)@U7jIh1?> z*2r=gM}{Jn2m2XpfMBZXqSZEJ!A)qjeYPQ5!Y3a@6R5e|d8$P^K;VuIBeT8_{xTxwd;-BjyZV{>FVf;@6rV7yn>%u zoq&hk5!kEys0Y_)N8nxAqyYmp2KR-LxR0Un%n<(h3@Y%;iecne=fUvS;Pd|w^jMQ> z-}BhY9az)??>*GFwzgRrXg|1Pw9k%5dyHk@5!z#D45OV*paQ!n--7j{cY^gJD?4>W z1<;e|Si{*A0rPV^hWT3=%%?{P^+;zp2IO-iMS3KKVTcXy6~cM(7Jy&86M!FGAs4kH zzg-|aWqQ^y&MSa&d&ek;8OosKUq>uJ0q!*LwlOzy0n;n4b3q?;(G;WH-= zt$_9lS(1si1QHtr+8^QE&>PqbAV)w+td(xeB(f5DB28I~*OAAN*S~H(`tT!9R(6t( zF_70%$WWSnXU|bCzqJ1JYsuP6!E4u-uCq04nyRhC)1Qi~nxXiVgkW2KHDp_AG1~Io zoql2RPHqWmZF1W*1oOWcVt(7LjNXnW*XIiFc^ivb7*K=az^13MGvOFAr~_OsAkW>B zBzLmCKyp`0a}PA6v~AJQ2xyh>F3(|Be?Mq;3(m1yYSf@dVT5elo+6&86tU`{5A}F| zOs;+&pP-}Vsqi*=`XlvofMJVJo;>q&v?tl6=a6HhQ)xRtkzUpZikj?TSz}wNDAR!p z1Bc5C07dQ)XUpGqkjs?SnbcFudM3}1MsbRQITTko#zA3!HjGVa1{7!WViNl(9aNEP z)A>7n#c)&LEAFTIo^})|q_tS>K z>0r3I9;_&^LJOpE1Jul@7>QMyRJy6>MA%J~jkAHsL#tHJB&xme#DWxfKQZ{xW^o+F zHqtss0>!|YSansZ55bTQQkgPTQhjph%Mgjxc_a(Izq3C^L@WW7NJx_Cx0Ez=5 zA9G6eLEi~G39felaS!F)xF@3TjTtgdo?RY;2nffr-iw3uHl_(gglEIVwZ%rt_v$%H zG}~2`-Ysyc;h={j54#jR0Bb5tq8j-&B6!Hu0NqfUoLE`al`Qchdm|u`nm6Y(%&zw| zQsOFmT}S~3M;&dX>gk*a6Un)pE);^F(+4ma2^BDI4$Tkd&Fr>7evU4a+(&O11gAQ5 zP=ggFY95w+KQ7diMTqEO(ke(!*nuGWA`mKle*To6>$0w09=Ou{4p0pp_1mNz+Nzt~ zZl7)`G@`iEqzD!*Wi!=BsfS?%J#58rZi-ANF7cp#;h~2g1Fmy%+Z`H)YN}yQ6vLPV zU_&5#Ylfk`CWe^7?E~nLr+B)wPoIQD26m~OCHuDQl6>6M^RkcNV8iC3!+rc9y|^4i zf`32;FlhGo5@@vqO!t~{RyHJb&F@NHb2LbyZM zhc@+LB1tPvN#x9$-PDsTT&J5jdS7Nmptg`e#7+V_q3rDN-pI>ga07`_xJ?Bb9$h!O z0XsKPn_WplHK?`A0v!(1Z6?%DQ)Tvkn!nHA;|Y&f{|^7P`Zx0XpYV@Yk5lOj^tecm zC+YEBdVGf-Z_?uiJ$_D)pV8w_^!OtliJl?)s^7(g>0;6Q%RJdM^q2W3n}+nJA-icv zZW?l%hSa7ZvzhQ?)bTx>>&M*BxcY#9%>S9ObeM)REPaLE3`;N3n_;O(Z-%9x(i^d~ z`UgA`eXuTZ28n~N$YM~E?W~5(O3^NZyk3*FgW^I$gI461LTs8I8LBK>&kRtUDMmG& z?irvD4-qSJNk@lik literal 0 HcmV?d00001 diff --git a/.doctrees/install.doctree b/.doctrees/install.doctree new file mode 100644 index 0000000000000000000000000000000000000000..19ea3ca37a3c428c726cac4054e29e9c1444f99f GIT binary patch literal 25225 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 NcVdVpa|p?r{~rW7y&C`k literal 0 HcmV?d00001 diff --git a/.doctrees/modules/_cartography-metadata/schema.doctree b/.doctrees/modules/_cartography-metadata/schema.doctree new file mode 100644 index 0000000000000000000000000000000000000000..55c02be6d9f2be7ef18397666dac00a9d7fb3622 GIT binary patch literal 9553 zcmd5?TaO$^6}G*X@$A)?c%5XuaXXQDDSs%Lw; zhpuYxE?_AMAYxHMLTM1ZA|#amzyk;*Ks+NPKoI4TCxnD}LhzlczRiyJDqAGVdbg@i zRek5wIbU5)y*2TJn^#Zh|J1w~a6jB`IGz_q9uuiL?L}_VXQ52rORvA3-b=5kdhBe8 zD2ZK`suPfKxgU5j3)44KHAmvo4@4ttUlYugeiRnX`2?TjwKvmiysjpsF9TNjq!wRx zVi|Q~XTW!?K9i2;NXHT`XMHE7W@t5jn{5-E{e{1sYP1;cyqX+1z$a6FR@Lo7AwH%i zGddxCVUxq%}DD)IM3==9BBr@drQ7TS)x8M6+_ zB&sHzE`3V*JYVE9{1PAIOUiEYsLz^l5{4{pZbk8C(=C-A`n$^@;z;H-VQvTGfv7`+{O-d*3vU2A5gnF#eud0Y^xPw^$bf(WRgGacXR3AQ}| z%7#8>%h2@=RW#E^i=aUdxzq?KRB_)vA1w z4wNel#RH)49d1@gX(F?(5!cF30q_eszB})nJaOVSLdnAajt*#w=a>y*CcwcZsh9Db zvw#(K&;-;WeK!dlic(^{hV`lx7TflPBnJj5c)kl(6bM;I4!0<}@_f(Y&S1d8#?)8?}>n2EoZ9Dxzz*a23V{I{uy43v- zVSMTJjh9>(BqEoEwegA1BBqrDWhcr$3s; z`M>yTim2YMk^okXT7X44c7p1fF+1ecIos3=M=#B*+5Vf=F85}8;+3}vfu{H;DOTVj zWwc--O}v!dtAz(g)TkowzfL|s^4~}8&iscwso%R$3 zk?g0$q~U@b|EUq^?;i*H%!vxORB+BzIcGmubFEgDkaBoaWo6l`c8#AO2j=UutdW_pQ(JJK=5X%8J!%n3&Cu(k74;=_ER!%fYN z0)f52$j5S@u?qo?Qc8Gx5JaoOYx#XO1@ty{^XM zXltZiALg*S$2%jR%B_K#xaqS1=My@{E###l>Uy+P@x|T@{nAGzvwPj2H1ZwTd9fBH;OCACc;CS5ozi&te-D^G{+}!&$V1zaH|lQJdSmEn zcuueFKhKjlZus7f8^$kjY8En%!fwTpdtE|jymo|bdzRi z-9A`8cWqmX?yvIoR_p7Uxop~n-LtcT@8M6w*XBd3Wvo)HpuPKq-j8eL~K20J-z73DIR-Y1(S$(vX{$dx>8eW{X3)eZ;qw)6VUqChu8X-MwNZ(`tjT5?4%Ew`rwFt z6uEakb5D*4=slShDb@PGsP)%lsr4k(`t!q8tMIpME{bvq`QHZezm5fY5s?3RRLGCi z|B4NHuJOnQy?61Hj<^f->(FG9N8BZ7d=4!S;NP4i=C$ble7Z2=TJSyW%QFo|T~m8r zb>rS^7?oCzrP2~qy8dugD*P;;g`5XVzx$kl{PM9NKLyC2J}Tr#>UY(XN~UzRs??hq zz1?H!eHnVU4zKr{T6BN!yFlKDYr|D@U$%?(E)IWv5a)fvDD<^sDP%#Rt%s}7A$;#W z1Nr;Mf_w##zjsu~NASJ5A-4mPe{o;Zi$0iVlmeJy0~u3lXv@44UP&@~hy=u!|2$ROQK|a>%M!c|Dxv zn1-&~X}B>%_>}@Zwn$`l za2mkHGZJ8vUv>f{k;;?7{JN@VIl3rLQ9!nm35i={6sFBEHu~N~aVje&ae&gSj9i=Y zPxMu!daY6CI#DFUNV3Y8TPM{lrBK79Z*NmFEJe*6jwt@XMxu){vjY7sni>``U1M({ z6=vu8N(`4Z$P$?AY6chbQ7r9%-DN>~>y(<}PEZsl)LC4&!%)(ZiO7W})P%>{Nf*P- zZ8>oWLqQ^DP9HUO89Oc`jna43oF5JnY2&s&@*tI}dLlck&#wv}e_tB@XtOwuVw>Yy zJ76)4Oi*2kbR*Jz!@W%CUQ)HR>&vb#djCLZt2xtei6L)&Y52pg#_9~|AYdpC69v#I zRkMK;b`z(|U~v!SQ^<9z^D%Ry*t0!`9D|2pe0avXnndQZ12th0-?NeQ==j?ypHy>B zA|t!3Qgo11vtH64*oD`@u)4yB!^NQk0$5k`x(3z_1xF% z*Qf7u~+77T&WT+yU zyS252QZAxDF-!$SnruU`H5Ct=sQxZ~~`hHA=T zF6Eg|8G&aTK9e0i443@?L)3BOhZxc~ai`T1JhE>W!C9pCY%w7JxUbHDU!}8cbHB?2 z{J?w11G+;{Gop`lmi^TPQ7vGm^SW$`b`ZHvX4oZ{BV+Dj+D){<#@c{ry_pO!1U;a9}}TOCsB2h(zzviyrJdRdFx#*vYzlORH@s|Aldq&Zp6EZnypT+Mmg*Hpg+P5D5i#D zIF~c}RcnkKq6F^HZ%0AlFhqC>DPW< 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 literal 0 HcmV?d00001 diff --git a/.doctrees/modules/aws/permissions-mapping.doctree b/.doctrees/modules/aws/permissions-mapping.doctree new file mode 100644 index 0000000000000000000000000000000000000000..83c41ccadee15865a64684818a63285fcecf07c0 GIT binary patch literal 10723 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 t$c1e9K)2!1)($H(Fy0J@(zE^a literal 0 HcmV?d00001 diff --git a/.doctrees/modules/azure/config.doctree b/.doctrees/modules/azure/config.doctree new file mode 100644 index 0000000000000000000000000000000000000000..972c45b6bba9e19f2c3871cb91fdf1bb853b456f GIT binary patch literal 9187 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 B_{0DJ literal 0 HcmV?d00001 diff --git a/.doctrees/modules/azure/index.doctree b/.doctrees/modules/azure/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..577c5cc39dd429d3761e84b0b90bcdb533f92c05 GIT binary patch literal 3815 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 G_Wln^N)cfI literal 0 HcmV?d00001 diff --git a/.doctrees/modules/bigfix/index.doctree b/.doctrees/modules/bigfix/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..fa8dc5121c203982e7435b6c73a278d2298d00c3 GIT binary patch literal 3264 zcmb7G-)|d55N?~=u^q>0Qp!u4k_uH#p@~7_0U;qIKnOKpAyn~(PV2k1ca^={V|Ooh z9+2Px)JP*CwacG^#D53h-kr}sprA&wayvUavorI}xARl$_dojA%0Jq(xsciXlqE@~ z6K*|q5*-&Q&zyhhAOGxs^vBdSY-V*~V(#f0G-4rDVtD4i_cRFVPAYp^pWn7Tc2Z}} zanTZOvHiV27F}vN=@ehtqRv;$x|~_-gAP<~KI8M?du8VrU)}?TZc{sF@a(+Ur*70- zRcukazTt>&Dw%OVD#na@%sC^+g+pW^k}a9oaO>?@!6k(FZe=X3zB);fFBfALpBp|2 zIt6VzHVs=|?1{UgFYbvgaY)|`g--d<6j{d2aHh@qFlNT-sbRUeT>GAKs4&Nqp|Nh5 z>ZDNI4##pjk@KO<5M zO6i%*rbn^9fU7D0s7mRZ^qQxZ>3$!v4y#y4;(o}ecnfJ14^XMM@q38hBm5pCMdDp? zA`Zn9L~wJFqB4@5aiJ7N+TI!(b-iKH@3ofrY@ zB1=}XP&JOY2KedN8NS*%_1>%MA@0%}|AsPPAMImgiTL9Y-PurzbvBVx|EvG!mW>5Z z8MZj}WfrR<;S&iIqd|_vOk8s6q->t>+zJ2mFZ`j+SYC1gnsTc2*gvPXkVyjScuu>u zjaqO;ovcX5-0;MoU87#f6jo>I(qB;z479vP))EP!dtcoo4M~Y7A%^QThzk?wENaNBzmQZU zMjgwYLsx^D_ZzC67@au|s8IVmrV5mx>8rgFb!)EC21V>9ARX&inq#q3xj`#t=UDdY zWnmOnyU1A-NH6TdT`MH~($m32YnN%qS2oYC({A8-R4kfLv`IZA0}EW`5pW!y4-1ob zD+yP;lteS>M6{q@c&rc9Ts)$_;kh=T3Vy+rKf6Ia!Bn$s(LSF`TC=t(Moj}V|w{Vk_4^J%cPWRR~BW{c~kziS( z03Q?%vBl2Qo-W+Fl~!rR)8WR>h6(W}4JxC{3oMS_Ti@6?Nw-1(7FiO=k3vA6b`{H} z1xOz0PO!d#mZIB+$J!(jS`grXo6zMWYS%rDbjT#i@utbS7i}7_!s%!!q8k#3+D(cy zj~dh=tEE5!a3*6a7~Cr*NNr|A?U$n5@*>gEJPmld#pk)UJX$?jLL_$4g|yO@_}q&U zY1vqXKuYEr(e|Pn#1rZx7z_NfnnreOwP?XS^k(>i6U$A|L3x9<1ohqlX*5gVb3e2c zV3SROLM2n_{MWZ0(IDq}grtCZvbaoGKS;(5cMqLGN5Z+>el#4;X0y}$(g~fNYBL=s z{9*`AJM?rXoG34X6A_*=l*yqi9mr1}zV`w0Ixv%X!%dJZ-P~Kaaav=XlH5&7H^QX~ zF1n75(Lf2v^{hjOfMXgpo!MMJvU$MA72UFznPc-v$f;2H0lGJp4yf91B8Q7G`jsqQQ@|Clqhpy(fPe)j90ZoI z#duw>&q4G_BvSy`hRarK>n`D2aPAJk6yeOS@8h>e-nL6yQ@_yPw&PO6c*gWVkHT!xX`Pv zxhkpjaCuZU9c$GTzEpiYToi#731BQ8s}Qx63I;xtsNmjp_y LyFWa$#rX7ZY;6O( literal 0 HcmV?d00001 diff --git a/.doctrees/modules/bigfix/schema.doctree b/.doctrees/modules/bigfix/schema.doctree new file mode 100644 index 0000000000000000000000000000000000000000..20241e0d3cc0468af714c17cf86bdc72aef6802f GIT binary patch literal 19505 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 PM-34crnJe@u9f~D#&4Wv literal 0 HcmV?d00001 diff --git a/.doctrees/modules/crowdstrike/config.doctree b/.doctrees/modules/crowdstrike/config.doctree new file mode 100644 index 0000000000000000000000000000000000000000..84b5ff56d26ca23b5411c2c3a087d6671c383c4d GIT binary patch literal 6966 zcmd5>&u<(_6?Wo`?eULsoRF-dB)h$dR!Ov;84es)ffYhVt5^XO7Ip!lsMFJ3GgWp^ zS8r9d?LmsP2t_1PAwb(45C@JN5Yh_mk^cmtmALS4@V)Bk>7I$5*ejN-rLnr}$9u2d z``)XnuRm`5;q9w)?$564l#ArB6GTxWBc^k^6v;3fvc%+{&|%oqGq8HGMP;04Zgq^ALh4t(>9DSF{^diD_cq)MA|5^ z$Gk0>^u-`kffGQJFz4Kl*&!M8qM=W6XDL)&vr$rIvvliP4kOscXQ{@H?T(AlU~#y6e*CY&9(#ngj(?>!mE^1w5kY36CeQtcV(1xXN( zet|GoYx4R*3?-iI?E*I16N$G~`KMFZeA)i*1Xf7-HWu@45vCpfI)Q;toO3rQ{WIl{ zu`BbS^cp$loBTT8gmV^4=h!RkFvV(oc$5K(A&dOp$amm)obzqo)%LX`hrs_Ba2Erd zbJtmdOmvv=W1;I&E>a2rXi|qS3>(%0@YCO%ott~07-a&y?tSOMwztPdUSBG&7T&S* zmzQsL>M^;cy)tcFB6>o5sS^9Z=BB5mm&PohurlV2P!$j}Z33+Fxp{~yClpAp#CFY? z4rzTL(=3KuYG=v5P%@#?e&8n$NQPgybu#oB&h2tYWGdeDdL!p%5+)2H zjaa&9yvV0PD%zMl7AQtmpDFru_st z_`}lPatr&gY_O_U#hyd{myoxV82?7u~(@e zuI*O#<_W5DSq0vBN&T)CjFi2~e_vN$+u)DD*>A~O;Ow$psciw3yy@oIrLpSpaD?pg zjIf4jzdAkO|8i>FyqZmD7WjWJfuFsS1=M2qiVQ%wKdU2<|8BB>+&TvIvwM6A{F_Gt ze|mJaUxlL4D9{Qo>5u#cB$m*~1@ zMk!d91zbUTBE&;V*Yd-hFMz(t`t)eeblipf0kqQXgD<5XAa`XH~M7D}#X>PAhc@A<-LrwUZZ z@j;%@I$$JV<{8@xGercDKcRb8%a(%nu}hj6gDVZ#u8j$O)yLh_umlXq!iPbef$u5# zFTTEGo8ud-R5@NETv>7F9j16$Db(PCp6uaudHjkC5Z=~|41J=Bs2A!QuuF|Vvh<}i zi8QR%dH;-ELpe79fq#gb`Y=aJiz-uT5T=LhN(XR9vtf$aHD1lv=|9o zcP;R4qAC1UQ>s}ON&j$2kU9_MNNVQSXF8OCaM~AI7zfdHKN6Z4l#;UAv5RFw@J+jl z#b~5JL9_xj<6(YZfOI6z^D;d_iDrt(SVWklMF{x{*x<=4Ai6__H05KLrVe;>v zzhzq~ODhJ97PCq%Jy1tJC5QF6F{!@W?H(K)bkdRGGU-S)=tgY6i;=pU+ey+^E%%0by!~};v7Xu#S2lSqcB>{g`4?$e|A7#jD4L4nM@5QSh%P<%_ z_Bv=5BoM-0WE*_!9EjO_Sqc@zs5_c`Tm_y1J2DhW9|$PR!UZZ6APJ|(t+HVcT%#BQ zz?zIL-nAJ)H)o)UpV>=cEQ39t4FeJTVEq+yEca8pK_V&AL>U#;?3tYhD@HuIT`H;w z(iR95NhFXH#xKZchnEdl14J2o3xJG>SnrY-5XomyoPRu8`=x(6x zB6SvRw|8&QF7yWefjPaK*(UYTF6sDs*So{FpJx0`Fx$nrRZyt!W_GO}M`zAjC{X9f zKYN)35L%V+JOM3Uzk*sdNZ!#EjFpe&-$>uV^##ir9NMp5ORy5MhkX&6}i8)R{iO?S4v!iWh9^ z1s8X9_iry5XB*>f?TkHFoSe>W@4WW|+FOe6Rj75v$DaEQ$lU#FA>dPz0Q9DF^)2k literal 0 HcmV?d00001 diff --git a/.doctrees/modules/crowdstrike/index.doctree b/.doctrees/modules/crowdstrike/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..2f69d93f724eb2d69e3abe3b0679d0e5f6417c99 GIT binary patch literal 3668 zcmbtXTW=#p7M_`m9XoNHNoHpxm)(uiNq_DFRsg$Y|HJZ;SJfPmRDYjl`YzRY|S)v-l}sE;xU}M{iT>i_3NA8gvuH` zcbD1)hkhUA0d?8JV7W!@#?B$#)+!faSdKXDaF6##rH6mfpDmTTX!~}expNTWdn@Nz z{jHOh#d0y?$+;Edc&4On&nIy!$bI=h_T)pkC6DND18Fibuw|YLJD3`KK1jIrW@33E zFW0_L1debo(t&k;keRg9!VQvT2nH%o#q1QjLB4c$s~jO5T{z3D$5sRP$1kNgUb%T( zzjiFSJNDQb8?DV$<&)#YTtMkWykE!nKK-7n%jmxg*9W!hL-|q+uzVR&m9HRouj2C> zKCk2RCL$)^mM8K^K7uc|=Mk%X+8vcz3(vHIr*ojKBBdL5nDQc9*{0UV#(7u!aayAj zmp-a+bAP_OH1#9s{P_7zZR6Tsf6K4G;Lr#4+tEM7K|Y>aL@#_%7_Zet`r{|1jyWGG zt-J!lDqEMfKW%LPl^aWco?9^DOqr)EaI1Ms-ay@(#9OgST+QBf z$d?c3g=@ zP4NolL@TzIr5S1TdX8GO4EZQ}a+CT=X=8I?i&oN`OX`+F9Vfg8v!YubEZX1Ln%oQE zhuTlLE|G`@t?dt~+c3Ye$Y(c23vixi1s1!t8Zcpgj^$3XEUm_B50PWB1;t&cYsIi% z209!Y<8$N1%I4Wk+Kasxd1JG&u~~qmA3JNo0Pfh*9iDtpON17cgiV!~Y~Bc=vANK6 z#v%2rD2xSDiwmK{*)7_UTrZX_IuJ93Sb6SCH$T*(Rw_p21nT-zZga#6C#>KZBwcTL zBBE1(U0>xz>6yqAlj2mMZt2G-@0~b6pB}DnGGVQ;O!7R{01*-g-x42a-;{p+l~(mi zprehQjVI)f)UO|18Zf{5aD8LrCf$h+I7CSzJ{k@M+S5FrlxVaFcZ&5b6c*jJA~7~) zC`5n*YGTz7soj(}!l6=DV8T$dAluaEr8jITqFV}x+DprUKDb{= z5Zc_u+%H9i6J=`HEQ@%$BW8thg00@HAd+}?p`7v+KKEIw93ScENJTaIu=Xd^B|TKV3SXPLaj38!)JG1r+y&{ zhM<6d@}vq_FG@xnw#Uk#W9fb2-X9F6)9Gn(>7~g}jhzfqaWTM2Hwbhu-lz=04TeDi zY4S)*2lA8G-uV;a+PC9mLrs({)jXW5@y1}pRl<)eHPUAqD!QJJP(Udt_N+rkfMdoM zmANpVxgz4@itf0}-18Ze7!0c6AYe*05%oQnVPa%|FHzDCVY*wb>m}1B;We?-Q6e!5 zCP;f-YKUqq2(07z(_{m^JH9kM1gJ$RlM)kO+vMbsW`9&PSsZ&!3Y8D8@fU8gw zo_TI30+fW|`vBGeQ64`efEF~eIH%L$nzSCtA;xRt#iAW62h%*{+fi75mp{nw9d)C? zUlwrZ>mYv^I{6Cze=mEE_Exi0-QG(SC@iYSi?t+{;{04~=BlJV2jh{|Y-IEz@zv2k zYzP;pyK66Y=US^vhimVHQmv01esA-wW(RE3XX_-{e2C55?(EI1 zc6Zh@vpSuzjcl-y%>V^nAdWHN+hB|XArvVR0){{lLV!>t6cqy4#vxD?DG~=9LW=xf z_ssOn-tOE?dym3Z*53BKo_W9bUib9$biX~@@s5>mIgkD4uClATQ8_cD=JORZui15X zMc&NS%38&#KTzL!SN)E9zuRT0v$k2Ya$4Oz4-z@uDCI4!Qa@RD`$*g|O7@Uff4QyY z9K);x)%6a&Q(u0v-miDL9gg9Yw9p}U?U-fG=55C^PHDiQbDD;ubncB4KcB>AqHeGW-OLR+(yiFv_ zb0yWbQHZ}gDr%YkwIW}uiZ9b@?v$k!NT%j4chng=RM%JOoAj0XW__u?#XUZ(n`Ld- zs#PkQH9Tutr-pN?<(M;;TGi(wf6r(TQ5`KmY}w9m+055UnmwEo1{t=QL59lty1w<$ z(%Lkv(&?zyj3&IJceopehLmimT9#KE;f8!6AoYu3(M$0EcKp8s|L-J7kQn(o8DMw4 zreCfP;vyXaMIXQgdw2{8C$9Dj+*Kjh9W-s&pZvCAe!1|~^*H;r+)x>PE4f2&r5-6n zcHP6p^#Lfif?1#o?pB#O!+~_^QLSoeHsU~~@Kel!qADQ`m9UD*goWNWLXk{zy$|bK zn7-Y<{!H%QRsA9QNfJl&amQ$)%Fykf_a z^Ul*Z6_?TnyZt5U)&1Ua9crG3nn^hSFV@k+5l5r1QV2nD;C^^jV@_3ORaSf8OidQnZm=0#sG59U7oi=is zGO=GNm=Q%o+# zU#rMpxti@@@N2a=W-7h^x1vi&UPRk1aM9Ku}qa5`k zQm7XK^+O3!-_PV?{4_{@8ohZ+@s+36h36hKXHb8y%o>h9zon(DCBUEH;GdTQzX;%e zoeI3|KJJ8voto`Ov;S29KFI-pCt?8!XEF{lHtrL=#}kSwQ5?96R7dj*>`hAo;v&RVyGhA^Bi~2ucX|w z8SeS7RPJee{H>t-9iL?2k4d6HKwfY@8-;D4kJO{EEr48ynh8c>#nntMCI&B{-i6d{ zj66R&S_=rAVU9B>g|ihnm!-mKyU+T(=7y=LGTNh$-dHSvCpqvDDc~0Z_~i+KZ(wpU z{@XH&#(i2-_8S&v@l0z@;S9{DK@(pW=<_-jjG=`M1g>OmP7uh z6y$b5{zpQ{pEJ1_pKqo6F>mZUY=!BrOx&p8Z4ai(?Vv+fgc$1+<_ikAo~3NC(M2Dr z2OBQ}TqkNK8EkO4wtKJ#FO@W_5^-XrOrT!QQFltA?f~kG5~5zhrm10D2{dN?o))bmj@ z$#CFz3;AdZ4PuUrj`^dTXn*NrEFdMowsNq|Qee9Pc3~>8w)?OfJ!L~X3l|B{YdPpO zQlPs5dUZn3momASR(9bepNOo?;4Q7~Xl13b#l=VnpyM29N($%-0Nt1hsO_Fx0nbg> zu*AxbSy3P$YaG&+f_yO`s|g{?OfJT2>!{r^ef<_UIpu5K^q7EfImG=^5LW`?jj15o z?x~(?NplLP~nI1z#L8;>Kws3s z#xWPrN9u9R)qq})nn}hnYnfb(A1|f;)I(5w1aAR^KbaGFG?}o#+|4nEr7%Z;Igkpo z?Y`aA=-aHC%bB%`6Y7CuWrQhi;-;9CGQ}R4;&4J!Ofb0^kMC*faSyEJ`*}Y9m0%;IyXu|$|%>sD7jQdX?uM1vKw0Cz_+1P;GW~S_e$aJ1@7w;;+|!4F)@(vJ}Y}y z{!;uXQ)J!ty;3#eP;!58|&RjK^T#ptC z*g+0^xfJXeVEYroZf9~aep^lVTTgW*tor-|LjC<*{e4pE?}z%=rBc7`zFHIZRTf*l za(mJx2wJJ}L8Y-+0Cz2CLxtt^ zk$R|b2*ArwGs#e436qQQ?$$$0b$@Q&Z^N`uRhgU$I^>1K1e(Ipwo0KL2HK`nXl?gp zZ&@vxR--E$N(Juq9QRr&+#|rjqE&SR+s6z{MfH-8w)2sizfyXiMlZaM}x{W_JK62)h{&=c6Ajs5hkh1_M7 zxuJgOeA=R~Li#le4ZmIuAurtp-$xyneWUlNhL_K@X-hY%L3h?rDhxcZf{h<9qmRVn zN90l{?g(nIloq$J6aqcdwNgoQvLyp)Km0r~evS~N80ew{Sp!QrLPuSPy?N%jUJlZ5 zQAey#RZXWv`^-+%N|X*|+Mu0f-6JF2-3tBJ-%x4i;HwUfPGwIVKb#pqI=XM-@WioK zoE*HizxjD~cC(1@52c+LY&c=O7Jh@dEO{-lpW01R3$`8$Y@KEw{i{&(I@DyI>4o)R z#Zq<}i?~mPt$*F~w4`r|=Y5_aD3NqyQ}GznymcNJx9d!~G-6j(%09G$rFgMUYm~31 zc$Cb=Gp)QPutDnvNmcezl}*JF`e4m~f;u)2joZm%z3wi#j9v9AaaFRs-#)@!f!k|E z8mAi0y)*wHlJQU<5oC+;m~L^qk)a2vDX_&jUq7@Ye1(2@RZipyqGzwVKBD=TX>!zE z8FNqOPw&Px?ok8LmCo8nbPS5eF`a9~yyT}g1w!5*Z6t+a)0hJ(t zu#8C}w4r&s^@FX|;UI>JZ{{9-Q{d4gO@}(Rb3qM;t3pqa{$+5XY(kOV%GWk!EdlWm zhj=hhDG7w1MXoho3WDxSJ-X2vWO+u3RL_x)`apQee z%6K}A_hkmxx(lM#fowCyFLEQaBWY0aNv`w{rIa?H%=c3%9os8X0-@sP6P)k0knw4+>qKCMc8{>si z#yADY&8dvBaJ>AE#Y>uI9LXW%Ste2@Xh%8ibyBn?&|Z^}_G%^<Qalso)pG)h!bYo#AY!rPwN9vlFsanOuxx*+zhHW}(yJ=MVpmzJQc)+FLo; zo29@^fZd-8Y%!b`lV|A9INisk=&GQ5G$Gw1OfJT4^YRIK?QLGUaLre^@_#F({H;*_ ziB!rjifdGnVrVJ-E$IG@)BRYA&H~+&3F&^oAxyMl1>}bR7l8Y@%(I&rpIQ$3Ru&b58fp$!kL8u|BoB+f29m)!+_7FGT>r_ zho6?nYYYBY!MLTH4W%~GN9v)J1I7zbGs#eDJ(G(Gk_-h&#NTYkd9G$r3SV!Mb4Z!2 zuoN=LOjH?AawXH&@&lM5<=+uIc;-Zk5)mQoKCLj_mE3e!NSUq%(+#IG-C~5tnw+Ik za zWAa=~Fb3U8yG|!eb&8wHkTTUQOjSr_s>KMB)x4F>kCFKY1oxXb_kB{_XTW`LLhjcy zxtI_cr4WgRhZ^l?SX|f|Ub>hH(!d4@(zbE%ZT^sNT>4B%YsSxov}U0@^!vGy-YaFK zIT-2TR7P5i;8^1&PMseeO^%50_#!9&f)x2}ApcxK^3O84g~DTg58|cLU~lC(B3{Sg zT^sU;H$+d+d9XlxerFN}`W`pXcclzOvoYUEWuV0fjn3TZZ~{#Kt6=;e&iHF7#@oU8 zY(mCgGP#%_SW7J%k9?lj$4-m~UTt2y_NIiVI0|-5+nPm9H5f;NuYv~<9 z)~FQBY-0+eW`_j(F3vtA#eOH)FHgwc&*Wm^pG8d=b}DSd=e_j9yE8rS z^8}o12}$S5_|a8y8W6=C{-Grxp;aSq4LDo39IE228u?{lOmEdlG{mNwFJ)lsi!jy< zhgEY)Z)p=`X+aY{nyg;h+PtcN5&z!5kXT^Aq5|W=3|r|V_1O09sCf~yel$>awpxzG z7jK0KeT7rh2y|!8ACPtaI|JS2oZq@uu}blFs~2yf^+NaKl78nEUd`j;C%CStM^*_H z&!Di-1&Q0ne$z4qJNSy(fgt5w-X@I%A9X9xtJ#k z>6JC!NJP56=plZ=jq!6SV|)ORKTTzfh2!Px+-QsQi(h@cY`CzJK2i@CJ_y<_)J!rJ z*2&~zT%US{jpy>z^@OXpbNEZ7;6DU-B^CT)xVq)aoN>-JCdKw)uw9>!Z7-9HaV$$3 z7+#r!;e~(4ZhA~O=+zwJl~NFo0OICU5R2iU?rGK5ut3`s>8is;g7tRJdYcsMN5DFp zkkw&wF%EmlKB%lPmHo*axJ>CUluW#!Wxpk)Ol!_8Whvjyrhazs+8NB^NY)mHcz_$? zZBmB#C=BtIREAg#r?0Rz%!Xm#iy!BrKyZGFbAD2a^HFdMKgHx? zLZ+I*kBVDH&g%}mX@2(8BP{kc|y#yJTj#zgn^(2 zn?m?x)9K{sRNqbUvv8paTar2t~L?15U-zyT&^|=d4!WjDlW2Bkr z_zTp$9yJ>$j8n|&d86|bHG+1=<^iYJMB+Hmrvywx(2rEyP)Zl`V5ENlnW2WX09iQDI`9?g2?8F!^$ zQo_$()-x`KQ;vffNxSZ@$(y;FW0dTnf`wi5S|wk1J5R9RyA-=+S7qETWX7hS#WXF{ z@1m7uJnKNl?ctZf=I6>O9P9SJ)~ph~^*UxQJFVtU(NVmLzsFr$FinSYYKMvsEpdBo zY^|)+%GooNKpfjU-9FkGUCrjqGW~?7jgxKSC0YqD_)(IjA7{4e!q+@ee;Dn+>X39U7NxA`es$D0xLlR3r5Q* z>2fUWyCt0ZIk(TKRBKKa+fhw6yX$ta;G3CLB50p%y1dl za!%b{W!9YNSvuHR>h6|?BMql0K7xkl_VM!y9sJsxqX!x)yQ_)8hM{zrsKoXX_m+?_ zp@zljusCvUx##1z?A>)d3j^}wVdXK_u;&bB=}w+ffh=O=@j_lJ7-#Bwr`xC29209U z{34eguif5!tz5;=#CahH!?FSc(MCT!MXp=LN?_fJP3{*(Ra>j&%`EmjLuxffLsi`&rZqE+#Balpw1?~NdaA(`L5(aj2T=BMw&h!^ z4sPFdCG6T~6><%ip%QVK&HiN^6R8)549zL9%jizIgiCZ`5REpJcl7$9748;9WH}o& z&R~;smhUyc&s}ZLA@td8siEJH!vT~;#jTEkswmsK>gTWc&+{yBFY`_8}ex z(m%IRg<1SlbGztll+u%~!Oxdr=Q_tul_~xVV!UpK)yvfMi%F6$ig#Wk`W|*Ud^mJz z+TG7DLfgfQ2kCP329I5i-G7TFU7hacHMch$O^m)bhbK2?CXn+I>N0#eZq9HC#WyQO z^p&U0QV^i5@C6Npfpk~oj9va!S*5j+^P~5-9J<}CZ#3 zxZv)&e2kK~X`fN6O z>|2%QsezKt^`J)FD22s}>UMbd;wA1fmTA^qHjz0nNjF4)41-RE1}TT$NQ2BS(nGu? z_A)`x3YTsiiLP+@L$TduscpAoA=^=#ns2+}rKs1$a-R%Y&L38LmczrG=B^Fyv*GZJ zwWt@J8{C}-(V18@nDc{in~~qWO)+fxofK?I@)LA4M$`=pFw)SK;%NT@a`Pgnl@&UC kD1H=lJasU7T literal 0 HcmV?d00001 diff --git a/.doctrees/modules/crxcavator/config.doctree b/.doctrees/modules/crxcavator/config.doctree new file mode 100644 index 0000000000000000000000000000000000000000..afdec13462fbcc1ce0d11de832178b56439c0bee GIT binary patch literal 7717 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 Zt{;2oXJL=pV8f%{KWvk9B#Aq%e*?z-DH{L) literal 0 HcmV?d00001 diff --git a/.doctrees/modules/crxcavator/index.doctree b/.doctrees/modules/crxcavator/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..5dc59aedd7d97eba83fd163602b0a46210d63e21 GIT binary patch literal 3514 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 literal 0 HcmV?d00001 diff --git a/.doctrees/modules/cve/config.doctree b/.doctrees/modules/cve/config.doctree new file mode 100644 index 0000000000000000000000000000000000000000..f49426eac8bb3414bedcf1c4275cb9e65fa8ff43 GIT binary patch literal 4376 zcmc&&TW=f36_zZK6m_9QxpvXoN;fHjIH*MWp$~=9pbtWWxPsXtNL>U$upaIXIb-ea zY-eUAv4DXVXbKsahXUFDn*jMW{U80#UP-}@Tl66U2<)6WbLPxB-?{0poqz2O*NQ*4 zZ&D$X>k$jXM1|bsZYxwl7W2gB-{c?uEq|Fma(&INjLLMtbGHVLK*%W6JjuVx-GJDw zjLfJy-!nY0QYFoC(GgwI`zn7V`mST8jrh`*8=gJ;t#_u9nVe^u6$gnKyqll%Yf|EM zEMMn^W)OYXbyEgiY%Yeb?>EYe4cD!7p193OCOn^HQ|7jrwOURyi?`C-He_h%9lao8 z#(;?LPQv2yYb(ssb}?nah2}Hj$z0E}Ic?=)Upx@I;-T0ONABrZsF;s+mLyz{uav$R z2TWTv*DMu_mG3zR3$r{NYh%Z;3bTltad64UL1B(j9OmMk^Nnl@V{|RkbKd$yblm=E z~dr+tAqF7E5Y zsH{+W*;yZbqM}G$c~)@4J!5%lJgYpGuxRlY?vX3i^acEHyenyich)|ARH}F1{a-R# zzyAg*e_R@UBHkg_istF3tbTp*+R8vVt8GEg{zx2&V?4cAKi&O=U#C#rhn+Y874XoX zF8sp9FLUukjE(#8Ygu4bFr0#+Fx@^+5I==y{YaW+pS6L|ryXBf9xvPX@fnLEZwWA^ z8DVbk`SX(#p0H^I=UwvW&%Ig1=9N)@UB)S*;fpfR?z^A9SyJ8@@q4*omoJy?3lR1q zD6Cnutn$Ha#cDtAF6-Og2@^aJd|B|4<8EP={1lKLucwYF0%eq2KY#+TwLd(i!z$c=+mu_ih}V6C{UHVB7<&c(^j|}w&kU+=WRBo zO|Psy?PgV=DA*|^H`-{U+V^HNH}xGQ3uo8eAjmXz0)A8XcWX*n|J|11)*?pH<_w#@ zWu{ePd4kf|ea4~;g}-im#Qwzft1_*0js;?x8_VJpi=FZs4*+f~sw0XYn_NZxs7yRp)(s2&Tz@SY@QMzL4#SBC~C@DPR1;wWd z>(^ZiZmbSeZOp{&YMv@>{fJ-kC_lgBwgrotWycNqwS=uKvze)xI<6D)X*S1ogDa*J z*a{q)vlx`V)hyujsQktaWRhmqN1aq5xN_Ie?Cj)MCr0A?;p(Q(DL4AaeqqEl>`bZ# zHh23fv#U}%g_PVK-P*Y&Lj2neN};U+_0fl`8@Eon1A2ggl?3b);X%3Ei;$NyHm6o9 z#QF|eTX$FUKYh?_dUKmcZwbLJF`+=0IU2 zV`=lJ2OqdW%G0)kqQ~qKh02{zk>NaHZE8-(3tGL^k@8$7wBX~}Js zDFiVK1j;0ohzaYLqey|5A+!OaEG9spC8XKtC6e3qCoGCOoAv2k+IaA S65V!4*}Y1H)Ny3f(SHDb@q<7B literal 0 HcmV?d00001 diff --git a/.doctrees/modules/cve/index.doctree b/.doctrees/modules/cve/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..0af1b7881c4385451f0c9f264944bb8544fb846d GIT binary patch literal 3337 zcmb7GU5g_(7M+mUf2zJ3x!;gEzzn{ zt)yz(4}t7M!Zch6B+7ruugmUHRk{2Tvdc7>E?w#B>YjV@<3kD7h`EMF}7u%3p-vIdoxa%^=58aAy+%!bActy3qH2a zk2AwdE!;T06=RiivAlvc$hWQ^lvAYNN0O}CWE-FlzLa7FkVdulNHRC_FwKnCW}))= zC^feTG8Z4!IKD}*N#LDfwu+suI2ZaP;z@ zf1gws%#6*LKdKYGs_7{^boF}vYn)!!ZG+WIB>lJ7$Epjr&;K8=pJLG`_1+QS|5*s? z)_4cH|3OuikDIE*NEKhJs`OHm6{gJj7U*?T%6lNWNxc=@UD?e2UisxyI{OWm(O&3K ztE#4YKB4pN6{*Q*Y9781dv=#fkulf>4OE`$GS(g~g6?}R7jh-2m$4-mg_q&wfAEJM zW<@10==ixd)9{MAQgIG7dPOJA9*yCSdU=^mg%vzp-=m{Se4NSkD%{Z#L~V26$Y|AI z*8_I5{VLIE1JmUKZC(f)*nUUwHRkm`D4b|Jhz`*7aA_K8J>2T2BX}Qd${sc0_ZzU) zJ^3P@{5}oS(nf_$T0I=BEwwIE&k64#7m)a~R+%jYF-55Ubaet<@z$5y1q@&t_sav)6X>Irq5HU=DuCk3ua zwG6ULLsoi|Y)te(fl(*C%!;IC9Z;5*6# z#))Lxv!Y1qlUwDKulRYIaOK!k$3!Zznb6_78{`WbAQ=b#vqn5lnq|paZ|KeVg&f zn=sGTVZ1STmnq?ART$|rjSzj$rf47zNxkmT1?ZS1ZD+Q}Ph1iCaYv8bD)(%eNHv!l zKT!9fHj(uMm*Lry{HsJuJHYg~8rQ=_o0Qc;P8X@f!zM-9>sABC6@c)*DGP*%Z^%lU z8wt1rcTB4C85pqEg!8BpuAJ_!8wkidPgDj1yLi}o?EDI`r4SyrC#g2?-fq1Pc^n_15vvUDS!VB^YrvalpUcX=q zF0T04r1KqX{jP)=yUp4`H+Bx5q_7`GWBo0Els`D?M}uD#Navd%f1Eh^4*vfj2aZm* zt5kWPqzV!i!(+$V5?gV-u0H0rrCx`_qpI1|=(h0H(l_>u?dtx{j{SAi%ISP(e@LqJ zQNy3?@72uU8ir7$c#MD#fsRu=V*xC3z)f-ZS!4eR$$uCA0kY#wjP}7(-Bl&V(a&4G f*fAfs=Bi}J%~JqGoX2V%@hE9c_s46toL>DGLm3pC literal 0 HcmV?d00001 diff --git a/.doctrees/modules/cve/schema.doctree b/.doctrees/modules/cve/schema.doctree new file mode 100644 index 0000000000000000000000000000000000000000..2024c24afb62537c4fd4b2620c8bfa28aa47ba86 GIT binary patch literal 15292 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 UgHxfT)Ip6l(RjZhzai)Ge_xbODF6Tf literal 0 HcmV?d00001 diff --git a/.doctrees/modules/digitalocean/config.doctree b/.doctrees/modules/digitalocean/config.doctree new file mode 100644 index 0000000000000000000000000000000000000000..ff7a3a4bd143075110c4fe47e7450e0b3935e4bc GIT binary patch literal 7654 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 SkP>0bqwJq2N-9c{e&@dxc?%o> literal 0 HcmV?d00001 diff --git a/.doctrees/modules/digitalocean/index.doctree b/.doctrees/modules/digitalocean/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..8f032980cb832fbf8585f4e55093338a822df177 GIT binary patch literal 3692 zcmbtX-EJJW6}Bz!YFApVEV=eYZKVo|AWmy(TO=1nfTCz^1Vx2ziz3KPVGOu4+$Adx zIVCyT)kT2jB7p^*tA<6Npy*Qs$kX&S+K)4{vpAX8nC>g7c^H=yMtjVAD<`FghtZ=QnYn2FZmO7b5aPX~ zSzf>Ova(nWCM>VC1+VyM}r-C>XPsBhx6+7aDJ{t*>^N}sJ=5{nU_HvXm>&?uv zLR@dW&p1?==h?_QKgvy3D(*&E9Rw4DFp@gsi*rl|@y^A)a)N;L;Vr9nTaVp`p9+4u zzVx)-?^G~%>M=JpN}0LTv(waE;n*4fxDN4S`k&UW67W-aKdQYSi+5s-#Saiz@h5b)k)G#k)71NAnwnC3 zSNn2aqZI2tso?W?O<`s5Cph`nZ*OoH%U=FB?|ucPU(|a?FA)v#Vrdlhes9g6P!exg z`)X-ztFW^66?RPC-r8L(`{Vy*?ZX!)FHk0@XQwZ%DUcnvw-shOep6?Os_&Xwd9{Ff zS8wlC56kS^d&O@>Bz0@x1-kpA3Z6f2;2E=B)pP~VUW!-%XxSS0YAO?VKm;cBmalVJ zGk04Zh$r;@+v^=%1Uj>_VxVVZdh(sBsnJt83txrX6kIBJ&Y-|)Aa$zBj87#P2ITcj z{6qYcQ!i(Wj2B*n-~1atP#`NRz6N2=l$nIr)D<$zK<}^VpxL7l+)z)K`Gi}Zg^N41 zSFyP>T3v@5+C!IExe%-V?@d_u5Z17rKssz9cs2)17TgB5%^H7QrlZ~mb+yVV4c3Vd zYa7;iL%zmB(T<%}okniGownLWBA!QI?$R(VZEQJ7+h7JuN!@6u=eYM^TXfN*wk=Mr z(VhcD)cuU95~*mJ?r==~rXLuKl=d?;2IpB`V6a~w19H@t816O0(khG&5W6HcrZ|h^ zIx+CqfsUufcx^mio4mM72eBt3bID?AY#tyPI$*6xfbiJr9kzT@OSs~dB$-Pul4X0u ziOqthUyf;Dd0{Nbn_qDiF7DBuV5%K<=!h>QV&$1H-BPJTos3V)8IBvynbn9DG%RO1 zBzN-cV}LP{MU;GH3n#gj;KDBACt;V1&fMx6}tZG^O9% zrBm$^=wxeVYYXu&8rGYx3|KCGx;e46k{(0{9HJx;9|ea39Vn(}C7Lh7ond?rr9}@d zPmRqIlp?@^V`AlxsoPXI!XdMyz`a8*g6PtamEI&P5#5tO)InC}Mbe@UQLO|LfU}yZ zxZz>)RH9w(c}1rLmanJ2kDKwWytqF$fF$spGUEz02@663YE;I55Ilz zJ`D?ABnS!^NT*f622nC$usv1=oeJ*@_wi^npU=;WYcGsGH+DA4_|*uSZWQQITu~W< z6$$PZNRvledXS&J_mhth*P)%JTgODn>X@g?W4tlA`bzGn)iJ{73PxKeufE|-cJp}@moNydj!j+Rvy#WW|XNk-K zU>A+8$If5lY{9vQ>`|%=yG+n|q)PB9VR?0_eoaTs#{e*@rZtt_&<@vE@mfy3nnF;s zKp<|t5;fry&+H7>j(8su9?{vH&tuN{jW4CEL=*G&y9Ut=DD6HSb zx8fT|{V4F)1>E^Oh;PSEyo>*D#K6(PdX}oy2PwWzs^hU^Es3SL)T_;0mqgrDQe-us z7}X}e5`J$>*lPDTcI+=ttri_`><>z{K63b@?Y){AG-eP*bw!SJxS!%H0D(ma(J6Lc z#H%ypU&Hw?!yf>4d|RM=@a^NO6eI4(EnjSi_git5vi;_A03gm{w)V0}X-)OVHd{{4 F{{zl}oI(Hq literal 0 HcmV?d00001 diff --git a/.doctrees/modules/digitalocean/schema.doctree b/.doctrees/modules/digitalocean/schema.doctree new file mode 100644 index 0000000000000000000000000000000000000000..e2b9721fc1fdd8d33932f05dec37f4e1a22a4ea8 GIT binary patch literal 30132 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 DQVu>A literal 0 HcmV?d00001 diff --git a/.doctrees/modules/duo/config.doctree b/.doctrees/modules/duo/config.doctree new file mode 100644 index 0000000000000000000000000000000000000000..efc52f3d952a45a004557923593533ab63d1c41d GIT binary patch literal 5405 zcmbtY-EJI76^>(%?HT{Y4l%5fES;cevm!IILR_F^!wLnhh|HR3#qJ8BRlBCUW~%J& zuA!?swvnNlO=?OZzN{_K{X3YnY?SQsWMSP3GgH9GO#NmyKbt%ljOX^dEKl=3mjWOl`{2@U09OI#M~;)+-lSM3Kw zp<+Hvvn1i^@K~is!+@nmO;R=$r!(IZ4iRQ}I83z}#wyGru7_c!hJk})5Qn*Vb8j&l z0gPqC(g|;DB06?!Fz|ec`-S-J+~M|Z97Z9Lg)#=@7OMr4#VL`{fBd&^DIQmL;bo&NB znL>3RIB^gv;GsV{^___y<>I~=YWvM+iU3sz+=hUIZi^@IA7@!VlDciP#u2(S;!DHh zHokWsq@397G4Ftdu}nNRm0pnYPiSWCH)50}= zQFz_1?KR8hHG(s}0O6NyFu}NPjYC_*?|pr}D#LHhov5YCnIY)I+xoPOJJ0JSXCZrL z3A>B~WU0*U)fXb?oFE_oV7);Fp7mY^_^i8?`}bjrzOxtDR%&`ywVH^vj^fz4qV3h7 zhxy(@sno7r7_`7bW8Pf6;r<*vZL0S$?UNZtd4}*u5c;ryp8NxjB|fe}`OyQ!Nb-K? z>cmZ7AdMXyc=vvK-$MjD!_hxf9KHVXrCS)hiZl-L$2Nz+ z>6Hi`m$InM=-p>)T(NfN>~R`B;Ln%EU)q~IpQvPsKaoyAbk}wpL>iB5bYgGnW}^`0q-G8B^%*-D#AM1nT&tLPZ9e=_l;XW<>riizjT+< zu6^xwYm~&7IOIQH9rG&CuVdOjUJDyuQj{4mUEu-*EROr`5}YSL!07|SK7_!3f~ifk z0O=NTP`RkM;UJ6@pfmA1O`$W|JEtI>E?q}j?T{onsb>0af|uwTto+wPrL|J59N z1JnNX^-25u#qBC(C+2jDRDKyL-be=cnBv-zC%ITg&YX?i=Wi)qJ;3&5X6urrUN&l$ zw%bi6S*7mHrALEak!Ci7WiCof(`B?+K<$=Bn)`f))TunOQ_Nkkn?aUR((l(P{(99@ zr22MMb7N#OK}EA&mndTdG{X~Q!OI`BC_|24)i`2n-*(H4T%|c0A%dVbES{pVR&0ZG zE;&N8S2nXWLTkgQz^BrHMzLK7dZnki-5D!o5@mR6aBsnGfPDrw@K44njd9D{O^u3V ziYzszV5_m@<)Vj2-1YdBO#4-Vf*s2VWyP{@*O4}=)c6s9$fJDkyzL1V)y6(-UoDP*gv70iPX2wTKtU^fTwwsx8{|9|7 z@qJ}>(C2BYQePn6MLY%0q-tPtyQMNSyGqBcg7j=|WNwMW{e^Sq>}IiUqeC_O%Iv`0 zWP5?mpaGNsL=n!E+l`1NlZ;I`5D(Elk3!a7OnIQv&=2_({J=I60}u4heJr}VQw$c45tWY_$Y{ACIhpqqQ8IRo$mwJ&2${hZ9_fHHdm@` zj8b@sklc*jHp0Xaw&)r*f)9m8*2&_rjqOHv-_7)sZ1W)ayAX4ne=P{F!kC&a4 zyO)h8cAJ(YOKTpDi)i-LE+R{zw-LKqL=m_x7$}oa!Y7PhJUlqQY(pC`%HX{RYlQR? z@(6KmrkC=4*NxT2b%Sa#dT60K8SfE8rtJz17JWAlZ^Fk9Z{Q#5?Azk8_$;$s8mEiO zz0){}eR2PZc>E+2*YL{h$FNjo#^BLt_0V*aK1waSrmwuh(^sElGpZr1`lxD+lMtsl&g+qA$AF=`z0qxxc+c&UVV1ZNV-T zxy#c1{r7)H*Gus%iEvlE@$Gf6=HXw9_3T=Wg(LNvOoAv25y;ep;$JVMpkKyE%0;r# F;D779_8|ZO literal 0 HcmV?d00001 diff --git a/.doctrees/modules/duo/index.doctree b/.doctrees/modules/duo/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..9c5360199847a75165244822cfbb3b1e24dd08dc GIT binary patch literal 3567 zcmbtXTZwN#8(Vg;- z4s9-^TAi~bQ99w)Q!mkRk#XhxcmAEf`)~X+>KnGSx-c>KbO$G5A=AWg)-It5#ifL|5#;@Xth_I!?NjZ*0-t$A$J`8@urj74-JHRm z^Wup5QR|@Cqi*fjl) z98V_3x=E&!BIS0H6nY|6!dK^zdhzLpCIR_nz_B}{FPv%ZiOjNcYj+V?+-Qd zLOIK>ERolXb(ZTwB^$V^s7KsEE9=-9zR5lH-m4%kp3u?HIu;}X9x}3|j%QOk-aHX& zHJ1zj55FU~vEUhloYPRMI4u%BmmmUg%ro(C@dKw`##RZ>o$#Oi4}V}PmX{<7UR$Jk z=3i1*$Rq*hzNAroM=iLao+`2#H$3qdcW6*jtko*L_BS*Db*~)`UHh*(cLU_k?^cNp z>olD$L1sBOp6z!1KbxFa_n45&<9VmYXng-Nj*AyZL!Ey6C$bwZl2Jsr=rc1k;kh=TT7Jb-e{qinf~D=ULq~ii zkt@esVVgr8>Lh$tEMRWDWJV!ZIAJ);An7~9VjhA5%*ImXg^Rd~b%Il#`h}aH{r=1X z;`DTTGvdZ*6A7l06re%j5L@g#9qPhu-_j{>@pQ7YvvY;`FO929*A6tQPq#OAH0ePI zz#>Zm`AHFwr%}q(qQDc0bSGHfLnF~c!((ld2#p7Dz)a}sDRt{MMml5?bfF7STNkM2(Un%cB-`$Z9D7?Q)}78ZJC6B}lEZq4sN0Zh4XDXq5##J>aWcTOMs{ zmJo?ubS15HB|ZHOyp-llQR^9V@+->A4u*f2Y@mxS zssrkWHp6fieO;iXEztxWY(H z$6L~BdWIOc&D%vcbPfh@$oGS=`W8QlA1(ERz+LAE=Nm76np*KD{{2x5EsZv-RBDf6 z2?`75abqP3t=OEa+}xB@=iof5n$2|D7QQ_C+K#Y2-QT*g-&ie`j<@ayr5YDF{L$`R z^$wn45Jik(1bFat5Mx$HVi5ygiv5pj`F9BZTmJ>Xj>#YGga44&vcz!xxaEs2@j)vt ZOLkC?0s!J7RBMm~N~^m+JhR2@{Qr_IY@`4H literal 0 HcmV?d00001 diff --git a/.doctrees/modules/duo/schema.doctree b/.doctrees/modules/duo/schema.doctree new file mode 100644 index 0000000000000000000000000000000000000000..97674f2218f77ec8db615a346c04a9e20d004b81 GIT binary patch literal 88039 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 literal 0 HcmV?d00001 diff --git a/.doctrees/modules/gcp/config.doctree b/.doctrees/modules/gcp/config.doctree new file mode 100644 index 0000000000000000000000000000000000000000..b4e94b92b89ac164902501479caca865ca7ad3f2 GIT binary patch literal 14568 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 literal 0 HcmV?d00001 diff --git a/.doctrees/modules/gcp/index.doctree b/.doctrees/modules/gcp/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..152ff2dabd1e9cfda6c09fbb273d84ead33de3fa GIT binary patch literal 4075 zcmbtXO=~2_8P=|LzNFD;rS%HOyK=?^W39c?B#=Wegh1A@L&OfjHo1hQsp+oiDyzDx zQ&p`Q9Sq6AVTCIvSME84{EiUFF9^BkZt!17p6c%D`7m-2D;U)E*89Hoem_;eZ~gf{ z`&;Fo+c!Dma(+gVM5=@u@4AVKi;PO^zw%H1;6L{#uBXY&s6xloyDf0UjEh85>0fv^ z2<(;%b5_fD42>;UvJq!3)@Gd-{)F{h%W^B|%9eZMBc)P7htGs6lHoIz<%OlglaHSL z`iT!x5W4p%od;{allKc>+KR&-xOPrpo%QU%^`gcdw(Z)r7h`u%a7q2Rm=L!^tkryi zV@>JpHcw3OtP=}j42bw{Ns?7x-K5BuiwTJ@G@S;X!gVZ3!=Em;$84J&yXPaO zGCIHvV z83M_^k6K}GA!R?n?`{0v!S4wo!`@@3?3g`;?e`XuDSgRYeOeAC~oVbR+xHnGa#rFK_Qm8)6^)KhJ*-rk_>1 zLj({h_H1FI>(m9mY5I%W^k#o)>kH_MZf|P`V!wSQTem+Lf3j((t?exLmNr@(c6oan zyAac_WMk(Ot3q*a+WF-oo{RmZtzY8MKi%He9>lI+$=2`HlkdEkP%SCO&+r#A#aPWTo*d9AR6Sv?{imt^!HDchd}FkKDnx1}bJeU_$e9vY(9I;VMV0IMg!FBY4Gxn8^nbUkRCMv-d|8EAa`9utp&c}26NC{Nv2v!OHo6v z{Tm_*B&h+J{juxSc&jvW+)Dtw#*!?@Vz)X5xFj#I+^Ls^7Fg{es!;&`u#4kbAthJd z9Zr?9QdzpPd49+3h5Hb48qKFlXC9P+LCxh6f)%b=1}Yy_6e?&*iDulgXmS0(iM2p| z9~ry8rn%Ca?)jA)5ifkRW0fzq>@ z#56dCk{ob}Oh;74Dgl>wy~0jUe{yQj4({>#W<<4CI$}g70tJS|!ME6Yx33DjuBBCK z@$PtIXG6tjuie?&a)V0m(uRffY-p-)jCI3^5%v1`{|kBIOj%5k;hbI;mtKnkm(CCT08D5|}r$nvNuJOs8RaMYZZ zLO=H(t zGz5F<`f$de1xP(>_G-3hF`nE}_`)HE>cE2x2W<&bzKhAyEK#Bdp{r0iGDRT@o^k7+ z-+#vqa+*g73dWO+%YgL*WkO(kXbv}I*5>B@(P%cCo#j`SDS4)JI!fr}2%Ki*-NPVJ z8Ul$3H#?-sA}w9ePv8FGj}g~_p2i!;1j_Q5$BSdEQh0fAYNzEf%w_^d^ema6hZ0QS z^R7EaMP^acoQ?UB$wPfyyZh!!S~8CqPnp0E)q784;OGe(S)x;lsf1V00jxnqS-kI1Ex@_(Kyrs`)aoq+GPF&bMLTp3o>8E8 z0|QZ>ji?n%HhuEo_#Ym>@EENn)Qv_Tg_4_y%%##v2Z*zR+P|+3%<(CRZ7JN zDqC}JUlJ&I>V#D2A)7V>_S_&Pm>Bm&nHjMFyo4V>9pf(0YjJpf!!MoiUPcH-( zJ^(Cmp|9v)!TB%z$0&BZx4t=`5Yv#Yog|F3y88pt I7L&980R&ARu>b%7 literal 0 HcmV?d00001 diff --git a/.doctrees/modules/gcp/schema.doctree b/.doctrees/modules/gcp/schema.doctree new file mode 100644 index 0000000000000000000000000000000000000000..d9fdd461c866b6f0961ad32d5d6ecf8f642d1813 GIT binary patch literal 190306 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 HvG9KYA$uof literal 0 HcmV?d00001 diff --git a/.doctrees/modules/github/config.doctree b/.doctrees/modules/github/config.doctree new file mode 100644 index 0000000000000000000000000000000000000000..25551c7891d9bf780c5fd76cc9d9f5fd1b7a82b9 GIT binary patch literal 19853 zcmeHPTWlOzTF%9nxMMq)$#`aQlCAYt>A zh8s3MYMlM~##UpJ4f)!7;6;AbXs~^#Q8g_`_YJr4sKG|5dT2R8F>XH?7}e17+@!hL zZw{D)j~bKa5bF=E&@nQv*oiqSG^2_#>$%I;O5|(2E!9W$zPF7HqN78t_Zyr(4DcKq zsB54oY?#N`keW=vJje!O$`@FlW4T6SA*yJspoO7tRiY3xrWqcz^nhkFSaq}@Kp{T& zyIM_rI;2PS^r50vSAAod>O^cX)K=(K!#rY+o5SWw^PqW(-6@$~%_#Yi>l%J(-SbyV zRm~5*6<@2Hn@yir3{=rVLofM3SgLt?bO95mPh21Wvw$-CF`rcp+hMw4eD7ayi`hUD^m)dpX_iwi6BRKqFq9F5N)XlSo)19OA}6%!j-eQ?UiU0F45sk1YAPCNQR-2} zv8syY2B8Kfb3kb>>V}42_bmW0c~#j|LT#01qA3+EFkZVb4Y|O)>54#lj6p!wkE&sW z`C*KLqA1WLsyAJ6yz1)AjA93#Tc8*Cc@qCuCNNjcwH|X*H8G>SBVRPt;%)F}g0mRa zCYH5TLp)4nTTsP`$akoU8HV*>rc~1ER#E6?vFg=IT=U*_CR*DO%w*pnYa-k6R#Wwa z{8qvO*l&lZYcoKOu$U-gL#shjoH)?BTLK@&-&wAF-$bX=Pn=LozM` zG*gPSo4|qc)}4900+0zQ()L59mdk-%ruT_&BYl0O@{~)oZVov?w%7KV4P{ zsP+)rN7_s858A=oo+DMB89bP5W;A|2S>b|jNc@Y}HNEVg(W$KYD zm;hwtQ+v;KfLwGEV?D=*Dc-1x3EL6$23jTb)`I7dbaCKv-Ovrk0OiyjJhJENMdfXL zCcr4mmf?W506OpU8d*e(Dy=*(5+l zD0FXI)teBi##@r6ZB3=UWfUma+jjcW((9wGv+<ln^)~Yq#tkj&>9xN@^E9Wm*x2-D` zl%K1d51ooN|JwZQjoO3zp`*`T^dH{8VBMO1%hH!_1oO7HGG8;#>DRA3zHPm}_F(Bs z{Z>t{>vQH;A6Q?rE9cLxJ$&_sS)DUCDzoze`iUOg|EeR}Jv6oR_b_(VTK?wxN^ZQz z`kWI~=BUoyj^jN%@0`=F-?MJj?p;8?>y^2?(S!3B!&~RCt!v-B=vHg^fBjl8Z>@vQ zubGwmcQLoOtcSI0n8(GOlt~m9IIOpo$%mQI3>)9|b)rK@iBe`8eBACYo#`*$o;O5*=fG`w%y!9kD)& zqZ%z_Z6=Z)CQ@XOCCND?i_)GrNx!(aB!S|Tkdc@W5#32jhBzfumLui2_J9nbI`l1h&T3@qSvNyHxui2q9o&_V-G6=iaaITx$Ne~ z9Ru(!9^7uVdYRw-5fZ&rtsg0x6PICr8>;tLz3aYI>k%~jOK9v6JIv#0_1(w|v%6N( z7Z0%`I(AZAi#Dy=FWS+`iCmqQ<@+G)!IMIJ-Ad8iU8nLW-gX7qUYBA$YBy>-{mGBo zv+i^l9s5)9PGKMXadwY`?SCS{h)=1AKZUIRvv(2yN4$OWQ)u>YT*QS`IvMXTBy9eR zbiwiS_vJJD$5wF(rgaumo>^T*)XE@;CO<-6B>53~5=Wbnq!>O)rhBYqx>6d?fBfEW zWS5U0zxSKi5=kXw4+GuixLu%se0#KI>#dE`%*e?eKud_~eX$jh3+yoPUU0^5j*yP!5Yk&Gj8u&qucEeH?sRx0Vl;~Zb?H&7s_%DyZW zp*!)C_q|q6qyqywZvR4#gkBWmeYD9a2F+rx6eG`(?f{lZc@Yy?=TvkipLSKglOihF ztY8PWgr9?E)5nB8_U{mD#_ivxe>(>6crsM?DUhxT&(^)3)Kx?*_Q4*eO1iqQhk6*F zBA}iJH~)1z>w}Ta?*b1ghxg-ri%xRkCATvC{d>XRzugsoPl{2x(+zo31mC?<%fg)f z(hu7agkWF7Q2W1#WwCi$`mBgeCB;6wF@Vzl&dI;o2)@4CV;c#%k)~sx%%pNJK*J`R$5Pr(lcYI5jryPP>2&5Gnd27CTcSn6v$MA3 zd^5fakt+UIARu8%pRua>D7ctvw#~UTZch=jcI>#n2=Gpl9&8h2w}ST%(Q1zmM)Uiy znN!i+k!Z_#XmU*WV{;hV(@E&FW6-@i1~onxEK4{2IgOS^_gBd}jN7xjG7<_}zR8V* z*>P#QGy-Rq)zW4a{V~(eUX+u|dJ@Zk`p((XW_$6SC)wR9EXJEQtMDAJ%bWLPes1Su z=QcgN-XEc5{o6TAHAl4DZCu4mrR}OENaoAH|-nU9LNKIfWhfQNNx;QFrr!dr};C zy>2?3L49Fvx|^|h-PXAhJ483|!_7MOcLtE}P_e4`fUCR9)<(k|Kqg7FOdr|)B2SgL zgH1+U(d*oy-0E1&E=JRPK+L`4)gy=Q7xOE#Z7ywk{Gzb0R87yqop+uxL3cfIpEtzq z&Okv0dKUge@uILEh03z;)p&99wPS(O#3b8)PGS+;v!6F5i7OLCjN5;)BZx?kbQYrj zGqmhw$sP-Vk~fg}k&(ikS%-)(8EH9U*r^Q)JoGOESg0*Q}tyLb} zzPqSiUAU*-duvg>es%F`x!kgM^PQN_6aWt;gQYr>EyRSrn`1?4bJ>v`g|XdXhck4i z{c_#=Uaq(8b&tm9;b0+UK-wwGmUgFhdPi)Nb2-~Ht5c%*OnZ&cN=BCS%kQk&kj>1_%X0UB&SZa#SH!||4(1HVPVUH)6$dc`K&oR~6dG>~jSJ3hce7-xy zMd$u)+IO`7i2nRBVRpd&6Z%Z}CC@|dDNab_8Eb{Ct70db?3v8FOwSDB_iPF1JD)qgMt-&03;}Oo?McLiHt(D-Oom=kxv<$YLcHhEK5Y5COZ@uA>}h5DfL*A zWeVR$t`EtJ1NSs1LV~7DQ#Fq)u%S3D$nzU`fL7;bc3^Ih-?HEs1#1Ynd27CD#`PTw5OU5T_6102`!d;qz~>^UE4PQI?{MjiOTFc!eEzy?Hy6>-GU z)ijzL#Xg*;rbX-k&xobWAvFOW7|RQgjA-~sYo!j4@Dgy>4M_ZHQ9Ups-BUMe1gWD) z`Sb!q&9>wyL8j=M6<8sM=n+-70!q)3xuy$jP%4Bu#fC8%?6SBbDH^DWtEtNtvVX)?o9 zLII^p%E1(Qpt-)jUKGa=MYxv|&NoY_8I&6Ad1}E4K?@bRsSp$H%d$f#pMLq=1t{yN zzg*1?LnY}jC*?4q=OJ6wGQwp(j2YG(3^5dH73h#2nvI)>*eM{grY6dn99gPCo$&D? zI~r`dp|+u#){5!i7wGMCJOci3P(#YGxX~McP0#UXe!&-d>TyVp${QVT z>K_)_56J~QpYJPvvyT;EWU5|7CZvH-9ck7O3g!SuGdLTUe+0h1-&lmAAc-5Q2MGim z9^!iwMuSacj@D#x>ht37R><7BG48q|+Z@@aut0%D$$uPx3NlrF0572m#qjKQjg#2Up4&meu(qqJ8)jDyHAw(^;c_VIhamK`sN z>3FRFcZ9Q^gUw3_zWxR+y2dB{vFF{-`otDM-~7V0+hjNBTO)2BZ4O}Uza|R!eJA_d z_$V)LfI3=HCyQ+M6CsXIcPx%ib}A10-_b$}<9J(P#8*_i%j37B^4TM>F%T?wEO3dS#x(jQtW?NOp~9Shz#ZJ+-#P`;<@JPcsM0 zJLce{r{dtrwj88Ov)zr>PlOYBvSVRv^ePPL)0>>gZiVqw8XV*JsrqQf@UQNeZ6Ec@ zwzgK_Oj``g6Bu?pSs2S;m4fE3@Q!1qG4|?ptP&_fUB&nJ(6?ME6HU8R6ZDlO*p5l> zvSK&0nHztw&D?13iNe9(+om4Nhl2t-tv;k*T0;0@b~u?lUx6LA+^Q4lSao|Vv{*-~ PA$BO@#XN{G`puf@g|b$_Y6ET^Q`{X zOUq)tnDXSxidobtY2WjC+zRqYK9d9aT<*zJ`t4YnOpI-r=faK`#$JsRZoQdXUdWrR z?{fha?nOGb&W|&bmRh*+yh?nm@>DD@uo2|jmk-J*iqJ=%yt1=dsq-(TII9nx)i%x~ zcV`~bnbF!TR6ajT%r#ui#Yc5PpVA#qt;_vWLBkhO$CjFELqR$~@h`Q_Vl}9wyl&-il2EYWCg)ZTXDe`fmdZ8UYhoRguSw z2|d|SN=!ae^YCr>&n*YQWE@+91}aZ8@auo!4~)f& zic-OEb8V*KHFc#*Q!wyr8a6f>!7cUjGMfr3(r|f?4l2TRCf7INmJUGV>#*b4{8+uLepP3{F?LfzkUU84LgJsnM`-%z%( zXkb4DcRSCs0*k}i4HzxI!t$V5mR4gmM7>zNJK`?fbz-q^0-el^@wxG0WApMp4dYdb zZn5Re*epOYa==u6yqAlR_&{ zzx1>7pPxHmot|%RGGVQ;O!7R{fDRgm+!7z?$drEDN~f|C=yYdi$AtU`jcTLo09Hqz zZ*T0Jq(?CUhbl?bMYXLGKj!J|ro(&jGqel04TC{x3hS;W&L zvBW(n*yhO!B8g|$$|+yr^N6L&@u`l9RID?h{na$cmoz{!4*2H{g$x@twqhN68o$8_ zu7{|D_C{+d`h5t(XqUj}aU3bYCZ7X^T4l1C)YTFMD(fIA*M!%r<=HiinR}dgN|$&zDT9 zxzzXox(~I9s2{itPd)a>5+m(UrpMK~UNUVGUeh_9CK4~X1Z}TJ4K=O`h|^bP0T=Q0 zTrqS*0k^=8NmM=q0#=-G5?R8P(`~(h0LiCJWdN{?!PaZ%Z{S-B;URmHXv41E`N~UJL*S)zbTN;S3&+Taq=Df|6UFp z4L7?~ogO9%6c*jXVl9cIxYDb`+?3RM2p(O{rbf4ouTEsOn?*Xq#8mVHpF z^^wD$?AmH}a2bOr61+`-hd_r39_=VBa==Zo|5+pd4#|HLz5v+qBLL%rpC_(rF+x9S g`C?0a*ov!`9X1aF0C66>b&y6%Yo literal 0 HcmV?d00001 diff --git a/.doctrees/modules/github/schema.doctree b/.doctrees/modules/github/schema.doctree new file mode 100644 index 0000000000000000000000000000000000000000..c86bdb7a277121409cb544ebd580bebbb3456573 GIT binary patch literal 64585 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 B$F~3g literal 0 HcmV?d00001 diff --git a/.doctrees/modules/gsuite/config.doctree b/.doctrees/modules/gsuite/config.doctree new file mode 100644 index 0000000000000000000000000000000000000000..446efa5ba68a3a903190cad94d68bd346162fa95 GIT binary patch literal 18896 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 ZV<1VxjC2}Aqkf&<9kH3E$xK)p`+rzWre^>E literal 0 HcmV?d00001 diff --git a/.doctrees/modules/index.doctree b/.doctrees/modules/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..e2fca1159fada711f062aa41a49b033da8f16cdc GIT binary patch literal 2936 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 R(Y?^d`!Y1zG$b1j{{#Mn73Tl| literal 0 HcmV?d00001 diff --git a/.doctrees/modules/kubernetes/index.doctree b/.doctrees/modules/kubernetes/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..f3f0b084fdb5ee8c86e124e9e87745bda1cf1f29 GIT binary patch literal 4166 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 LP^AJUZPfk`ty4V> literal 0 HcmV?d00001 diff --git a/.doctrees/modules/okta/index.doctree b/.doctrees/modules/okta/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..9ab4349e8cbcc434a8ad0be3f419a3d773b6bafe GIT binary patch literal 4502 zcmbtYZEGCI9hWWLqwY?YT$@r`sX_>G8cUauz9@lG+7$Oe^bE!clwy{--MO2QW_PwT zv$|6u(7s5q@bp!t?@Q=+D52k>gnoybEov4VOu!&Kj)AS})uq*0Bx4ji5^`yYuwi5a;<|?>wh-Z?~j=?sEIs z;I3_^1Qv~B`?eEQ5ZShEmdHkSNAQHYQ8p&FON>!`oEehFkF&xmrDM`M|vX9<-&ghX>IV$vz z7|}-tw22f#&Ui9C3grdNOzB63EAQKlbZSR`fKv{OQ;ygh-k0pVa3FgV_wyEhZ{zn4 ze(%CL>^*kO4%uU%-&r^(KgI4i6M~vRaGY%sMayB(@tlAg8ZWVJ;}cDlE)H-~gdUWh zpd{RBckD)#p0gCE$(3q-d0GbOY18qgOd&;`3j`U1NJ znx1pwPguC%fB1_gI;ngA%3T}<_ z6%77qbDSNhUEK(0@5gB>c=*lk{j!9+DpaHX66XK9IqELd{&FMKttTWj@_MFyRRXT~ zHP)|S^zWNv-G$oUZiIF3xym%E=h0Ker~G;he_dj}CRbzs8X*3;IrbjZ{&6GhyU%DU zE{{HW_6yxzi)Gubc?IkK3aLi_AHewc=IHxS``6~^>1(UKZ5Bn{*<0VsOaBkc((mhO z-WT)I-wtJ*$}EYN3VYH1*%q3q42`18{lDbBuE($k_TYNYL?6c}pm^TBAC2tY6_HRT z6Fzl+bn6TqG8z*wsO|A26j?+k+}9b*CTHKiwY7Ej9sEOWJ0|mpriQs+{uh538c3Q? zG#D|aLXO=_+hjb7FaW)@{c@+0aAn&`7LTc-kvrY8-F)8BG7*>V%62hF)xgm|&$=*J z`VsTRSqsbcOS5~W*N$hHE>fx-S?j`Q4Zlk@os;! z8#>03*LVJE=30rUX`fxGV58oae$^!+ZSF*@KCc zCXt3NF;8#Vz8_a{Wx;$RRqQ|+XoOZ8AdvkOtg+>TfkgNteHniXo3r_Ihv{8D~PxzW8n{ySD=w?EfRt~ zwmlq1BL(td0pk5qELhYad*6S-2&Q0PZg9hXw+L6hi^5SY5u*D(s}MQK6oDvs%#Hii zop9L{F5ll0OsnVd*99Y*wG2uVG3_MX?s zfj}d`gpO-6xRy5P$8W#?efV{tCgGYHPpQp3T$nLZ;$g_CndD}ei3Ln_3>hPbA{5xu zwmn2d#zB>w75qS_K0dDO9etS?G7lJ^GJzkWcSlGc_&put)fN0ULso0J>2AI*mVuBV zDT=#23>ltPA+Ej1HuyMqAhgf36ej#5Hm}rW6}Up|$dD%!M8Kjf9QZ<^v+=52kD}N| z0gn;D+Ji0D+FZgmqtt+QFBFoT2k1Rq1bApGnm<8b+WqpWj2IP@qMBXVZJJ#8N33lZ zRRn2^2*g{FBPUE?h?-JVB|KpFfd&y}@cc%!pqcr%u02?x7SCFcvD>6tG=1jaMGSh& z6N~S&50Tnu@8chBJDzMVQyl6umorA1y@^lHW<72D%Qu$q)DJl-numhj3yM$6ghXph2T(gqT+l8_w>A zcu&L0I0G6->*JFC1zhmCdxpTr>l~?s|25G0bp!fARXbM5yA?UVzTI+2Ku}Ko&2=MR N-pWegyKXi<`5)a|sW<=t literal 0 HcmV?d00001 diff --git a/.doctrees/modules/okta/schema.doctree b/.doctrees/modules/okta/schema.doctree new file mode 100644 index 0000000000000000000000000000000000000000..525a83b461fecd3a02dd6822e05aa7c3deddc1be GIT binary patch literal 68774 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 literal 0 HcmV?d00001 diff --git a/.doctrees/modules/pagerduty/config.doctree b/.doctrees/modules/pagerduty/config.doctree new file mode 100644 index 0000000000000000000000000000000000000000..6308222e654a4a920d0021a87083f6e308911ded GIT binary patch literal 6444 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 literal 0 HcmV?d00001 diff --git a/.doctrees/modules/semgrep/index.doctree b/.doctrees/modules/semgrep/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..bb1bb77db082d22018322e16008ddfa130cbc91f GIT binary patch literal 3888 zcmb7HTZ zsz|EoZWcrKA&UpZvJmZG2;|q~CuKjWE`1?Rn1-TDN7B)`eCN}t?;8JmaJ1)t=165M zPM0GRMX89WvZfu0Fi&Wz?GN_df7zGzq3KAnP$HKhwPp`1LKgE#($s!q&A=_!F;}B< ze@oF&$0Dt_vj%Ij);IPc>zIa)HK!X>ru7v~=8|UCEy0R|=XB|gUQc{)y%kV%+cYzR zbG2p1rW4eLvVGGm?VFeb9;eh!@+mQ0qP2{txrSfPkNr4O&gNFgiBb^ay^)fncxy*_ zwjNALcp>S`t;tPGlewF+?1haP zs2&k&NjJ;BoO>OX*gbRSSBnI-i}IJTuh@qZb9Z-DDAHLxxBs@kGN(dD6M{KvdT|=^ zJfgE0b%+vw$o|9rOHDf=%ZO&0+0TB#4@5yS&t;&MITus=$~0LVMWDV{reEqP1y`n> z=E;;w8rkzb)AdZJM9Nq8%5=e?Yr|csd{@S?gE+q2&6qhVLw2?Rmt<60vRi8Ztm0qj z0T9es81P7Xfnm2C=8|L7 zN5le0+HMxdHC(t?)|||Q(5cXLWAgll>APDB`3jaZArlM9Kmk`-03bWYQBZlWkWfy& zBv{0n1=ZDo6UzjDP+J%8gYOJ ziGy#Uw&qCWdRt4wYq92ZXJ$tQ``HW%rE3GKt@pPlc6ORu&H;reF~o<%A#3`ar1KnC z6v7>0d=mv_Zc7>p83ianfCI<4Dxa8US<(nc90eKf9StEvX}$n@Zh0{%%!BK>k%Q1Onr>)vpPqSCEFdY!fi`91_?)I;F&*p(Du zlg@!c9w)K3pWk}N3^JMp2nu*74Sm3RPBJC1-BpGeGOaW9csyP#7NcyXnMg-M&c_kG z9Al*#TXVXI&^_S7p}waQ^jN{SIZ9d~ zOt<~G7zSK~q#$&28ZvZHA<|xy8e;4Nh}{=?h9g|#>N&ckfGc1}gmF3p0xC{8aV(+o z>GrxF1-^9cUuw6qJN^^%&LwQ5r2b(1Huhb++bYOIkFs5JTIn9yDF$ zp#O!u<%GpM`-%OiOvefIDuX*OE&FMr*jxDjk@b}6Z)VBw?uRib%pDJng~XL&wXQI8 zQ&Oyh@yKd26}(QoU;2j~VZFMurLj|;>NlNi=?A4s?Ku3-uC8(h*D;79M1ul6SaTSn zS4Lpr18$1elT!Wzod4c_39zI2M)}~oK=~A-!R_FFSSgf7C0*ZH_2zKvgH)3$Kiil<)ZZ!`xT@aE&9enA|-JC&EzwTv%5b`BI)xn^avQ>ogM>LbE5 z>dW)M;St&S$46gI{x-je1#n@}FKFa*(hwEa@NzL$8$~r2hO3{S^xk5 literal 0 HcmV?d00001 diff --git a/.doctrees/modules/semgrep/schema.doctree b/.doctrees/modules/semgrep/schema.doctree new file mode 100644 index 0000000000000000000000000000000000000000..ab21c94d0a00ab840334ef1d2d9a7d293111505d GIT binary patch literal 31367 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 B1~32s literal 0 HcmV?d00001 diff --git a/.doctrees/ops.doctree b/.doctrees/ops.doctree new file mode 100644 index 0000000000000000000000000000000000000000..9f3bffc06d77ead3043f8a6da1b2630082256739 GIT binary patch literal 15030 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 YrV|+u5#AD&nl?zB#*&9-`KVF-e{8vcJOBUy literal 0 HcmV?d00001 diff --git a/.doctrees/usage/index.doctree b/.doctrees/usage/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..473f2216b3f23582a04800f5861b455c50116ae3 GIT binary patch literal 2544 zcmZWr%WfMt6m{ZAwrop&17;PI(H`6f~U9zjY3GpEZ6BO#ZgxGQn~Zh`NEWy37U21MNjm_&Q%gy zamSm&Th9Nt7x$?5R!)M)9kS1D$y~O-Qz+^jK&*S3md$FHh3Zb2(Bj(iX|2<*C~oFc z+z*b<_*iPj7cc|N%KGrj%Q$NGeDKCfs?z&(84nuF6@r(vMot=pSvmD*jC)@A8h_ks z(y~(gZQ!-t_ld^?sS6btpGwtu5?_d~#7prlkGmyZFkX3)e)$(agheYajfUe#Gi4^} zHui;N3`xC>!`4m*?CMZXxaBNeY{fkUe;JQk+p zV;i*Qc04!sdR$QJ&CJqDEZ5dE4i)M-8(ZhcO{8@W&mpJyNJ-7p#RKs|9E1rKPf#oI z47L3P^*L;-dp3vNirYlRr`S5h|MRO9#1CQ*=eFa3bUh}v#Vhezyt&xfw08e!7m0YC ztvraMBG_DJ(ng5#t&sYHmvPr|@1>rhqmR25om!(kM{CCZ?^Fd8sq67xomG@$&}P8c zEHI?Pc~lz0e&dY5!!^XcRt#1_8X|U*8!_*~X)hOLnc~UR7_W`z_ckvc#Gyksp{ist zHMT@Tf;ITc>&IeLpd1b68ir;XRE*{1`K~*RA z;xS)HWXw|^+)AkzdyG%Q4DLpAYBe$j4a;c>WZ*3=cn&Ikh$E@1;0f1-VbDr(5d8G) z)tQr6pRR8bZmqFIP|XzD0Odn$n4WlOf?v1NtF5H?d}C+BgqX!qWAyF0E-qugFnWp@kq*g71)hHhg!5-ueiVr3FYRE!ak*@cU)f$j!JFBV61`lflsnssm{tl`f56qB7nfvL8FDm0W zxqq^5k;0Q3=_Hsd+agRlI#D^0_Le)VnGmnz0fKRu0@_l|uvH@~hKkSf3QioiSqJ6K z))?x&4`S&=^yhINEVPZDp$nBPrBA;eeH}*?uLzO?cG5+iu!D?DDDIvoBfb#cSMJSt zJfF|ctECr4pBpdDG@qz1f)m7Z@G8a*4-N3MFTeX9c^%nlvEe2ocWzEs zZoDygj3oEd+Kup~f{THt6ATao0blIK=V-^0bd%X#pSUXb$89`vOYP}`2ssl9|C;$s z?)n2)f;q|CfRT1c)8krhM50VV8|shG3qdhGD0?$%$Z?%OoW2efT;zwd=A4!SK>I+X zo}vR*oN$s^!iCAY-T}vBz=$l-z%F05k)2<{x8U3Zds-+%uL+(qsR$l-%j-wZbKoMS#%(1Ut%Ua@zl;ZCcepw-scS$_M?(lwHYW-m$L0Z`%Y&1w7zLj2cvHM7) zca?G-%ZX84scY3I8(^nBShF}-d94qftl0;NTAx|_>87oA2hTL9p}=<#IshLdg;AYlPX)BzEZ1j`WfE)WUHmAv H!{q!wE${<* literal 0 HcmV?d00001 diff --git a/.doctrees/usage/samplequeries.doctree b/.doctrees/usage/samplequeries.doctree new file mode 100644 index 0000000000000000000000000000000000000000..b3dd1745087a158b0d6bc2386a466119fddf1526 GIT binary patch literal 18741 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 LcnYS%YT^F@xP1Up literal 0 HcmV?d00001 diff --git a/.doctrees/usage/schema.doctree b/.doctrees/usage/schema.doctree new file mode 100644 index 0000000000000000000000000000000000000000..b16fd69645a89c35dc70fbfc15e616e878a53e6f GIT binary patch literal 1955230 zcmeEv34B~ty+3qsx=@xDN?0yy(~_jLKq;XV(lmwGJxSRinaoTwGfZZ}ENuf+5y5p( zl%OIYiaVl!0*a#O6CdLCaQC_K#9d@l#P`JI|NEW&-nsY8IVYLW|9krR$Tat!bME&2`s%Sg zV@;LWh1jlQzFdeW$13|kig+rWO%#&3u}j7(^D%iToh`Pq{4=<{(xq%tc~v=}BUUKohYGQg)Tq}JPbG(AW0)EePwP$Y##)4?xo(Wq4GKT7 zGGinLwJD9I_OHzD6V*>mt;}Gx-cp&CP3MwhTgn5mN<*wvDx?R>B|wYlrlu1`L^3m; zjTMXV5dJ+q7aOMknw2Pz$Ug>R@yiOyK}=Jw%q+!*@YPsqzf@ytZtAeq)YRdXvzMpx z!^!1^axRxFEZ>zcT(&$eA^QG3l!PR)QZli;P%JGk7h^-ou_Q$b;QQ0<$=^3 zDg?>m0{)0@2L68>{C^4je<{FEoj_o>(B!FRsO}7??(E8(fpRvREcIp6MX5uw`m-yu z@l9X4lpIzS;o4=(*5$K_WWoc^62)c9ymZbhrIH?H#4E)HvVbq0OQhq#8N7;>;6Lf2 zH<(Ul6CV5n-X(V@6U|;R?~Q`KdY6}zg*0T^mCj~8kcc-JE0&T4FFlCwy>bzYNy2|g z5yjR9u6naUqhdrU)hfPbFQ_7^AvUEM#Zn=k8&d1HAXq;NXHjLY%Iuhw_Y9Etc5``e zh2$GS#)~S*^<)c2*8Ao8Jc3ubN^09iSL$%mCK@1HXRU_R0g29%4G9`vYCUh|=eJMU zXP;iw^K>z{q~whh@*|+aTax*cGhT5tSBmX!_MkWO2J;0Xl96&@Bo8{BAEeELcZlAu zBy9*(?V&*4QM5HQw88&9{9n@+7zTPrN0RMJTQ2JE+|=INwRKC+IbGZOx-V&2E8eba z_ISb$`Oo$8pPfswz*62DPR4Rx%qynyg%b3432$ezP=xV;*U#nSORehKVV8WpU2+Pv zD@VJnX39B&F2X;di|X&^M78(#d#P9vp7?o%$0PZ4u9VIVAz?DZy8ix)y=E_#ODGSm zOX=wEXB}Hp>J?n8Dt&cUDc<$O_;;SX`sVs5uk066JE0ww)HbRgzjzy+2iZo**flQ; z!%`uZ?HkDEbkJX?A^oJw&F+(Cy28~3NWG;b|%Rb z;TqNr?$0QG4OhVPdtnA@!6|8!qWjTzPPD-rCZ^5ZFflgvy}YS2rTG`Xb?Qo$?gpn% zW4eZsdRyv7oG9~Fa4>BJ`k8}nGEn&eXdj)j!mwU!_J;EXm?4iO`u6hLE#yy^)UNc+}R`!!qGtFaq(pK&!U_<`K!=vEh+yvKeQ}Fl|W1 zb|zsA@9&4j8cCagKVekDN8Qls<>O{C%YbDPOjAGzIEPo0kr5Dbw6%$>eBv#Kr|rEm#2>Q=d{lsUMy1 z#~PB=#&Jg4DZf-P%uq$a1AKI<%w)RG0Zs*ll^-BbzUl&HE@`8z@yG%z{^y#C%~6^X zuiQ-5kYstJf8g0fZ`z|B%wzX{D zHXFV~Og!ZQnY*$$-EukFoLY#@sU@Goe^8rKj2nuC*@>jY796ln#Z*%gE|ZxBO_-82 zmaj$-jj$RHCrhzJtORRJ#eBG^qD>=ax0zE>l8u>DtON=MzsyRJqjHMhk~f@Bl)+ZD zye}?m*}`jCZQ%o3PAOIxN~+ef%0aEIULViXN0GHr&5Sb1Ri?w3n@)^X_T%|l7$cw# zne|xRBQ`Ga)jZPyPoa;M1MeL@V7>HIdcnpJ_cHkbm{=5Gbwv6HSli~kcs{o?ISQ5_ zusjSC>3gw(JXj)d#D@%Cx>QVN2V1?KBupVnrIBLW^5sJ?6)6w2#`D9=v!jD0pFK2P zES7<`Q%_kM4X_!Yy$>1De`SKDUNYp9R7AZw-*1ZG|h zp9Vay!XM&~Ftp=mt`a#oFAZwHaQ-#$o|$rB+K&qj>;ei&vf9s;z|6-wVc7-njsq=y zF%K;2rF6WUjTKz`P>RE}k7U9+))B>1Sp7B^TVDc|?S_Vaq$<8kPBN=u4f z&q?db@yn8>Vsiss&0vo-f}e)f5ExRID5=o`hzlN)B%PoM@R345OqAT;k4dy;B@dUj0rY5HR-DQzTG)l~81-eg3Sylbn}DS7C;kxn8twHqgj* z&OD~5RNHumGh67lWR(mGZx56dJt*J|6jpHL+hhzl6dMZYhiob!McP>8M=FcLn^O%G zuqYDEjboU}p2)%pf{(Z(I1=j?-jazz$}hn<7MT>flNxAd&`yB^nF51~=->&4huksD z-G@085Qi+bGFR<_YSeFjf4|yA@p?AMhq7Q&-~Vv0?}1Efcozsnt1GDeh`R8X*gsZl zyPP5LrHQ)mP$mL%Au}HaL1i&o0e#NOObpP_(1aN!qFq(5&@nqRp3kC1uIgo^zYroS z^4VSKL@714@hF@>{SgUk%sdM}<$=tf;D;L~SPi0<0GYo-+B%g%2uUSliE3c8D^m;k zT~*IX#0Las6h^CFDJzcY8_<8xwTS&C6h3nlxIcl5Bk{+0Mx#jeK*)R;WUjGX&Kyd= zb1+GoX@s8u=W>lSXMM65FQiA*APe6!S^L$r)K&Q7Qu~9T_9u}lX}emR+Rx~rp*$=) zg#Rh)yp`5@vum9fLY-e>TW4)6%`Bu4aR1vDvbJ49y(@`-8%Y|1Qxgnkh>>BT-{ z*|KzE*)poB+j!Q@75G8y78X^iyXvd(rLo{4z#_97a@5e(l%n2?AWOM+7Oo%#l2ng# zX@CEfq^< zEpWhOZmONdhOLYpxA~r&;r$Xi${S$9KR33FzL@~?fpsQy6 znI;PQcvsMe0qA4QL3<>rzK2~@rDLFkFwJKms&$m8pt=sooJmog;fm^TK-D&}sD#3C zS@51wD&V=a*1fK^J_2gJ-L}?sRX}ys!*HvQB=nsWddU?!_gAj69Pd*Kaq0+x6dGrg3-_oRf9h^FxnvCR!Do5fRkehp%>Zp&v(9UAT z{Yl%HTTIFAx5e-W4dWN3GCq$0QG2xy?*pK1&BSPqXrV~WRS0$DG(0>TY%v^_=ZIBmt zLaadVFZUJVazxf8^BmE6okIh8U{-TJmZ^^2i!MvR5wNC zsBZ3&pbklNJ>)!;7^@dGp~G6uAf>GDezd;x@W*Q6gq%SoA;L7ns}7R-ogyh}(aAhh z^{C0-@Uv1e9vuO7buk`=l(9c_Ib5+=b*&fAHLN^qDZy)82|fS_K8+yOcW;N%-g6Zt zN4rw+S#;RY?t3QHV+XB$k8ADGMzzhh_Oe&x{jFlx%^O z648)I7vp)@zyQuh3`HQmMUK!Rr)1(L%EXPXOrXu}23sbKG^j{Pvu^Oy=+-!D4WfTY zxc5`IpLB(bRMiuezc_>(ryRsOl=j znduxTyflu8za{8DP|&}31&zk7-Fk4J66%&OCDorvrbvl{+?2A7xlL@qn{lk{A`l<;;fF;vIqO+gL z|CXSSp`ed)1&s!?BOtS(>8X(<)vL*UQcWPtJ)k5IuV|_$-qsv0qvI(aHjhe%o8D*# z0wu#XF!To($`I-TQS(v-&*uoRSG_^aQg}@q22xAN6$}!~xLP?N{(8~WmD=+n- zjq1Z{SA9TJksbN=~;Nz0~ zEwwQdpBGzuqRq5YI}113zkwvxE6ZXu4JwOjuWP-RD-RDO3w*YuNg);BUWDG5xf_36 z20}E6-err-LILzinIVoYo1&9)L);X_5Z7ohdNV^Dw;FImoX-3*uREC~W{+YjJyPVN z2t1Ya|D4kQgcbd0pZbZ&!HqD-fDz_Qzloqp*}{G;WY`?bjk35=4B3PL%`6;WfI*}% zRQC5v%Mor@miy8B`}^5uZ<&JZOz+vcqr0OM_oTy%^;>!_%;%ELG%0K=4f!7=I~&6` zYbEN+Vf0QZU)X?WP2`4*({F=NbvVMKR{Bk`;ekY~R;q1?n%ZWX1+99oA6E?iPQ0}ZS4s-b*BhH z$RXOzA9ePu&kx7aIc=g%v2re+>d5B?(?ez0A_~Vb7^Lq_!k$o=-B=_&m!9>Y&ykNM z*2S_Y4!t6GukY!|;uN}OG9wv4aYmX4f+|4hH}qeiSOxl*77&;0IpqO;y6rvN%gJ(5 zC(fRp%^XaZ+-IXNR%Y22E5%dnI1B7Z$&jF)0?};KE3@2-Du-)x$(Wv631KLCK@25T zp~(#EI78{TF4XMzi7=p6;hxjfv0ae|n%>F0TH zszT;zG0|kXeFyecM%$S|V_QC(j*r3)P+~j<4?qI;=i?E0Xw9Dhs|PJ#H@`pCu_|J! zKNSj4CiLV_V4wvER!w#(u?L_6I|^|^$e^>aq%vDPlckYK`>H@mwI}WPZ8B*;B#Kx0 ziAr=DJqqi^N0&Q}u*FA^V7*deh&HqKqJelRWk@VOD$O-l9$b~=@Nb#P-vDEz2GOz% zX@EVV;(DwG4R9w>L3E|Dwg>Jw*cr}SA2`+gOG~0haQdsQ)e*m-YkjNS>cJYHY*Mhj z6`Bvl!yD90_C)GBX-<2r)o_$5%Oco%i``TeRq_LoDL`^qN<@cX-IQ(!lohQ;xbVhZ zKmx-|CQ7B!;!#K~^_r%%s`DXpnGz*i)v}tciYkcGrfjnKThvF$*Q2QjX;Bx8O6ze( zwW#P^nIUWypbnjh7=1(8XyadsgNgf^Ne@7DXqd}5NaIjc^(QbX0D)5@GJBQ3`?5hKITG`?MNpI>&V%n%pvH1C}f`b2{wYp%#ZNL*f)mG znIDK8oUmARwNmmB@dZ$;u92N5SJkZgg{=k(bHDQI3$w6;7W&7dMd&|3=W+p z=d3i~W;rs+B^i9$1)1o1##HSjzs&A{ha)Zwr9tV_BNBiD93U8`8kxBm+9-ESR<7L} zsN^F!9vWjJRt2|l7GR<=z(n-WQK8Y9730#yflrn5>ZEaG7Xmv)3Pl>+-Ed+3be)Qa zAFxna0?nu;&U>R4JZGpSoom@S5^wP}K4sSnX7NN8(Ow~ozrD)cFM`la3xZ`kFfw0* z&T`|vOsk=zSX7xo+o7To{7H!JD~mEX;}En>X}MepBZeO`mpsc@gZMm*iV8PZ)a)4) z2nLDu=ne|&W;jC4Fh)@JxTBm-x-ta`dtg}Gs=g11s~(TUutRD)=vdq6xg5$)ndzpX z@_d+@q@5~zQ0Eww>PL=y;?LXmK`^%yBciYxpt9*Q?%G(S|Wjj@vuqSh;%1MGFra19$@fA+~!F@ldJ1=mmtu6CthH&C$0oPsMzQoUGL zk?kZB2b}JKcPZdgB44saguTYigb)Rb3wl0jbukl-Jr;6LRG{t5tppE>w@Nm9K+Snrcy2(9x;79OW8eAAVMD}jZt*|Jbq6^Phh z@f;$I+F$WUEBNR>d!{yKb;WcQWO=G~7Cx%~mL%0HOXrSU8tyKHP6Ljqf}367A{Fku zB3HR!H-hFrrK2QEQG8xKnVF!{q+%_YP3A%K@yBHzvX6Un1~eH5wm~$-qo~mqY+u-cL;0%VJ#)_R7&?8 zD%}lM(nZfhhseRL+pmU-MQ;nKY$SFYusowtSdNw44U3_&@Djpg*KOL`v9Yhcr)O(N z7rBs-ZTk=gt)TOB5c%wa-+jNs7cq=Rf zpo!M;oHtP5ss@95~< zRx@WqC%u9TR|To`P|C|DcP6vm&UA7YJ{n;ln{Yh9J2#4KJBc@hdz|2XVHmE{0Psb) zvX0&Exw*Z!;~a0~jHWiIlMF&{>+YnRsjjMOXUke!v8iEtAN;l;2ux9pzvUt*+fP(j zVKu(*t1fPq=r4$XuaSlY@EAbr`D37wo=6dv87+nC#E`ClsF`EJO=3 zWJ2*~NuG?Yc*VpGsGOLIEK-2Z{2S_UW9AF^G>LnU;8 z%%s0*ulP4f(M!c|GMyxGR?Rbr3TJ*smG&pDO8ZV(bD^~7{{)VrV^fUa$oqe5!Zrc3 zwf`Gawg127X{^EhOV8U z3}r`i8nEn=J&7%2yMa_jsL0lA5m#>U;4n7Z9fUBd^ zLqfcplo;<>Fux~jUp~ak2SPNNLmJ4ua}oX+&pXlXd!Wd{?Y?)wib_sE($(R-P#>?q zt9`RaYE{%nb3(evuw{~81Su1E7(u)!{FBN8E-D4!Iac5aiy`iw_dRl?OLo|RY)zZGpI_~?z^A{M0X#7=*jmh&0&(FCoiDnTVE2VMo+RbCLwxq z6t%Z8vkQNWI~m0;@)5{fB8a2)UWuN(oRTw9(UUjO+P~Sg_IE<<-(*{Rt@82c$(%u{ zEP9d&dorUZAEdl}%9Xc|0&n*jAY{>#_mZS~7yGHc^Dcwue3RqLJ>6;F&iUnl`#5Fg zo355oq#!KRRRyMv#NZlJ#ti*KYWxxk_c&L$cLUs`&EXzNlIr_`u3m_l z!8&6M9>&j*>4n#XQ!yES(+vJq*xZ)RT?QUT++F9vHRn6&9yjWFEH34sC$L1x+*-=q z8dv7-0p?D#Wv;G@VsLZYr4;nVuAuJ)&=;74K9?lbtIIJgGOJi3UT3BuqZn@>l!q&V zQCcbDGDTZ-Mf(XrJ7SBrt|Hc60dW(Bd!sAdPXgQ<%;8>7lIn$f0`>)ig>*8P$ii8* zcozgcyPb#O(T%R8hu}iC$|Hq+7e#-kEBgBY{fBJP*HzdJa7rc~eXc~|tB)k~uT$t> zb%l;$RgaoOe}p8}3;yJ;o~_>MRVS|Su=*|J&~w(p$;?nRZ4XaCXF$0IxMh}n{DSiF zb5}kd06u|^O5=a{dF$+$|x5kqo4Ak8ha@3gl zr~z`Hf-L_qC+a1VRIfNq*kgb(t7RygABbg@83Wn=PVNZubrV_i5m2!29)-7@-rmq}OG!{+=xn&d{FG_bp)~S%lrE*-^ zobw9_W!{YRL9mrz(NgCggUqid5>|9>E!Q~*wiN9fZ!rQT(ZhFtT%R zgL?G?JY#Xl(F(^BfR^z%Vb+Dw_DoMtN4|+tsHdAtZB}lZP(R7lsCGiZWad7qFQ0JL zmu~~59}nuw30z-lfmM{lDvzi?(S$G9Yr^+MwcRu!I#;9z_F?!WA47d^Q}Do^B>g|= z@zEY3Cg%oX91e5F&H`sFovTSltop2`6BfOmnrX*@pn1XL*|`FSz7sObJWF-%X)B$> zDah|d4i5dtKG*EdYCkERbAWf2pCs?GdrL~DufV6eqSyQ zbcq1sO9En;xAv0y;{YGx{#9ft)em_I)t)xbbhX3XxFO|GZ|(-2H`iP)sz(<|4SICD zCQJdS)(fxh{-Ta8a6B$vxg#5QMZWap%PJr5LSVDn$4gN}_dEgT?N5~kqi@QAy>qp8 z)U~3l8#B$uBFBnh^Ia-(u;#n@XgKarw}co9>162AVQ>(Z79NBad7!N1@*BA;#`7>j zTqrSXt+>^qeZz*%j@}*|aUm0O02Z9 zmC8_Qx<%&E5Vcuu`E|j$Z9c(yCXIYFW`+bUmdewDJQ=)Oxrs!Nzi^t8!;WzpG zDY$w(Sxzu(t{$tFP%sAzTRt8L%f~cd1j(uDG2rev4i=~puWK$UalK}`sALy;aozPT zD)~Dh%*=CCN1w6MQJj@NC35gt>3W=%%7EWjMy~2YR%5JU6SlbM?<4pz3U~rmmwyvj z!&aBc$-{$iMC%qy@+zt75`pNZ&$nH5YCc-G)hCiZX{*o0qS5lzXUhn^$W?X{6`6>y zLLp{|-1Z8Is#c?mfaU7dC`A?BmHAhrn>Szw#+#bH6R=#4E=MJRKyqVU;LFivA_s5y zJ8LXQUmZH+reY8}rM_Wm9Bl&@n$MP|MVK$0(@vJ9Vddyt4q+>fq8D8y-kVzIlRfQv zO87cKpXG|<3RH!)klVLhUBhPs*5oL2g7Fn1Ad;EEHc~^Yb;v6vGJV6qh3x5qztDy3 z?l4V=F#L=2Ks*mwBsXy30xr`0E;#0@s#7uFq>*Qcs0mjut2~1DOa?h=%%lW0ma6p{ z6hMLqPFc*J%2msT4@Ik-^9x`^p>~pbSt-=(Bpx?~ip~`|)f~ld^1d-R)jU;>A~mO) zytfzkscha^d#WkNq0p(Od|hj*xtYx3G;>Y7!;9Vo%avAnA|#jj09DENS*aw>E8in> z@ZqK6pI2THJ+Gwo@;1P|*5t$|?Nu0AasxZxQPuRuDV3Di2eS#pO(RVj4BxKZb>uoR8zvp`ydv&Jp@WrgL} z)>7((<6=LWzh#hVoownA_R3RURZSDWh83>bm_}hlY)lKPPIPY-m`%PJ`zYSPCTVBd zuc<)BwKI*CF$p`z1k-n0#rxb?2Y-Gs!on-jN|B-MwNI&Usx zo=E5XaumOW(sGe2EpJC!&bOt-NS{up4AygZ+8&DjN>}vnK=ixK(U&PCZD;T@Y)>1b zG`!7~hIb+jZ?UDJu1XMbg!Fv~aV7~(p8`kDi*`WPArDyL-wK#NQ5&-onZEgEKWstPRT;D! zlwP2C|LBVM7R39kIo>~zq`TJG z_^N_zN5U%*yz&TQP4KmydjXP|b(EO1T#0!%5_5(vF?CgpnT0Z(r#~#Ni4lKG)B_ZC zzboq75%neJs4pZ*_3E%3TRp3~m(1-<7xKAbxEX-$F-m%yh(SZB1=j-We3FJyO2aN! z8s396lx%6JtMKQ*<<{{+dIar5oFU&ciT-Aa{vEF9-;3zS%+bGhod98xW(TR_2U%vH(gP`4^e;39Q9X7QoX2m zpr~WRaEy70NEtxDN!obCdp?)IJ;<>VZ}PEhHV?Or#zfo4V+^3H0B^%!9?rZk!eP=Q zxH~;9NT^fklG5K$N`K`_>HCq=Cv7RMt0K*SEmHZyDAyzYr^GySe=>`jjz2E5s1G3K zDUjQ67WGd9H6mNnX~l`oECD?Mb&2CdfuDB4XA&G)3#y)y=gF&Y*5#4}96<><%$0x- zA_0qS38<^kXT|f--=?n+(*^lJ;$BN}uW`lwA;f)}Iqp>?slNYMjY7nV^D%-;88je~ zgc}n^$?So-hVVprZ(tOz1*cvPFg>?L6+qNMUxcJ)2c@RRm6{JDHQQ{dsjEuNOu;6~ zY_hqM+SJWRt)FbAohe=YsLY#&2w# zF`6$IL>8eK<1a`ORiQ+^(Uqt>k*L?%5>;RI*a_QcmFeY7{JOQt zem_a7SC3;*Jy=zFml2p&3JowyE8%{L!u_Hv+`AC&=WXHERml673b8me5txjDqZmvL zVtfdBBboRGW#Z?qOneNP_?bBqKPE}_f6CWtWuvl~VHGu9SQnDfzQ4C3RJfhC*^@8oK~_Z>jo7Vn6f%GGROfe_SSvcO&+N zklS#=cmPSNSBFzjqFI<8N`n&Ih(+=6enE^Pa9dU^n~upzgJW(<$qGuza#u?3K}wo! zDXFVEO!wVN%>I&yw^PJhT@l}lh&P!d?jlL`N^mqPLA+cjpn=JEF)Rlal&OqJKR_|5{h{pG5SpF-LzjNvaohGm4tlUYHWO zkYP0NDS;4rt0of}1p?V51-DZQZgZvJKBVAXwiMJ=0rpdbjjKhzE~t7gS$LST@Htl& z?nf3rW6r{-NK(BbtWac%FwC{#q*^)kD)D_v#&=!GcmT=xmMs}|Rfz@iN@`S&a*^vq z^$V#KFH#;}aOL4s$iwsIJUl~^>Xo7$MN1*@!C!GT(N!cKhX+?pf~j#BY)Wv`W(o4} zE<|)06Ht<*YTkil;xq?;TqaJRMyh5(Zo`QarK+wfvnZ%C{t+eWwdACQa&m$zCl4Yg zP3D{&N0RE*XPweBfPN6oaMYiPC`yvGo|3iBm8{PoS!ddkRaXT%G+cqy5lNRsa+9Fk z47hUhS>&eAoSTbDQoSObttgUjaB|e92`f+1b|s~4)Rne}khYz+wAEFm<}mAUX>>%) zYJATm`dcXan_ba=4$;5e9Q}nh|!is_*on6lt<*+IBGnVA6bXjT>-7M(!y@@>k?3`+QwGkml{yf3DjAr45SfY1 z#2=TL*cXw3X^`7+Cbln0suz4?gx~>^5Vkgrgy&IsN4UcKH-y({3$LyMZou)gn2N1D zWfgDX>LZE$EQ)=tEA}rT_S4O=uO>J+n?mTPqGD)r zM|d_{WhijwJW9$AS5h89Qo3zPsjEWFixuLjbO}xdD;JVtr5boD)nXTApzO-Pmyv;j zIRkl;RIe7JC|KCTUn-R8*1ux11aZ$27G0^9l!d8RERWz7>%~^DT}_zAKpJ-Ld#q3Z zH^{CuTnv)W2}k-)FnK3D_-|S9mcNWOkfM1r6-~ueH2;pGd4sKJ>Z+Wxhas{xSx|-| z<%vZ8af;(hnoXX&fQ_KY>9rdQ@DALU)V@0s9@>}>dYps?soTH-#v z$^lU0Y$@NSehIg5T?F-D^@DQ?7FCuCR5d}1O4(!z;XV}K2pv=EuD|2n}e7BqH z?xfk54Hqv>>6 z1m(&uRr?dkqgVU4U|+m(bB_l=NVf}Pa=A#O&62rzVRQt7*p-eLUaR5EJ7a}(Yyc0o z_j*&%8DlB%lh46zEQKTtQ8_3oJ&3U>OW*_%>VSuVD*@ehybPg^!^r}iJeP|N!6V2l z2LGFa^&+Fau4W{GW8EOHS?#1$4_HW~x&VJ%rqW+Usm_DkhEr)OObdP1CuMg$(A}HS zNyF}V_=UmdP~or`68B+fd@|5;Z2wOc(RD$cHP%Z`Pera*{(e_<-V+S1S8?l6uUmE zBb_@Th^dDRtD9qFA585|FL237R6#n8+aM|s(0#kAa&4Tb;)FOek5Ns1)KycTM!9|| zsHtaEX{s@oin@-o6akXx?Dy<-_IZhI+&X(%m?D7fk_6gP%>paIC9jDk6AS-1*EE|fg6Pb%RGXf5)utDb@!titNnCG3;rb4I^f935j#VB3fN07~_L}ln zS?_Uc%79K&Iy?9Y>c(mUS=iy}E53&{j~OI~`e}|CTqM-eH^t*x81-7nFSCs* z-4-jQ!^QkYk%N;kYYHfyJlJ|P^Z>&C@CsWVJ;$wCG2EZt!so`R(r|Wdf1k7qFAS}M zVknMC0Prpr@WRd=j86g#V;NSWqzo{U0T|JZlpREv8HOD6?7_3G&K`^wiF)oJ(i%K> z@D&p$e9DbOB#`-tNPgBlavLj|nN4cHg* z<}^vi4cTj1#9_~SA%?uQJ2lt7Md0E+qk!;~HE31b$=4L(Y% z|7F+eFTm>mn{D;A`o|qGA22AD9XH6tJ(3v^n}CNm9L1 zybQ+;uB9}rai!rPq~SDM8tSS95yuT)iV&lY8|=5jkH-yOTpP3M{a%PXT~Ip@cm1AA zlIqpvSah+1^O{Fx(M5u=f6=|7eEw&aSkCBQiHtO6uEHOe-eC~}9<>ErSH;jCJ@{^l z_f}WD2P58_&GEjSB-IP}I25qv=s~}P4O2@I-%lZb(iQR{2>Bjc$aNL*etb&KPk~@9 zzUsMT;d_*Y@3^wC7+HASoP}?Yq= z5Mr4CUkaY8iCekg0J1n7g);=v3cFIt97g1@BPdCH577w`eKW2yBt6GadX93X=P;z_ z2wQsUsv5rI2bpg8o=Nl_6n(oZ`oj_ZT66TLlcaj(I2?zBkRu8G;;)fPLcEYdJl_@K z5eRXIEkp|e>yxq|D7vPMP8t>jb-lrQjs-z+qe>lupx#LNf4vp|Xg9r1jEDeg)^c$_<=9Kv}uG~GyjR4H)ehy zs5enr><_*xa`4J8_xn+<4RvBj2Sjz%E$!*;+q(KTrHiHNf{N8wIz@O)1QC^p1c3Bc z0%@2_B{#W<1xH&wOTR zl2lB4Gcyk*1Lbu5aTzGjK(JFFx1l|ff~~7k%pQo9;wkk^cjbvhzJww_&K3DuM1Hh6 z@*_!7y_m_F?8C9$>EZIQmn#nsfFTw{4x9If$pPN5L9&nr;gjuSaQb_02zL7rxWW)S zo+2bUYbiNvT*)~T$vMrIoVu#T0yyTbfXAMX@CffzH7O)BH&JG8bY*58GIN7DGuM-(dSxL#T5_kDiEB_m&_jC|FVk@d*Pqvnh} zLXzs0U@dX$i{XR}7~s`|J_63lg5AhP+H)jh&~d=YL4^cvyJtuIX5|k1@fIUV`UNHF z=dL7mB1u29C8@4za|9c<3AxbW?n>tpdH4^z(1~{>wUSAWrZ$q9*}nMWGBewN9R0(b zqnAihy&|29ip1w9fy=8vn}%Yg6wFu(aEDa^?yzFlQ<1O%V8nMS1i6rgaU;g2dKE88 zJ(QAqh%2dQBdH4^x8Zb`l3G{Ao3Gd>m4iisk0l3fl!Mi-9Grt3oMO(wN|IEsSmcQ5 z_TktSaJ+CgJ0!u|5`#O@n&23nrD5wHp*2o#9UGuC@3uMf^cm#G4TD`^*u)ha}aj4Y>~!=Ix+2 z8bgUt2h-$I%nwu0pK}Gh89{%>7Ia<3ynqeobkK%Vm3V(q{X+8a1m)qUt~_i(9)4ub z!w*POz3^Msr;Bl%yYlHrKAWI%Z1lwX;z%-1E{yg7q|gD&T#|wpDFrXMQm_>%c;1$R zx~jsV18JC%mBo(+Of5>e(%bHJ;>eZv8 zi(aPAVS$?9VPkL_B;1IH5SzW?NH$H+E+Z76X{EF)4+&7GN(H$Pnvk+2T`iQZ6I|)q zj&wEI(p6VgI!N>?z+0>Y_REoyIC?bvrQ~BX*&lNIBEH9YJQfRm7-uO0B#He#hSV`S7A_?AJ1((B zH%K1)Jzp@$w0Mhd?jITZeJOsEw}`6P@0BvXvu5nKZ0fREiQsIBr&gS(8UQ{EI+_{* z;LFVdz~_qqaB@NzU$O@u3lV0vBfX88t%7CKFz-zw2d5$B5Azm@*wRT5sP?2}}(t;`o;*+ebEBC&U3{i-6dX{{q7v4i>`+jq!e>1wQ32KyV{ zMkXl|`>mA!aYbUYGA1Ds`(CImaCA5R7|&~z5i*Yq-$fut>%9_*{SnHJHu%!w44kjf z>i@fI^+&M!U$U*fR{wY;_6H40Ws%rS+>;rJ{X8Y^Sy$pNN8sT8)En%3=63c1&tB{e#%pUx4=^b_=;45qa*HtlQk?ZKvR|vnNd?0b(PI2GnihCF0 zewR7!caWrdL6hquF^XJT>);S)dg~aCz#bSaDW{&nY0^71WnUcO0^>eb;4G~a3>l<@j%xLA(fwHkQ`={QS~6g^ET zddiieE0Ch!+EP?k)d}1|%Je1hR5CE{NYYo%!5^2t@=9c27UVXZNlhn7^-6ML4J9ES zAg&|ob*1(hB@xF`B93+?;wmKKNLwN-R6(DVS?=i)B|2%C<^IhE%L8V)=WFyjSnhi% z|J_#nqvd|9$iZ!ESL-eJ|2M80NK-zC1Un|SO2uMuE$VX|a{FxRR@VlwzQ-z$XpqES zUMAm_+9o-DLy}VzrGcJ4iYw(*~53B6uCriUyO?$a)U{aaG?B&%4Jk>;g zHMHm&Ci0Y-iF`Jg$hYOQ>G&wOxhhYDtTOLI9vd_76?B>?8#dl|iyR#9^?t*6I?^!i z(R%4krd{oumuDf8u~=FTM`v^=2a^T3T``G&^wIniddSJ$0#2Akyaz4f6I^XBmIhh0 za>Bj(6xjZBpnA~_iEauF5o6de>dgwC6Da7W5)rH^39uUvcXnIE?MQo`!Pz! zqpoD!f@C~mOGaIV-w=nx7D~wk{9jCNl}8f$?`_D;Iy&|-B^=$Q4 zuR3vshxKnEM+T5%pG%-1RPbcG9RtJx+Gdj^>~j>E5&grJgxipWmuyL>s{%|bjgAP> z(?29$kK#Q7e_UpO??$|hklSzybqGnS7y5}ur*ja1pFA4(O&&cQ%fZ&D#L-?0+1G$z z(D%WF4_jl>VhhLWC$GMhW_|MN+b}cy&9dVIO#zaSQz;>*xDs+Z60*{kkh&_sRAmD; z`L{%S9!0yu743TvZMQkvtt6>l{0C#_kN0_?^P-eW7rp#I26lk)#vS=y!pc!tSyx!^ zMObNDSalU*ge&{a2rcxLIir;_oKR7t4 zBa1frR*&tP<9z^zOOsB5s>`l)HVel*knWjL zJOJei6mzQ-1HRNCl|_DlAo!{~0&QQTHqrNC6a5H$$Z&wBO;lSvw{g%lsXi(5qfr}2 zbkZjeK?RqfI%Q=*>R(V?04ZQ~ckBaJeb|Lm_^&CgpB|bUzxjMaR?M zj|U!=VsKiIN8gZ62kujDXlrX|5VtFne>AB%;l}E1TQ_xeTyROtTJnNq)ZN&<#PHLs zvwJ{j{DNRcla{;Kip=|g%!QDHG}{KriEK<2^(jlO3M(b+JI}`?uWXnThP2RT$C^fK zI=adf8}&!AdG1fqy+*Lw%&(ai$`B<|<+f?NOk%P`aGphK5Z!}@I0o;QHP@r<0EF`e zkJ2%yX#S{ADpJJC;~qRfV;Ign*XTc0^OlQxdfR(DH+OF7?eR4LQG~7~v?$+#o-prET1Y8rDnk%C@mev<-7{E3L#eyT84>hSVw=aY%dlv_zw4AgaAY=Zf5T zb|-$54@6at^iwPx>2idXqgj|E9WP|3(_~pVxusn^WG+F}iSX-2h{sxUOM94RvL#U1 zD3K-gvg_ZZ+trrQ z>NmMo|I1kY<7}(1)jz(5on=re^V2hNPo|%~hZ48lmAHRL;-7`ipU=_NB$s5s_zxfX^IsJvC*X-8o>n& zVuBa*4Di%>a4SeQ4OaG2zSZl1L++S`3r?NNCh(j@fqdc$l*Ijz68C*q;=YE&eaDu# zx~j}fI0qh1W)ifCza{Gbrl?wO&yl2hb=j_}%Sf^?oGum-23+Ny&F=#J z0M{Sf`iz<~FzVN$8hTTQk|mY<9ZTk6^YF)I9`+5SvH@}%&ci5`byc7Sh^qNxMKe%Vqa#CeF;gbSEIGzYUCw%LoX9gmoRt;!iI+N>YWf(;=Sy6i;*O4pd_t# zCFwtqq;^}9>Z%|!l7oYa_nrSKF%MGA30KUIBj%Vn=1WOZy<(hrbUSt=G=gM(GB?V@ zM<^J&c@~BvF*b2kzz`CWRYs6tb{RerS%4&D4<+PES3O1*1^7PKyd3f}}O(dySan4^3wv1{&ep*Bz2!(0& z+6u8R{`5K1r=M4(0y926!K-n6Hogygr0598khW%{j$mAR^j!HjksY-bUsG6+e5 zfn}^R4Rv6QS^P7PV2OuwJMni=MX}<unu=$GLeyqBz4Yvq*Vbo0y1x1jKFUCewRvAr#IBl4`%#5EC`Xw+#)J}YY? zRMD)QFy?&mG!DABNXy+gbTRV`a?4w@zs(%K%)F-r>-n)JsU^##jWxOB(#{Oj0hRPt zp9YwQ%M&`FYK!M~R%#d1CuOlh)Xo~6G%Qx=IbzQD_ufHSvsfYSXsAQ1P(RA3F>|Sn zs8Z-)yh!BW1IG_SVuk({FwvOVC73b|m?%OH^UxtotuF1A(4lb$OuR8rwpLw9zyz&( zbW;d8(teDyjXcG>mjz6`o75^AaY(?#6B3P{0SuVP3T{~oayzN_NBB+N8mj^(R!L84 z&65XYHzS*LSir;qB49$yf#g>z;csh(P>}EhO$dcQtd_0d{14@F_8UlTW9DmuVUw1J zz1mkq4o<-@{b3W)hY^UlH}_D39mQl}LL(*qQ@{y}lpu!@OmMaNBsM}a75{T!{K-HS zquU!lllS+KgN8n|yBkgQQ ztkw$2!EzxzmiZ%AtSYd9RyQKBAt-o#Z=|^0e~rBfZv~SS*f8&SLj1S_8(0~W5ZKTH zwFQn&z#kWb`cueo6M-D9>nLvK;69GBqxEH41U9Uv)nDgY{Xby!&$O++R{!{f`)Gqw zSzrSb_hbe(3{&DRb0zL+BratDk;y$tl4?zVmAxRa;aW<|HLkQggS5QLmKGy@8lVi; zGqBq5ZzoChf?lCLD}t{H!j6k@$SKvJpHgwD zD-|yy6&Kl3QCBsXxojEizpr-pUX2*3yVrk?0I^VCW5odadtX@_wQ8RJ3o>9PdF+;1D|eap@5M8zJ9f3%Rb!F{2EI6>zFCMc{u* z%wM3GKkth9e-QI$%`tzPB-M-gR2&4rz&4PDqb1kcjXHSyfPBhLMTP`3(3P@C=Y*j<>4jd z;g9A#JWG=5)#H@)u(?z{TnIvg#EfqV{F~t5KF87mH-yE4=k}|)E^b>RO z$EBb68QWOz!-Lkr4(=b(jAxveS+CFhws8!9j3X$#8ObAX$L3ZU#L}aCRYI9x1k( zZ1vyVxp`e@cOT^HJG*=9j%{quGbus0)4AEEBD}k|%On-NhZ4M9&}HI8P)w=QrUKcU zAvcgKU0bJ!y}+DL*e9>&L)i-Km|K7%vz|Uur)cA2h+}J(#1h?B(6xt-tyc)fq+?5Q z1dsLN0ZHxgc)pw~!B4VS+?X82NPFy|aP=B1!&(Q1H@LzVj>N&$EM`#7nJ`i^)UNi9 zj?SK*zKxyqT#3Lpb*k1e0kz~BI3Z;T8D>V2U+^mnnk^M`9tyKalt59;)58?gghNF= z$5n;^NR;$CQa>vt-CyDww~}JtN!r_$3gsf4<%k=8d9(HPba-S5riQlM+r6Ww z7c>vFZ(DcQmX5A%?VI?S4m|JD2BI2GsaNn$w{ncZ2f02Or4@8$Zm0Tko2$MoLSAnU z>dT3?n0f8(GYTj~Gd^ms8HY*)YmswH1?)sn-J%AaMFXl@?HVEmR7GPne_U}@D?k;cn3?p zH9DVmffdUyG#DNlE-lB=GG9nv0n5S`o}dL5ygSqJq=+U^W@Syhavij8pp2x$>gn0B zxwCugrp~_hO`Eo!SFM;;`uJ8}(q03TRdG?J*`{hTZqYIyX#DR2?Im+DgyV}|Juw-= zs81SW0^#xXQ2a-hb=Lpb44CDG!?(e*TYq@bE^ZwpI1o2d7HTBGnF1G!b`X& z1lK%xCXig{%SClq>|8L|N4>M>ZxH9>EA)w}+_u6C{iWHRJqux?ASSA9ZSdC)7!bIS zBi;%LX1YLnfaz@fF*fa>X<@y{!7JQ?rUg06y*~2PA*`Ujb?c6p!Q5i3^St&PnUIk( zVd)t2_z}!FffB?}Qz@QX4maCti=3x|t9|S4I_=xB4iLsv_!gSgop_npPIn0d}n!tB{m{ zO|B5diSE9zk5Rh*<=AQQmNrQtdT*q199M`QD`OHu^zMY(0!JUlALIT@VfbWZ_yYuT zbkjloVWC=gPK4*tPnnVD%ret-e0gKEiFd+^aN$Fo*{ZiQS?XRk4tB; z8qpsHxpnhdr88JelIoS>WeCw*O=(!=O2cVL!%4O@)Kv+zA$sRiyyv>&Z9}|0=6JV} zqa1>x@V4f<;8mXj6KS&|I-xcB+2=TqP5bG*Z<8Zuxr`R8H#l9A?f6*NK=Sfn% zc$;nAaiZ)#jK_AxZUOCRg(r2jO8CA>!{`vPv>~DH+|aWON`ITW!gxs{&L< z*fCY8ej#}%Q637eJgi3^^5#5bNm9L1oEQ>3hoY|;b+kQVOEZ~mY#p)1n_gTvSgI4^bRr~>wgImSBY6RR3qn&yO zsFY)@9cHZ=Ru&y+u*C55+#GG3UbgGUDVg6C)L6zaZANAOD&+PB*PY0t4U7m-!VT;* z3MeGr;3uRe(Z<3Mf7f=2Ai6c6>9+%rJ}P)(DgMD&&-R6wK4O8fNZH6=OVGs5rHVK(UStIQ4_PG9Zq=# zAfg~sn)P$B5CyqV;uyDryumq|5miJ99zhmGG!s)FP=Rp-TAneks&V}qXDLEhnZrO( zpg)J=kIT%v52dzC>{v z$T7lYt-eX~L9RQbZ_=d`G-lRO?KsO-J5tE!nxJ+pL%bMHSp%w~5jI&w^@$d2vDbpE zthJjKMCXbO&DezBA8F`CDWcG2!a0rp8fp|#M1jcZPZv-!bnw5?Xw-iwEWe^8GBeAmZ ztSXA*eOR%oC=Oa(h~ik<%7Zv+DwSwUHkm>+D7v4+&OwPVC}Qu%o8KhGa6C-qIIb8D zR>ma6a6EynpfU4P{BfCw?M8-wL?A~uAk-e_%l`po$2^APrYZYCq%ZuBS+RTp9zvlq zFH#&YxZ)T^9M9Y0&?+Ji=J>8bsVta-$$c_|IgV^03UE07xG2CCNZg^2+t37lFiEPn z{Otw79IGfTC%e*eCDO9OmKGy@I*2k@&tQ&oDf(Vl^j9JJ?dIsWP)OQd;bjQs7^XB_ z=1RjJq#&-D=N0RFM13MoNLUMEu(X5h; z_fsB4a_9~=ql}C#E#}xj5y25`o!vDT4{JM(UI8fvziv53Fv0sDOUo^-5Cz4bz`i&_1 z1ny49lUeW-j%K`NBqV%<-nh~1?Sc*MLLJmF5}_IsTBcN;16s*6Y61SZOru_d^v#3Z zhSMlYUtLuvD$HahVvGzkIoXN<3^O^gHfnWEcP%p2QacY{aV#TA^@?T~IKogHrk2Xl zjhr-Qw&9P9a$JXyH`_wCP!4@k=2E7Mljx*jF6D;|);`Ro%$MnPa4BCy`M=tVf3)1~ z5jnW!?hQ3u$~X7qVe2uP?&vu!&D6i#EVn}yn@Mlh*|E~=%0bLa4o>DEN4@CWiDZXpwLBpafokes6I%Oo&2`LfANgRpnN<2`y7Lpm$IK-Xz3f>8rdR8_-)Jx6h5e zZv3or+!IlhfJ^)b?<2L1wyA`8GT$muMz>P5kaYkXZx&pJy1HXRIZ%6i3Yv%MR)MHE zd8K;2kx-&-+P&@(`nb&elbm*&EP~$5=MXv^BqtcK)TS}y`BOwbitq6R3-G-DR(S*f zq92cu?_24|J7vActsngXVb%ZSmSau6$cZ&eEEvuFf~v&NT~*>1r1qylm9Rg8h0QSR zGYTj~Ii9swj@u=IaVtkJj(@b@h!tQ4pBzl*;K(VMy5kG(0uFW@kzUz|{^EGEuW*$x zO)i+s%wA6ViJAE0GHts9DV++reWT9N*iY!O@+zAo71bqzUr4@Y)hm2Z*3wPz(YYeM z&K3M7pIimK&MQxpo~fE%XE|$>Gc+Twa{-1m`JGC&*O?`#>2)T)T#eUxe-L+XA(ktq zOJ~DUc2{hai#OzrkY;8*Rlapr%7=5-Ger*0$VdF%<~^Y<-F|FMtezgLsNU%e8DI*^ z&&X-t*43RHOcs(bpIr`r^!YIh4>SQk&cgt<35a1H<)KM}!o_%C2y=?lIrKHi>4E@= z=tj%^&!HtzSM(O$Au;xXQvK3McF-@qeZn<^k|_>{IS|4=T1vFlv<$IkBmLF*+GDRh z`MSz=ox!?SxvnXqh@)bHx)t5K1$@mP#XgNUzDe>mUq@v#E?+Y%V-kGLA3%+7%)AeO zT*lLTkm2_b$kB~O@ipH@+0lBHeC}kui}@j1{m-~o|6Z*Ar);aQ)j#fHewRV1%*D*a zJ((`%Us2+I;Y!>mkhuRcfXHGDeoB(+Eq*I{!I})#m*EkNwjyTZm{%Ol#l1{^z)Pfy z@%&C0%BT1?kKRLd?Ydv-X=tab-T#O!H41a@{5pYreVsN&>#tP^Bl9mjmCFM%X zr;wJUEiH9bhdGI4FF0AvZ0Y^|BgtF>@AtUMi|vf1v*h-VtGwZSg5C9T6&S6uaPI?2LjIXd^!JOk>wJHC z%4#q82C#fTz(nc+ac=4Aan%G?FekeJk<}$OqbCCO)6T8Q<jAg^}xAtM`p4ZJmrDpU6X$f8TA zOeG9d*G8+Bsw}^Vvb>p;uC0Y%mfGUE@rN$l^+{O>4>kToCk+eXxyHcSz(RPq^|KBk zJWrx1!3tz0QFMp=ROI09kT2H=;Ta5!rbW1fDVv9xAY74y6Uct_FE9sQe}8MM^kZs0 zd#qIES_z5AInnmJqDdZEBd4OsHIo8me-@Nc_lnZw=KI0(rq>`Dk>4WY=syBwX_cQe zLHs&xf=^!kL0MX5Dlk13QoCqv4jAYk!zTDVEnQv|)odd)j@K@e=tc-52d~sm3PS>W zz9DO_N814ipAn3Q2KEd9jU)h#-7Z#4fr~!j?MlOq#x$~r**}WnI0BWSH4xczPJ4If z`o8nJde6C}1>e=w?4`!vT`#2}C?fT+eb#_#A?D zKEIlrVXr3NmGvLDnzWII-WwZ&E%Oa+Z4J2pKSb7W4^#WuXLqh=x0pcskdCcEmPN@C z3*gLoC@VU{nt_@W8pqMVcrh{+);zLK(FuvByBs%qX_+YGptFO6M-K zF;qfdGS4r{HvDV=5(A-$(rB#e$J$G!SUfchoASAowP}QCGq<41!ekGBjJqM6s=Qs~ z;Pm{=AGz^1^T-WZ`w4W_%R(nKoZ~|RcUU;bRiWV=vMP1O$3=exs7FMJ1Six|Ri|Qx?DghA~azsdANJ~sMRT(3K zDT6U0o-ZZqG~~@fUqozG;UW}qM7T&$ccc5)z_{~Y*sJmuKS|*tKcTW4SGWi(V-mte z{)Ww@G4ogaG44kdv-7Wz;lB{b(Jc(c&B6v=pzKUkxX6Jgk?QY{KQ7h(HCBH<NO80pXo%33|cMT!*t<*w*|hv;+W=r5y?v>m|95H9jYO2g}2Y4|E_xJA{iGw?N z=SU9zn@AUu@lp%iTARaPwupfj;C5^oNhaZfVpv!c+!zWSbQ%lfRc`>t!vPi)>)grC zwSY>TXbV72ddW)tD}j1x$6R9RLnP{YvW6S^4=BZlNFHt3d_1R8tg9Z^2!(hKDFKU| z6*I~V=4nLylsV$xlB9aQy*;S6>0G*$hI8jgr~?Zp0PA*ggltU(orR4MS$MlH7QYPs zatSzqY=aPG0cJ)hEt!EPq5PA67~hYhQA|JCKg&`Y#aqEkv=>5z7I*z#Rj)vEo*!UT z+vG@dMj2Q%=Vws4r;t3_vUzi+%3asyJR>|%U=>n9jg-|s#?@9lp%?h%+L%?(;j_ro zirRTNPpu@Wz7sgfG?K)VmH<9VJLMH4TIO8jt1;7yKQ7Cn=a7!=wscsijXo)Jq|#+k zbkZVF!nx|k!C+Xd?2NPR8k|5_{l(K`8Rk%L<&U#Q_o-RyT3s%`}4K814&x;uNe z?&$956aP&6Z3^{5n(ACEL7u4RHNFK%8 zuu63?nNz}Bq-%E3D9QZo-Wo_kyb*tuXrh|}+Pyje_1grup?=8%k>052Ic}rlXyJSy@Mjc~N2R3P!N=Cg~q~cs4=*ofzff4l^ zf&f$HdWK;A22vO;OO3Zqm3{*Nz)XDE12kn+NXjP^C$(Dkjy}h@$z2hA4wD)ce^RsLFMykpF zGJ~J4(&UAq_2p91?N%lo$dpt3dKS$)b_v*d{)6lH9EB7`seO-GdM8cZcN*mWYfzKV z3UTsU@y@9ke?fk|Z3HHDgGz|rPLl}7t+yRi4~XwS()F*XpHUFNJYS)dxnL(s!VNg7 z;qd^cS}WN}HOLJ3Wo96e%Sj$(geC`a_?wfS0FJ^wqhA#^)~J1mD$JG$+*BbtS7eL; znb+_cqPhqqF#;0cW}O47CAT(bEiRE+$+T9kr$(*0Xou&!n$l83^wH=m|EcA6`W0hIdU*P zR4&j<2G)$jTMQ7zC)$g}d>jo(`J9LfXxN;Gb6?UqdMqQnfxt;m_q}*F%@2|&h*Knz z@s-Qz&Z~iB%g&K_kvgN1>Tw<*@mj%cSj54#B;r5-e0ezJ9SFJf%b+gGuxXqHwCpVb zCZY#z9*baHIt@xVPbYSmN$QRe(W#jllYrt3#w1)gu9yVfmxC87U=-9zvdbY+P)jiQ zAP%i?z}E^viT$k*vMs%2OhzEQ2a!}oAW(c@Fy`d&ot$i&CscL9 z%JYwhpETFk8PJoI3+b`U{fyL$;35IWgE~aja68P$;gomAlN6}&HLB3#3e;d_OhTZ> zQz(HPb3LZ4BGumqe~d?HWtqGXtN(Y~ z>PJtq5b44xq)z{3P$~=5VB((4K#db9aZ6o^TZF_N54m+~9YyZPkfeIcwnMnZLY3n>h3qhE~Y zh2u=O9NZ|&XH%LK651$*w#yaTVuV(*g;rN#9soD44aW+jeK;rSBa;$NN!TmN#m$t9 zcerwKC~`4o&c$0vQhgh5LNPNyUe~srCwm=T>$^QV)k4!Tp5y^)0NaJA*UmhH1bz<% z{&82}jR^dsw!rJE1Pjvayy?DDG6&~Qi-QQOUq~Jvr#yVqm50NShp(CQ@D-9&uK?uG zl~^{L-vx_Xh6T66b9_ZF8!PAHDYEp1U3)=&aLzAj`3lIq*{mzwhA=%843DQUYD0~IZt z#)h)>JaV7$U^BJzD6O?ke}%U*}CB77(CFe6q1^p_=G1G zCwG^Ugv|3+RK;rYtdo6;tUEG4}kgz#`RU2UV9I zS9LiG)n%Kly41Icgh&095n@!-&n_$c81+-Ejady8I2w5xshx+fiHAv2eY09t9reSH z=7z>X4mtFi$gH29_5fBKn=DdEZbEh%GdJRo%TRF)g1^BQyoHkJld>2ex}uIw8W!X8 z6@vvki}B$mr8>m;e3|n9B`f~X=kNuQgZmtopwHn{?FuF(dM=gzhaB5qaGKAMtn;!5gP3S zSFF=05)4X!yS>Pt!pngVrB_K+CB)ov(Yj4rJ2v*U_w;P-=xXon+PZ}WkBI_8w5rwa zi&dIt9OkqCYQGLdbBsEGVG#2m2hp(UgbPKx*aMbE)hwkAEC`avm0~VXEGUts68RtN zUdy?vaAdI+|MQSK>$OI)s4hoMn@w4ft$`f6VX6R}1G`NAHgX23LA3lr+Q>>-b3Iyv zHuB0UjRjv>PZE|p>Cz~<3<}!GaB_GcS-=^mDwSZ9fvA?votxKncK2=F&<) z;49ezNW;no%8gbZ-uy*v4~~$g{6Zx%2{f1>BE14C&Fy4V+U=Ax+1yU&aefZU!&~3D z%J4VF>qz~g*$ionr%GIUE({vuX6Q@ll9HX9Q;H1@!77lPn*;A4bg9_Nn;o2$LQhMf zy_LZcDa5HxR;>EsIkCr@R7cSpv-F?_w^^yLqC}@5**6E3sF5pCNQ@ZAqD|vhg1hXM zV2!NTxRqeAJDGs4cCh5dv*jX~2~{Mz*$d+lnM z^&hu(-Ls8u48;f$+%}3~Q*bc>n4^?|7i?E>lyQvg&x2d|z}Znq!kMtBjIj4KF1jGz z?x6GT?%ckkv!@pZf1+pjhJC3+d}t{@-w72EV_-WvI=9uzQl+P7PY?oD@S@7%$O08@ z)g%JtdMcor%EZ}tO8-KjjObB_kLmbTGNnHXt&LiVDM$rSb$?H_{DNfoe z{9(554h^#ffL=d9)JGX|YuHdBUmgMf)X)&@apr-p)iiRFdTMqWIdH0Mw1A*=oVarg~eV}N4&g`n2K5>bfH52go<4h zs91Cd%%W5?amYafP`h=3jcx)`V^5K@VC?CRx@ZOENSuT<71T*-!t77her2<`4C_}F zQA%r#2L4uaO_Or5$rYkk(Y++LN@c{_g#9sZp_3GQ`8q1lam8M;GA1GR@&v*Mr18X#kPQ{Rxs(?_WGsd#Bo9x=<`>Z&q{8FFK~oKPWAKbETyh zY55;pT8#ARCzL_!ILtZOSg}+dNx+>u2|i5vo=Nmaw2{u>F#K`p40a&;#gN-DL}w96 zs#l8TKBd4&EX3oL;QBoh+ksc>dAs1IfdEA7e3FJ!C=DmM(r_-)aH1^@byb3hlSy_U z#HbjB^Q`b=j6zRs%T)3o>w&4w63~cX6fY0%qT9;AEOI4G z7dIwH_q5?Z&W&Zu$vto)zjs~|&Knviq~q9TK+9kW-nCxNlw0^Wp1k_z+FwzoqbKl; z29?93>WcvhD7J@#BP!2Z_<t;i^FC+VPt>8nHgaDsf08N1_!~qSJ&R(<;BJ zGv}kujF5V0>+9DUZSj1-cI{xNUX~P*u;kx@gUm;e;>OH}te95juNNTN_nV`AFG;Fz zAuG1R9TX$60^ChF2mxqN`Ieoi`S2`_q0ew>;c)D-BzCCq8d{PFMRUk0srUk=;`6Rl zT!>VB)|QI83Vu4_jkh@Vmqh$u6!Fho5nqIee{7EUha~ApHABTLi}-=OkIMQ4}jc;ld1hkQoZ<>V!ShphNZ3nGPpq_CsQbS zZLw(c7C9vJRtmk@75b$JeW@*U3vug{viLo^DvM4U7Qc6`!PK9{?{Tw49pd*crTkxP z#XlM|FAzDnF>@d!elI1$_s(wu+bmid(e>QytzYN$lm~Ljl1IWz;0XjfcwKDQ2>a6) zfx@4WTXIq$ukFW7=Lr2m73DUa)PHxGk>4 zm5{iN1`wGS>>QF*FL!4z7PCY+=a<9r5TzyQN=q4O8L*|rNS`_>gZ1=+y^f;4&K3Pm zM1PGr`d3j%T9>%BH;XBQbv~&C@1``|>Po{dq~T^;8tSS94e>$}T{`f8G0RaNN$j7e z*dKDmz8kSWXpa2>l2qR>cp- z;gFId9y*YVvG;iJKu8*ncHHGin&zHC=0pwn<1#0@5^0(Vxeez;l%~3>##|B#0VkTO zJ%InA#NSNuFLT9z72;oFj{jJaRIesS%02)iA$SKsA|mjlR;~s$(@B^e6lS|C%smKm ztu4&Dig`aS=3=t2GaVOwebsZxLY%S?b7kR`$ik)OEL=pA>V>@$oiz*s^~++Ii;y+l zI)-XM*Pmpi$%cKGtdfi?C>gt5$#@l#QMM(ct|~E~tAzhJo8V)~!Mi92?{wwhYUJQ1 za}M4{lIj%#;!di(cdGQsWI*T#?+Yw*Neb?z6x{7f!K;yiyKE__s~YULY#D7V&~v5} z%a&1&wu#*Z-$JZ39%_z~P}*XMh50*Hj9_5Yf7E6{4RW~#nfrR}JUqzdF_KiTJcpw4 zbgd^-3*z*x?lp8tq*^?W=o>T7;*ZO`;57*D54PYe)Iy(>Id`eCAv$T8bN6Xt(~356 zqCJl}ce%B#4$j@9))M}Y#2;h+(N=z#$iZ#puhTkrEAMNM$Ma=484Z5HmXDV5BE$y4 zIay^Gc5)>WA4kIfcfc@(+td=|uWfKWWjs9s$6xVHCJl0DGo0Lkdj;wKX3W=&c|;cQ zoWh@dxG$`yr*C8D1!Q9@tp}|J)Pn3b^dNq(zk080*MwD?cc2qkqHIO0s1#2YGBNRZ zC^p?UVJkWja{JtY>yZ+42|5!C1#sLGQ<#8Ey3Tc^#?ehE#5wmCi8Q*oa_3x&;B#Eg zxi{iBd3&jH&aIMW{+iA?*%8P_7v`K>5TiN{KhV@*c#_|!guScjrz3tajh}9wF9w3k zJn&QqFLOB(+nC7~cDhT)v}+Znthd4W`T4iN6NR&;+6RLf&lTJF*})l&O}rP{mHA?&u5Q>F6b z0G^q@bf0|!7pZ(!ukT_0`C!kfpRFi!xwqqNgO8Jwf z`daCq0{j>PywDY3U4=PeFg+l>F7$`O`$@w4abLV2N4y`g$NOQH z)ZC`owJum`lxU331<}1t)t@Q!JDk9# zI@{xq&s68rh<-cBZ8_DM%#xawVDFY}DO1d`>Z>k0uvJN*vPr7IHWJwVeZk(0VE1ta zTUSwwa2ehX#GeZDGQxbKFXqo6<|X!+Phd&S0^S+NV+#8b@+CtCM-ls8!AcUWGksxw z7Ga(43ah@NgfrTbYFf1||5IVUh%jH^i}@DBe6Bs_O)RNdl&5evC5*%1V`A5%G_K7R z%fsMJ0w>W%jDcIyUl{Jen_Xb5Iy0Gs%!KU7M1KA|KVnzzXRTZLiq;Pjt=IU{`Z=Wa zeXg|DRh6pjbib1jf5jK^t%&$b_K0s|NzIA`XKjGLyFHQa>48JqNu@ox=Dl=20Y$yxUM)#Bh(3%G@o~)=DGm~ z_ab$AbIamn=bFW6>y**d+XG=C(*ZO9)kQQNqQ zHB09=k=un#CfY9N#!#b(#Vl%WpFvigX+sP9vXeI4t!iAeHsmS=1V=x^@$iu+8_1X% z4EkUZHDS%DJc9s}VRA-PW1l)AexA#x1LzFSQ!<_GOeeZ ze96LDoY*nC7aTl`FH-gYG; zvnZ8&7P+{`)3Z2xF{|V({PCIGK8(ce0J$ygl+#&K^OAKl@GLeFEeHD2@(9w>=t_%~ zK20SCojr?2XVglFIVVQl^ZR}&h+Duy{j3N?205VUSzXpbSZq${+# ziqgRubvdEG)EE8Zi2fpb^yjmr=JxIERI1$>^0;A@^okQJR-p84wlrcE=QvUQ#hpq{Qw#X@ND8i z_~0^gQZHPhHh$f=(0tq42&*cwhI$ z`zyrzsy*Jnv!rHq*bCJ`6S44g!RWvri&cRi_~Rqmrx5Bi$Za_hBB*s0 zZ540DLPC6yFXCS#;wF29g`M5D|J{tEbavVC>is;T9Ut$hf4~26u4z^}IbjTqq&t@Yxuy4nk3nF|De^Pah*LmS{c&B70 z(&uoE63+tIDyaT~<3J@~8$pryN+mj2mRPc^ zrBEo3oKimduON2~`7cWf9hK{ED5%?*fHeok3Z`6fG(@zpxTJ99q%>ZSZK09^rlQ|v z2%J>(9}0QRDmtWuA5_W}g>=v2bbop<0~?N`^-^YyYQlPcV;{D^EGE>4=_T;n^I*wg zn_RM-|0OBf+ZxhP-Soqk)H2eQ3;MW$>ZxESn6wbXEQ(R5bRz6k+~o(#fOn$9e^c z6WYUN4nf28ZD3BOoYGfB_}2#65ff0)M5-fODhwAhSqkUsglh+mF>Pt=C=8dghaD2T zH@u>_%Kg=Q7%QZ0*{qTfz%P~HX@(KF=5{nUZs3HVcc_4`!HIYY5ZXf!;-?GZR@GA> zhsCX`ev;C6nM=c<7x&MMCHJb}J z15feGM9W`&Y1sv7dC`>?D}8!^7#v$q@yu4%{Ab{gPxIdu@lJ!>rkSqR{HL&_W;HPQ zfw_&?kV5rra|qf2zR-3NW z*d1wD=So9el_17bd@(|d^Aum|gdaV{7goot&$#wLp3bYDM@$3GVM)#EvKC!~aPn1_ zA04fn!Si6>OBN4|hWkDFmMWT<&SR(b;Y;*`1|7=fLT?t{6vfh@Ud5{(=wrw_?CQoJ zpU!npB=y6tq}EmWjQ-{C65j9l;(Z6={iZ$Mud}3PC9?1u^HyV#Qi=94g8GOr)C59( z$Q5c`MO($c{2C$thcDv25b?|Qi2uTpnuU8++xkSV%r-`X0R@iST+!CtIWGaH-Yr?x zyt0)C5MXZscU{AOv13q9Lim$ywbVk<)aJSQ3B7C?j6gk4Dun?osT7tu3 z3|zQa_lg_cvXLPzdhTkDQMmNCv!yVQ&JAkrzRDnlIeMAK8i{V)A&2BXe--l5kbjS) z$5H(bMIl_lgr@~1oWOj=Isz9~G#6m)1xct(&8}xPbyBk<6~da;>^z;4C`U5AH~5nE z0)W$Kho~w=Q!%C{x<`4QURJfr2qkmNB+1X;L3;KjUp+exrSOHYo*fmXXVp2;6s(34 zBsiv7ce`uWVui_1v*L5bdYb3pH^mSh_B0=Ikn$*1J$_uxP1HOf%F{esdYbWuVEKpo z(&*0eA-gSD{sl>@I-!|c*WiSn$Ri_!{>s0l^ztu}YW~?tHE|~Ng3KWpSQ>OP?-$|I z)i-e_u%XL6oR+Co#s5VWe?wNovF~m}T@WC~$wN1FDb7@C+rr7qaP!c4Ipz+8+5$&& z@W;n^vN6EfXE$l8J5&+XW0xKbC(h=7yHt3GSYH^D=k*~lp+S59di!eoKFz? zkNKkSK=e1+qrZV589Rfw!JBgz(eO228ak1Nuej1sS0$Je@iWHwfO+8*m?8{f4EJ`>jvY&j$EE1ejS(VqF;@CC&iY(9VvzFT9R2C zJ;XMBtIQ#w_XUj#BN0XgEpmNXp#(ekv8J_!tgCYB8ms;-36}^8#;UJNscMWh93jXl z>J!Q>GpauYsr(>R&G^hJAZeWU&fi`F(4rE-fF7x#Et zwAzWdRldZXjl?atfXFRc%UDvg+&2S@Rxi<#^`)hVv~;`DVx>>5#Gtc9E7q8C1%iw> zX1v>p12ks5vpR0wm{CHmF0GzN7&9(nNzE!0Z>!));}fX4+Gh}XL;lnF0V%lbxSONYu0sfUQ;Ef3Q30J^%6|#fv`agvJU%u!!A^O+t(Z9-)n#KJ#*sgav ziM8|{@yDm7pMx~afZUd|AEKeIN+8XYyu*`!E7d=YP#@xpdIV7)WRJRuB{d5_)-1_k z#J*RsRuHU{d|{o7u$H>Qs;e-k4$(a{Y=y;{2s~5h`w4yC7yWsNzSkao4@+tm>YP*h z*zOJt{vIsw8+0H%JDuRT@Su!(YAG)%pq)B7f0Bu_0Zu>DwGY>Xs}0~w8GBr zfiqCV6)BLeIg=?2!>v2fXZNTC5H_b@YoWei3YI%mC9|)Hn5+0@Rto=PBK(JvJ{x1A zW)`^|75*N`9WZJ)iQqX-oPifDV9qg@1i=j153@SN>u-c1`$|>!__iVp*>_8Zlp$Ml zfBgS9{PHCv2JU{8{5WdRRVan$ne?+zgVoJRv)-pL)vQ_Ps_udH zOnvE%aBbjlHxA^b1er~7Et7^}5%wwJK{MR95OqSLdOPQsrgddi=|fU?c6d2RdO#@ z11FXIkgB<#O2+4k_1ayA-xMQrh1YJOgV#>hvm`!$-18+zER>T7H z*HxW)%uQx+=1prEfvA^4%i^wdcfWMwg`P?Y=G#&G8uF{0ln^I5%ViG1!c9R3-bJwv zyi}lyW>-#nAPvm)Fibt&u_sThfD6AE;8LXY#2*92p!A807vf~0sbXjqt z91XpIYG*^$j&G#Goi_kEERL7*lZx)uLq@}1y(-5``F%8eywrqT&mo7X)()2{aosAj z_9A2Pm1l1lt6JgNBLFd;y|BK-_g6Tj)26T=#a>D@t#R_~T}`5>$+O4H7zfYZ?ND3b z=r;WEv2A?{8NQW4j&BYqZtmgvEU{w@Pj&F@{fMgn1K;X@8moVgYxRx#Cp>$fwkVZ* z_PDsm)3f(iBJL$$;%-Lb{$v4>%l&zl)NBaa3_N=iSFq-=4gUBvhtD7_TS0D1Q!mkC zrBBZigU+5k2YdekgnmC?^q)oad)uRb2TN*Jinqbue;m<`dii5c5{e!-ok{$rsYC2x-U_Qe8zDb9mIX z2$B5rmDdbi=Y$`<^B<^=S)X8i9(lUDdLA+SU&WG|ML!Eg-`ufEoDUU{eDq5t_^%@3 zhWs7)L~qTvBU2Nr=Mk-W0!wOEgk8BJGz|~t&W1zZay_tHCbvGPPIEJ)P)aZl zu{Y%B;*T{2+DhlB$o7`DC|;l0z`E&Ty=Rtat!?=KAY;!!wYTuykp>jGuYF_^*k52TF!y6B8;lPg6& zn}{q(S{!{UccCJ0fZPEy^+Cc+9qpA1fC}t0anC5Bus-PmR+IRpe}r%D+X_K^OAx-f zKFO2v&BcE$)?EE{{H9RF3Ul?L%79gMlZk3$N}r?5)fI*?zSRUjkiQ7pbh>ZOnP|f6 zn*vpPdTY_IiBfOcMwZ%Vuuo5IU9zxkuvEqiXoOM*o=I`#Z$&B_^0!DvZ8Q&?@Xa!Z zsN6k4+w?iBhl?=K55ZCM(7C6}e87jxo3P2Ipo$4mN3(evl0)KHv$QCr(kQ)$u?A`! z9j%fO(0)y#jWSN3UOzNKeB0@KX;lwChnjvjRMYr&!R^tb!6L{qz09=H#6=*wJsL?2 z+oP9{q3nq(xy59=Y-V9oPBa7M6~gBU?KyV`DP#15SkDS$G}S)F7#-FRb04NnLGHyq zNVKJKGDiQIP zR{y71{XJc)Z`40wjNa0sRBnvs;vP?9^a>*GBwyn0L*kZNK;*{g7M9d3_szf8uHW;ICAR0d8OT*8RhHG7E zsH+mhSTetX5aTSF-*Uo_wvVq@$E@2v{s(#bYV|x~?D#TEYVJe!=!ElO66sPRl@gPX zTo0T*jZ4~1>d@&)BAGVXQ_rAUkB7kbsbiU^2a6VS$SLZ3s!+CI`)#PK_(>zKO}@&% z4vWp%qZ38N<(fi0im0Vghji*6K$a|A-SOp1W>iGXu`33wO@*yKt;T~%Ov;x0Fo z?&$$DSxHb-@m#TRBe8IUFAI+#3)k7Ra1BdpR)ga-HE3(!cxZydfk{rZDkO626X~HL z(0)CBw$@@4Np}!QU-BjCQ6%X$SCZ=9@wL z^O{n&xO5n1vJ0A5w#m?Ry2l5Gp#JpmV5YBfB*Gc#^k7xAXsdcI=`I+d)5ZCWp#3hdLS9euSe}{$oJrnPY3lR;!fM+K8qzacTk4~dj)X3 zbuuJ4ohf8;X*d%vu_;%^J_WBK6AmVB5%A2dD7kyVUxe+Eo|z zN^$Wpaq*BZ7f&M>|6|X^&sb8kvb3`Pqj{xL7!E0-15sKvFSsa@S~EtaDa!stl)d0f z*>8}tKe$p>SM`}fle}_H*-`XI3j5TP*>E!%e|(0U-y-&HA-Cmxcx#r_tS)<_x?t4< zbJWBp@DLEJY>((cY?3OldlT4%FW6@g>>jRQ>niB&2MU9^a-o z6ALH!vhX`(;aGbX7O|vek*^Vl+bB4A(PefJ%^^K7w5(0{gM}XccQ{*Gl<3Ko*o%4m zUx0p|NIWl*7|IUzz$4jX)Twku>1jmiDZZ5c9x3f|rL?Y!wM{^s_+JX~2qE6&i}+bY zT((DiHcM(&qG9YeQkmgm5yI;dto|;`Cz!c(WY@zzw-6(^0RBj}@ri6FHY^cLCsyfV za3&?gwetl0ytV+PzX9fZLnH;)$*FqRSoD?C0?cR?4ZVOGUl*!z{0d4ekwazB+IXe? z+Sr18eXWd?hS$pNV=ZhVPOhB=#3pJPDtu17AeDpFbj51q~SSN8tSSFV%HWo z9f&^_=IuI|=%?V1kLX`O%o8EE<$QGlOKKK9bK_$OH{Zm?tRQ0Wz-dfzcyJKrBOrev zb(bs({5}MJFJJI~MDTmMg0HKKv$=qN$TLkNvV5sti;$aE#(Co{@pOA;+ z?0GnvB{eF+sY6?Cu?3rdq{4_Gl4*T^x;Fva`ykXGqt?aT0d=F4W%pO7QeDO2EF|63 zmmN$r9y}+w_JM@rFg{*JDGS4St~`?HEf$7{@K8udlPL@iW;1Ax13P~@0d#IE6gR;4 zfZO%yOg5B&Y7;7{+?OsVAl9X@NtTz}h#y*CEDW$(9W8&>P|9^~7OTNaemo>G(E4=k}bQ-ll-kYd)5Po5{ps#pKMXGH96CPft9+qG{vRTr4f%VW zXw^0sy@)(~&z^_xu%yP3e{_Ew_M0^@?B?mpB^`%nn_Pi@ialrv#57xi#)1&tboml6u?=XOqXZkkIz!( zuLy8^$ZfflA%Jxi>nuEs72@^^!^KRNO-%842Cn$gFBKn$5+4hF`S=_1vA~{>c`T_} z;4Q3et3y^0A1w0-AfI}}s(w>n4kKzJV{4SVb8HGzge@n++I$In83{Ylm9V-h(4?XM zbQzq*143!k1BH77;m-Nu{yXAcZ;v~}lA0Ce1XPrb=$^oJSSoc&ZmQXQ?)7xE+_J8s505i|J|Wd zj1vU5mcj3`wM?TmIw`$T`#cc{jmoD_cwRvnU%={V#3Lp=Bx7UowN7}pOBW%auMF$+ z;iB}@1s_V5@^_+8;3{t?*=Q4;e<1!Z+2g;BB{l2#o~W5R2ss2|gd%A$ShK4oQy}jr zkoWn5d=)|d*cD`bg`Dj!6^6ihojX@~skaL}RQO*c{D1Pr{~F?d-X8z6EU8(@$G3s+ zGy@K=5-#b>c%C}^kL*ryZt&2MoZ3|XQEvUI1Mbm^X))uzHAD@ZRKar-l zTxqJSnoR006v_jI9@!752MYJTgnMsa+^-|1>cM$g7{@nU(W+bCRw<6vsCe{%Xr};ARCNi9ggngfqAec7I22-%R&rAmxNQHrc0ku~H?*1wRf0avo> zsx~wGa^2tpVdny27h4#V+n=IdDK6emTwLwT#lMk@tL(Y>FP7A-IE$hbCpe7o;2t)J zXwap?)KY{Z=N2O8Grr{f2g&)AD>)8|Vou6W#G}(j;*&<5i1z|J)W$sfqf}r1LHK3me1&&L(8fC=0=}f$RZ9Xs7Vs?p@8oxv| z{#lY@b1Ip(9@utUp!9jj4HRA`C>%Y6ormXu9?}a0UU?-Tw(@*~)hAvJl=1;(xxT19TtHsLjueo*qO!gP4RLW@9kPFdZtJlVFY ztF`0A<|VDDNa3PQ`n1TudO}9E6d^^GpS6a~zh~l)&-{CPl-YF19nigFBXrM_GffL? zEJcE3`j}vKbkfHi6}Fo7@!dgz52Q!1{~E{+z_b8XUF%uwKnENiSlq}a2{wJ%%GQ;O zTRX5fgTj+=HD7DT+UBmd)vI{7rWI$>#e-a{CN$7JqZCPg5$WBLzIwL{%I46p-YtpH zJ13Sj?HiM_Bw(h4C%Wt4?h0qkI{4n8phIIQzU&l%CrdH##9asB=*l%6ZC$4&mv*dP z(=J9=UMMTmK@qFhFGdk9GD^ARQ>2Jz`6}XGD4^5Biny$*BHB=;Y2(-xD4{cz>~~km z{S@MwRq}#Byb#UnC_*UF2>qiTWi*F%kzy(rt(#by2tIMVjWhW|J_Oe!bsazvipj*Q{UfX-{W1 z;1+v!1#T8MkH8jy5x8Wz2aKS+qv**F^%q890tnu|Ko=Q(Auca+UZO>o2fEhM+P-4- zX{{~1)3edG<7%s%P`O%*kpjzqp7ic>zIt~EO77;c-W|d8&XF}u0lo7}U`!Lg?yiYP zC_FW5VlM^}i=*4IV=Jfa)D7}QpJ;B`r|o0$VWCP^X(g@she%%@@YR=Nkl&w$^@Tbd zJJ_0lfb6vHq%15QiL+-~2yGOs}ee6hHb zvcpK#+||{*WLaxVvTL=&V70)p8bV{7^GWjadjjzw`Q7oy$2PGFrLYT=o@N)L>mGnm zD?&8=anC5BFg=>K0u=qZLoX4qtKtV=v+FxI+M+vooiOMcC22} znrvRNV)ZGgM4%j4f}yY3r?Ri9_`J{=tF)5bd<*HxVqZNu1zA2WtS2<>2==X2;cM#R zonHcDTGQ^XHR}|fnziOKjR2Z3Gc#&u=StDvv<+fR7c*K#cRhj8X<2h8SWQn{-LXEz{@2ku`k*Jpk;=k4jFB4?pm@8`zTG%SP3Q#)8`e@YR@Ynw97t&Bs+gKY1Vsv zH7kd#|5sSE4vWz&0}q-udFGa&m59G>iQPS9xDjazw1VZ?k@j@1DD+c* zB!!i~k2LTnP8x^~+#kvu0&o!>xF<>f+r|##T}V*71Xi!6ZT%b~4nX1r2L=}pY}hsS z`zk`#ln5|BCNW0cf^=pINKVuh2f$#r6^V~%H4i?A%Kj!)*?32nIMpFo1Rd(IyoN&^ z!qU)>bU-S@M>?z;TiKJM%L5(Qbx0esBTYlt2vk#J*CD}k*mBFBR~+Z?H>_&KaSjAP zwd6kSDl>73ndXr%W6vVm2mpTpws?uA0X-zdHsoKbc+{A$>5igFr!bDkqKt94=co~C z3mol_KR#=_5oCBD2032UwWBT)#E$W56Nh__j;HD$>s$SEvHFW#t8dgl5yHNQMXCIr zBd#*zdCyTF5x3r#xbu*>j0Hq~w0(*tHOI4U2KO9YM6_JsOUwC4%ek(!Sn1Q5#9%$| zIr=D}zsVQ<1&ICzd-T^4Bx7grHr#V`C(-Z~Um7k%8ouO8LtT|%A`G?qg%9#?H3xl^ zP(SR8`XWUApgroJv!v!8VHeyD!|r#0$Q;}vA!iJHzhis?1?)uv_9tIp7bCFeU4hkA zoYR4a^>Ervwg?CG56bgg!jBaP(@tf>{8aq$8RjoR4kkfv%WV$Zu%u?;?uEkDP>78V z{Av$?C>Bi?DHYUx3F_XyP%lNO?{I}$S8=MwmKvGmBFhZte?0V~U` zard?)fthVCaAE*2m>a2%THm<&PGo9h^*mzZW{D*=i+ev1HNR>J?)ielA>kNm*w=Z%yih9UeoISj#2X}Bp*G?~y-r7l~Z#+t@kPE2V= zl6NBm|FUP`b(YkuE>ERW0T8f9AGWiF&KAS7$8l1J|G%8fr0f7{fgBHefL>*OVhyK4 zq=Id;x&D4Q&rT2iSLKk51M2)LLHPF;B05 zL96p5n-j~L{A+k>y~L}*t=~7y+|8_1F(L5SIXIK}3I2Q@wS}(|YlI!;-4gJeG1R^o zZSrQMGgPLr6J{N}Yy%UvNI+YZ9pUJNGw|<-dK!CcePZ-q*cI*wHL_ghP*-RyUYG-Y z%{ROBKzGOv3rGfgHKB0v2_!T5i;-lwg4&5|ZHRae@^YR%FXynN<{_e(O2t7ljuv91 zz~d}&h7pGNag<-p^!j zlz^CWQfo36AM9n!N%?kXayrB(joR+KjfEAAZ+8}6w>oTh{uc_nA^(Px%+Xu^n#>`* zbF1ZryLV$ys^}tV9#ZXu|iz^qJ(zLF# zb6Il5>ZNU~+`@*B@~)Clsv1g=!pR?j#5Lp(ll(buvA+qWbTE^y7D~L3X&4~1q)AgV zpR5uN)3qh6HcqfE?s^`eF8F2p9ia4xy$lN+>%-Iw4N1G3GHMeHb2?Cubs^=_*1X>Hi=I%K z@#4lV0_S#E3${{^I%7CoMY9%YJ?zb>Ij2z3>WGP>P!bsVDCE<$&PIrkOEzx*5`wMa zd{(!3dLnw>&nZl19`Lw{sGc`IS8T}P2k@I>I-pw%MaiF+6;r*$+{5&{ullSD*CCT@HifkJ<} zOB^E_#P~FT?zMsYf#+{o!cFb#+uCYEUw?ahDvA zAO;^i92Szz4W&tsRqrusN>dT?_yFRm2zexw@qHW)INAvDCG6Qm3mvDB$LB~8HHAF# zGR7g~apF4G?`?xW*8QHw@SVu;R*>7$Nca}9V~lcg2zlI-s=vE$^}mMI-_^DHM*S1k zhkr4o@%;oUHxGH_;vUbC$E8GEt1oe1N8%RS6L&mIYBqvy1|g4U5iMu<(sCEla+)hG zR{C@dF<8%##|sJl`M&7Cf#^r<(QhP3#?D|t7u?GW7a$J6l~d#)#Y>&kZM}GC26vS9 zz_=ql#LoHDT<}_=;RC)jd=qK7+Lea7D#0v%GZ)=@hBtF1Rlr5`OU1`miH|#c`S=#{ zal1VqUtmeieZ>iIIWN}-4h_sm;?gm8HUYmP0h}Uj?d@k>PytOk*FWJ5>;2lnF#Z_fpk$uAIiTK>OT|eKl-Bn4x)a}9`)~8QnPx%Rl1dj zibK#vTl>aC6MSZhN`XEzju3xw=8EbfQp9PPJTkWK-%&JgeFmGUZHYfVGqt;s=Kr|T zTvz3q$th3fhLU2rz#{>pUMVj2Aujgv<>I@@#h#Gca@N|wlA2X+VHfEV*C9>Ms%nu> zRz=1lBI8J3GQNjo9OgR(@*P)#dK;rx(#MWXVZ*aaVY@8%^?CbSHbk)hee~DqH3c) z!Tdm943%YE1~V4{ex11pCbKYU2209lRC^dvQ==y7_Mji2s6NTQWUP^B=Oij)@nX48 z%QJIQ9&A9%{rIF&!3Mv#uqKGJ)gh@qL+CTu$ftE=;r=T;`M)nWBv1bjJ(Xg}{~5*F zkpH8TbkR!woXjDtx?8IHI_dd-U3cx4;yHaEM3EM1%3ltLWeIOh*4(l1xX3@%^a&Z$j=sNW$^V-Q~%X z<~FOj90`AMUjYK)m@U#FvafbO(@Du_4c~u7*b5t2Rhv}f{+Hu`NiNlYj*z(7aelEfv z>m>?y4@bxx0{WvtC)&A2KUGSrWlb&*tsLPh6LFHWN2|ENBn{OP0^Vg3ZjC$e` zQk<$`RfG3v;4#$nu&DYlTZ;;Y2y2G9AJZH$k7GY1+R-?qe+8 zaC8IySocmE!%rc@*D=WPtpLT%PkFe8*fCnS9b8>^Q1!p$Tm4^S^>1^nzES_g-1mJJ zrE*sn7x#F&x_(8({nD4Xr;)hFEFf~ZKg^Pv*LRzNtLyJX%inxy`3=(Yk}EA%`t%?% zSWj2ij%TsXUCx8-Dr z2ysvYb5d?rr=>-F(kQd~h{gPso7KhIx(<8zjwk+)b>biGW{YGFVK;jz!mO@eS-KH} z&NUs9rggmeWh}Pwbtp@T$%@W)#yHeN%xRqSDJ}0JmOCV8j@I*+QOj3B?tu0DU}ilx zZRiUyqS?zma!N34(vf0yiMK^WSjb;h7~&g>u#hj8OeqVw=AyX*RY}CBlOBbxj@0EF zyVpvT0FD`_TM_Y=nFNy0R71Z(X1-g+glf5FlfuZKi$pc#&yjpNYSx=5l`@m2wvlg4 z?t0`?fH5gc0%qFxE>>SB?R!h%^wYlhT(SO{zu`AUKUv|QIZ|13tNLfu0H8YCDF4iK z@Xu(Puf8x^`KGFmhWSAZKAIVz>*9h;c9*5l=E@gReEF}EzTV-auQ=Y^E^`P9CQO9h zP@S-Tk=aipYMNkGt;tm*iee?z)migB2|CJIlTL}6)C-i5==9)+)CzPo{01cT(@>@3 z+o?EuJzNO+a8}l^cS+P&iAdkDgtUgeIPGJt62zVK<4iB{YhRms@h(}tX^J-q@utF? z^CVWd!ka@dV!SzF)rs%FaLmxwG)cXU#Gd z8QuYMTdrBAv!v!loP#%~iK>5~Z}qps>NmPp->84Wn={p-RPN2;;vP?L&RQa_%a^!m zNZiR55V<#J6-#QC`)1(H86a9V_|h^RY3XyN#Y&%+6NB~i=3GVS-{XsZdqjVwJ^FVN zB%^EB*(<}R>dyJpyzWy(!zX-cn1M8W)Rl(1D#1iH9Bbx0@wY;KFQLB27xfN^`fhvF z-(pG4J;Lrmb6#k2!6j`@qyRoi0H5#$I1>Rr>I$%~Vx6F$zfXTCyl)cT*M0Hsh0Kr$KJZ`3r%pt5B!H_2rpjZV2Ov z#iAwfOrc*$=nwKmzZ0TwvPVCcB{hq9pXP)HKsaEd(kB_itBit6q zZ7FPmTUTLkJ9loB!!(Bw$zd8e$D5gqHaOu&FKKUe%=)rvXXL4;dLH2=O|ztCwb-#! z9`?=09{s>?@lsojPm<4|GFOBk_uVPZy&s*LN(BpqMWh_=r0y`{t`3zFznaH&B%Zj0 z-_@;MRSy2%1&OGk=TdDSfg^Ey@26k#WB-8M`4FKXoO;K>^H3 zxeJfhlkrKTTzG$HW(%{{au=R5Uy>zn40p!7Mg0HUiGMVyz9Dl6lj@#mQaxUD6VU#l zJJnoxr@nW~Ew%`FIOZkz<_+-1@GbDAd5INpV18n8x*yL{EW+Qdcy0phMeNL`i1gXZExEK~^_q6RKS*F(ipE2eck^@qd*ma!pZ`r&R^8sLZZ-zY#2=rD)!x|c zO^4h8pYE;9ryEq#@ct-JsgP=FS}7H>Z750?gKAiV25R2q|5bIC0%WtB1mi!x2aoV$ z@2}(*KUxSs_Ef1Ik$&vIu%5D8^ppwg*Lt#WP$))NQXiP=gy_ml7Wz&;lCvJ5WcF6T z&PwcX`=JA)!r>6o1+d!^VpA7n;9V(~SpfTZo5Tu(d=e$;%Zj|XUe`J3v^rO>=~&X5 ztgW}YZZjo-bxpXfdGG2K)aKtdsiD;$DYYWXtyg|KL@xT`+0p8zVT?-wxSB(_;@g$* z{KXY!ae84bI<7kdQ5a!oV3pGgYx#6|f7k31Yv19fsQCwZ3b?gLpUamZMTMWR1F=;2 z2?=40pD?V8<~~hZ!z{#p@K8pc7CEw*jbHvS!b(IJ8dy=GsgGkW34$rko$iXWOx3++#ksO0+XIJetS=`r{lmCBNy^QB z0o^FdSVBd3ty(Ko>PS(lYt4jm`4=E1lz)KK?B~8}wh~44)3BPgj0Ix?=GYV_Av2}? zmAg`&tdROCWqhvKAj-Y)o5E71o0ZuK@kgn7Qq>?zWr9=YuBaf&84yHS;&Ux#C0E}V zje5stVYuX*0(E_QYcb}D&#*v6Lm=g3?2LxH2eV}%Z|#W`T7GJVjj5CI$9hafJKwf4 zhp16kFm!ULO6Vl3n|Z|vqX(c6Ys}{MwvO!jY%vQ4zy+*W5x+F zB10axEs;{Ib7It!ilxgzShI?y3)MGf=@OQBeD8v7Q(L;M#Xd!}ig5~YTu#jY9W3ZU z`+A??E9@uB{~OXSUx=i<4F7^E^D@RE#Bl@E7CxB6AM3tGV|X1hyq-ah*LXz6L)|jO zPQz9e?5O#tLx|(0RQ-#6tA7So{{q+Q8}(0wIHoL0`Y;Fc2j`t8P-}R;CETrYzuC!R`)5nOxdWJYYL+F3wi$00ypRz~)OM+zV z44gw1YY%aJooIN?mxdJ5@QN!9byb4x=FX)tIx3!K*B-HTNg8LIIM2nRoO{Ikn3lg^1y_EBvtrt__Uc z2<(vs;&9+*l`KZMY8}MQNmh7!s_%DRzC`>-Bnn1RpjXq0F@r@FDF4t$@IB`_wZxI z!7y=9^5tLvIT*6%V1OkxE9}ykOMqaiQigd9hbSg6sE_!#nVN8}A0xI;FAQeoF-v1s zo}z7(X!|c;+6IxfD_m)-tLnUCAU%}KfQz#*0Jm@8X3 zdr*WdmlAVe;+@InHex545F9r#jsqRA;CS<{q!RG=NxWcXg&XY}n>$v`k()0AWzDldfnDuu7}o_7U9mzHm1p z+>9&Sx(a?)h2XUd&Z1u`KCUD_-sQ{3CgkHXdp<5^NzLNlnTh{&?a1q(Q7QJlg7r~? zb(1fwa}d@IuCVGV=51g|Ez35||5AwWCdA+NMLdFtzhRH~Yb>c*kZg?)!SN7pRE9-8 z-lWPez9fOlWmNTq3h1K*^kHA1=OWMtU4hnBv<+lL%?)iloEt+5gKU+cotj`wqu6o&W3DKSp#WfQci z_~SD{J0Hb3336Lb&`699N^VZd_ij_5OnlO)z1zzy9Pxbbwuls~!|}_<68}d#@sBZ` zN6H)`rt@O+-tEzgn#D$EwO3p09~ep(;hgXFU=*e8C~WQApvXk0ZKk6=OAdT!`s9^Y0%EFk zIjfJ8D!otPs9BW?&4F$19-0*1h8Wd9(HRifdYKaFhk4I)sen)+w@i}o{6|QGZuHfl z4afNpHfI_R;BZTsD8<5di4c`re?i5 zy=8Htlbmt1(EjeGb#QYyJANZH*{)QZx%S@@ zDszBk78MITYMljCVtSwFTJy^&f+>(YF!4UXk{gN6HhoZK_F&(2nhSkZ)wgDqNoi^! zdLf5R-?SEU+U5gp3&Hq9V)NMBqQJaJe`~Uzv zj*O+oTuie1d|0y$=y&d@uL@nLo=~!xKa-STov#wygS4I!Rsy=3Jgv?^(v^aW1&3dJB!0Y(4MKnuJq+aY@{gXm7Y?4Yk z^OuosT;i)6_aUzrgmq&cg23Z0sv_3Z!Yz}8z%=5&-8JHWRLyJFh+z;PuK`AafnAX zgxYxJl|snhLVENWUp;ylrSZwI9v$IHjR57HUjk#=^;LK6dR*c0)2{ejvFA8khTjxc z>+m@ahaRNPSg3lAgEGe}(|6Q44wLa52iA9~!bbxStDfAz&Pgzw+%OY*5!Pzp?1rV# zzBZ*tgmj}`Nx|iRPa64*lSZQ5|7n>+fPWJ0{*yZqJ zkdW^Z>K$*$qi|C9dN}X;n*8=TsCLC^5(FmZG>Nb>#rJXO3emQ7K7~Eo%Z#UZ8DeGr ziV}}#!r(#4zff^5ME<3UM~(TKj*mD9N$DPwGRENuigu_iu(b+*d|cDdpjehO$Y!zd zqX?D}JH}n-4o6V*QuVXG)&Ctd+h_cK zC;D)o@q4R-(;M&ak>>YQ&m*?6UCEM~<4|@KovP@eAi_)x6Or%Kyx?}k+mOEve|(hw zS%h<|D;z7Wc_$%vK4@ZVElQaETcLe`(Ei*P?H>^BefDU7Oc0Dsd{$Iwu#jH#O9kjT z0`#mepyv?KGp>N@Dn4=f1#hC_Plb76o~i6M_~WCp&m-ooAh%@*(OVWm+!Z4``8^ms z5>QMQI1WP!1#M4)w!1I17ZBR6uFxFBX->+cqo@y$PZ|{+)nuWAJUU9PNN5s1hBsTR zBK}u6@sF#dHkm`Ll3uJ59aWHhHedXZp(I@{r!#$ECjk>$I?l3Mxd;TKb8}Z$^O9w) zEy=FcR>svv+X{%j$UcKo=nN5>mh?D=sr(HU`b@|jaKVtP*M$Ymu;!OpLSiP60;^H{ zEH5JF=^qM7e9I6qPp3=1B4eJ0Dn(bj;WdKJc*}f*E=1SBpgb`dB-8nKBMY$QQt+7!wXxihMTY_Thb1kcrlluHeVewO+_*}6Tw7=pvMbB1YK|5F( zxvE;wRF|!~$0!Th%=D&G4p-t}-V)=dT8Kx#t!h(a_9}x-ZCdM+4loTBO1W~OD9vf1 zr&56Vdr2$raned0Bkq)*fUdANtMR4Lw)L|S)}~(18WaR)}l;qXVw+I=)9&VW;96pQ>f?@p^C;g zZ*lPIZy|@x&GW8;)6Ho}U)Y>h?dEyc?}cxem{L@&NwwbK(+UIH3s}(#0~%F7#()-9 zjrcAuWI)?ylGYr@$rd(Y0~16|_B39`IM~AWh1vo~d*hGK8fywN{0;^=z8#>rxh-sW zV#l~pcCdvVP1QfjxB64D`iHw#->84W7PhNJsoWOE#a&NZSPwE3XA4{JL?7D1x~qfJ zZDHFX&B^L{gqEDalA3K{Q^k#>u(w+D-+^apB)=T-!JQ%a@D`#n^{t`aGP3i&pO_7Th75jB%AuObcUUhaAFgj zTgxGeanv!Fq98>SoaIZwPDsHzR|*`&Z%)eX+B6@FPa0*{-qNBY;&yFi9~g7H_SMAy zd!6`4o5g!%4q>y{6>S!w8=JN5n1gH^q-IYM*Upt7Mpt{>HjwVkmKJF{4i*L8gF$;y zM{E1)WZTN-rLAbt4!&pkBZB@8cK*Il?)h#xHA8@FPT=*El2=EY=I+=MJ_@-52Jyo} z?AWm?oxLBifao90ibRV8xR-V+1qkp$cx2tiYHRZ|ZQL3EiQ8~`{_fUO1PzVu)MPIISn~R(CpF18?Z19p@c&hV;zE*9Spq9Zvb} zAoUs$_lr{8e2BVJgnf?Ajwano|5yj|YN+h^#*JOVS9xuq8=O6Qe66CDEur?JB3Lqa zZdzd9zStp(CZ)RuPMr>+c`LDTz{WjL^m4X;B#}L5s2`mHJ=g*g#bMC1C_O1-dym8P-w*P z9;#$$jW`1pO)SxqgE>Jt(U&guvAl2tF&q?vGgVdws|Ih!syXgmofoa?*rWy_Y(EfO zi9x*c_T^j|&bpR;mlpFpx=S4MLj7lN5h)o}G1dfj3w_nt1oFFJYN{%01zRPKQRR)| zUlBm^XJ|p5qa9>^+;U$q>CKsyNe|`MmeEY>FCw*PIdhsBy5J-pGX-O@h9IwR`nhCj2gcyxTIo z^HqVP;z>mPto!Z*;`;8K6XUbk?0Zf;m&*z(`#8nh{c&N^n z>J4{^`zdZ@5Cto8B0pgxXEy#J?|v}%j@=Vgq8kMmxXR73tACxL0RwS$o1yBTDoA`9=; zw}>61L&U+y`6N~U3E%1;jMabCwfaW=6F$znEK21*PA={-@o{bqb51dCuz$<>LVm&^ zll4~k<6~f7h-AHG0gL;y|HYD;ZLo)7k+i9EE)1Tv!NWZrPu?_(m$=nTu~yePq6Yh}qSbm_v}5*^t}P^FYK{Y0>M%p}P+hH)L^F z%hvdBr3Ob6+M|5Y9*SrWw?}&jOKMhwc__y<9c^fY=PRhN1|;w@1zcbC2wZNN6agJX zK)WvihamwgT?weGxMOzt6cJ)vWJB2rKSnkTRmZGHHXM#T4OGt~#)dpgYF3n~;x<7| zzXQ*dnBR~18uC};k56}Z1Xlkl*Xlcn*_@R7TWD;EPa5TK`M5?#GDSMbonVw_ZDzo;mO~Gd`pRhZ+p0b`=D#xd*pxwvH+}U$iYvX+sau0t0Q!3Jf2Enx$8h<5G(Xk)TnzMQRN7ZTVec1|&zdF>*|-41FYij6&l&cT8Z- z;vEwe_5Q!(m`GW(r5qF8NS1O;NbdFm7eke%AiJGWi^LHc6W`b4#6g=lt;QZ+^ibop zZQ=r^M75a|c^TtiQoIQz-;n>XwE~0~UW*KWh(R_tF>YqMme?69lj2vX`d{{~{wY}f zFS=IWsDHww_uDTXi)KQODh5%#V?7;t+P-=oVJ+H@B{eI-bg>U6sKMdKO4x@Y%7*+x{ILeBjSlM& z!~$0k4#GAk>7mh3a3~Fx)atDk;POEm_e>mll&5y10-^sooKk`Sc^m|pkkYp#) z0CZYsVSRa18k`VA>C6U<&t})t!%epQwk8}#B5XkIlo|~`Ev@Y27vSZlVNHL}Vp__}H;8Skdu3(eVcf&ar`&P>BRJzO;3`j~cMtIMB)48^TMPIICU*C1=EgVWa_=OWD=)$<4~ zSAB%Brg_{wuCi)oIw-20xy&wF)HYRDSrSp*PBFkee zJ4m;cRdpOr$hC#I`ppR*pioS0X zec$w@?*gRn>#p?GRcVap6g)+EpY+9hA>w`99`7S8sku*LcdYB@6mVS;qK|#A#P|xq zdf6A&MF{IJuCN@$Ximy4B{ZVNCyla{yuv0<<_?QnO2m||4wjOAi>w#g8-J{OA)JA~ zL*@`O@XM-LO8ze{iH{=sj*w(H&e*R&^*sb~2TUba%UnLau}Ul38yk>Y+4tf#FTynP z9#zkHEf=PdgCrY~rjdV)xoe+d^f`Omofk5dGX3lq4mTPa=D8P^%=-QKjCCqB@OvA$Rs5M~(IrLG0hK$y-j%q$DT<)LAA z*{0kl3Ug90Wp!t1mu?cfl_W23Ot$Q{@bZ}fR&PRL^R5b^SuvIX)jDc)Y|8~v-7G~# z-AgdkWsWtsLbDDKn{ulNLt$cl#TP@>i0?Jf)WCybuSsTmgd)CCo8&zak5B0&D5hd zizF{&94wM=q5K;1|F#xmh~XQN;Wrp$bK~Jb53dnBMl*neMRInDReu)#Sg#*61-S{U zzXRm9G^kSbjru1nlCM~h!Yz_q++$*qG_K;0C%TUHrRyU|*CKnmj$ld6tN4S_=%cUV z(KU&Ks2G&_rnz(irV=cn=;u6g%FZjlmZ<3RrQ)MV#mTNzSZU6o#G13!FD4*nBSMTb zMxWz^AC1xF>X`K|_+!Y^+12w1>*yd$YF3%;L_iFxjnIbRLnY`BBEp9JHTdJxMSL6q zyw4RtT?IXjfdr_yh{!{fG!Iaqx+c;PrhhBg=n9* zNBb;GY8K;yX13k6KR396Zn>f9_fRNiNf$#p8d_WUoutIiC{xgfbKQR`}!7 zoIi~;yyZ%RgV4=Mxy6=7{P?6%7TaH0Oena;R!n*8V6i=v_+RM6Kd#Of$Q)vIeoKVK zR@=ljT(f~Jv_Vo|JKNjoTE?OpqFWnFQ{Cto6b5oxD&^v6>H9pkq$Q9$U_5rP+wp$R zA&2Y+*xGX~`*!@YBf^mUMOEkc#)nHBjIldGGQ%|%E?bTNTCAmy@g%gr!qRuRgQZV3 zYt@9JEPXpeY!%L+xfQAjyWXbEMtw`&ZowpAt;0l%AkiGCP*r0fGpremfm2$ScP{B4 zF2VgjLiP1WQjYm|BFAvGlcd^439&o5SmqF1d^u?BD@54BD8woSl}qs2na|V9ZYafG zvBL|fG{PC~otC&q4T%8U`y@DS9t#+e*3<=nkkeF+9nBaMcnnp%Aymcqh9Rz?4wOKb z<+Pa0VYcM!cjO>(VCQLtS+5Aj8C^O?GA4rLJ=0U6eoYXPz;s-h)bVjbJ?1S*8NY7D z8iMhw1**u~E*ChnDMlR}71joG&!t&6zJk4-Xei@k{`w(Fpr(L4UdA|>zy5$)+>rl0 z{`kx$??Q%u%OJ-$02DVjfBl-+87uSGzp46f`d0rNSp9#xR^O<9!u<85MXB8U#l<}) z=C8@?bH!2_wi*wL{!Du!yWjl&!%Xh`;*XEqzlp@{1-VT#0!{9FvZUt4)Dc~9et)T) z9vH#}F+0aUohXeAW)k^AHyFbJ7e+i~3b1O%Bc{+fh36m(px*fvEyofqNBh$9Eu`g0 zS6Zy}seu@DHi}K{PnXKWLp>0?D34qUJX7e;B=qZi(SIA!pK6bO4M8$?1`7g8f$M0* zLsvcEU+f@kyx$=N(K(-@p-eOseQEd((ok@vp{`1x-{!$r9r`1M{TjmleqZc&BliEc z$3DuEn)`)0Xe&egr4yR*k`I(TpJPN_?%|L_LBExt-{K4Xy9oVeSLk&Wd)3Q&?jy`U z@x}Z-#QZ~h%-?58&ElSp;zpYT-9avT_wZvSxMv8&Z+t=AgCL%A1yNVQO`JP7T^y{8 ztKVuPjMwDK*cuY3KK#nR73v;B-R+C|e-L%j9`zY4saZ`n;IO0JtK8PSGJ!~-r-4l@L&d^I zSXY!1L)qd$u7vw_@z4S4hqSQ?ZYF`fl>G^~hzjm&1FaiKZvZ0$oF)moVG3+P3d5J6 zW?a9i=s%C>AMvIC0i=JUEB*CVI+zWhPz1Ab>#jomVM2YqFX{&o^#|=ye}E-5E8T9I z>Tm>jZ`mO1o)Sn*Nffv*6S&)b!99fFzTgV3t|FZQZKw=QY#!rT@-GUZ`84HbVX z%#+VyGpLF9<1>SL1Tjy5+?F$_Em=~t;7;yjl@?1&ZYrLiSex$8_2B;w!-c(c%_cNh zIEMzV&D@xsm*~m%XUpu#`g9KFo%6`8pf&0`l&q*s5S4rSQu!!S+2BfLUDan=dblT7 zPWBgido>nAPZa|v5Cg~gGVmBOaI`%GN3x`5WlEgFS1t@nfr9-Qe>IoIlQwZo9 zU!ad8&<PBp~nfeHa z5KGnMlzK;nSWba3FBRp*4+t6!KCK!>$s!hwQIsn?xV8&vPH9z-q^R^0RLgo-~pRTcRj`FTuq`QPu%~kkeFgxW6KCWebQr zdiHFV)Vx~pj)LSyU+?^CG`^Z>d9N=me?wZ{<4TK_J`ECs^^BstozUOri~eOqf2%$E z&k`hKXW$$S$(6x5pHhM!5e+}^rQz>L!#%Dv)Kv+phSNPqn4k5<{0d@z#vb$2EUCFa z2*=HF$%Y>*!TpCo{L2@_KM=(0t|00vxVUh-Jj-Yh6$aGqL-)1=xTrBuL8+Yo7oaF*`8+Ah=X{mrO;nc8xGGCs8_}-d-biK# zGsO`&!~)vShJjLYLv|#oVvY?d6f-{~W`63+%)gMCAK5c=FH34}Msu+lEnnH006d9d z2#{i7AOb5G499> zuOIVPF|ze}Y}&9T{`gEA{)3GC$DWZlSyHn)u*lQqm2L9CbqP^zJ`f$MuxdKxQSf&o z_`CSRe+%L71i7nBF2zKV;MY|lcI3e>QR)!+PO-6w*f`RcjV&ev8;9Amv5+M-D?=lT zA=8zCVtMHB9&q)BHNifE0)8?9U+oKgO9Z~c6?k3MU|JC(Ceo#BvOf);P0>t3PZa}a z69WZb2DU;5`t2FWv7~0vpTk7Y1CqhFz!AYdQ$REi!j^NHJ_rnfP}+gqAjA>kL`y_` z!ThQ)lpSm;6^4r$*q=Bw1cBQ$CF6$;!zI)>D~0(eOxo!nsIV%%eHBoGxsn9)E?>cH zje@z%RWNl`&FSgkav@1#g8+1)o8iZbgU=ENH~Vrh0Xg`jJqI6SNzKZ662H|v6hF^Z zC{gMw48!T|5+oei4*!O^_rMSZG9^Is5-@BJsX5J97OBX)o5=gNFL~P_dEam)udWKT zlb{vn!4O7Vh9#xiiV*WwG4eDq@{}(l+ae>sv}fcomej0Hw^eS(5L+>z=i8J6W$74Q_?Ue@TL{d;AD@N5B;;cU$Za_jp3ah*8^yVmjY8LdnEY|X z*c5Pc!B7$IV#*DrVP^o>VBUyM$#y3?LB(^haSLKfS!@^Faaby3a(Mg(G_Z1?-nQgA z^X;sH5>68d=RjZKOh(}}x(cVR$~t=hP7BEv#g@9B!BSE`GdJ$F;$$UpvfP)GDagq( zdrn$eQnSK-unYR(mQ|gBQ=~)NWs)PDP<6U4>d-MK5JD!+0bz z7{4{ku#m~@nAeJv%ZZaqeL2|Hxm%e3yoBcbpvJY@zK z;A<^Lk@R6A>3Uz1rXfimbS0^-iZcV3NpM&uoMGIX#BFnewaOQYhi?)Oclq)#9eKFZ zo`*YFQnRug*gVKaXSVeZH~1m20a%P@@HBmdml!I*@;s;6cb)Pm_zw~M2YlggkMQqz zg{zVybNxBLp36qL6`}7DiOiFwN~n zZaElC;i9D6x!E2$x7!@5qJ%a10yY7kh(A6P@EuTC6Ck(c1e}CbSJj=Cfip-81I!Yw z+*F~bih()AzyZDt%tQwEwP#>2mej1S?WnG8E$FX>H86uCHFa@kQ+GPE0fsla^c7te zd^5b5-@y_L)*CY8$~LKdV_&c$@&qFCIA0=nL?VxNC9~$DkO)8dW-3vY!b{q z-GzcYh9&x?;v+?ToaM{MEaYRIJs+pCq-MpsOxX`{W`xlYsAP0lqPXU<$Sv2PV$7a{ zDfx<4sT{XwL-z)UOXSLhB8;Q5yOhBR$QPW&SYietEJoAC&7v+!T$@N-!@lC$3B^@( z6<1x=cPie_S16T}+93{sXA1pwg#KDz^s^ED`|Z*HH%n?())m+ba>eV&a-Rx2BB~LN zcbFrBo>mh`R6fvLR94Xs!sy$d9v;l}X~XZ>7ODumjR^d_FM&HFfw#C4SXcF#h_N5A zh!iUT`L{y-b3*+yU(~xG>Yv!7{vk_hR-2PhZHCflTBG$JSE0^B(3nl$IMNlsC(ix= zRS{Z~1}%aK1e_@>ht07pQjzy8k@q`a@^(e?e&b4BT~%f(9_Iz-PJQ7Rc&5;Ab0M2~ zZjC=aGtb=+{T7hha_0GO3)OiCx7H>)@Vpop7_m3ef+|HzsG3f}+?`_o$7I-ke7x9J z4f}yHRJ=v}J(|)K#k9?OirA=a-q?)_BV;~R$9*nO&GsHTnGj4z>? z6&t&cblBLfnw(Pa=#AY2MLsgB(qUt_{5{hbmd+{uIhlVmX@lcqsOJ z_keG^A3}tRy~A(_*@7(Gn4+8Ko6Z>(N$rvU zKH{y|BTp8pU{04&@-=wuI_OB5;#$B}zTkL0F#Hv3Fe|)OH5Ualf7+`?csy$P)Ju=}PII&#w^r(&|~=umVnh@Lh09 zr1PSdA{03biJXIc$vFneX>ui}u4;COQO$a?v@^bkB56a4=9O2m*+Fc!`?7f~vboZp z&68MCv#Q-tscMn~IQ<^urdc>~K+ELO`Fv=eAGn=CxYXEA5{OEHpp?iW=O<2t=y`dm zLm=B=p)6H-bFQKiZjOZ8>nq&jP`EuzVpeNY5^i0ain(8vG9@ix`y9kD=8;n|`EFwJ z3STCVMny2Rp;~!-LTjg-?#sX|^gp|4 z*%+0kD0_@3d&HNr#Yovhu9VeP^(K*#SOtfw2MYIVg!>=9xR)UAm+f)?g(Wqs%G@=P z7h^))vC<*JCWlOyEDHSeOIUxi9sc`o3R?H@;;%Yu|HP4r;R^)1qJy-j)q*WA!;yfYV9q-D5I4D90KjI{x1jNB3 z2TD;KvMBJa1b&Gx_!ANQ39jJlswflLtsiPr}Z*_$1`+Yb=kk>>zh_)v>rEQ~!iqkdj5*y8NOOQ>bMxR7b6A z*>Ys+57qMsrhdngnzd}9IpjR5GZjlbpRB5DntCalbWO$|pGnsWBx761Z8_;8GU}=} zl~;^%WvP6jcsP)FnB&XCO5|aGdmi>-NsUTz>ZUEX*dmn*-=vyKu@R82B~7L9Vp4p> zZfhif@G6{R|agQR{+hA9I6J7g@Cv415B)V{i zKF=-AprVL&cs>A|loH)|mZ8{glcJ<>uqS#OvMRWzH&^Z(?w$`L{DM{4^7{VVIZd4# zh6gunDik-A76fx)uvveuyO=JHuo}SriUNFy?#zVGriXh6;1CyCjT{~}gim1q5FkpW zGU;L&rUvPuzLEI|tABoaQ)zx+`9B{I)WPeG`7OsuszT$OREj33jap|tD@qWe2^tiO zb>1ybTJ=@Xq!XBWz<4lK6SfvR7I@6l>+M&o`6QtuqP7!IWmH+LhNt+~@I9N6?kQBG zn^mH!^M((v&x*xt2XDm zeN6D~noSa%pKuv#`CH+S&zdobO#dgWRr^?g7j?HvD=W-2Vg}UK)YC_3L`K!KW{nue zBg#6mnL@FL`mLb?EKATz9xc7-UJDALGN9Xne<#~lx2@{xOm?ki{ghM@*2Q5XWqj$^ zvL57G4Z*m3MoE8uF6m37ufD8DIqb{i*LRtmGB04gkR>Bpf8(4_0%3Y|xVs+ZRsH?+ zC_Y!d5vI-gIq*N&Gac8rhZs`V;5WrctD6DYZLCMBZFOuajE7~jwREX3H&lX`FcZcC zr$8ZU3L(nwm>jifZ&J2I%IwRB`KLh)Ta>Ku-6o^VK31O0f9w0-3yE+XvP3v7gbSuxEymSASD8F zwyc)p(0w*4fB-d4+j%a9%EG5=+Rnqv7>DgVpCE=m=F9L#WcVfqIewx6>MrcSHxN6< z2!4m{Ja8m4OP17V>K*moj>Apc-uYFB^E%P;nlCLQNXsj(v{>oWW5i%RxAW|JIn&&o@yB}H z&{j(4BKld7+cd}2I)fcpQnOMl=*kU1v_yJfNE{1-%iu&Ap0Yzi2GJzG35@%6lva-z z7oGDdB{+y^nD0x&c}T;7t~AtD2`1sO`31O+P0*trDBSIYdzCNl^AY!Qd)&)dQnUE? zz#SW+@}vRa`4BS3-1+kYPW_=-EfDpS~A=Xv26NU;!c{CpVq3~Woc;D%Z_d>*b zsXg9{SW>e{cV!}lO2>-RkU~NG2tm8i7urP#?Rr;e4x%(C<)%*>`s0&EnLaPF7+<*Q zQ_OwqVEX(y@&7X?{&A7<6PZISGA@fSeQJiJUyCJuJvHz0Y3X z`u5&yzt(D7yLxR7Ze75vrsACRdfwTrSdks-8*+buz1iT^iM3Fn)oy)Yfdb0vS=-*# z-L}51lh!BPxsh)D^m<;W-ArEUZPBqwVPY#N_f97K%Rtwk3%UlmV3`+}Eqth&rm{9l~M-1+_)b91jx$lcDG|)ud~BLSIypr-{hUNf7NX1BB}1kRWmvI z$euoU)r_xUNh(d|-7b7Da@CAhsWhu*2l5VU#R{eQ@g^Dat59CP1r!IEoPv+o^CBGT zP7*md0M~fd(>AxmqGiC68XOxwyGtyJBUv3jrZ~NPY?8+VGR1U-j`pM|dLErFg0)Qa zpM~Qi8y?|k5_g8x($U_DqaYkg&n|>Nder7XZm@88bDYy5$pSpYtbm3`aZ=v#Ra~0k zD7#tbrkvh^Vljh9s>;R82nB++sP*DS$1ZMKw5(~-u~=DI^Ru%Y~DlEpQg@%wS z-LP?1(DFK=<)9H_aH15(={%VeL=j8AgZggr)i-)%xd3vok>wnI(q;TPr;bhtseg1j z--0@@pbv`&UfKi`-Z#Qc=7yfHyHnqLPRjISjcZ0WCI^gcr`6w_p4qW8h?nvO$}Jm5!=V$_t@V*%wbmTxp>d7M5fir||q2p;FVD}CH1u_2O% z?35+RgD?>Tu(ac@(6c?rj`R1DdV5A$ReTrPBYY&CpiP_)vHqv7O&qt33E0GW1exEE ze<*eX@L9^&Bf|HS$l+rFc5d!s{+Ad!dFsSPr&@FCl>Yem(l4Q;dQuo~#<*lK&L`(=T?~e^Y+<+&VOVbp zL!u;*dp0gS@`aSU!sLE~t=u=E+=cjZZ>6Mq^+#;axY9(Vk|JKgM0~rgh&Q8%mzs*0 zsA{#FI3Hv3e#BPZ_oKWYiZAc2lvJ-$%@&QTPE87_$_JQe_t}c}0Tk^XQ_&Jtg3aLnG9QvRPa`Jc9x{}z=0$@ua=PD%BuUDyJ*I$(<(PLg+Zt>u^AF#0FlIfol} zaQhsutMdu6IOS!WPr~p5gW-8w7;Z%vo->6ZQ5uBY4S(%rV5{v7%jL7jYVU?0j6cRU z@un_`e-LrnKRORL^k-61Jzd&yI~NuRA#5HjNYFh=S|SAh`VjL6++UEt z0w5ET22b81lNJE2$`JTCRmh0leLzYHI-Ay#bV+Yq|rOrcAZV$->k zQn<7!j{x}IN(44D1UA_s@F7H?D?S1plvGciHS#P#2?Bn)T?<}d;j#g3;4Ui#$mTr` zE!{2^ydn|hWZ#Zu4PL2ZfEe_W((g(5WZVX;WHqTKB;?D zg)MM|Ck;BPa%+tB6ZfbJU*SvOsLEpu|3{7R$NjtSi5z_Y?&JESDi^l+_sZl^6`*Dc z0^up=RqRfX$kQphLnO^+HQ{}zX*Nmn-!hP&6_6R8)&CTd{8y0MbIoo^tnGRg5@pBU zF0&AcHtqjPH40xA4cN5*oRlQIwcrvgZrVR1@TzOm{*(AkPS=`E`(xz-f8?gUY=@Hb zL7Vmm@D2JVdqlT>E9aPVzF}= z>%;!7!##7ErHf@F$F`h*1B~%>Sx#;bo{4p=*$ihj4>{)LXNbP%R3>I$#Ga2g%L&>Z z%rYI+wLR#TF#+3ymqKj;qkqRo?9NU>_HivE`ad&~w4H(RHlMqKYMf7u`1$=Wr#^8O zK5Y8LM-Ya6A$P>;D_==vFeFL>xf|%hBVS0lk7IHlYb*DcQSRpWavwuU^?gEzXC;SL zij_NFPLs2tKrz94d*`0s-Q6*l{bbaY-gD5Xs`wAinDz%2l1`>YCN2+haItWt~7{u&oHP|Wu%0=JK2ob z9-Hv*N;Q0iso@b@HGBir@Sv$05~bk2)l_*PTOB|*X{mC7)6oA~V(=S=!LMvF_$FfT zOneNUrlfi*o`N)M>0HmR$aj-W%=g;@?wYiP-M_$yF1Ul%+Y7XXXl@zl>2>zlaTW#1 zA;~T~!0~q0523e-@=*6<_+3nMm5szwzc6b{KSfF@G);XNk(a#pz{1xt|R(-xlTkuvybs=_W)1{|z!gX<0b<>D}`P!51o z8w@pvUZQ$y!@ZyzxAbDZ?L=D}7)uU6=>~~KFMg@StEP-`6Yw!m$9AC(ra*6evH7u~ z;!N4E7F$K8pkJX9JA9Q0Z{_a!(XpU{*m=@fHHuV^f}*(oqo4-_DWAzB-1qGV>}cZj zXd-?njShd6dzSoHw-L%Sp6|qu*PQWWRRVVH&FLmunS2$XDSelwtew3I!!ht?H$iJ> zpI|uGwRYx~F#&65-$MR1>MCnzk1%w!(`AFTvtP36KVw_{ zy|MaFn^s@TKW>^n7^75o?aWp8xU8K`X>7!@j8@F~G-D5-w(w7j?Xjnwb-B`dQ9?{b&$GU09G-WQ6c01$AGDQzUzGm7 z_|o4)N%f@I1uOeMVK6*y3&RYA;W1Mf5+#8=d+rXu@`Y6Y-<$gZC+|N-` zz4{NwVS`%~%!5*eN)Lhh2r4HO?v5@W01)vIS;#VxPOBp|x6=ad_fphitX5{0p4+ zQb)EtoU2rF#X@_buQ*c3z&6Bq2IoG;psKvZI%fhP)fwM60tX!Sg@niUUkYrXI^ux zJAqRuO?{~f>?I+_m0i09b>}~qoN_U6?4PaXz`AKjS7q+8OE$+2^i?9f`>S_z48^tC z9K)mc%Vgg}y;|^=m?!?n(fGNV?J!n}=hn z1Z;=(A>$wlI6f5ihZ7IS76suZMEHCXS(}H?yw73iXxF9=>oG+hMM{lim)y6;aY{huvlbBW{O%AX-S3EejFuo1*h@w%kBT^%K|e+YWmW z#UID*u!pg{*o_Le!|soUMul?`!uh4>JYG0svG;l^HIePG-y$px`DgJF8y%&~IToe< zb$qFR!9>w^IrZ;ixx}fzAZbDGaSZ`A2_H5aJVG2~D^iVdxT)>n!Qt~616fDP z-SMSAi<0U|u?x1tN(_dAEey*LhOMSBBuWCg`{gn~zL4s_hRJ=kt=z|>+*ihz`|Xre zul^XDT&_ehQc6)j%tZZ=t*9rUsJEJmnyiY&?iW|Fcp>Hf3X}U0Te+8`+z-Z=`#wsl zSFz#7mMfiME(yU?41yqN?ZnUoJHKPbu@uOyHauz2cGxK~EL3+p zj4$ORupQRM@NYH3AD63Fi5z^ndX;`V?2dr7b++70F0FR&4YHH#syyF9sIwH=YR+L= z+bnbtXOlshORm9I(+#;_nVV?+Bw6^vT)-yU=@OCfX3RIy&JwuSwTae>-{kG6W)tmr z-*U6g(~ImNWMd54L_3&mqBZ48C9$LIZUM=!jWw`TD^>(2i`;FaeJjmw+cedE5^o#c zmy+t&A=VA~cMHhlP#rs{YeWu?$vW?T+MViErvhD@YQs~CxwL~7bXKQ^QiXK347*`n z*{suBDP_~-)i0B+rgB3S3-{__ftmf$$Jb;l>2j`wL9%Ln^*5WWm z7njEfohIPj@#z?bpz-}J&tkJn3C}x8ieV=GR$J*eqx6IE zrOz^vw4K2&Sb%;jgW)Z-fRj(q9oX>k{-+sOBV?4pHlU=F_~|*mH8Z$`Tg-_ zzLAn@`-9DggR2<4jzKPqAufP7c%HKd3DqJ_DHH`$blhj@3TsD^+WikP{@V2ds|F9_yWyFcV}|#}a4VwR(i7afFeT z9NNhY+SHJ&C}H|TdrUj)#WaBNqSqShthen3lpcVawrf_;tDK9y;9bNgE$_HB%z8m> z@!XuW9sc*kc-vgT><@uoevfyP`8)|9HsJeQ>Y+BwZ0RVqnzxB*WPX-Ut>Pe2njp` zcYL(;Y9qJ+5nB?Shc|*_DXE?mM<6N0DC|a)_YgzG$B2_u(qjvv0e&&@VbcP7P}pu$ zVH2gtLFrVXSjeSQLxaT%L=L&ASjeiKK5tV9uRNg>I^%S5323iX6 zz9B|RDe5&$)T?bpO`)h)nu?kz0nn{#fS1irp@^(&*aO^o2ncA1|BR9R*el!_EwkDy z^dU}nMCakX!bd2no)XJig@-hZ!vp3x-sSD>bvwS^-oPP5n#>0V=9kEfg(Lt;zU{+H zFf|6KLrl?J+GxMeh+-ubnzLK`G4cf{C7&KXYT88JYy9P)FYQBGMyB& zfr&ZCR?IAlIU91vG<2AliK=!gxkk)psyS)GdfrLtPh`?Bx0SvhrC%0b`r|06UdfA4 z$r+rlV^l8`g8CU=7bnD(kGQBg+!*z zkSWvw_bbr;t}s)Yk!b9e3aqvVOt#Xh{J91akzz& z>Iw5C_9?x+esRFm=^siB;0mW}3HA1Nmq)Vje*0jS`8e?qXD+%XXUn3PH6o%q+g$ztBs<`@zYoRratY_hrl!9xSd!m$z9mf6!H1GB4LNU7z2tp->n#uhA zimzO)aYKd})`SePnSSJzde{D@mtiv38n5@Bs6<&H)%6Mcx*ih3hG%x{tf+V&9Fh)L zgX@YKEliQD;xh2P2hp%dir?8wF{_5J5}~nxAN4h^W3748btWby-hUIU$xKLl5|EEg z%=ZG2)^_Xa)M6|4mS3b+rEPtDYQcI-ZSmfzg+8f!zL#yqhbIj>-}{3YJN@qYUVauO zf%Cm5BN-d=CmL}QkI$VTa`5AG#enm@^9H5Ao2%BssX2aVj(Pa+13%`)LLr-m1t*+{ zgX5d_LZynw>R=xY&0h#_St3O1OvklS;#w;5d7Oqr)55DpeGb$s{PZR^gZ|vWNEt#lPnoh}#gr)y{)bwjfB03?wP9mtYga*~L1o|$O#&?6CiEY4HnqAd^voO1 z>|l;5f`z33x!&xPE4&5q!>M6~u_LORjgP3tB({1Y6_w#Xk$SGhiPV^%UdfOa2T;*L z%W`?>lpM5#p^_T(IBB^CYhH8ol*t1mou;;3MS49KqI1Szq+>L08;}(wO4V?B&K^kwTyB0 zr?*foTi6=m_2b=!aXz7y{6nA-0PX>N*sNz?it722pM>o}BsBLtsBm!{OBBMBwecNu zN?tByuA7ouqg3v6jr73*vr4Stf8*-)ZQXplr+mslKgAtDrE55k`4Gf6{&7yU_!$Jq z`DYo!eq+n9s}b#A_!+h!h+$np@+%}V%Ope~p8Um}C-0IqubU_3@#INIOJ{e_hEsb2 z@e&s1uA$3}_fUs49UnFw(t8o~eIU1IBC{ljE?O8A+Sq0G(x-uHWHj>KC?%DO8Y(Y%JoZHM+RCL44ZHJ#3us(d02o1zsKF)TflqX_8p&U1PPibYuIEmX_J%t#uq zomp6JVfUKO&JLxE!&yERI?tIOYYNo1c6HC%_O9->^=+Nh6BaV1B2;mK1HY`z!5Nl9 zwygAuH7tMdpC2bzrrBei<1Nc1bzyhhOFxemgpczzeed1Dp@}3NANOX}5M8n81Ac@q z=p>&M;Z2{<#sbP=6S0lP6R|jLN}Yuvjt0GYPs2MMryL_kp_&esbx1R%Nzz3--nf2`6Q?wK8a2iP;4yBTT);c*mN4s%1Fg z0%lnslG5oBi80IanY1ZbrR7r?h%wocPJ<`%YKZT0nE<9%oo#I1iru){k?DHxqt%4W zhkDS*dBcvITmYQk0pJ1?F2RS5eey9x`XWD%77~wQO0N*dIG+%NjM_1Crras(UpG^( z1c60}T(+{W{7J($S|T2m1{(otK@0F~Z)Y}LETg}B_;*johW7Q{T|M0!OqjGpEi-QA zIIrw73+3c*XDqwTmSvwsEq%bxvKG!V0gw?^3h&0DBq1y@@iXR3{JfOWj)~#9^7Fu6 z&d-Pc!A*megNO3XtTKL+?{U@m-Z;TGjOl!D$jv)mc5zCO?~Q3guszo2`jn96kNMw6 zy4N5#78>^&`>M@s(_+qK|7)SP{LdLjpElws?h!sIa&Xb_@wnL7{8j+o>#ZWt!-lhI zv4gXamQo4s)v>V0D1>mqVPV0z>&PitP9P;dkjZfGHb$W3J)c#vgSSK%Qq2G-N7m}R^!yT8#xZ3c{4`SzHcK`1L zErR!Dc7d9CBbXEVZN1UmrASU_#=g0b8}AQ1&Wib|>Wjs4|*$~>_MKQ43zTXS|rk{NWx+z1M#}h=e?ifAm zX4UlViWUQYjO1fxBE|;J!#!~vQYy^;hB~e^Wm*1I$iXOejxD94hqWkfoo~;r=#TqJ z#=uGqz8(UA9R>dn9o86s=hjXJiK{Gh+>0hIH_;}@%~1~J>&w^W z=EyB$0^A&3j?`|*Uxp8xC4h$z;kS~=;Z^`HZnRA&z^3Jqf+? zoEOcHje%mg8e{^kt@Y_#xjIzG6_Aa-Qnl6rT^z!C(8ZxwoVy_n!ba|f2JJEZr*t>u z$4%Qss&@a^u{UZbK52Q!ty0z-X^ZD(o$WBJbvJY!Di%CE8|hb>=X?X@y(YfAS5Z=Z z?;GJr$Q?-{Qpo}4<4nYl*^2m06!F8RA||R*ox7oLqMXd9NQjGzZyOG)*hh6;t#0&{s~xGxLc*HZU9Hy0 z5bJ97$@X;}r>oT(31VNZ?y#34;P$j=v>{ikH8rlou1?#_Ffmu1B`g#3J?QWJNNc-w zb%^{f_LhfHtJ1bUK18zKQd@kzc4CN+vTIQ7%$}(AQT8q)PM|4qb+pVXPTxbEu8hvZ zae6x?)sHH>&_~&wKD?A3-M~lL=Y6GU8ASazewX_1Fb`z1?S!QOJ@{*{rK76F@1qv) zpgL&l>eZsQ_)#t3I+R`dgu_v!fZK1oUStUanVRdC>< zU2m_lrH}sf;0#T#yU*%g9>>Ebd%MY%#ToGmD)*vKG=+#Wd|%)oO;x@tOQmyXd)#1R zG@{oH{5}yf^tgbghR{^J0;9a{8(+;1w5*wydn&abMO8mn( z$p{Mgr7*%qq4y6_<`W=yOjCa;CDqeA(yg8=O=LPLW;YYF(^kyKP|OXcVkW9ukE=Zw z5zjj*eU(XHww3-zD19-$^h1(mD#M?}PNR$Q|=Xx$+ zniLY5I~Xz_wMFJ}MCSJR$b68J>M2sc*E|=2`U{dkJ;;E%-xjDR5U4Mi0%brUeNxwv z65H$#Pa5P%sXxY^s_RIJpLR*WkUgQ?uQFwZDD0y1{@r<#P%V*)OQ{aQ*8-u&^C5zcVWMg2{SCqhVS2RL&&)hn6W5KJJJ4Pb1Iw?sQ>@ZRMyz9yv1 z+F&u2sg$>8Ho^5$cZn~5IEj&rI8Vbb(mZVeQ018&H!5U#X2(sEE`X9k7)AD@<54U~ zI(<`7<|Dtw<~5hqRCW+&26qtVG*$YJaV^uUn{`zGaE%0XEB_A?ymUW+ z#Bq#r$*z@8SUIot)`PlELR$8cW3#nU2yx+E1eqpTk7nf%^_rQ8S{c3KV@lVhVcg^klDeEBuUnN`KmM!znL474umf!D2 zvj1k{BewmA3rf>P4qm4jQ(=B2ya8@*_T9P{A@W$Ynx|asoJye`E_T*rE9r8sL>|8` zo^o*$`;R}}zaV{ou3V{Bvf0ALPB%oX0TPQKr-(;MN9dB8%EI_}@m^hRVL*a-lPy|Hxg-Sr$R3-y4 zcPl(f3I?-d0^*18FZu!`q<_O6Wq1ZLBrR3%$H&G^>1Zqq0JR<_)XHwn5AHKIwNx(l z4P}SHBSQMxcV8=9!|uZsbTOxx@R*L5PN|oKi*lTi`#Y=sjF32|Tsf$$*!J5gl_orQx9@4TSH z(sZKJJF{@N99r#6vvujSK20W@UHY=>`G7JEe)Cw z9y^jNpTn|uXFjQ9uLE8cp^pJCN8pp^90<)6?B7V{hvmxkE$iC4+B!Ee2ZwGxol~r1 zWcJ9#hvGLm8*7Xr#bk*zig*K)u8t0#8e|krk<3*L zBJbNsV~7k7O*@{sp1Hzl$FS}FskAulRQrQaTmA-wv?2dqfovS+VQaoloKPnc0-^@9`@v<*Jsm9R)g*h}~XeqYTuJ}68=ypM)AooSDi%=);cBgx^u1Mwk z0Y3Oi-v`6{5AMgsR|Z=on5Gg-o!X;7{;B;8$IC-jZ80IA4jgUbB&{eN1pWYgbjb`q z)J)9p$FJ2)%vl{^V!p_f?+SG0c_Y=?mwa>Lj0p9x@&i--=YIk@n9{YeJ?iNPq6icb z+oPUO*LYXSWtJT$If#_YZ-GN0K2Ng0&=W7nw~D{1>&JV=mYt8|H6L##$hXQrP`)~S ztGH!MfNzyUZ=zAW0UxoKHxz`M5#iTDZk;`a{fz5l<3LKPKiFm9TV)BW{$kteFU0CE zG_AgtfBa1DelbdQeXF?Yo=D#+=QH5WwFPbw0=GGah_2o@Qc}I%cLU!lRR&Ah7M5cX zmZB*vvG~-<5KPjy%C$`TciBq67^QzleCfxSNV}VFl{**=AGL+yIE3MLQy7vZ!Eh?w z<1VanLuab`PR{GT!KDA1t@KM!`Y*?q{vk@L?-}OdLh`zn)|$0p*CVW$d2!j|XOMzF z!vz1Ct>8;h@SmCro~+t4a^rwQGgW;jrQhRbG6W{!!^RL;hSL8dzVt6qQoY)bRQEk# z2>`bqY9`xUu6T*1z;l?u2iXdIJPLdOQ=-G#A$1E9zMAkq@;RU zoq@D!Un907{UZphd(7KfC~hw}u%Rh#4~kX8_6!__29Ck9(R^YTo&#QBQl_#{VwMlE zxY~!fa;kTBa9w!|*w5`Z6+vW0XbJv$U)kZyTevNQCw{Ruux&7VY_dQ^v=QZ9K)tn8 zRvB<2GT=)3j0*D6)|y%Xyd2>P$% zEg_L&Q4c!DS4(Y=MLj6WrEVkow>`0^ReFI_kU-NZkG5>y8!`eV+Gr*-LkrHKxMqTU zAsbE$0@IK`#Rwlo?o}xFN%7@gPD%9*hdMZE2YBtp;2)(xo0&kHYz1mTfx1iuN>q{i ziaB(T>hHq;T4Hb^!(f{&2CET+N_-4TlvJncB3)*E`>sC3M|0oGPRSvSO$W_(cGc-{%8F;Jxu-vz~VDSIXsgt z#`9`9)!z>X!r(L~ba?&c;xKRq53<)R>To2+zhDXE*$l{ywm`Ncke#MLCQ7M&N+W#` z>JQeFIe^L=DfxCL`G~FLXQ1Te_>vbXsh&bj9aMGi$}yYa;(dprx98#F8Rn7@T+JXD zvxVSHgy3>h2n>|3PwM)8VFwYylLq;Hd5O-u=toP}?+ZVPlYrlsdl~-s7~zknQSTNx z_-WJ)0cXqSDTm7k@W|kLw~J}#XFe<7`DLgGYbQW0JQ$j)jk`S0%_Q>7KdI^56>8Mw z6_C>n*gSsLx(`=H|KVYDKPe2ssh_7Mf zwRgV5FTpQ1uMyXTO;(|e{ELWGL;kM)T!K9H~}sqOsQo^1U!(53uRw` z5RHiTnp^ZHa{$pUkP_8Rv>U?JI-DKu%a-XP9&{vK+4M*`R~k#Vf6hB{2CcY{%#>Y(IXPu=8A&HM?ne(wE zWviQy?@;|&7-~GyF-UxL!~4z?>!={7WL;$lb>+7*PUdVmIf8o2`Z>9hIH^h*A2x-Q z^%f(DsIjpI>uROV~N^)-2S&C3w{+*1S@33X(C8)nE z{p?&-!%h?M6n@rUkPwv^dXqUr-y$W9%h2m)PkPlP{BQ8p;sUGJ_vB?Tnsl(!i0vhI z3EDGsr}zw7OooF8@|sZ^Ec(v&O)cGRJ?$MmEo;`m^tlU%bM{}&C5_tpC65Y^LYx_zaTFD?y3*;fW7 zbArih!mPgp2ffwQ0BobsaZy~W=}rx(6Cgws2i{r>vFY6ImeWpaTZ4RK`54nM2a!Zw ztwFXJ)Rm`H9vPMzmT;6j~YP5<(D(o;4@YwX*JZBnrJ*?8zsZ*o)h+U|J>f>=67P-3F`cI*xjrh_B7>X)%q+0gN3obBzcCi{Tcm>kx`3~7 z5O4sny(0^k?+XL1Yyt*OKR8>1e-x_BzxGz@_-5lHcE^WHv-^u29FCn{M*(}hYSN^D ztMBY)es4{M^={I(mD2nweu;^?aQk4Y+LWs_!B0)@JAV1z$qkplWCL|5;R zQd0f#j@`glz;g_iKib0bL4@V^rm)1~)AtyHv-g-Z$?GF;o*vbyisMf{RC?ZtPB*{* z2dOidg%6v~;5L+gU&tNveBo3|s;~Y+kJD2)Ul`%2l#6JbPr}g1V3=nM!-o)tqfB8) zlmsDHLC-)D!>)p^HIg5%f}S2NvwAT1cEqVIIu9Q^R#Q?vT}}p@rDm$po>@R{Yvt9D zO&zU{YufPbN3gKjv} zLnG)cv(cmmy@itMDfMr)2UkUhjn9e1EQeqgGOT|;f?tQAJ9MCW~Y zD77_NC6+HRET6Z<^5cl*bMdkK10~f{`{HnF^B%p1$0;X-^{#UgV~+3IN=OCGxQ+Vp z>G-he$3KAzngY3F8vRT`iIRP$xM2i6^?fPmgtcRkLyG=6Ci-V=MgJ^{{z+5O6IJ}a zuHqq>Oa<=5a^3r1OAH=m7<}IrgU=xb--(aGHz}!J{p~G|TYoTgQ&pJy6}RQ!`ld5n zEN5X}2iLeUs7w(iczs2P%!~FhlY0RM=yfBkf+rU->l?=sC3L@K&^>Dl-G3l-zcz)= zfIj-9?%g)Fa2}pC=x*C+jMZ89ZX4e@O5ko=!-vS~nuCwnRu>+im@RVf0~B{h+--Yr zZ!hc!ZYrhG%Nd-G1LnD-C*H7?mIave^1L3Ng@P=2o2|3$tc`75aLT?1`myty@E3R7 zlIKR~%#@O+rM0!KBPt6uaP@fAF$OhtGvCG6!pEk_%)IB=iwPn3fawU*Vu4_sTT18@ ztr>EVn}Wk50hHewi;>tZTV+5vnSFbkU&0pH$Z95|y!0wch^IIuLmaJfY?J?x=&VR< zXOg7hD@6f!upW>I=~2bYescvY0x$c0g4orX%am8clF-(Orj&+s-nJxidRtU$`%q%!c>R@m>6XF2JNq~`VQXy##Gox^p>4@`a&a^#Q|k;VacB|`XD^ctdu#@;dD?9k0YQ@<#X8oUl4Lc9t>B>8HGXo0cTPT= z?K{{d@dh+O=h6O$>EJmySIuo@7@2X?pTp+&P?`S+q&;&ng7PQ$7gX6TV*<{j&A6RD zI2|9c=S9kSv_}!)DUdtnYV_WeR6nIRIFEKTtNxL;)&C(@|8UdlYx&2|qwN`^RQEiZ ztL}+BkG6pUx6T&0#}K$PVu~y@>h-=GoJZ?tuw-mu`4PgBGKD1;pVlx0lRS_1 zHYWXBZKeM)O8;;1rN4xUq&=K!e6GwrUuB$6nrb&O7~W?K!{Z3Udre_TlmvS>Hm1sj z#zr=NckqEJ|0R@>9Y}jMB#`qvnoQnjgaDpM`(m`z>WQ=`5UKwcorj-D`wvPQ)r-Ii zZwqPA1GqjfyVzek{{{ww`iGF`aFp^y%3#;)8{XgR8OC&T}Ty(TY=5N z70vTbs`=0llbRdwVWZ}sV)b7OxntT+ton(nd6w(NJvRhyje5WtuGkd{_(dXdGDG4- zTO^)BBuG3wj%!mMgEeh$cd`|Ag=y$c3ZB3=hq7(=tz$bu%W+8RGwj|{LB`WUm_|$ zjgQI`lvGcIlaL4)%^nDyhMip|o5N(|e1MK4)t7=eFz&%cKR@a#L<0081L&`|0R0L9 z`m-rOiPC28OrIw@l=xdpJ?A52gB^qq8yoD`DD?r5JEjdbi<0VT@pGhwYH#EUxoQrs zF9<5oNfl+>Kv(W8=AO$ANBOZC?$UrwQb7ZTN`*hl+3HBSfcF^SNC6H{L%Duo-f)IF z?Qp)O0KD^k9m_5htDL!6xUG|tb;D0&AY{=t_&>E8=uJKYVLe8MTz3huSo?oKQc1N% zjB3rcRQnB5?HE(4CECFD$rjS(Q8?HsEEnaCl)QsUzTQ^y|3t~pj4%1=lvLlymPqqn zjf243&meHz6%NmSWeXUrOGs&#SpqV^0Lj_{@+<<OiSqTXmL>Tglhou;BD zs_vQDLZ(y%=STh^x3xb=9PVW}++&NweyVUD5+lg zCu4iZ+Jg-QXMfQU@~eL?jsuJUw6c?f^BM*8Hzl2Kof2KjGdp%_%8?*V`zV>CQ}AJ9 zj{XmVv^V6AX^t|G5~azE;S|ODf>4%av<*2?YTio}7BCbVZBh6GqA)i;3P(~>JyqU> zN@k)sC<^N{xcMwhW-_(8l@000N49&oh(|o}n(=6wyDN>jU`QlfvwA&R>!nl~9&kQL zEC%f2T1XYOG8MJhs_2iXqLrp9N|dPk6yO4jC-9>3MoOM$lBaAX{}W1nL43*2rKEat z9)sk>>N^x}k+TxtR5+(NMS1%($|J?Uh>3rpt@zKO_#>v`C#v`vY{8|c*xy5lafE8# zOB8NkD7@Deg+C(-*TqNSU6eEq320pm*N)&uY-t1obw!gPW*#a2r-JQPNXdUl0{x#1 z=wI6c{Z|C~7p6cbO1r)AQoam@%KwxyPyQHLgnQw`#v*(HWqvi}j%g82qNI9qosPpz z?al>Wo2KLXKWSq=<-vTe z;z$TrKAe`?P;d@<)28Sic)7z(00A!4U~s(PR(2j)=hXffo|f}pQwct>80C@F&M;{E z1WL`b9Uo{P2z5sH2V#2|lBM9FW9}30AxJ_0e4jmOMQEkFG8*p9hHByT3_JIew z@w(W#0;|C5VsEcio;wVBBX&7FWS3JLvuhqNgOjD{T=Q5{#0>S057pR+l>16a>n7z7YgIp- z8iliEl@VARXm45Pl)=KQGy^HKPA^5>g&r@L9?F_s*%%%et}aZCR0oUY+(odo)l_zG z@-)FZ$F^KLD{ky4VU+@O*VWzC)6&(oaa~*IhP7=yEo;|qINJ@=0AWZ9>0Bu_6cAGL zox7cwZX=vMw!oxn^6;x+K4=?v`dU{0JmvbwSY{%W%Nx=(l}L(A-uF=F&->~e-cH=> zOJm+5*hQvJlZ#C8n5y1rLSX$jnl>iVJQ#lbjt<40I6+=*qC1OT`BQ`Q&%btTuX45@ zfqB=3W!4f5^QiKWp?oj$#1J!d~iQ1dY-kpJ3ajId$v{@b-ur=tap*CDiKz9@VVGg=kCINK* zB>)*%@B%(;CYG;7#Q*H)&_Y8HxD>|ugdj9h?{$ZMf*Zh?LuCE!7!#f=^osK&{3f5@ z)Ld~s-q&4BFK36y^$c9AEmh!0=r7Qooq~-Q=6FnPa*`Bu#W~`Dhn8G6526vXW%0%9I?-b<}& zrVPH81psQR1ZqJSqt8uRdJujefr}!L@)9c9?yF>Y*UxW4p9MLX0kKwRK$t2`H60K+ zzv-}HoH@dpiZB}X$@Hbg&1birj(J`}qxG5%TdMj{OpEUlVlC zxy0bD>z=b)#su7Rz6NRw7+sBz*u9p5@X?6yl_YXFxlxbqeb=`$bhK9+4emLAm{tEn zw$-1D)xXuW`da?+d(M}}DAm2^?5cYr?>T>$0rzcN;N~H4--scitM{)`QvLG#Zg9`} zHw>0v*}^g(VR^TuBomvk{_?Bo)j&!Iyx^voR&xD;bX@# zN~-Te#FbRI)6DI4&pWB+3sAm>{CW7WVS5u+e~W4L6IFBAb@oe8MyBV0>+Cy>5I{v= z94)n~=w?J}G&&Dg^fpSWSM*}stBr9Tea&jV!60^JZL&(*+>B^J#0Y%Y&}JcmvC|Zc zL}_y%ctL<*Ds;CO&bb%M;PtlFC&IlbF(c8en&ff{MC%s!8=-@gx+fYDl~Rik#k-^P za7x`pNwt*PJQ>!ePlbC!Ae_ARlPwJ73UJyidm(!I=8S6@DFaFioE8pS7eh@Pd92Wh z0Ra;nx+hefO70@M@ivg_%k_;`q2PI^k{}IMHrkHgp4u2LN(&P^s+)UPh5w zKd@hIdS6E{=@TaSU`O!xXiU_OU@_wOVsswf5j;;xwH?7&kLQN_5FCxC;}!}w<=O2eK&w<=A zO?w7&qI7L&Z0t*=w~mw`_yXKrpzvQMaC%wH)N*zu%FQ@?P)H^paaS23Mb>XLIx2CO zAfn5o^KjxWqojJ`o+&T?;ej=I;W~rE2Ogi^KA1}n%HAIbj!Gd_stgvf`v)2WmMIwU z#0W4pu4PI>UV!+5^^Fgk{&Ok9x5X5`LHl#5iNF`gPJKD8eyaYvd`_J0+ zJ{s;Y!iQ}0XiQWZE<+qgqw{bYZlk1n8g79L)+LBt290uo&my8LBye_(&Qo%*8~_X6 z&`l*cTY(U36a0dt=*@^dSo-*|q3H1l?M_o@6Q$^^#zuZi zCxo5%qO^>i(>+Oj#Jt}K6|(T7kx+?w0-|?!bRJI3yC|uinBRd&0oc7U>s;kxjWYn^ zD3DPZ#f5hQHDdZX0 z+4!(&gv*gekDJmc(MC828et#AawHeoa7dne{;3@*UPh@|V>~c0i?2~my3+(DvbLj< zQ5)q7MDxYyJiJjpPf7KSvM3s5if$k_RYppsAq++;nXa75cinzS*l?V{;l%Ykv^6`* z#uAYN3>&2=(P$?8yOPw0p`O4RH&T~kjh~2Wm;<@vTH~aKL`emq+K}bY4bD^>jYnXM^K~SJ&WC_$+{O2q@vN zMkWzF9lru40WUyg!TQFBO|N<~0=LB!xI_s!rLmE@=%^*#B`78%-CnL64*>-&SMD&v zfvoIk*;S&gM7&0$^KhbVqojJGE%XvCz`cjZd=Y#y&L^@`Dm;q(!D4+BhqWba{2nO`;D+7J2@I3m0GJ1)4QYd zaBAH}N%hn^3pZD|fUal9B40a@Yvb;+7K07OYn-Bi+X?WV(v&MSkwZxLH$lDxN|y9| z3b6)T5g#`6Y(Xd=H-$1$dQJm+x^6mZ>G(1V%IG+mr}EKn(kD%@Ad4_sewBW!5wjPg z^Kkk-Pf7LkTj%T9iiJWpO|c5Olw!Pui1x#&@+j?V;OcAbP%Ef6&ZSD)9flZ#HD?61 zV$HQ8gmWNwTx*UXOq6!}H#U}Gn+VpiIO4VJTZ!^A_Q7dfPhuYlR~aEgc3di2DUiLIoKbB-3y#b$*jCYsN`@FyaVB{{yGZhE_~(Aouc)R z6sXmv&}p`VgT-KWsN}d1IHTZ#p3rr+7t31_9S+1W_)^T3K-7RQQ7#pGbmr*vr*cEZ zZQ#A8mIKYL)&kVX#3Xl?tFGAsbzgH^T>j{;w})0vst|UWyMJ3$6_Zf-R;4L83z`Sa8&z^`tJU9YZfc zL0t=ur}7P+JB+ZPxoNcg>fm`QVm2C`hYz0HD5-Yv99u6fIMoZO?6)0sM2d$|#Fn}2 z^lSFndDk}X#Y*Dcj3~p*79TdmI}JhHX$oSZ#DfJ9c6h0lcK4!~jCOmmG(OVZZ-fKQ zTBBuGNq0Kpb$4_gPP)4&sh)J?uTb68;rmx$yx}1(cU&j$baNVLibCz@SGW22I2E#kR6Iu9q&GD@l^(H1#C;yi;1 zI<6~i34TFR^#a5m>@|GY^l$4B+AXHgCQ8-Gjg9Czx3*Wi1chY8+><;53mDiQf)NH} zr$x)H(r`UuH5#3V({LLl)zk1KFAcpegZ;xNjFxy7lDi2OJzRZ-2o&=-BZ6Rq;lqYZ z8xWwKrT`^MCRj)Fxe2c2)x9V$<5jrtV0NnB2pO`@G^Gr`V!a z^~{apX_zdvfYmg9ZO1&Lq|#G}6xdz(u%Xgf2*l&2KqN{fIPMB(>iVBH!Dhz;W1`cRo3C?ro6_)oHc(5=8%c|~?Y$pe+i0n#)FM%5&16CAap$~ml598@r z4EloO_G&tS+{w=$chK=;(J}6}^^*m0}(*VZJpCfZOOwV@2d zX+IdTaFwAathKB};aO`rM7EaNoW3Tr$_O*EJEL(@n@l%iyF5A%Z!*g$slLe+y-j9& zHoH~RW-6mF+z*3$cmX10skYd#bOy2yy>WJH#Wg}8@pTQi>5H) z-<1@<0QCemDn4w+f{mz#Ev9Nnl;SW4A1s1uGIU1=ju6%k0hge-jMV#j)B0$S?^zOXK!6Y-fkx2Q8w5@TJG0OTpX#oc5(7xVY`Zx_j6# zVvsl($yIQ4d<&HXycrP&yA~fd1Uwr7+-VA6q6CB+qwbAH*dTU8Wz}-}3>{acGK6=OfRg&zRsr)@w8dDtXR9++K{%!^!hJ zCDoJXJFs)z#jXXn@iv5KnT5rP1}3=IbIx4X<>0AiaiF;@j=u^{+U&Wb-== zc?Q<95#1DP`CO#Y9LOElS|%DL+WcT;R=HUK$MxV;2H46$CdEn=n>EGR!Fhbma+MKI zWFbdmqc+R)5YOe&d3dv2MoIO}@{`?ev+K+b!0tv9yH)_!?(pykM6AUFIO4{JXoqrR z6Hb9(R8l1k{MBC^f%7O}FJmie9V(7wy2~(Gg(E=&(A?qZ4V=3{8zqZJSkz_@4J+Uq zbTf{kc_{ZZ|LN*2o7Dx#6R^`P1z3?fl zrEw@pQtf8M5^QmN*ifwpq1tH*Riaco2&u;IlCkMc*x_}QnelD^fDAs;-EV{t+2hfu zsHE#fB=3&S!%24+CDoH|v$V&NTC@~Mb3Y%^l_E>eArMlg}^>; z3T&bjg|%ybn}C+Ct8htvYY0tWM!6YH4+_cTqw1v3njl5ie>6HORr?Up7o+oVsyY|4;dR~eFUharAo)f&O5ShZ<{XAb0!Yt<4wi4yJr z<{O0ZEOgx$1!hc}Dd2TiiG37XWrPh`ve9^`6w4rn%cJvfiY=q0dWv0(6sxAn1K?dj z$Oo5naLa3|4Z;P;?f7(aBg-`!F}2zBBg&)Ed3dwgMoIO}hTH>6 z*EtLyI(`rMkb5=Q|HFOj)x2p4Qrl#el)D+x0^1ZHHk2DcFm{@PktpTh@N+s|Q9!{XUD5;)6!`Scg>$qGnyqE?zVB8xm z=%hbeh9F0(gArUhfQ&9)*x4>}=3SI67s{Wc& z&^CuEc-&M4iPCn4IO94DQD$qI`!dSPm^;-y;ED--4~wHT=vP>AoLq3jS`M=Osm za0Z5oaP4b>1HC4l^Jk04qTig@k4owuh8hCP*GN%{<+~LXFb8tSwR}kdiBk6%*qH;T zo?xxv7~P*67%5Y%m7ZLozt{tZS9*8{Q%mcWhy$bb+?a*aAl z0B$h_a92_`b)kl`mmm%?D616WqwEeNB*{jNMo*<|0TCaK&ci9YjgsmqdnQpfbzv=K zrHx_A*l{gW682`q7pz)**buge@a;5(FHyqI*Y>e^ju0FnfpJ#b!`_Q1FuES4>0xCN zKC<3#gd*9)(a5P}Eg{->N9W;Wy^E6S$@+#CC00A^f@R=lJKi+sM<#?XYOos6r!^S9 z=s0`3JIw+^gPYB!l->njmc)Mwbp>`YK5U5p22{o4rm9Gk_^{QG$qr?itKBl(m8YxL zwKRVjWo9(rKOlpT)RX?h1R=7Mqft>wT}C8djLySJ{X8Yrllsl_78slzMvf}v#LKN* zZnTkIp!m@aHqjH;D`15eoV0_-0m=fbr!9-1{LnJ|>uCQruJs_t=%zK1ls^nL3HG#+ zLKSyx^%=~+0Y@T5Vp>4#&){BdK`^LS(l#HL@*@Ly|${|vyq zUF6^~2)APl!c%w*Lb!ec&3WG78vbG|2N46|C^TCV!07YUE;uRXptj^qf4X$RXydps=$qB>+hykYW(DMGcijWbZ#uWVtEYAC z#;)$R&K?nZ7DI5e(@L1wrD8zz*|{-m!TAz9y}&wuIpWZezf8bkNSL=G=>Ja2QsNf3 z%&Qj+F48!ZB!nemT}O2_BG%ibjCRBd&lMV%_9FZy@7rqP(k?fMODj8V*+GiPiaqayvhoizWK7VxDj`5}n!%2jvos#LxxnqsmXgzP;Ml0jm zKZ_Nu2~f+b9}?HzPYu~`3@X8^c{psvF1`x;G2S94D30x(cab9Mieu}RF#&OGkA&I+ zMn~YoX0rV*MEG?ia(FvX;@BR-(9wpjG>Bt+BCGy#+v>j?tG~>&`da?+IJR?QlX!y~gE+QtWU!3d!g3wLvdt8hSbW;T5KJu1LKr0w?^2E(UpVYnV)_=G78iIN~Bj_vnR zM7G|zM=m2x9-6B>Y9v1{FMc;#W_5Y-y@=DdqVw?O#jjIReIMe9S?h}Cc_-EUCzP)t z{|9{741GJX`oA-+exhm)i(|Xr=Y^gF;@BR5zs5!Y6+IJjL@YI`ioOAnnjW2pD|!kg z)hqfq+{xqjmfhP|&Uy?QF%NFz%~y|EavN3bF+^%;1ZEg+AtAL%y23F*}ljg3mL8xhZS(Rnz%&Y+}vdKFr^ z_nnk4xQ^Ia4TH@Aj2%s&R7RzOWml8rG8q)yA_( z3EoE;cptU}@BIkgZKmKQN~6%gr*1D8`nyEsYYdgI*rM_QMCIZ5s60SP^^_Xd_@pir z<65SK?`I6Yr)=T71>yUNDSXM2N;*u!%K;FKm)$SnJyf*&vHYa}M?Ln-wy4~SsQfKH zDlbq{J*jqE&s{D-ciZ|&vLD3MdLTY*2I3E*TK9w85e7Q9hL~CtCHtIoswbT-S9ASz zf=MwiIo&lWBr?Y{WR}_@a~mSFI6g89DXE_DD{vYjEkSDQFb>067d|YD zfw-O`Bsl9CIBRXe`4EEBZVFDKv@$~5%v zwi@~{YG{Y4h7#rMEOknp9s);dyo(F?MI!MbhQtSLk@yHA@qzeA+(b$BTwO1wz&Mpv zryS|xa0xxdVXz=Li&BI*V*GLhgfaq|c{do;-Hms#62yBLh+nV;@uLXh=S@LOluk2M zI+62ixB1roAaQt-;qZhl4j)4teiR>vM=7bEOviaAuwIAR3Qb&3*}xz=<>E`<&u^OwD_V!v1&DY+)8YY|P4!BMSRM?wDrfR7$ER z#iwZv7hF3Tx{TsOXW+Vi*v;%zN4wSR-9%d)d1cvG6BRfvdvSH=O$p!digJ^$FD?~)BX60$A zPKaaa#$I$PIgBTYZ{UC2aEy3*wO9a;$rz&^qD06mDsXRwNlJ*ls}vN!B)W20XZtUtRTzQBO%$-N4Ye;EILC_nT2NgOP&o^X?4_Shb(O2_s%&q+Xvi+7zAAY+GsAMVk| z?w7e%=Elt7Q`|LLkyVx9k#XEu78?2fD{V;dFzgj4T_P>!gIf9|+V0^fa(#W)=O?!A z`8VSCMEjAgeQIN)FfMp&-rIfSYpq|`R$1FxulBaqU2eCCNyXUiRc2YOi z-hs}2GH_8J&0}@lRLnBmIU88UaAz33QR#Px#<4^R-M(L-COr)wHVZyQ(yz&hY^-;hS{jZ=_AqOA( zX_(Kas;Qv0QL%@;+to{|@nWXNi)_{SAE?IdrfN)-?g#LdpdQ6>Ij4B=j}ng?86G#- z;&B(^aeaI|uBD`US|9HjGJ$PuZ;||v;~=W68qqqNyEY~0XPsZd@>vGUr)^>RJi>CP zDJ+T7M2-97juz@GDfe!jvzPl{pz7Hdf{r5QW!3?wD5Q z9+Xs1tz$jg0h-9VHLS77DWN!=LGe0UD87hL9AXMZqJ-FAHMfdG*&fBz3j9r?(ZbL; z#TJcw5RH@Kqp_Tl>WMK()>Y?vVd}KEtaHjB7c-Yi7{s<(A;&B*b*p6I_>0bJf;6tF z<}<`ZFEnuA<#@|g9bwv1D3gg!D1~+d}yO zLivCxlnGN!1eRAqJ^OBQ#0-s{|24zsm$vvki1_?GK0Z%TQa#lsJo>b2P)_)FB~Aaq z)bKZ3H9UlBc)?T+iPCic(n#M>EV3Ucz<}}P0-Q+lf17`YuiRk;#8=9>ZMbHle8$!9 zzrcdiT0WHofF%jPgb{wRE#V(Q!Y?!>e4@=iAcVNv%?A7;k?3YfblM{EWkg~_d?eOV zQf<>8TPWK-cY^I-9wht6jjS#V8{>QuhOG>SoGlDrK^Xc?VMvq^GhyOdDnd`w<914X zFsS`O;&3Iy;c{CXzKS@!Ej|waPD%B2I7D=c?!JfWGL;LZPb3Arl?nI(TLHg@0^VdQ zV4{kiE)=a^9r3-D2t3FTxZf6muOk9qijTk-D5+k>&A24vy)B|DnS2}MD%C7IK3(8S zH_awNc$|UoBU=!@fgn6;3PPeZI8e}F5Dt20GZ(>eW$^ao4gw*+N<>~{i2T(Sk#8a* ze~ypHA1SGx7N;XEa038)fOGKpH5^~2quS8_!v(ZrItK<3c!Wp84TlJoG;`q|E@Z<1 z;-egeGwLZ2yuYhOO6X>OiOlDH@nK^=e+!|T3b|vN&kVXm$#gKq*np@%#c~fst-=^q zJtL)oatgwDxs1{!k=QI^*fiT>^KHcDnE2StqojITRch@ElGJe}bzDh-V{oAXkGJDl ze-VcRqHoY~cO;xL>u@q7cp!mzsH_vX5k)y_yX4za9j7sMwArfTJE)G;rs_zPs;|$b zhI{y#s~*tOAbPce7%IqF--2MQv=XfWhE~=Vt?wdQeeu!ip`?29<|KJxac~&eiKGL| z2>Z!)^5_M#V_g4hq3djL1*ni3$l{8!GY@t;=HooNI8uNe4w$=g+~iBSvdAerfnSu+ zU&5fj*cSTlA@rlB&>Ij{pVW<&!CbzECk={~@v0cU2HjX0+~;uuu`=#t_HTBDsKphRpGgX7%yH%XIsmfp3b(8we77fJsVE-M$3@Mk=o}Co*^#292KhyoGmd^ z3y|~AA^;8f-v}HGx$+F6{R`5P5-MX=c&LncIB1u1;*xBB_ zrRTKH4I4X8e)Gs~aaS z;CK`z#3c$gP;HGU_&X_O-4xvJRX0vJ(#1jnLdU_B0}M2nV04Z2!EQw~{S@}CS>4mM zarOGPZb`j0t64c=yjx^i5v~&Rj6wnVrHpUK+4AiVsELJszMbgfn+Y&ns=CS$0usYo z%o+A)DOcSL%Xk&*c5>C!zyM!4ftf>hYC!GT(6(^kKOd0YEvKE;T&V&-&OaYR*ibYlIb)HtgP=fB zQz1}Pt~Th5@3nhXn-^XiDvE+KMTCm#Dx^x_?4Zhdh@qmyJE5-pdl=KMHDVf0h~6o3 zaFHiXhv8A0l-8l5crELX|HDh#twKfJDu4?M6~(JP{s3??Ku{?D5qZ%SLq&DKCBsP#6; z5KJ;u)G(8NtF81?QToC7(r1}S+Rnf@0imLPZG-?S`k82{RYlK0q@Iq>!xjA`CDkk1 zAlwtTM#afNtGtppd)`mP*#jRo#F>e3{I4k-i4uo}isC>izWf^-nawY}1LcoIu^E>z zR8&A7Id!5{kE4xnLV6tmIU)=)m0q(D&(}rg;q*F$lIrQzB=_C%;D-_nKskZVWf#OU z%q1zc1~G!87WlBC)P4xTDW(u4N~y3oVhVTol8?eS$(?+LVbW)d$^M8*PkcCoSLwr;O_HfV{5?4kh^sNw_yMa7S&yJpjSoW(sbiggby^ z8|XkI@JETq`xqWOZSgn|@pw;sJl;)7^<=wPk_`^V7wD)N7lZgyO>KqOxdM1nBR|4) zI&xzHyuXwyaNDFCJlQ()Hg>npZ+2S2mCgVhx8S{3x>y>O?p{TyKvMVx&c6vd?%GO7 z1$~Ao=u@@|nvDwjgsFlOB`o)R=JtsEPbu^Fnatm{mH8l)`CIX2{yHVqld@5g5(h?& zCp1AJlPpsBXPNN7u@(NcDEu!?g-=xBv*0Xg5soT?OREa_vx0MaeBn9Z7m36^50G)N zH$H5PgE@%Ao{&4jrsDR|t0<|S1}AuFAOr(fR3sQU48I7>rh+q&>&x|xR-x;ecUo@s zd_fBP0wgdF1LiPWU=BuL8ccynlp=ePeROl1#NRq66a+>DVZX<4*wP zf;yy${GHCcqK;i=3CQ0WATQYhas&eMS5rU|B|)&eO1C=-{!!v_$b)3= z9*hqgbNBU#$3c)grn!3nCDju|nFWghEXKTB&aise%$EY>l%+m#a1JB??^(g|lo?I0{i%A0LG?DXE^O z$9noPjT1ypIbn5KEPRr;P+i!%iCwI3o01qk`Ua&Ab7tm1oIGr8%-fdlm^qm#ZtCV$$|^=Om>JH zHNLkJfd?1@_t_#a9}&1GJ_2`BQauTdU&};rNCX&#$h{n1mlcb_;7bQqZQy*kGD-7-@0NzRT#6%7FMIzD9 zkjU5~u@I3+#Yf@-N~)*iah_g>$>oq-Y%hs#PzLouR(T~HZ(?w~(H4$H2*-t{a3o5M znb2avK&keW%0&qFDg)Ek{vdI9NrrrhwCV*o))Kc!$jB>2KL2xzXOIz z4g%Lge}&d6EFQyh-XKhk`?9znUQQJ%5J(p+7t!(5U5*uu0JVfv&gOo`HE zx*J@)oE?BsfRALpw-SLz83Nz8Mc_C@;5+dV_$DRQ6J<3L1)ZO;@ZyXTxQe2580zW? zt^tG3P8L;R!{E~oKuj_A>L;~GlU9>G-W*s69Js`gM*)h0^*Y3@k|&jio= zQp&%Y$-l~0{^L>pljF<3f|BZ~eZ1HB=La)rqUYb+P+EW>o^^f+%N7R9*|xBpfUtC% z!jdR0_N!*Hc)*ZcZ>5IR;3z>qNi0Sg7TayHSdLg!<74p#N~)(w7xsQF7#pQr#PD%h zXKQwpj__oemqmAz0=!;x_luND%mvX}?_SdeZWqZrFBlbqK8chq;k<^yd9^K^D-g~r zP2o(GTKl*tX2tHQ@gYM480ihX{mf6#Vil$E*zded>-5wi#GH*`7tG zQxGp!xKf676}%}xwXc-2>0G~h0pOJ?o+Q;$Mylg%Nwo?|waAoIi8iKKo^RbDCRSRB z)<%X_mn~W?h*n2@wAN8leG|NhN6$*qL9RZ`)~>9ARL&4nPTp2It5G=vrpif_%KO36 zHaLo{fNS!8=(I*)m79+cK|e_>#uye?*kaL&SX>q#i?>ozJy9>mv7#_C+y`AVECjW7 zY=o6bkcd1uqe&xws}4dRovF~C9HtSw^)RxC`B!=fCT7ZzBYqGU#*}eLT^1D<&~8*C zsk#p`)!kyNx;3b}n@v@hD2-=i`f@UQy*waW^IoFx5JTYsTNK(5g?r_P?+e6W}XV(<76=X4^usqev?Qop# z`tHqMmT+x|<8kUEl{V|kG8P}6kUQq&i772nTF>ShkRc&dK8O7*F*%lD zvd|WjcEn^sd`#w3QZ11;H|;TL5_Wqi3EZU{F7W}L=8)wqZuqm!?^K%3@$r}?(2JrC zAr5xZd~dWkG8e3ezEpZEhK?91;mXPg%t9fa1pJ19^ziT>Y)Ww~7dTz6SHCr|>D~vM zR^2#1bQfL1D&g*Nxy58vX})wU}<1G~aj)2=Yl;b8{v zEPAS`@<3KN{jGT~Q5a+>^xL9vCZdpzk3ugc)eZ<_Yo#p#^Ezme!>PguIQZbwu_!9+ z4EGAMqBo3GOR(SwQ$rRmS00$*oy9m8Dgk^m1Mp3@0Io#gH}ASms25+{=6LjQ=SC z`zizM%eH`RK)@b~57_;ofJuklhoLQo4Tx2q8)Llj@wrn}GAZQKOvsEAYpkP-&h~X304R$5{s55uqgBri?(>pyb=-qW~-&=|QjIYoYR zgz`uRf zwqXDdHMm7>^o|84-{x#F%OtSQpMf}llVkyhA!Sks`WjM}67y;?ifD!d7sMv35QnI< ziE3j+ovf6iZt76T7cM(2M8R|gmRsY8eBoJvKDA*_FfI(nMMz~_xn9!uv?n>JAYFBKrEkdt>2oi`Pv?K&VNk}0D zLLec8^Z-d91ws#jP(uwNkc7N*=G-ZJ_uko=SzY1xy~p?Ru66Is-TD7>=FHqP=geq- zl@ra5d@-vb_|5c_y5wBdr5B0L_|-+6;KG{|h+VNQ<`qQKnQEM7uNqm|VmH+YuN8Xa z%PRa$KD<>O`LdtIkuP%GmSbetkuSyS!z1v>7v;8`rLyy6s*ikOhpT9&2Aj3dYEFp6 zUGFa;qRefiU0=4+E}RP7ENXC=r&J#Ea`Ez1KlsAHRmXDcaMlR@5~q>vvtpgzVXZCb z6U%2~i(r!^lT%IFXEmX_s90)hUe<>H>tJ5Be6|B&;wq{4MtouQ=`K6!+9Y>g9n_Zt z^xqZegU)K{8&-JSx=ae-RKXPZ7@*wegA#7Vz0+I<1K&i)yR7IfmHLZwnwpaNL~%xZ zE&Q)94skUzz*pHsnFaPDR8M(9;{B(*tcpl;h*SIF@%er*f4Z@%MSifGk%PaUS?UtS{#)ph)f_l{vW z{$=bh*ko)pUW`A5lmm9wA;VihZNnv@5v*vCgF=39TO9wgJ2ih-*X9pk^LMswzE=PE z@h=-2ywyAY#S`~%9{;k4h&$SqxKok11qKkkV}ItcqI$V+0LQ;1h?cl3Egwf(PPV1R zNS~UC!6=V^IhW9%?TY?1M1O`k`i~Q&4ej`sYlw!cTxmERX}H3chDeoQR1c&|mr^Mi zcBI^qv*Ei5`CYEa&p_mNm?QrdE2_5&W%RznZhSC*#zk8X2;?KdYHl|y^_P%x}5AIs?=ao68L17^1H$HkZCvLpaM%;xsxFRw*FuNLoR4EOnzoAW! z`Px)-7Myt&YS5(j=%Hg?o$4Y@{;BTbdZ)S-V)jjNN2HSn&6G1*cDN}K#LhI8Q`ncV zWmQvHYOl5%tB01HiGAfkhB2IM{1tBmrM{wlJ)e3w4;9IDu|FFhz>FFGRW(MvCoRSJ zU$S}QIJ~&b8_z=YW1zO-ym2Hes<#xoF73x?7+4qe+FZGzNOQ{~4$7dUgt|9D-P0B7 z*$8zvTd0u=dNgdb(U&gbPC%Rz^_IlGfUvi^Vm}A5A8C&La8^_==B{HQuPaH3^~E{h zo1DLL(V~u)rAt;UU%DuET5Nf1^E|k$THdyz)%&xfxn&u@h5zpCj7`B?hsAt8gJpRL z7#f($NSOlma$MzaDVEd!1aO|{W2yH}Vbl+FYb6)XOnZp3smu+T^0iHCa(eIZ(7>Y1 z*X2}4Kv}&%J%X3kaK4z;)+Sk`>E+oUaVpde&<0h(eAP78DENRdqp%9sGA=-w_?Raq+CC*1MU$X@hsnAEL z+x^iW67M5~_qVQiFF?ExndAKxE2^Qp`B*T6%(k=jv297YZ~U|1+c>{ z@mxL!@s`<@Mfm%)82LL}$`Cx$mns}N(ApPIXW{+=+{CQ2lLC>@%8p0n~@v;w7JD? z+N}PB|LAXlU7q``+^X{WZuG05DKoVdG+?yUBZXh}Zh+L4@pV6I?c-u?w9;DHI5w(I z0#xRP4M$ahc;gxJU72m*126!f){v=2|3b7I&ojY?>z(o~L3Ts?`g#Y)E%Iw~se<%3 zh`*(^JRI4BU2m*NRD92$K-6qdtMKHeY4Uv-wfX)FJT35r;u1qRX zT8gi)ayQVX2Q7;r@H)5!Qfme&;4HMQ>w%pWK5i=w<#9veY6yb^-8$6WaFVZG;qv3w zG6glrS}t+1mU5ZY-(1ypB3*vld5oLw4F5sDB}KQxEEBgwAGWT_?LckT_GQ&nT!fwG z7=|;Pbj4Iqr_sK?(p2b+da;AF;t^gnD0c8=wy>sev==+bm;8En8uHk|n}9lC@J75C zPiZk=;CfMm2Mk;i5Id-Z4rU-u!1sBItNIWc*598Uz>G;K&{a;XPL+ykKo|z=V9-u% z3JZOJz?SA^%NDh@ws)*pilJcbvyNnybdiJ8ZGM{%rFNC%IB+*ndY2%`G9c_SRO#

&V+Th>l% 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 A33s|txR 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 literal 0 HcmV?d00001 diff --git a/.doctrees/usage/tutorial.doctree b/.doctrees/usage/tutorial.doctree new file mode 100644 index 0000000000000000000000000000000000000000..7d88d344d17b3c9488905729c440c87f153d9ed2 GIT binary patch literal 61334 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%0AblbZe`uA&yr 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Ξ_~cka{-uT}0?31>HuHzuZL@;(PH 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�D(LrRFZdRX1k(Kz4(b#=cBA|o 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

hw$FCc6T}4Cm5D?(axa{uobc%|KIbykv>t0^ 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

vBVZoDP}AjD% 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

_!!qGi}Qvv6a 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 literal 0 HcmV?d00001 diff --git a/_images/customizeview.png b/_images/customizeview.png new file mode 100644 index 0000000000000000000000000000000000000000..ce9704b43e9b3c3801f39df11938d88e4587ebe1 GIT binary patch literal 30109 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 NURp(}Lc%oge*mey#hCyA literal 0 HcmV?d00001 diff --git a/_images/ec2-inet-open.png b/_images/ec2-inet-open.png new file mode 100644 index 0000000000000000000000000000000000000000..9fe37eea6520b52b35beb35eb9eea1484681dd15 GIT binary patch literal 83351 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 O_-L!^t5vJmM*I(AuVDxP literal 0 HcmV?d00001 diff --git a/_images/exposed-internet.png b/_images/exposed-internet.png new file mode 100644 index 0000000000000000000000000000000000000000..6aa9ab98b2beb4a928fa2174319c79eec45f9108 GIT binary patch literal 87258 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,D)@J4T-HUB}pfmbqL7JV+vd_{gwY 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. Any changes to the source code in `{path-where-you-want-your-source-code}/cartography` are now locally testable by running `cartography` from the command line. + +### Manually testing individual intel modules + +After completing the section above, you are now able to manually test intel modules. + +1. **If needed, comment out unnecessary lines** + + See `cartography.intel.aws._sync_one_account()`[here](https://github.com/lyft/cartography/blob/master/cartography/intel/aws/__init__.py). This function syncs different AWS objects with your Neo4j instance. Comment out the lines that you don't want to test for. + + For example, IAM can take a long time to ingest so if you're testing an intel module that doesn't require IAM nodes to already exist in the graph, then you can comment out all of the `iam.sync_*` lines. + +2. Save your changes and run `cartography` from a terminal as you normally would. + +### Automated testing + +1. **Install test requirements** + + `pip install -r test-requirements.txt` + +2. **(OPTIONAL) Setup environment variables for integration tests** + + The integration tests expect Neo4j to be running locally, listening on default ports, with auth disabled: + + To disable auth, edit your `neo4j.conf` file with `dbms.security.auth_enabled=false`. Additional details on [neo4j.com]( https://neo4j.com/docs/operations-manual/current/authentication-authorization/enable/). + + To run the integration tests on a specific Neo4j instance, add the following environment variable: + + `export "NEO4J_URL="` + +3. **Run tests using `make`** + - `make test_lint` can be used to run [pre-commit](https://pre-commit.com) linting against the codebase. We use [pre-commit](https://pre-commit.com) to standardize our linting across our code-base at Lyft. + - `make test_unit` can be used to run the unit test suite. + + ⚠️ Important! The below commands will **DELETE ALL NODES** on your local Neo4j instance as part of our testing procedure. Only run any of the below commands if you are ok with this. ⚠️ + + - `make test_integration` can be used to run the integration test suite. + For more granular testing, you can invoke `pytest` directly: + - `pytest ./tests/integration/cartography/intel/aws/test_iam.py` + - `pytest ./tests/integration/cartography/intel/aws/test_iam.py::test_load_groups` + - `make test` can be used to run all of the above. + +## Implementing custom sync commands + +By default, cartography will try to sync every intel module included as part of the default sync. If you're not using certain intel modules you can create a custom sync script and invoke it using the cartography CLI. For example, if you're only interested in the AWS intel module you can create a sync script, `custom_sync.py`, that looks like this: + +```python +from cartography import cli +from cartography import sync +from cartography.intel import aws +from cartography.intel import create_indexes + +def build_custom_sync(): + s = sync.Sync() + s.add_stages([ + ('create-indexes', create_indexes.run), + ('aws', aws.start_aws_ingestion), + ]) + return s + +def main(argv): + return cli.CLI(build_custom_sync(), prog='cartography').main(argv) + +if __name__ == '__main__': + import sys + sys.exit(main(sys.argv[1:])) +``` + +Which can then be invoked using `python custom_sync.py` and will have all the features of the cartography CLI while only including the intel modules you are specifically interested in using. For example: + +``` +cartography$ python custom_sync.py +INFO:cartography.sync:Starting sync with update tag '1569022981' +INFO:cartography.sync:Starting sync stage 'create-indexes' +INFO:cartography.intel.create_indexes:Creating indexes for cartography node types. +INFO:cartography.sync:Finishing sync stage 'create-indexes' +INFO:cartography.sync:Starting sync stage 'aws' +INFO:botocore.credentials:Found credentials in shared credentials file: ~/.aws/credentials +... +``` + +## How to write a new intel module +See [here](writing-intel-modules.html). diff --git a/_sources/dev/index.rst.txt b/_sources/dev/index.rst.txt new file mode 100644 index 0000000000..05e11df566 --- /dev/null +++ b/_sources/dev/index.rst.txt @@ -0,0 +1,6 @@ +.. toctree:: + + developer-guide + writing-analysis-jobs + writing-intel-modules + testing-with-docker diff --git a/_sources/dev/testing-with-docker.md.txt b/_sources/dev/testing-with-docker.md.txt new file mode 100644 index 0000000000..1a6e4c5baa --- /dev/null +++ b/_sources/dev/testing-with-docker.md.txt @@ -0,0 +1,49 @@ +# Testing with docker + +## Using the included docker-compose support + +### Usage + +```bash +docker build -t lyft/cartography +docker-compose up -d +docker-compose run cartography ... +``` + +### Configuration + +Configuration is possible via the `.compose` directory, which is +git ignored. neo4j config, logs, etc is located at `.compose/neo4j/...` + +Configuration for cartography itself should be passed in through +environment variables, using the docker-compose format `-e VARIABLE -e VARIABLE` + +AWS credentials can be bind mapped in using volumes. TODO: document correct +bind mount format for docker-compose run. + +### Notes + +* On initial start of the compose stack, it's necessary to +change the neo4j user's password through the neo4j UI. +* Neither the docker image, nor the docker-compose file define an +entrypoint, so it's necessary to pass in the command being run. This +also makes it possible to run a custom sync script, rather than only +cartography. + +### Example + +```bash +# Temporarily disable bash command history +set +o history +# See the cartography github configuration intel module docs +export GITHUB_KEY=BASE64ENCODEDKEY +# You need to set this after starting neo4j once, and resetting +# the default neo4j password, which is neo4j +export NEO4j_PASSWORD=... +# Reenable bash command history +set -o history +# Start cartography dependencies +docker-compose up -d +# Run cartography +docker-compose run -e GITHUB_KEY -e NEO4j_PASSWORD cartography cartography --github-config-env-var GITHUB_KEY --neo4j-uri bolt://neo4j:7687 --neo4j-password-env-var NEO4j_PASSWORD --neo4j-user neo4j +``` diff --git a/_sources/dev/writing-analysis-jobs.md.txt b/_sources/dev/writing-analysis-jobs.md.txt new file mode 100644 index 0000000000..a31924994e --- /dev/null +++ b/_sources/dev/writing-analysis-jobs.md.txt @@ -0,0 +1,122 @@ +# How to extend Cartography with Analysis Jobs + +## Overview +In a nutshell, Analysis Jobs let you add your own customizations to Cartography by writing Neo4j queries. This helps you add powerful enhancements to your data without the need to write Python code. + +### The stages +There are 3 stages to a cartography sync. First we create database indexes, next we ingest assets via intel modules, and finally we can run Analysis Jobs on the database (see [cartography.sync.build\_default\_sync()](https://github.com/lyft/cartography/blob/master/cartography/sync.py)). This tutorial focuses on Analysis Jobs. + +### How to run +Each Analysis Job is a JSON file with a list of Neo4j statements which get run in order. To run Analysis Jobs, in your call to `cartography`, set the `--analysis-job-directory` parameter to the folder path of your jobs. Although the order of statements within a single job is preserved, we don't guarantee the order in which jobs are executed. + +## Example job: which of my EC2 instances is accessible to any host on the internet? +The easiest way to learn how to write an Analysis Job is through an example. One of the Analysis Jobs that we've included by default in Cartography's source tree is [cartography/data/jobs/analysis/aws_ec2_asset_exposure.json](https://github.com/lyft/cartography/blob/master/cartography/data/jobs/analysis/aws_ec2_asset_exposure.json). This tutorial covers only the EC2 instance part of that job, but after reading this you should be able to understand the other steps in that file. + +### Our goal +After ingesting all our AWS data, we want to explicitly mark EC2 instances that are accessible to the public internet - a useful thing to know for anyone running an internet service. If any internet-open nodes are found, the job will add an attribute `exposed_internet = True` to the node. This way we can easily query to find the assets later on and take remediation action if needed. + +But how do we make this determination, and how should we structure the job? + +### The logic in plain English +We can use the following facts to tell if an EC2 instance is open to the internet: + +1. The EC2 instance is a member of a Security Group that has an IP Rule applied to it that allows inbound traffic from the 0.0.0.0/0 subnet. +2. The EC2 instance has a network interface that is connected to a Security Group that has an IP Rule applied to it that allows inbound traffic from the 0.0.0.0/0 subnet. + +The graph created by Cartography's sync process already has this information for us; we just need to run a few queries to properly to mark it with `exposed_internet = True`. This example is complex but we hope that this exposes enough Neo4j concepts to help you write your own queries. + +### Translating the plain-English logic into Neo4j's Cypher syntax +We can take the ideas above and use Cypher's declarative syntax to "sketch" out this graph path. + +1. _The EC2 instance is a member of a Security Group that has an IP Rule applied to it that allows inbound traffic from the 0.0.0.0/0 subnet._ + + In Cypher, this is + + ``` + MATCH + (:IpRange{id: '0.0.0.0/0'})-[:MEMBER_OF_IP_RULE]->(:IpPermissionInbound) + -[:MEMBER_OF_EC2_SECURITY_GROUP]->(group:EC2SecurityGroup) + <-[:MEMBER_OF_EC2_SECURITY_GROUP]-(instance:EC2Instance) + + SET instance.exposed_internet = true, + instance.exposed_internet_type = coalesce(instance.exposed_internet_type , []) + 'direct'; + ``` + + In the `SET` clause we add `exposed_internet = True` to the instance. We also add a field for `exposed_internet_type` to denote what type of internet exposure has occurred here. You can read the [documentation for `coalesce`](https://neo4j.com/docs/cypher-manual/current/functions/scalar/#functions-coalesce), but in English this last part says "add `direct` to the list of ways this instance is exposed to the internet". + +2. _The EC2 instance has a network interface that is connected to a Security Group that has an IP Rule applied to it that allows inbound traffic from the 0.0.0.0/0 subnet._ + + This is the same as the previous query except for the final line: + + ``` + MATCH + (:IpRange{id: '0.0.0.0/0'})-[:MEMBER_OF_IP_RULE]->(:IpPermissionInbound) + -[:MEMBER_OF_EC2_SECURITY_GROUP]->(group:EC2SecurityGroup) + <-[:NETWORK_INTERFACE*..2]-(instance:EC2Instance) + + SET instance.exposed_internet = true, + instance.exposed_internet_type = coalesce(instance.exposed_internet_type , []) + 'direct'; + ``` + + The `*..2` operator means "within 2 hops". We use this here as a shortcut because there are a few more relationships between NetworkInterfaces and EC2SecurityGroups that we can skip over. + +Finally, notice that (1) and (2) are similar enough that we can actually merge them like this: + +``` +MATCH +(:IpRange{id: '0.0.0.0/0'})-[:MEMBER_OF_IP_RULE]->(:IpPermissionInbound) +-[:MEMBER_OF_EC2_SECURITY_GROUP]->(group:EC2SecurityGroup) +<-[:MEMBER_OF_EC2_SECURITY_GROUP|NETWORK_INTERFACE*..2]-(instance:EC2Instance) + +SET instance.exposed_internet = true, + instance.exposed_internet_type = coalesce(instance.exposed_internet_type , []) + 'direct'; +``` + +Kinda neat, right? + +### The skeleton of an Analysis Job +Now that we know what we want to do on a sync, how should we structure the Analysis Job? Here is the basic skeleton that we recommend. + +#### Clean up first, then update +In general, the first statement(s) should be a "clean-up phase" that removes custom attributes or relationships that you may have added in a previous run. This ensures that whatever labels you add on this current run will be up to date and not stale. Next, the statements after the clean-up phase will perform the matching and attribute updates as described in the previous section. + +**Here's our final result:** + +``` +{ + "name": "AWS asset internet exposure", + "statements": [ + { + "__comment": "This is a clean-up statement to remove custom attributes", + "query": "MATCH (n) + WHERE n.exposed_internet IS NOT NULL + AND labels(n) IN ['AutoScalingGroup', 'EC2Instance', 'LoadBalancer'] + WITH n LIMIT $LIMIT_SIZE + REMOVE n.exposed_internet, n.exposed_internet_type + RETURN COUNT(*) as TotalCompleted", + "iterative": true, + "iterationsize": 1000 + }, + { + "__comment__": "This is our analysis logic as described in the section above", + "query": MATCH (:IpRange{id: '0.0.0.0/0'})-[:MEMBER_OF_IP_RULE]->(:IpPermissionInbound) + -[:MEMBER_OF_EC2_SECURITY_GROUP]->(group:EC2SecurityGroup) + <-[:MEMBER_OF_EC2_SECURITY_GROUP|NETWORK_INTERFACE*..2]-(instance:EC2Instance) + + SET instance.exposed_internet = true, + instance.exposed_internet_type = coalesce(instance.exposed_internet_type , []) + 'direct';, + "iterative": true, + "iterationsize": 100 + } + ] +} +``` + +Setting a statement as `iterative: true` means that we will run this query on `#{iterationsize}` entries at a time. This can be helpful for queries that return large numbers of records so that Neo4j doesn't get too angry. + +Now we can enjoy the fruits of our labor and query for internet exposure: + +![internet-exposure-query](../images/exposed-internet.png) + +## Recap +As shown, you create an Analysis Job by putting together a bunch of `statements` together (which are essentially Neo4j queries). In general, each job should first clean up the custom attributes added by a previous run, and then it can perform the match and update steps to add the custom attributes back again. This ensures that your data is up to date. diff --git a/_sources/dev/writing-intel-modules.md.txt b/_sources/dev/writing-intel-modules.md.txt new file mode 100644 index 0000000000..a588a08cbb --- /dev/null +++ b/_sources/dev/writing-intel-modules.md.txt @@ -0,0 +1,342 @@ +# How to write a new intel module + +If you want to add a new data type to Cartography, this is the guide for you. We look forward to receiving your PR! + +## Before getting started... + +Read through and follow the setup steps in [the Cartography developer guide](developer-guide.html). Learn the basics of +running, testing, and linting your code there. + +## The fast way + +To get started coding without reading this doc, just copy the structure of our [AWS EMR module](https://github.com/lyft/cartography/blob/master/cartography/intel/aws/emr.py) and use it as an example. For a longer written explanation of the "how" and "why", read on. + +## Configuration and credential management + +### Supplying credentials and arguments to your module + +If you need to supply an API key or other credential to your Cartography module, we recommend adding a CLI argument. An example of this can be seen [in our Okta module](https://github.com/lyft/cartography/blob/811990606c22a42791d213c7ca845b15f87e47f1/cartography/cli.py#L136) where we require the user to specify the name of an environment variable containing their Okta API key. This credential will then be bound to Cartography's [Config object](https://github.com/lyft/cartography/blob/811990606c22a42791d213c7ca845b15f87e47f1/cartography/config.py#L3) which is present in all modules. You can specify different arguments from the commandline for your module via the Config object. + +### An important note on validating your commandline args + +Note that it is your module's responsibility to validate arguments that you introduce. For example with the Okta module, we [validate](https://github.com/lyft/cartography/blob/811990606c22a42791d213c7ca845b15f87e47f1/cartography/intel/okta/__init__.py#L37) that `config.okta_api_key` has been defined before attempting to continue. + +## Sync = Get, Transform, Load, Cleanup + +A cartography intel module consists of one `sync` function. `sync` should call `get`, then `load`, and finally `cleanup`. + +### Get + +The `get` function [returns data as a list of dicts](https://github.com/lyft/cartography/blob/8d60311a10156cd8aa16de7e1fe3e109cc3eca0f/cartography/intel/gcp/compute.py#L98) +from a resource provider API, which is GCP in this particular example. + +`get` should be "dumb" in the sense that it should not handle retry logic or data +manipulation. It should also raise an exception if it's not able to complete successfully. + +### Transform + +The `transform` function [manipulates the list of dicts](https://github.com/lyft/cartography/blob/8d60311a10156cd8aa16de7e1fe3e109cc3eca0f/cartography/intel/gcp/compute.py#L193) +to make it easier to ingest to the graph. `transform` functions are sometimes omitted when a module author decides that the output from the `get` is already in the shape that they need. + +We have some best practices on handling transforms: + +#### Handling required versus optional fields + +We should directly access dicts in cases where not having the data should cause a sync to fail. +For example, if we are transforming AWS data, we definitely need an AWS object's ARN field because it uniquely +identifies the object. Therefore, we should access an object's ARN using `data['arn']` as opposed to +using `data.get('arn')` (the former will raise a `KeyError` if `arn` does not exist and the latter will just return +`None` without an exception). + +We _want_ the sync to fail if an important field is not present in our data. The idea here is that +it is better to fail a sync than to add malformed data. + +On the other hand, we should use `data.get('SomeField')` if `SomeField` is something optional that can afford to be +`None`. + +For the sake of consistency, if a field does not exist, set it to `None` and not `""`. + +### Load + +[As seen in our AWS EMR example](https://github.com/lyft/cartography/blob/e6ada9a1a741b83a34c1c3207515a1863debeeb9/cartography/intel/aws/emr.py#L113-L132), the `load` function ingests a list of dicts to Neo4j by calling [cartography.client.core.tx.load()](https://github.com/lyft/cartography/blob/e6ada9a1a741b83a34c1c3207515a1863debeeb9/cartography/client/core/tx.py#L191-L212): +```python +def load_emr_clusters( + neo4j_session: neo4j.Session, + cluster_data: List[Dict[str, Any]], + region: str, + current_aws_account_id: str, + aws_update_tag: int, +) -> None: + logger.info(f"Loading EMR {len(cluster_data)} clusters for region '{region}' into graph.") + load( + neo4j_session, + EMRClusterSchema(), + cluster_data, + lastupdated=aws_update_tag, + Region=region, + AWS_ID=current_aws_account_id, + ) + +``` + + +#### Defining a node + +As an example of a `CartographyNodeSchema`, you can view our [EMRClusterSchema code](https://github.com/lyft/cartography/blob/e6ada9a1a741b83a34c1c3207515a1863debeeb9/cartography/intel/aws/emr.py#L106-L110): + +```python +@dataclass(frozen=True) +class EMRClusterSchema(CartographyNodeSchema): + label: str = 'EMRCluster' # The label of the node + properties: EMRClusterNodeProperties = EMRClusterNodeProperties() # An object representing all properties on the EMR Cluster node + sub_resource_relationship: EMRClusterToAWSAccount = EMRClusterToAWSAccount() +``` + +An `EMRClusterSchema` object inherits from the `CartographyNodeSchema` class and contains a node label, properties, and connection to its [sub-resource](https://github.com/lyft/cartography/blob/e6ada9a1a741b83a34c1c3207515a1863debeeb9/cartography/graph/model.py#L216-L228): an `AWSAccount`. + +Note that the typehints are necessary for Python dataclasses to work properly. + + +#### Defining node properties + +Here's our [EMRClusterNodeProperties code](https://github.com/lyft/cartography/blob/e6ada9a1a741b83a34c1c3207515a1863debeeb9/cartography/intel/aws/emr.py#L106-L110): + +```python +@dataclass(frozen=True) +class EMRClusterNodeProperties(CartographyNodeProperties): + arn: PropertyRef = PropertyRef('ClusterArn', extra_index=True) + firstseen: PropertyRef = PropertyRef('firstseen') + id: PropertyRef = PropertyRef('Id') + # ... + lastupdated: PropertyRef = PropertyRef('lastupdated', set_in_kwargs=True) + region: PropertyRef = PropertyRef('Region', set_in_kwargs=True) + security_configuration: PropertyRef = PropertyRef('SecurityConfiguration') +``` + +A `CartographyNodeProperties` object consists of [`PropertyRef`](https://github.com/lyft/cartography/blob/e6ada9a1a741b83a34c1c3207515a1863debeeb9/cartography/graph/model.py#L37) objects. `PropertyRefs` tell `querybuilder.build_ingestion_query()` where to find appropriate values for each field from the list of dicts. + +For example, `id: PropertyRef = PropertyRef('Id')` above tells the querybuilder to set a field called `id` on the `EMRCluster` node using the value located at key `'id'` on each dict in the list. + +As another example, `region: PropertyRef = PropertyRef('Region', set_in_kwargs=True)` tells the querybuilder to set a field called `region` on the `EMRCluster` node using a keyword argument called `Region` supplied to `cartography.client.core.tx.load()`. `set_in_kwargs=True` is useful in cases where we want every object loaded by a single call to `load()` to have the same value for a given attribute. + +##### Node property indexes +Cartography uses its data model to automatically create indexes for +- node properties that uniquely identify the node (e.g. `id`) +- node properties are used to connect a node to other nodes (i.e. they are used as part of a `TargetNodeMatcher` on a `CartographyRelSchema`.) +- a node's `lastupdated` field -- this is used to enable faster cleanup jobs + +As seen in the above definition for `EMRClusterNodeProperties.arn`, you can also explicitly specify additional indexes for fields that you expect to be queried on by providing `extra_index=True` to the `PropertyRef` constructor: + +```python +class EMRClusterNodeProperties(CartographyNodeProperties): + # ... + arn: PropertyRef = PropertyRef('ClusterArn', extra_index=True) +``` + +Index creation is idempotent (we only create them if they don't exist). + +See [below](#indexescypher) for more information on indexes. + + +#### Defining relationships + +Relationships can be defined on `CartographyNodeSchema` on either their [`sub_resource_relationship`](https://github.com/lyft/cartography/blob/e6ada9a1a741b83a34c1c3207515a1863debeeb9/cartography/graph/model.py#L216-L228) field or their [`other_relationships`](https://github.com/lyft/cartography/blob/e6ada9a1a741b83a34c1c3207515a1863debeeb9/cartography/graph/model.py#L230-L237) field (you can find an example of `other_relationships` [here in our test data](https://github.com/lyft/cartography/blob/4bfafe0e0c205909d119cc7f0bae84b9f6944bdd/tests/data/graph/querybuilder/sample_models/interesting_asset.py#L89-L94)). + +As seen above, an `EMRClusterSchema` only has a single relationship defined: an [`EMRClusterToAWSAccount`](https://github.com/lyft/cartography/blob/e6ada9a1a741b83a34c1c3207515a1863debeeb9/cartography/intel/aws/emr.py#L94-L103): + +```python +@dataclass(frozen=True) +# (:EMRCluster)<-[:RESOURCE]-(:AWSAccount) +class EMRClusterToAWSAccount(CartographyRelSchema): + target_node_label: str = 'AWSAccount' # (1) + target_node_matcher: TargetNodeMatcher = make_target_node_matcher( # (2) + {'id': PropertyRef('AccountId', set_in_kwargs=True)}, + ) + direction: LinkDirection = LinkDirection.INWARD # (3) + rel_label: str = "RESOURCE" # (4) + properties: EMRClusterToAwsAccountRelProperties = EMRClusterToAwsAccountRelProperties() # (5) +``` + +This class is best described by explaining how it is processed: `build_ingestion_query()` will traverse the `EMRClusterSchema` to its `sub_resource_relationship` field and find the above `EMRClusterToAWSAccount` object. With this information, we know to +- draw a relationship to an `AWSAccount` node (1) using the label "`RESOURCE`" (4) +- by matching on the AWSAccount's "`id`" field" (2) +- where the relationship [directionality](https://github.com/lyft/cartography/blob/e6ada9a1a741b83a34c1c3207515a1863debeeb9/cartography/graph/model.py#L12-L34) is pointed _inward_ toward the EMRCluster (3) +- making sure to define a set of properties for the relationship (5). The [full example RelProperties](https://github.com/lyft/cartography/blob/e6ada9a1a741b83a34c1c3207515a1863debeeb9/cartography/intel/aws/emr.py#L89-L91) is very short: + +```python +@dataclass(frozen=True) +class EMRClusterToAwsAccountRelProperties(CartographyRelProperties): + lastupdated: PropertyRef = PropertyRef('lastupdated', set_in_kwargs=True) +``` + +#### The result + +And those are all the objects necessary for this example! The resulting query will look something like this: + +```cypher +UNWIND $DictList AS item + MERGE (i:EMRCluster{id: item.Id}) + ON CREATE SET i.firstseen = timestamp() + SET + i.lastupdated = $lastupdated, + i.arn = item.ClusterArn + // ... + + WITH i, item + CALL { + WITH i, item + + OPTIONAL MATCH (j:AWSAccount{id: $AccountId}) + WITH i, item, j WHERE j IS NOT NULL + MERGE (i)<-[r:RESOURCE]-(j) + ON CREATE SET r.firstseen = timestamp() + SET + r.lastupdated = $lastupdated + } +``` + +And that's basically all you need to know to understand how to define your own nodes and relationships using cartography's data objects. For more information, you can view the [object model API documentation](https://github.com/lyft/cartography/blob/master/cartography/graph/model.py) as a reference. + +### Additional concepts + +This section explains cartography general patterns, conventions, and design decisions. + +#### cartography's `update_tag`: + +`cartography`'s global [config object carries around an `update_tag` property](https://github.com/lyft/cartography/blob/8d60311a10156cd8aa16de7e1fe3e109cc3eca0f/cartography/cli.py#L91-L98) +which is a tag/label associated with the current sync. +Cartography's CLI code [sets this to a Unix timestamp of when the CLI was run](https://github.com/lyft/cartography/blob/8d60311a10156cd8aa16de7e1fe3e109cc3eca0f/cartography/sync.py#L131-L134). + +All `cartography` intel modules set the `lastupdated` property on all nodes and all relationships to this `update_tag`. + + +#### All nodes need these fields + +- `id` - an ID should be a string that uniquely identifies the node. In AWS, this is usually an + ARN. In GCP, this is usually a partial URI. + + If possible, we should use API-provided fields for IDs and not create our own. + In some cases though this is unavoidable - + see [GCPNetworkTag](https://github.com/lyft/cartography/blob/8d60311a10156cd8aa16de7e1fe3e109cc3eca0f/docs/schema/gcp.md#gcpnetworktag). + + When setting an `id`, ensure that you also include the field name that it came from. For example, since we've + decided to use `partial_uri`s as an id for a GCPVpc, we should include both `partial_uri` _and_ `id` on the node. + This way, a user can tell what fields were used to derive the `id`. This is accomplished [here](https://github.com/lyft/cartography/blob/8d60311a10156cd8aa16de7e1fe3e109cc3eca0f/cartography/intel/gcp/compute.py#L455-L457) + +- `lastupdated` - See [below](#lastupdated-and-firstseen) on how this gets set automatically. +- `firstseen` - See [below](#lastupdated-and-firstseen) on how this gets set automatically. + +#### All relationships need these fields + +Cartography currently does not create indexes on relationships, so in most cases we should keep relationships lightweight with only these two fields: + +- `lastupdated` - See [below](#lastupdated-and-firstseen) on how this gets set automatically. +- `firstseen` - See [below](#lastupdated-and-firstseen) on how this gets set automatically. + +#### Run queries only on indexed fields for best performance + +In this older example of ingesting GCP VPCs, we connect VPCs with GCPProjects +[based on GCPProject `id`s and GCPVpc `id`s](https://github.com/lyft/cartography/blob/8d60311a10156cd8aa16de7e1fe3e109cc3eca0f/cartography/intel/gcp/compute.py#L451). +`id`s are indexed, as seen [here](https://github.com/lyft/cartography/blob/8d60311a10156cd8aa16de7e1fe3e109cc3eca0f/cartography/data/indexes.cypher#L45) +and [here](https://github.com/lyft/cartography/blob/8d60311a10156cd8aa16de7e1fe3e109cc3eca0f/cartography/data/indexes.cypher#L42). +All of these queries use indexes for faster lookup. + +#### indexes.cypher + +Older intel modules define indexes in [indexes.cypher](https://github.com/lyft/cartography/blob/8d60311a10156cd8aa16de7e1fe3e109cc3eca0f/cartography/data/indexes.cypher). +By using CartographyNodeSchema and CartographyRelSchema objects, indexes are automatically created so you don't need to update this file! + + +#### lastupdated and firstseen + +On every cartography node and relationship, we set the `lastupdated` field to the `UPDATE_TAG` and `firstseen` field to `timestamp()` (a built-in Neo4j function equivalent to epoch time in milliseconds). This is automatically handled by the cartography object model. + +### Cleanup + +We have just added new nodes and relationships to the graph, and we have also updated previously-added ones +by using `MERGE`. We now need to delete nodes and relationships that no longer exist, and we do this by removing +all nodes and relationships that have `lastupdated` NOT set to the `update_tag` of this current run. + +By using Cartography schema objects, a cleanup function is [trivial to write](https://github.com/lyft/cartography/blob/82e1dd0e851475381ac8f2a9a08027d67ec1d772/cartography/intel/aws/emr.py#L77-L80): + +```python +def cleanup(neo4j_session: neo4j.Session, common_job_parameters: Dict) -> None: + logger.debug("Running EMR cleanup job.") + cleanup_job = GraphJob.from_node_schema(EMRClusterSchema(), common_job_parameters) + cleanup_job.run(neo4j_session) +``` + +Older intel modules still do this process with hand-written cleanup jobs that work like this: + +- Delete all old nodes + + You can see this in our [GCP VPCs example](https://github.com/lyft/cartography/blob/8d60311a10156cd8aa16de7e1fe3e109cc3eca0f/cartography/data/jobs/cleanup/gcp_compute_vpc_cleanup.json#L4). + We run `DETACH DELETE` to delete an old node and disconnect it from all other nodes. + + - Delete all old relationships + + You can see this in the GCP VPC example [here](https://github.com/lyft/cartography/blob/8d60311a10156cd8aa16de7e1fe3e109cc3eca0f/cartography/data/jobs/cleanup/gcp_compute_vpc_cleanup.json#L10) + and [here](https://github.com/lyft/cartography/blob/8d60311a10156cd8aa16de7e1fe3e109cc3eca0f/cartography/data/jobs/cleanup/gcp_compute_vpc_cleanup.json#L16). + + - Q: We just `DETACH DELETE`'d the node. Why do we need to delete the relationships too? + + - A: There are cases where the node may continue to exist but the relationships between it and other nodes have changed. + Explicitly deleting stale relationships accounts for this case. + See this [short discussion](https://github.com/lyft/cartography/pull/124/files#r312277725). + +## Error handling principles + +- Don't catch the base Exception class when error handling because it makes problems difficult to trace. + +- Do catch the narrowest possible class of exception. + +- Only catch exceptions when your code can resolve the issue. Otherwise, allow exceptions to bubble up. + +## Schema + +- Update the [schema](https://github.com/lyft/cartography/tree/8d60311a10156cd8aa16de7e1fe3e109cc3eca0f/docs/schema) +with every change! + +## Making tests + +- Before making tests, read through and follow the setup steps in [the Cartography developer guide](developer-guide.html). + +- Add fake data for testing at `tests/data`. We can see +the GCP VPC example here: https://github.com/lyft/cartography/blob/0652c2b6dede589e805156925353bffc72da6c2b/tests/data/gcp/compute.py#L2. + +- Add unit tests to `tests/unit/cartography/intel`. See this [example](https://github.com/lyft/cartography/blob/828ed600f2b14adae9d0b78ef82de0acaf24b86a/tests/unit/cartography/intel/gcp/test_compute.py). + These tests ensure that `transform*` manipulates the data in expected ways. + +- Add integration tests to `tests/integration/cartography/intel`. See this [example](https://github.com/lyft/cartography/blob/828ed600f2b14adae9d0b78ef82de0acaf24b86a/tests/integration/cartography/intel/gcp/test_compute.py). + These tests assume that you have neo4j running at localhost:7687 with no password, and ensure that nodes loaded to the + graph match your mock data. + +## Other + +- We prefer and will accept PRs which incrementally add information from a particular data source. Incomplete +representations are OK provided they are consistent over time. For example, we don't sync 100% of AWS resources but the +resources that exist in the graph don't change across syncs. + +- Each intel module offers its own view of the graph + + ℹ️ This best practice is a little more less precise, so if you've gotten to this point and you need clarification, just + submit your PR and ask us. + + As much as possible, each intel module should ingest data without assuming that a different module will ingest the + same data. Explained another way, each module should "offer its own perspective" on the data. We believe doing this + gives us a more complete graph. Below are some key guidelines clarifying and justifying this design choice. + + - Use `MERGE` when connecting one node type to another node type. + + - It is possible (and encouraged) for more than one intel module to modify the same node type. + + For example, when we [connect RDS instances to their associated EC2 security + groups](https://github.com/lyft/cartography/blob/6e060389fbeb14f4ccc3e58005230129f1c6962f/cartography/intel/aws/rds.py#L188) + there are actually two different intel modules that retrieve EC2 security group data: the [RDS module](https://github.com/lyft/cartography/blob/6e060389fbeb14f4ccc3e58005230129f1c6962f/cartography/intel/aws/rds.py#L13) + returns [partial group data](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DBSecurityGroupMembership.html), + and the EC2 module returns more complete data as it calls APIs specific for [retrieving and loading security groups](https://github.com/lyft/cartography/blob/6e060389fbeb14f4ccc3e58005230129f1c6962f/cartography/intel/aws/ec2.py#L166). + Because both the RDS and EC2 modules `MERGE` on a unique ID, we don't need to worry about + creating duplicate nodes in the graph. + + Another less obvious benefit of using `MERGE` across more than one intel module to connect nodes in this way is that + in many cases, we've seen an intel module discover nodes that another module was not aware of! diff --git a/_sources/index.rst.txt b/_sources/index.rst.txt new file mode 100644 index 0000000000..7035275281 --- /dev/null +++ b/_sources/index.rst.txt @@ -0,0 +1,32 @@ +.. mdinclude:: info.md + +.. toctree:: + :hidden: + + info + +.. toctree:: + :caption: Basic Use + :hidden: + + install + usage/index + ops + +.. toctree:: + :caption: Intel Modules + :hidden: + + modules/index + +.. toctree:: + :caption: Development Docs + :hidden: + + dev/index + +.. toctree:: + :caption: Get In Touch + :hidden: + + contact diff --git a/_sources/info.md.txt b/_sources/info.md.txt new file mode 100644 index 0000000000..0b8b625728 --- /dev/null +++ b/_sources/info.md.txt @@ -0,0 +1,17 @@ +![logo](images/logo-horizontal.png) + +# What is Cartography? + +Cartography is a Python tool that consolidates infrastructure assets and the relationships between them in an intuitive graph view powered by a [Neo4j](https://www.neo4j.com) database. + +![example](images/accountsandrds.png) + +# Why Cartography? + +Cartography aims to enable a broad set of exploration and automation scenarios. It is particularly good at exposing otherwise hidden dependency relationships between your service's assets so that you may validate assumptions about security risks. + +Service owners can generate asset reports, Red Teamers can discover attack paths, and Blue Teamers can identify areas for security improvement. All can benefit from using the graph for manual exploration through a web frontend interface, or in an automated fashion by calling the APIs. + +Cartography is not the only [security](https://github.com/dowjones/hammer) [graph](https://github.com/BloodHoundAD/BloodHound) [tool](https://github.com/Netflix/security_monkey) [out](https://github.com/vysecurity/ANGRYPUPPY) [there](https://github.com/duo-labs/cloudmapper), but it differentiates itself by being fully-featured yet generic and [extensible](dev/writing-analysis-jobs.html) enough to help make anyone better understand their risk exposure, regardless of what platforms they use. Rather than being focused on one core scenario or attack vector like the other linked tools, Cartography focuses on flexibility and exploration. + +You can learn more about the story behind Cartography in our [presentation at BSidesSF 2019](https://www.youtube.com/watch?v=ZukUmZSKSek). diff --git a/_sources/install.md.txt b/_sources/install.md.txt new file mode 100644 index 0000000000..0e3d8ffd69 --- /dev/null +++ b/_sources/install.md.txt @@ -0,0 +1,59 @@ +# Cartography Installation + +.. _cartography-installation: + +Time to set up the server that will run Cartography. Cartography _should_ work on both Linux and Windows servers, but bear in mind we've only tested it in Linux so far. Cartography supports Python 3.8. Older versions of Python may work but are not explicitly supported. + +1. **Run the Neo4j graph database version 4.x** on your server. + + ⚠️ Neo4j 5.x will probably work but Cartography does not explicitly support it yet. + + 1. If you prefer **Docker**, follow the Neo4j Docker [official docs](https://github.com/neo4j/docker-neo4j) to run a version 4.x container. + + - If you are using an ARM-based machine like an M1 Mac, you should use an ARM image otherwise performance will be very slow - Neo4j keeps ARM builds [here](https://hub.docker.com/r/arm64v8/neo4j/). + + - If you're just playing around, you can specify the `--env=NEO4J_AUTH=none` argument to your `docker` command to run a Neo4j container without authentication. + + 1. Else if you prefer a **manual install**, + + 1. Neo4j requires a JVM (JDK/JRE 11 or higher) to be installed. One option is to install [Amazon Coretto 11](https://docs.aws.amazon.com/corretto/latest/corretto-11-ug/what-is-corretto-11.html). + + ⚠️ Make sure you have `JAVA_HOME` environment variable set. The following works for Mac OS: `export JAVA_HOME=$(/usr/libexec/java_home)` + + 1. Go to the [Neo4j download page](https://neo4j.com/download-center/#community), and download Neo4j Community Edition 4.4.\*. If you prefer Docker, you can view Neo4j's instructions [here]. + + 1. [Install](https://neo4j.com/docs/operations-manual/current/installation/) Neo4j on the server you will run Cartography on. + + ⚠️ For local testing, you might want to turn off authentication via property `dbms.security.auth_enabled` in file /NEO4J_PATH/conf/neo4j.conf + +4. Configure your data sources. See the configuration section of each relevant intel module for more details. + +5. **Get and run Cartography** + + 1. Run `pip install cartography` to install our code. + + 1. Finally, to sync your data: + + - For one account using the `default` profile defined in your AWS config file, run + + ``` + cartography --neo4j-uri + ``` + + - Or for a specific account defined as a separate profile in your AWS config file, set the `AWS_PROFILE` environment variable, for example + + ``` + AWS_PROFILE=other-profile cartography --neo4j-uri + ``` + + - For more than one AWS account, run + + ``` + AWS_CONFIG_FILE=/path/to/your/aws/config cartography --neo4j-uri --aws-sync-all-profiles + ``` + + You can view a full list of Cartography's CLI arguments by running `cartography --help` + + The sync will pull data from your configured accounts and ingest data to Neo4j! This process might take a long time if your account has a lot of assets. + + 1. See our [Operations Guide](ops.html) for tips on running Cartography in production. diff --git a/_sources/modules/_cartography-metadata/schema.md.txt b/_sources/modules/_cartography-metadata/schema.md.txt new file mode 100644 index 0000000000..878d8268df --- /dev/null +++ b/_sources/modules/_cartography-metadata/schema.md.txt @@ -0,0 +1,18 @@ +## Cartography metadata schema + +.. _metadata_schema: + +Some Cartography sync jobs write nodes to convey information about the job itself. See https://github.com/lyft/cartography/issues/758 for more background on this. + +### SyncMetadata:ModuleSyncMetadata + +This is a node to represent metadata about the sync job of a particular module. Its existence indicates that a particular sync job did happen. +The 'types' used here should be actual node labels. For example, if we did sync a particular AWSAccount's S3Buckets, +the `grouptype` is 'AWSAccount', the `groupid` is the particular account's `id`, and the `syncedtype` is 'S3Bucket'. + +| Field | Description | Source| +|-------|-------------|------| +|**id**|`{group_type}_{group_id}_{synced_type}`|util.py| +|grouptype| The parent module's type |util.py| +|groupid|The parent module's id|util.py| +|syncedtype|The sub-module's type|util.py| diff --git a/_sources/modules/aws/config.md.txt b/_sources/modules/aws/config.md.txt new file mode 100644 index 0000000000..7a02c5e59b --- /dev/null +++ b/_sources/modules/aws/config.md.txt @@ -0,0 +1,92 @@ +## AWS Configuration + +.. _aws_config: + +Follow these steps to analyze AWS assets with Cartography. + +### Single AWS Account Setup + +1. Set up an AWS identity (user, group, or role) for Cartography to use. Ensure that this identity has the built-in AWS [SecurityAudit policy](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html#jf_security-auditor) (arn:aws:iam::aws:policy/SecurityAudit) attached. This policy grants access to read security config metadata. The SecurityAudit policy does not yet containe permissions for `inspector2`, so you will also need the [AmazonInspector2ReadOnlyAccess policy](https://docs.aws.amazon.com/inspector/latest/user/security-iam-awsmanpol.html#security-iam-awsmanpol-AmazonInspector2ReadOnlyAccess). +1. Set up AWS credentials to this identity on your server, using a `config` and `credential` file. For details, see AWS' [official guide](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html). +1. [Optional] Configure AWS Retry settings using `AWS_MAX_ATTEMPTS` and `AWS_RETRY_MODE` environment variables. This helps in API Rate Limit throttling and TooManyRequestException related errors. For details, see AWS' [official guide](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/configuration.html#using-environment-variables). + + +### Multiple AWS Account Setup + +There are many ways to allow Cartography to pull from more than one AWS account. We can't cover all of them, but we _can_ show you the way we have things set up at Lyft. In this scenario we will assume that you are going to run Cartography on an EC2 instance. + +1. Pick one of your AWS accounts to be the "**Hub**" account. This Hub account will pull data from all of your other accounts - we'll call those "**Spoke**" accounts. + +2. **Set up the IAM roles**: Create an IAM role named `cartography-read-only` on _all_ of your accounts. Configure the role on all accounts as follows: + 1. Attach the built-in AWS [SecurityAudit IAM policy](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html#jf_security-auditor) (arn:aws:iam::aws:policy/SecurityAudit) to the role. This grants access to read security config metadata. + 2. Set up a trust relationship so that the Spoke accounts will allow the Hub account to assume the `cartography-read-only` role. The resulting trust relationship should look something like this: + + ``` + { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Principal": { + "AWS": "arn:aws:iam:::root" + }, + "Action": "sts:AssumeRole" + } + ] + } + ``` + 3. Allow a role in the Hub account to **assume the `cartography-read-only` role** on your Spoke account(s). + + - On the Hub account, create a role called `cartography-service`. + - On this new `cartography-service` role, add an inline policy with the following JSON: + + ``` + { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Resource": "arn:aws:iam::*:role/cartography-read-only", + "Action": "sts:AssumeRole" + }, + { + "Effect": "Allow", + "Action": "ec2:DescribeRegions", + "Resource": "*" + } + ] + } + ``` + + This allows the Hub role to assume the `cartography-read-only` role on your Spoke accounts and to fetch all the different regions used by the Spoke accounts. + + - When prompted to name the policy, you can name it anything you want - perhaps `CartographyAssumeRolePolicy`. + +3. **Set up your EC2 instance to correctly access these AWS identities** + + 1. Attach the `cartography-service` role to the EC2 instance that you will run Cartography on. You can do this by following [these official AWS steps](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html#attach-iam-role). + + 2. Ensure that the `[default]` profile in your `AWS_CONFIG_FILE` file (default `~/.aws/config` in Linux, and `%UserProfile%\.aws\config` in Windows) looks like this: + + [default] + region= + output=json + + 3. Add a profile for each AWS account you want Cartography to sync with to your `AWS_CONFIG_FILE`. It will look something like this: + + ``` + [profile accountname1] + role_arn = arn:aws:iam:::role/cartography-read-only + region=us-east-1 + output=json + credential_source = Ec2InstanceMetadata + + [profile accountname2] + role_arn = arn:aws:iam:::role/cartography-read-only + region=us-west-1 + output=json + credential_source = Ec2InstanceMetadata + + ... etc ... + ``` +1. [Optional] Configure AWS Retry settings using `AWS_MAX_ATTEMPTS` and `AWS_RETRY_MODE` environment variables. This helps in API Rate Limit throttling and TooManyRequestException related errors. For details, see AWS' [official guide](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/configuration.html#using-environment-variables). diff --git a/_sources/modules/aws/index.rst.txt b/_sources/modules/aws/index.rst.txt new file mode 100644 index 0000000000..e88e6e24bb --- /dev/null +++ b/_sources/modules/aws/index.rst.txt @@ -0,0 +1,29 @@ +Amazon Web Services (AWS) +========================= + +The AWS module has the following coverage: + +* API Gateway - Rest APIs, Stages, Certificates, Resources +* Config - Configuration Recorders, Delivery Channels, Config Rules +* EC2 - Autoscaling groups, Elastic IPs, AMIs, Instances, Internet Gateways, SSH Key Pairs, Launch Templates, Launch Config, Load Balancers (V1 and V2), Network Interfaces, Reserved Instances, Security Groups, EBS Volumes, EBS Snapshots, Subnets, Trusted Gateway, VPC, VPC Peerings +* Elasticsearch - Domains +* Elastic Kubernetes Service - Clusters +* DynamoDB - Tables, Global Secondary Indexes +* IAM - Users, User Access Keys, Roles, Groups, Group Membership, Principals, Policies (managed and inline), Assume Role Relationships +* KMS - Keys, Key Policy, Grants, Aliases +* Lambda - Functions, Aliases, Source Mappings, Layers +* RDS - Clusters, Instances, Subnet Groups, Security Groups, Read Replicas +* Redshift - Clusters +* Route53 - Records, Zones +* S3 - Buckets, Bucket Policy, ACLs +* Secrets Manager - Secrets +* Security Hub - Basic Hub Details +* SQS - Queues, Dead Letter Queues +* STS +* Tags - Tag support for the supported resources, if supported by the resource groups tagging API + +.. toctree:: + :hidden: + :glob: + + * diff --git a/_sources/modules/aws/permissions-mapping.md.txt b/_sources/modules/aws/permissions-mapping.md.txt new file mode 100644 index 0000000000..c439c1cde8 --- /dev/null +++ b/_sources/modules/aws/permissions-mapping.md.txt @@ -0,0 +1,33 @@ +## Permissions Mapping + +### How to use Permissions Mapping +An AWSPrincipal contains AWSPolicies which contain AWSPolicyStatements which grant permission to resources. Cartography can map in permission relationships between IAM Pricipals (AWSPrincipal nodes) and the resources they have permission to. + +As mapping all permissions is infeasible both to calculate and store Cartography will only map in the relationships defined in the [permission relationship file](https://github.com/lyft/cartography/blob/master/cartography/data/permission_relationships.yaml) which includes some default permission mappings including s3 read access. + +You can specify your own permission mapping file using the `--permission-relationships-file` command line parameter + +#### Permission Mapping File +The [permission relationship file](https://github.com/lyft/cartography/blob/master/cartography/data/permission_relationships.yaml) is a yaml file that specifies what permission relationships should be created in the graph. It consists of RPR (Resource Permission Relationship) sections that are going to map specific permissions between AWSPrincipals and resources +```yaml +- target_label: S3Bucket + permissions: + - S3:GetObject + relationship_name: CAN_READ +``` +Each RPR consists of +- ResourceType (string) - The node Label that permissions will be built for +- Permissions (list(string)) - The list of permissions to map. If any of these permissions are present between a resource and a permission then the relationship is created. +- RelationshipName - (string) - The name of the relationship cartography will create + +It can also be used to absract many different permissions into one. This example combines all of the permissions that would allow a dynamodb table to be queried. +```yaml +- target_label: DynamoDBTable + permissions: + - dynamodb:BatchGetItem + - dynamodb:GetItem + - dynamodb:GetRecords + - dynamodb:Query + relationship_name: CAN_QUERY +``` +If a principal has any of the permission it will be mapped diff --git a/_sources/modules/aws/schema.md.txt b/_sources/modules/aws/schema.md.txt new file mode 100644 index 0000000000..81565b0291 --- /dev/null +++ b/_sources/modules/aws/schema.md.txt @@ -0,0 +1,3286 @@ +## AWS Schema + +.. _aws_schema: + +### AWSAccount + +Representation of an AWS Account. + +| Field | Description | +|-------|-------------| +|firstseen| Timestamp of when a sync job discovered this node| +|name| The name of the account| +|inscope| Indicates that the account is part of the sync scope (true or false). +|foreign| Indicates if the account is not part of the sync scope (true or false). One such example is an account that is trusted as part of cross-account AWSRole trust not in scope for sync. +|lastupdated| Timestamp of the last time the node was updated| +|**id**| The AWS Account ID number| + +#### Relationships +- Many node types belong to an `AWSAccount`. + + ``` + (AWSAccount)-[RESOURCE]->(AWSDNSZone, + AWSGroup, + AWSInspectorFinding, + AWSInspectorPackage, + AWSLambda, + AWSPrincipal, + AWSUser, + AWSVpc, + AutoScalingGroup, + DNSZone, + DynamoDBTable, + EBSSnapshot, + EBSVolume, + EC2Image, + EC2Instance, + EC2Reservation, + EC2ReservedInstance, + EC2SecurityGroup, + ElasticIPAddress, + ESDomain, + LaunchConfiguration, + LaunchTemplate, + LaunchTemplateVersion, + LoadBalancer, + RDSCluster, + RDSInstance, + RDSSnapshot, + SecretsManagerSecret, + SecurityHub, + SQSQueue + SSMInstanceInformation, + SSMInstancePatch) + ``` + +- An `AWSPolicy` node is defined for an `AWSAccount`. + + ``` + (AWSAccount)-[RESOURCE]->(AWSPolicy) + ``` + +- `AWSRole` nodes are defined in `AWSAccount` nodes. + + ``` + (AWSAccount)-[RESOURCE]->(AWSRole) + ``` + +### AWSCidrBlock +#### AWSIpv4CidrBlock +#### AWSIpv6CidrBlock +Representation of an [AWS CidrBlock used in VPC configuration](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_VpcCidrBlockAssociation.html). +The `AWSCidrBlock` defines the base label +type for `AWSIpv4CidrBlock` and `AWSIpv6CidrBlock` + +| Field | Description | +|-------|-------------| +|firstseen| Timestamp of when a sync job discovered this node| +|cidr\_block| The CIDR block| +|block\_state| The state of the block| +|association\_id| the association id if the block is associated to a VPC +|lastupdated| Timestamp of the last time the node was updated| +|**id**| Unique identifier defined with the VPC association and the cidr\_block + +#### Relationships +- `AWSVpc` association + ``` + (AWSVpc)-[BLOCK_ASSOCIATION]->(AWSCidrBlock) + ``` +- Peering connection where `AWSCidrBlock` is an accepter or requester cidr. + ``` + (AWSCidrBlock)<-[REQUESTER_CIDR]-(AWSPeeringConnection) + (AWSCidrBlock)<-[ACCEPTER_CIDR]-(AWSPeeringConnection) + ``` + + Example of high level view of peering (without security group permissions) + ``` + MATCH p=(:AWSAccount)-[:RESOURCE|BLOCK_ASSOCIATION*..]->(:AWSCidrBlock)<-[:ACCEPTER_CIDR]-(:AWSPeeringConnection)-[:REQUESTER_CIDR]->(:AWSCidrBlock)<-[:RESOURCE|BLOCK_ASSOCIATION*..]-(:AWSAccount) + RETURN p + ``` + + Exploring detailed inbound peering rules + ``` + MATCH (outbound_account:AWSAccount)-[:RESOURCE|BLOCK_ASSOCIATION*..]->(:AWSCidrBlock)<-[:ACCEPTER_CIDR]-(:AWSPeeringConnection)-[:REQUESTER_CIDR]->(inbound_block:AWSCidrBlock)<-[:BLOCK_ASSOCIATION]-(inbound_vpc:AWSVpc)<-[:RESOURCE]-(inbound_account:AWSAccount) + WITH inbound_vpc, inbound_block, outbound_account, inbound_account + MATCH (inbound_range:IpRange{id: inbound_block.cidr_block})-[:MEMBER_OF_IP_RULE]->(inbound_rule:IpPermissionInbound)-[:MEMBER_OF_EC2_SECURITY_GROUP]->(inbound_group:EC2SecurityGroup)<-[:MEMBER_OF_EC2_SECURITY_GROUP]-(inbound_vpc) + RETURN outbound_account.name, inbound_account.name, inbound_range.range, inbound_rule.fromport, inbound_rule.toport, inbound_rule.protocol, inbound_group.name, inbound_vpc.id + ``` + +### AWSGroup + +Representation of AWS [IAM Groups](https://docs.aws.amazon.com/IAM/latest/APIReference/API_Group.html). + +| Field | Description | +|-------|-------------| +|firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated| Timestamp of the last time the node was updated | +|path | The path to the group (IAM identifier, see linked docs above for details)| +| groupid| Unique string identifying the group | +|name | The friendly name that identifies the group| +| createdate| ISO 8601 date-time string when the group was created| +|**arn** | The AWS-global identifier for this group| + +#### Relationships +- Objects part of an AWSGroup may assume AWSRoles. + + ``` + (AWSGroup)-[STS_ASSUMEROLE_ALLOW]->(AWSRole) + ``` + +- AWSUsers and AWSPrincipals can be members of AWSGroups. + + ``` + (AWSUser, AWSPrincipal)-[MEMBER_AWS_GROUP]->(AWSGroup) + ``` + +- AWSGroups belong to AWSAccounts. + + ``` + (AWSAccount)-[RESOURCE]->(AWSGroup) + ``` + +### AWSInspectorFinding + +Representation of an AWS [Inspector Finding](https://docs.aws.amazon.com/inspector/v2/APIReference/API_Finding.html) + +| Field | Description | Required| +|-------|-------------|------|---| +|arn|The AWS ARN|yes +|id|Reuses the AWS ARN since it's unique|yes +|region|AWS region the finding is from|yes +|awsaccount|AWS account the finding is from|yes +|name|The finding name| +|instanceid|The instance ID of the EC2 instance with the issue| +|ecrimageid|The image ID of the ECR image with the issue| +|ecrrepositoryid|The repository ID of the ECR repository with the issue| +|severity|The finding severity| +|firstobservedat|Date the finding was first identified| +|updatedat|Date the finding was last updated| +|description|The finding description| +|type|The finding type| +|cvssscore|CVSS score of the finding| +|protocol|Network protocol for network findings| +|portrange|Port range affected for network findings| +|portrangebegin|Beginning of the port range affected for network findings| +|portrangeend|End of the port range affected for network findings| +|vulnerabilityid|Vulnerability ID associdated with the finding for package findings| +|referenceurls|Reference URLs for the found vulnerabilities| +|relatedvulnerabilities|A list of any related vulnerabilities| +|source|Source for the vulnerability| +|sourceurl|URL for the vulnerability source| +|vendorcreatedat|Date the vulnerability notice was created by the vendor| +|vendorseverity|Vendor chosen issue severity| +|vendorupdatedat|Date the vendor information was last updated| +|vulnerablepackageids|IDs for any related packages| + +#### Relationships + +- AWSInspectorFinding may affect EC2 Instances + + ``` + (AWSInspectorFinding)-[:AFFECTS]->(EC2Instance) + ``` + +- AWSInspectorFinding may affect ECR Repositories + + ``` + (AWSInspectorFinding)-[:AFFECTS]->(ECRRepository) + ``` + +- AWSInspectorFinding may affect ECR Images + + ``` + (AWSInspectorFinding)-[:AFFECTS]->(ECRImage) + ``` + +- AWSInspectorFindings belong to AWSAccounts. + + ``` + (AWSAccount)-[RESOURCE]->(AWSInspectorFinding) + ``` + +### AWSInspectorPackage + +Representation of an AWS [Inspector Finding Package](https://docs.aws.amazon.com/inspector/v2/APIReference/API_Finding.html) + +| Field | Description | Required| +|-------|-------------|------|---| +|**arn**|The AWS ARN|yes +|id|Uses the format of `name|arch|version|release|epoch` to uniqulely identify packages|yes +|region|AWS region the finding is from|yes +|awsaccount|AWS account the finding is from|yes +|findingarn|The AWS ARN for a related finding|yes +|name|The finding name| +|arch|Architecture for the package| +|version|Version of the package| +|release|Release of the package +|epoch|Package epoch| +|manager|Related package manager| +|filepath|Path to the file or package| +|fixedinversion|Version the related finding was fixed in| +|sourcelayerhash|Source layer hash for container images| + + +#### Relationships + +- AWSInspectorFindings have AWSInspectorPackages. + + ``` + (AWSInspectorFindings)-[HAS]->(AWSInspectorPackages) + ``` + +- AWSInspectorPackages belong to AWSAccounts. + + ``` + (AWSAccount)-[RESOURCE]->(AWSInspectorPackages) + ``` + +### AWSLambda + +Representation of an AWS [Lambda Function](https://docs.aws.amazon.com/lambda/latest/dg/API_FunctionConfiguration.html). + +| Field | Description | +|-------|-------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| **id** | The arn of the lambda function| +| name | The name of the lambda function | +| modifieddate | Timestamp of the last time the function was last updated | +| runtime | The runtime environment for the Lambda function | +| description | The description of the Lambda function | +| timeout | The amount of time in seconds that Lambda allows a function to run before stopping it | +| memory | The memory that's allocated to the function | +| codesize | The size of the function's deployment package, in bytes. | +| handler | The function that Lambda calls to begin executing your function. | +| version | The version of the Lambda function. | +| tracingconfigmode | The function's AWS X-Ray tracing configuration mode. | +| revisionid | The latest updated revision of the function or alias. | +| state | The current state of the function. | +| statereason | The reason for the function's current state. | +| statereasoncode | The reason code for the function's current state. | +| lastupdatestatus | The status of the last update that was performed on the function. | +| lastupdatestatusreason | The reason for the last update that was performed on the function.| +| lastupdatestatusreasoncode | The reason code for the last update that was performed on the function. | +| packagetype | The type of deployment package. | +| signingprofileversionarn | The ARN of the signing profile version. | +| signingjobarn | The ARN of the signing job. | +| codesha256 | The SHA256 hash of the function's deployment package. | +| architectures | The instruction set architecture that the function supports. Architecture is a string array with one of the valid values. | +| masterarn | For Lambda@Edge functions, the ARN of the main function. | +| kmskeyarn | The KMS key that's used to encrypt the function's environment variables. This key is only returned if you've configured a customer managed key. | + +#### Relationships + +- AWSLambda function are resources in an AWS Account. + + ``` + (AWSAccount)-[RESOURCE]->(AWSLambda) + ``` + +- AWSLambda functions may act as AWSPrincipals via role assumption. + + ``` + (AWSLambda)-[STS_ASSUME_ROLE_ALLOW]->(AWSPrincipal) + ``` + +- AWSLambda functions may also have aliases. + + ``` + (AWSLambda)-[KNOWN_AS]->(AWSLambdaFunctionAlias) + ``` + +- AWSLambda functions may have the resource AWSLambdaEventSourceMapping. + + ``` + (AWSLambda)-[RESOURCE]->(AWSLambdaEventSourceMapping) + ``` + +- AWSLambda functions has AWS Lambda Layers. + + ``` + (AWSLambda)-[HAS]->(AWSLambdaLayer) + ``` + +- AWSLambda functions has AWS ECR Images. + + ``` + (AWSLambda)-[HAS]->(ECRImage) + ``` + +### AWSLambdaFunctionAlias + +Representation of an [AWSLambdaFunctionAlias](https://docs.aws.amazon.com/lambda/latest/dg/configuration-aliases.html). + +| Field | Description | +|-------|-------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| **id** | The arn of the lambda function alias| +| name | The name of the lambda function alias | +| functionversion | The function version that the alias invokes.| +| revisionid | A unique identifier that changes when you update the alias. | +| description | The description of the alias. | + +#### Relationships + +- AWSLambda functions may also have aliases. + + ``` + (AWSLambda)-[KNOWN_AS]->(AWSLambdaFunctionAlias) + ``` + +### AWSLambdaEventSourceMapping + +Representation of an [AWSLambdaEventSourceMapping](https://docs.aws.amazon.com/lambda/latest/dg/API_ListEventSourceMappings.html). + +| Field | Description | +|-------|-------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| **id** | The id of the event source mapping| +| batchsize | The maximum number of items to retrieve in a single batch. | +| startingposition | The position in a stream from which to start reading. | +| startingpositiontimestamp | The time from which to start reading. | +| parallelizationfactor | The number of batches to process from each shard concurrently. | +| maximumbatchingwindowinseconds | The maximum amount of time to gather records before invoking the function, in seconds.| +| eventsourcearn |The Amazon Resource Name (ARN) of the event source.| +| lastmodified |The date that the event source mapping was last updated, or its state changed.| +| state | The state of the event source mapping. | +| maximumrecordage | Discard records older than the specified age. | +| bisectbatchonfunctionerror | If the function returns an error, split the batch in two and retry. | +| maximumretryattempts | Discard records after the specified number of retries. | +| tumblingwindowinseconds | The duration in seconds of a processing window. | +| lastprocessingresult |The result of the last AWS Lambda invocation of your Lambda function. | + +#### Relationships + +- AWSLambda functions may have the resource AWSLambdaEventSourceMapping. + + ``` + (AWSLambda)-[RESOURCE]->(AWSLambdaEventSourceMapping) + ``` + +### AWSLambdaLayer + +Representation of an [AWSLambdaLayer](https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html). + +| Field | Description | +|-------|-------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| **id** | The arn of the lambda function layer| +| codesize | The size of the layer archive in bytes.| +| signingprofileversionarn | The Amazon Resource Name (ARN) for a signing profile version.| +| signingjobarn | The Amazon Resource Name (ARN) of a signing job. | + +#### Relationships + +- AWSLambda functions has AWS Lambda Layers. + + ``` + (AWSLambda)-[HAS]->(AWSLambdaLayer) + ``` + +### AWSPolicy + +Representation of an [AWS Policy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_Policy.html). + +| Field | Description | +|-------|-------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| name | The friendly name (not ARN) identifying the policy | +| createdate | ISO 8601 date-time when the policy was created| +| type | "inline" or "managed" - the type of policy it is| +| arn | The arn for this object | +| **id** | The unique identifer for a policy. If the policy is managed this will be the Arn. If the policy is inline this will calculated as _AWSPrincipal_/inline_policy/_PolicyName_| + + +#### Relationships + +- `AWSPrincipal` contains `AWSPolicy` + + ``` + (AWSPrincipal)-[POLICY]->(AWSPolicy) + ``` + +- `AWSPolicy` contains `AWSPolicyStatement` + + ``` + (AWSPolicy)-[STATEMENTS]->(AWSPolicyStatement) + ``` + +### AWSPolicyStatement + +Representation of an [AWS Policy Statement](https://docs.aws.amazon.com/IAM/latest/APIReference/API_Statement.html). + +| Field | Description | +|-------|-------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| resources | (array) The resources the statement is applied to. Can contain wildcards | +| actions | (array) The permissions allowed or denied by the statement. Can contain wildcards | +| notactions | (array) The permission explicitly not matched by the statement | +| effect | "Allow" or "Deny" - the effect of this statement | +| **id** | The unique identifier for a statement.
If the statement has an Sid the id will be calculated as _AWSPolicy.id_/statements/_Sid_.
If the statement has no Sid the id will be calculated as _AWSPolicy.id_/statements/_index of statement in statement list_ | + + +#### Relationships + +- `AWSPolicy` contains `AWSPolicyStatement` + + ``` + (AWSPolicy)-[STATEMENTS]->(AWSPolicyStatement) + ``` + + +### AWSPrincipal +Representation of an [AWSPrincipal](https://docs.aws.amazon.com/IAM/latest/APIReference/API_User.html). + +| Field | Description | +|-------|-------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| path | The path to the principal | +| name | The friendly name of the principal | +| createdate | ISO 8601 date-time when the principal was created | +| **arn** | AWS-unique identifier for this object | +| userid | The stable and unique string identifying the principal. | +| passwordlastused | Datetime when this principal's password was last used + + +#### Relationships + +- AWS Principals can be members of AWS Groups. + + ``` + (AWSPrincipal)-[MEMBER_AWS_GROUP]->(AWSGroup) + ``` + +- This AccountAccessKey is used to authenticate to this AWSPrincipal. + + ``` + (AWSPrincipal)-[AWS_ACCESS_KEY]->(AccountAccessKey) + ``` + +- AWS Roles can trust AWS Principals. + + ``` + (AWSRole)-[TRUSTS_AWS_PRINCIPAL]->(AWSPrincipal) + ``` + +- AWS Accounts contain AWS Principals. + + ``` + (AWSAccount)-[RESOURCE]->(AWSPrincipal) + ``` + +- Redshift clusters may assume IAM roles. See [this article](https://docs.aws.amazon.com/redshift/latest/mgmt/authorizing-redshift-service.html). + + ``` + (RedshiftCluster)-[STS_ASSUMEROLE_ALLOW]->(AWSPrincipal) + ``` + +### AWSPrincipal::AWSUser +Representation of an [AWSUser](https://docs.aws.amazon.com/IAM/latest/APIReference/API_User.html). An AWS User is a type of AWS Principal. + +| Field | Description | +|-------|-------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| path | The path to the user | +| name | The friendly name of the user | +| createdate | ISO 8601 date-time when the user was created | +| **arn** | AWS-unique identifier for this object | +| userid | The stable and unique string identifying the user. | +| passwordlastused | Datetime when this user's password was last used + +#### Relationships +- AWS Users can be members of AWS Groups. + + ``` + (AWSUser)-[MEMBER_AWS_GROUP]->(AWSGroup) + ``` + +- AWS Users can assume AWS Roles. + + ``` + (AWSUser)-[STS_ASSUMEROLE_ALLOW]->(AWSRole) + ``` + +- This AccountAccessKey is used to authenticate to this AWSUser + + ``` + (AWSUser)-[AWS_ACCESS_KEY]->(AccountAccessKey) + ``` + +- AWS Accounts contain AWS Users. + + ``` + (AWSAccount)-[RESOURCE]->(AWSUser) + ``` + + +### AWSPrincipal::AWSRole + +Representation of an AWS [IAM Role](https://docs.aws.amazon.com/IAM/latest/APIReference/API_Role.html). An AWS Role is a type of AWS Principal. + +| Field | Description | +|-------|-------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| roleid | The stable and unique string identifying the role. | +| name | The friendly name that identifies the role.| +| createdate| The date and time, in ISO 8601 date-time format, when the role was created. | +| **arn** | AWS-unique identifier for this object | + + +#### Relationships + +- Some AWS Groups, Users, Principals, and EC2 Instances can assume AWS Roles. + + ``` + (AWSGroup, AWSUser, EC2Instance)-[STS_ASSUMEROLE_ALLOW]->(AWSRole) + ``` + +- Some AWS Roles can assume other AWS Roles. + + ``` + (AWSRole)-[STS_ASSUMEROLE_ALLOW]->(AWSRole) + ``` + +- Some AWS Roles trust AWS Principals. + + ``` + (AWSRole)-[TRUSTS_AWS_PRINCIPAL]->(AWSPrincipal) + ``` + +- AWS Roles are defined in AWS Accounts. + + ``` + (AWSAccount)-[RESOURCE]->(AWSRole) + ``` + +### AWSTransitGateway +Representation of an [AWS Transit Gateway](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_TransitGateway.html). + +| Field | Description | +|-------|-------------| +|firstseen| Timestamp of when a sync job discovered this node| +|lastupdated| Timestamp of the last time the node was updated| +|owner\_id| The ID of the AWS account that owns the transit gateway| +|description| Transit Gateway description| +|state| Can be one of ``pending \| available \| modifying \| deleting \| deleted``| +|tgw_id| Unique identifier of the Transit Gateway| +|**id**| Unique identifier of the Transit Gateway| +| **arn** | AWS-unique identifier for this object (same as `id`) | + +#### Relationships +- Transit Gateways belong to one `AWSAccount`... +``` +(AWSAccount)-[RESOURCE]->(AWSTransitGateway) +``` + +- ... and can be shared with other accounts +``` +(AWSAccount)<-[SHARED_WITH]-(AWSTransitGateway) +``` + +- `AWSTag` +``` +(AWSTransitGateway)-[TAGGED]->(AWSTag) +``` + +### AWSTransitGatewayAttachment +Representation of an [AWS Transit Gateway Attachment](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_TransitGatewayAttachment.html). + +| Field | Description | +|-------|-------------| +|firstseen| Timestamp of when a sync job discovered this node| +|lastupdated| Timestamp of the last time the node was updated| +|resource\_type| Can be one of ``vpc \| vpn \| direct-connect-gateway \| tgw-peering`` | +|state| Can be one of ``initiating \| pendingAcceptance \| rollingBack \| pending \| available \| modifying \| deleting \| deleted \| failed \| rejected \| rejecting \| failing`` +|**id**| Unique identifier of the Transit Gateway Attachment | + +#### Relationships +- `AWSAccount` +``` +(AWSAccount)-[RESOURCE]->(AWSTransitGatewayAttachment) +``` +- `AWSVpc` (for VPC attachments) +``` +(AWSVpc)-[RESOURCE]->(AWSTransitGatewayAttachment {resource_type: 'vpc'}) +``` +- `AWSTransitGateway` attachment +``` +(AWSTransitGateway)<-[ATTACHED_TO]-(AWSTransitGatewayAttachment) +``` +- `AWSTag` +``` +(AWSTransitGatewayAttachment)-[TAGGED]->(AWSTag) +``` + +### AWSVpc +Representation of an [AWS CidrBlock used in VPC configuration](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_VpcCidrBlockAssociation.html). +More information on https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-vpcs.html + +| Field | Description | +|-------|-------------| +|firstseen| Timestamp of when a sync job discovered this node| +|vpcid| The VPC unique identifier| +|primary\_cidr\_block|The primary IPv4 CIDR block for the VPC.| +|instance\_tenancy| The allowed tenancy of instances launched into the VPC.| +|state| The current state of the VPC.| +|region| (optional) the region of this VPC. This field is only available on VPCs in your account. It is not available on VPCs that are external to your account and linked via a VPC peering relationship. +|**id**| Unique identifier defined VPC node (vpcid) + +#### Relationships +- `AWSAccount` resource + ``` + (AWSAccount)-[RESOURCE]->(AWSVpc) + ``` +- `AWSVpc` and `AWSCidrBlock` association + ``` + (AWSVpc)-[BLOCK_ASSOCIATION]->(AWSCidrBlock) + ``` +- `AWSVpc` and `EC2SecurityGroup` membership association + ``` + (AWSVpc)<-[MEMBER_OF_EC2_SECURITY_GROUP]-(EC2SecurityGroup) + ``` +- AWS VPCs can be tagged with AWSTags. + ``` + (AWSVpc)-[TAGGED]->(AWSTag) + ``` +- Redshift clusters can be members of AWSVpcs. + ``` + (RedshiftCluster)-[MEMBER_OF_AWS_VPC]->(AWSVpc) + ``` +- Peering connection where `AWSVpc` is an accepter or requester vpc. + ``` + (AWSVpc)<-[REQUESTER_VPC]-(AWSPeeringConnection) + (AWSVpc)<-[ACCEPTER_VPC]-(AWSPeeringConnection) + ``` + + +### Tag::AWSTag + +Representation of an AWS [Tag](https://docs.aws.amazon.com/resourcegroupstagging/latest/APIReference/API_Tag.html). AWS Tags can be applied to many objects. + +| Field | Description | +|-------|-------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| **id** | This tag's unique identifier of the format `{TagKey}:{TagValue}`. We fabricated this ID. | +| key | One part of a key-value pair that makes up a tag.| +| value | One part of a key-value pair that makes up a tag. | +| region | The region where this tag was discovered.| + +#### Relationships +- AWS VPCs, DB Subnet Groups, EC2 Instances, EC2 SecurityGroups, EC2 Subnets, EC2 Network Interfaces, RDS Instances, and S3 Buckets can be tagged with AWSTags. + ``` + (AWSVpc, DBSubnetGroup, EC2Instance, EC2SecurityGroup, EC2Subnet, NetworkInterface, RDSInstance, S3Bucket)-[TAGGED]->(AWSTag) + ``` + +### AccountAccessKey + +Representation of an AWS [Access Key](https://docs.aws.amazon.com/IAM/latest/APIReference/API_AccessKey.html). + +| Field | Description | +|-------|-------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated +| createdate | Date when access key was created | +| status | Active: valid for API calls. Inactive: not valid for API calls| +| lastuseddate | Date when the key was last used | +| lastusedservice | The service that was last used with the access key | +| lastusedregion | The region where the access key was last used | +| **accesskeyid** | The ID for this access key| + +#### Relationships +- Account Access Keys may authenticate AWS Users and AWS Principal objects. + + ``` + (AWSUser, AWSPrincipal)-[AWS_ACCESS_KEY]->(AccountAccessKey) + ``` + + +### DBSubnetGroup + +Representation of an RDS [DB Subnet Group](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DBSubnetGroup.html). For more information on how RDS instances interact with these, please see [this article](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_VPC.WorkingWithRDSInstanceinaVPC.html). + +| Field | Description | +|-------|-------------| +|firstseen| Timestamp of when a sync job first discovered this node | +|id| The ARN of the DBSubnetGroup| +|name | The name of DBSubnetGroup | +|lastupdated| Timestamp of the last time the node was updated| +|description| Description of the DB Subnet Group| +|status| The status of the group | +|vpc\_id| The ID of the VPC (Virtual Private Cloud) that this DB Subnet Group is associated with.| +|value| The IP address that the DNSRecord points to| + +#### Relationships + +- RDS Instances are part of DB Subnet Groups + ``` + (RDSInstance)-[:MEMBER_OF_DB_SUBNET_GROUP]->(DBSubnetGroup) + ``` + +- DB Subnet Groups consist of EC2 Subnets + ``` + (DBSubnetGroup)-[:RESOURCE]->(EC2Subnet) + ``` + +- DB Subnet Groups can be tagged with AWSTags. + + ``` + (DBSubnetGroup)-[TAGGED]->(AWSTag) + ``` + + +### DNSRecord + +Representation of a generic DNSRecord. + +| Field | Description | +|-------|-------------| +|firstseen| Timestamp of when a sync job first discovered this node | +|name| The name of the DNSRecord| +|lastupdated| Timestamp of the last time the node was updated| +|**id**| The name of the DNSRecord concatenated with the record type| +|type| The record type of the DNS record| +|value| The IP address that the DNSRecord points to| + +#### Relationships + +- DNSRecords can point to IP addresses. + + ``` + (DNSRecord)-[DNS_POINTS_TO]->(Ip) + ``` + + +- DNSRecords/AWSDNSRecords can point to each other. + + ``` + (AWSDNSRecord, DNSRecord)-[DNS_POINTS_TO]->(AWSDNSRecord, DNSRecord) + ``` + + +- DNSRecords can point to LoadBalancers. + + ``` + (DNSRecord)-[DNS_POINTS_TO]->(LoadBalancer) + ``` + + +- DNSRecords can be members of DNSZones. + + ``` + (DNSRecord)-[MEMBER_OF_DNS_ZONE]->(DNSZone) + ``` + + +### DNSRecord::AWSDNSRecord + +Representation of an AWS DNS [ResourceRecordSet](https://docs.aws.amazon.com/Route53/latest/APIReference/API_ResourceRecordSet.html). + +| Field | Description | +|-------|-------------| +|firstseen| Timestamp of when a sync job first discovered this node | +|name| The name of the DNSRecord| +|lastupdated| Timestamp of the last time the node was updated| +|**id**| The zoneid for the record, the value of the record, and the type concatenated together| +|type| The record type of the DNS record| +|value| If it is an A, ALIAS, or CNAME record, this is the IP address that the DNSRecord points to. If it is an NS record, the `name` is used here.| + +#### Relationships +- DNSRecords/AWSDNSRecords can point to each other. + + ``` + (AWSDNSRecord, DNSRecord)-[DNS_POINTS_TO]->(AWSDNSRecord, DNSRecord) + ``` + + +- AWSDNSRecords can point to LoadBalancers. + + ``` + (AWSDNSRecord)-[DNS_POINTS_TO]->(LoadBalancer, ESDomain) + ``` + + +- AWSDNSRecords can be members of AWSDNSZones. + + ``` + (AWSDNSRecord)-[MEMBER_OF_DNS_ZONE]->(AWSDNSZone) + ``` + + +### DNSZone +Representation of a generic DNS Zone. + +| Field | Description | +|-------|-------------| +|firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated| Timestamp of the last time the node was updated | +|**name**| the name of the DNS zone| +| comment | Comments about the zone | + + +#### Relationships + +- DNSRecords can be members of DNSZones. + + ``` + (DNSRecord)-[MEMBER_OF_DNS_ZONE]->(DNSZone) + ``` + + +### DNSZone::AWSDNSZone + +Representation of an AWS DNS [HostedZone](https://docs.aws.amazon.com/Route53/latest/APIReference/API_HostedZone.html). + +| Field | Description | +|-------|-------------| +|firstseen| Timestamp of when a sync job first discovered this node | +|**name**| the name of the DNS zone| +| zoneid| The zoneid defined by Amazon Route53| +| lastupdated| Timestamp of the last time the node was updated | +| comment| Comments about the zone | +| privatezone | Whether or not this is a private DNS zone | + +#### Relationships + +- AWSDNSZones and DNSZones can be part of AWSAccounts. + + ``` + (AWSAccount)-[RESOURCE]->(AWSDNSZone) + ``` + +- AWSDNSRecords can be members of AWSDNSZones. + + ``` + (AWSDNSRecord)-[MEMBER_OF_DNS_ZONE]->(AWSDNSZone) + ``` +- AWSDNSZone can have subzones hosted by another AWSDNSZone + ``` + (AWSDNSZone)<-[SUBZONE]-(AWSDNSZone) + ``` + + +### DynamoDBTable + +Representation of an AWS [DynamoDBTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ListTables.html). + +| Field | Description | +|-------|-------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| name | The name of the table | +| **id** | The ARN of the table | +| region | The AWS region of the table | +| **arn** | The AWS-unique identifier + +#### Relationships +- DynamoDBTables belong to AWS Accounts. + + ``` + (AWSAccount)-[RESOURCE]->(DynamoDBTable) + ``` + + +### EC2Instance + +Our representation of an AWS [EC2 Instance](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_Instance.html). + +| Field | Description | +|-------|-------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| **id** | Same as `instanceid` below. | +| instanceid | The instance id provided by AWS. This is [globally unique](https://forums.aws.amazon.com/thread.jspa?threadID=137203) | +| publicdnsname | The public DNS name assigned to the instance | +| publicipaddress | The public IPv4 address assigned to the instance if applicable | +| privateipaddress | The private IPv4 address assigned to the instance | +| imageid | The ID of the [Amazon Machine Image](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMIs.html) used to launch the instance | +| subnetid | The ID of the EC2Subnet associated with this instance | +| instancetype | The instance type. See API docs linked above for specifics. | +| iaminstanceprofile | The IAM instance profile associated with the instance, if applicable. | +| launchtime | The time the instance was launched | +| monitoringstate | Whether monitoring is enabled. Valid Values: disabled, disabling, enabled, pending. | +| state | The [current state](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_InstanceState.html) of the instance. +| launchtimeunix | The time the instance was launched in unix time | +| region | The AWS region this Instance is running in| +| exposed\_internet | The `exposed_internet` flag on an EC2 instance is set to `True` when (1) the instance is part of an EC2 security group or is connected to a network interface connected to an EC2 security group that allows connectivity from the 0.0.0.0/0 subnet or (2) the instance is connected to an Elastic Load Balancer that has its own `exposed_internet` flag set to `True`. | +| availabilityzone | The Availability Zone of the instance.| +| tenancy | The tenancy of the instance.| +| hostresourcegrouparn | The ARN of the host resource group in which to launch the instances.| +| platform | The value is `Windows` for Windows instances; otherwise blank.| +| architecture | The architecture of the image.| +| ebsoptimized | Indicates whether the instance is optimized for Amazon EBS I/O. | +| bootmode | The boot mode of the instance.| +| instancelifecycle | Indicates whether this is a Spot Instance or a Scheduled Instance.| +| hibernationoptions | Indicates whether the instance is enabled for hibernation.| + + +#### Relationships + +- EC2 Instances can be part of subnets + + ``` + (EC2Instance)-[PART_OF_SUBNET]->(EC2Subnet) + ``` + +- EC2 Instances can have NetworkInterfaces connected to them + + ``` + (EC2Instance)-[NETWORK_INTERFACE]->(NetworkInterface) + ``` + +- EC2 Instances may be members of EC2 Reservations + + ``` + (EC2Instance)-[MEMBER_OF_EC2_RESERVATION]->(EC2Reservation) + ``` + +- EC2 Instances can be part of EC2 Security Groups + + ``` + (EC2Instance)-[MEMBER_OF_EC2_SECURITY_GROUP]->(EC2SecurityGroup) + ``` + +- Load Balancers can expose (be connected to) EC2 Instances + + ``` + (LoadBalancer)-[EXPOSE]->(EC2Instance) + ``` + +- Package and Dependency nodes can be deployed in EC2 Instances. + + ``` + (Package, Dependency)-[DEPLOYED]->(EC2Instance) + ``` + +- AWS Accounts contain EC2 Instances. + + ``` + (AWSAccount)-[RESOURCE]->(EC2Instance) + ``` + +- EC2 Instances can be tagged with AWSTags. + + ``` + (EC2Instance)-[TAGGED]->(AWSTag) + ``` + +- AWS EBS Volumes are attached to an EC2 Instance + + ``` + (EBSVolume)-[ATTACHED_TO]->(EC2Instance) + ``` + +- EC2 Instances can assume IAM Roles. + + ``` + (EC2Instance)-[STS_ASSUMEROLE_ALLOW]->(AWSRole) + ``` + +- EC2Instances can have SSMInstanceInformation + + ``` + (EC2Instance)-[HAS_INFORMATION]->(SSMInstanceInformation) + ``` + +- EC2Instances can have SSMInstancePatches + + ``` + (EC2Instance)-[HAS_PATCH]->(SSMInstancePatch) + ``` + +### EC2KeyPair + +Representation of an AWS [EC2 Key Pair](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_KeyPairInfo.html) + +| Field | Description | +|-------|-------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| keyname | The name of the key pair | +| keyfingerprint | The fingerprint of the public key | +| region| The AWS region | +| **arn** | AWS-unique identifier for this object | +| id | same as `arn` | +| user_uploaded | `user_uploaded` is set to `True` if the the KeyPair was uploaded to AWS. Uploaded KeyPairs will have 128-bit MD5 hashed `keyfingerprint`, and KeyPairs from AWS will have 160-bit SHA-1 hashed `keyfingerprint`s. | +| duplicate_keyfingerprint | `duplicate_keyfingerprint` is set to `True` if the KeyPair has the same `keyfingerprint` as another KeyPair. | + +#### Relationships + +- EC2 key pairs are contained in AWS Accounts. + + ``` + (AWSAccount)-[RESOURCE]->(EC2KeyPair) + ``` + +- EC2 key pairs can be used to log in to AWS EC2 isntances. + + ``` + (EC2KeyPair)-[SSH_LOGIN_TO]->(EC2Instance) + ``` + +- EC2 key pairs have matching `keyfingerprint`. + + ``` + (EC2KeyPair)-[MATCHING_FINGERPRINT]->(EC2KeyPair) + ``` + +### EC2PrivateIp +Representation of an AWS EC2 [InstancePrivateIpAddress](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_InstancePrivateIpAddress.html) + +| Field | Description | +|-------|-------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| network_interface_id | id of the network interface with which the IP is associated with | +| primary | Indicates whether this IPv4 address is the primary private IP address of the network interface. | +| private_ip_address | The private IPv4 address of the network interface. | +| public_ip | The public IP address or Elastic IP address bound to the network interface. | +| ip_owner_id | Id of the owner, e.g. `amazon-elb` for ELBs | + +#### Relationships + +- EC2PrivateIps are connected with NetworkInterfaces. + + ``` + (NetworkInterface)-[PRIVATE_IP_ADDRESS]->(EC2PrivateIp) + ``` + + +### EC2Reservation +Representation of an AWS EC2 [Reservation](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_Reservation.html). + +| Field | Description | +|-------|-------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| requesterid | The ID of the requester that launched the instances on your behalf | +| **reservationid** | The ID of the reservation. | +| region| The AWS region | +| ownerid | The ID of the AWS account that owns the reservation. | + +#### Relationships + +- EC2 reservations are contained in AWS Accounts. + + ``` + (AWSAccount)-[RESOURCE]->(EC2Reservation) + ``` + +- EC2 Instances are members of EC2 reservations. + + ``` + (EC2Instance)-[MEMBER_OF_EC2_RESERVATION]->(EC2Reservation) + ``` + + +### EC2SecurityGroup +Representation of an AWS EC2 [Security Group](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_SecurityGroup.html). + +| Field | Description | +|-------|-------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| groupid | The ID of the security group| +| name | The name of the security group| +| description | A description of the security group| +| **id** | Same as `groupid` | +| region | The AWS region this security group is installed in| + + +#### Relationships + +- EC2 Instances, Network Interfaces, Load Balancers, Elastic Search Domains, IP Rules, IP Permission Inbound nodes, and RDS Instances can be members of EC2 Security Groups. + + ``` + (EC2Instance, + NetworkInterface, + LoadBalancer, + ESDomain, + IpRule, + IpPermissionInbound, + RDSInstance, + AWSVpc)-[MEMBER_OF_EC2_SECURITY_GROUP]->(EC2SecurityGroup) + ``` + +- Load balancers can define inbound [Source Security Groups](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-security-groups.html). + + ``` + (LoadBalancer)-[SOURCE_SECURITY_GROUP]->(EC2SecurityGroup) + ``` + +- AWS Accounts contain EC2 Security Groups. + + ``` + (AWSAccount)-[RESOURCE]->(EC2SecurityGroup) + ``` + +- EC2 SecurityGroups can be tagged with AWSTags. + + ``` + (EC2SecurityGroup)-[TAGGED]->(AWSTag) + ``` + +- Redshift clusters can be members of EC2 Security Groups. + + ``` + (RedshiftCluster)-[MEMBER_OF_EC2_SECURITY_GROUP]->(EC2SecurityGroup) + ``` + + +### EC2Subnet + +Representation of an AWS EC2 [Subnet](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_Subnet.html). + +| Field | Description | +|-------|-------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| **subnetid** | The ID of the subnet| +| **id** | same as subnetid | +| region| The AWS region the subnet is installed on| +| name | The IPv4 CIDR block assigned to the subnet| +| cidr_block | The IPv4 CIDR block assigned to the subnet| +| available_ip_address_count | The number of unused private IPv4 addresses in the subnet. The IPv4 addresses for any stopped instances are considered unavailable | +| default_for_az | Indicates whether this is the default subnet for the Availability Zone. | +| map_customer_owned_ip_on_launch | Indicates whether a network interface created in this subnet (including a network interface created by RunInstances ) receives a customer-owned IPv4 address | +| map_public_ip_on_launch | Indicates whether instances launched in this subnet receive a public IPv4 address | +| subnet_arn | The Amazon Resource Name (ARN) of the subnet | +| availability_zone | The Availability Zone of the subnet | +| availability_zone_id | The AZ ID of the subnet | +| state | The current state of the subnet. | +| assignipv6addressoncreation | Indicates whether a network interface created in this subnet (including a network interface created by RunInstances ) receives an IPv6 address. | + + +#### Relationships + +- A Network Interface can be part of an EC2 Subnet. + + ``` + (NetworkInterface)-[PART_OF_SUBNET]->(EC2Subnet) + ``` + +- An EC2 Instance can be part of an EC2 Subnet. + + ``` + (EC2Instance)-[PART_OF_SUBNET]->(EC2Subnet) + ``` + +- A LoadBalancer can be part of an EC2 Subnet. + + ``` + (LoadBalancer)-[SUBNET]->(EC2Subnet) + + ``` + +- A LoadBalancer can be part of an EC2 Subnet. + + ``` + (LoadBalancer)-[PART_OF_SUBNET]->(EC2Subnet) + ``` + +- A LoadBalancerV2 can be part of an EC2 Subnet. + + ``` + (LoadBalancerV2)-[PART_OF_SUBNET]->(EC2Subnet) + ``` + + +- DB Subnet Groups consist of EC2 Subnets + ``` + (DBSubnetGroup)-[RESOURCE]->(EC2Subnet) + ``` + + +- EC2 Subnets can be tagged with AWSTags. + + ``` + (EC2Subnet)-[TAGGED]->(AWSTag) + ``` + +- EC2 Subnets are member of a VPC. + + ``` + (EC2Subnet)-[MEMBER_OF_AWS_VPC]->(AWSVpc) + ``` + +- EC2 Subnets belong to AWS Accounts + + ``` + (AWSAccount)-[RESOURCE]->(EC2Subnet) + ``` + +- EC2PrivateIps are connected with NetworkInterfaces. + + (NetworkInterface)-[PRIVATE_IP_ADDRESS]->(EC2PrivateIp) + + +### AWSInternetGateway + + Representation of an AWS [Interent Gateway](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_InternetGateway.html). + + | Field | Description | + |--------|-----------| + | **id** | Internet gateway ID | + | arn | Amazon Resource Name | + | region | The region of the gateway | + + +#### Relationships + + - Internet Gateways are attached to a VPC. + + ``` + (AWSInternetGateway)-[ATTACHED_TO]->(AWSVpc) + ``` + + - Internet Gateways belong to AWS Accounts + + ``` + (AWSAccount)-[RESOURCE]->(AWSInternetGateway) + ``` + +### ECRRepository + +Representation of an AWS Elastic Container Registry [Repository](https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_Repository.html). + +| Field | Description | +|--------|-----------| +| **id** | Same as ARN | +| arn | The ARN of the repository | +| name | The name of the repository | +| region | The region of the repository | +| created_at | Date and time when the repository was created | + +#### Relationships + +- An ECRRepository contains ECRRepositoryImages: + ``` + (:ECRRepository)-[:REPO_IMAGE]->(:ECRRepositoryImage) + ``` + + +### ECRRepositoryImage + +An ECR image may be referenced and tagged by more than one ECR Repository. To best represent this, we've created an +`ECRRepositoryImage` node as a layer of indirection between the repo and the image. + +More concretely explained, we run +[`ecr.list_images()`](https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_ImageIdentifier.html), and then +store the image tag on an `ECRRepositoryImage` node and the image digest hash on a separate `ECRImage` node. + +This way, more than one `ECRRepositoryImage` can reference/be connected to the same `ECRImage`. + +| Field | Description | +|--------|-----------| +| tag | The tag applied to the repository image, e.g. "latest" | +| uri | The URI where the repository image is stored | +| **id** | same as uri | + +#### Relationships + +- An ECRRepository contains ECRRepositoryImages: + ``` + (:ECRRepository)-[:REPO_IMAGE]->(:ECRRepositoryImage) + ``` + +- ECRRepositoryImages reference ECRImages + ``` + (:ECRRepositoryImage)-[:IMAGE]->(:ECRImage) + ``` + + +### ECRImage + +Representation of an ECR image identified by its digest (e.g. a SHA hash). Specifically, this is the "digest part" of +[`ecr.list_images()`](https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_ImageIdentifier.html). Also see +ECRRepositoryImage. + +| Field | Description | +|--------|-----------| +| digest | The hash of this ECR image | +| **id** | Same as digest | + +#### Relationships + +- ECRRepositoryImages reference ECRImages + ``` + (:ECRRepositoryImage)-[:IMAGE]->(:ECRImage) + ``` + +- Software packages are a part of ECR Images + ``` + (:Package)-[:DEPLOYED]->(:ECRImage) + ``` + + +### Package + +Representation of a software package, as found by an AWS ECR vulnerability scan. + +| Field | Description | +|-------|-------------| +| **id** | Concatenation of ``{version}\|{name}`` | +| version | The version of the package, includes the Linux distro that it was built for | +| name | The name of the package | + +#### Relationships + +- Software packages are a part of ECR Images + ``` + (:Package)-[:DEPLOYED]->(:ECRImage) + ``` + +- AWS ECR scans yield ECRScanFindings that affect software packages + ``` + (:ECRScanFindings)-[:AFFECTS]->(:Package) + ``` + + +### ECRScanFinding (:Risk:CVE) + +Representation of a scan finding from AWS ECR. This is the result output of [`ecr.describe_image_scan_findings()`](https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_DescribeImageScanFindings.html). + +| Field | Description | +|--------|-----------| +| name | The name of the ECR scan finding, e.g. a CVE name | +| **id** | Same as name | +| severity | The severity of the risk | +| uri | A URI link to a descriptive article on the risk | + +#### Relationships + +- AWS ECR scans yield ECRScanFindings that affect software packages + ``` + (:ECRScanFindings)-[:AFFECTS]->(:Package) + ``` + + + +### EKSCluster + +Representation of an AWS [EKS Cluster](https://docs.aws.amazon.com/eks/latest/APIReference/API_Cluster.html). + +| Field | Description | +|-------|-------------| +| firstseen | Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| created_at | The date and time the cluster was created | +| region | The AWS region | +| **arn** | AWS-unique identifier for this object | +| id | same as `arn` | +| name | Name of the EKS Cluster | +| endpoint | The endpoint for the Kubernetes API server. | +| endpoint_public_access | Indicates whether the Amazon EKS public API server endpoint is enabled | +| exposed_internet | Set to True if the EKS Cluster public API server endpoint is enabled | +| rolearn | The ARN of the IAM role that provides permissions for the Kubernetes control plane to make calls to AWS API | +| version | Kubernetes version running | +| platform_version | Version of EKS | +| status | Status of the cluster. Valid Values: creating, active, deleting, failed, updating | +| audit_logging | Whether audit logging is enabled | + +#### Relationships + +- EKS Clusters belong to AWS Accounts. + ``` + (AWSAccount)-[RESOURCE]->(EKSCluster) + ``` + +### EMRCluster + +Representation of an AWS [EMR Cluster](https://docs.aws.amazon.com/emr/latest/APIReference/API_Cluster.html). + +| Field | Description | +|-------|-------------| +| firstseen | Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| region | The AWS region | +| **arn** | AWS-unique identifier for this object | +| id | The Id of the EMR Cluster. | +| instance\_collection\_type | The instance group configuration of the cluster. A value of INSTANCE\_GROUP indicates a uniform instance group configuration. A value of INSTANCE\_FLEET indicates an instance fleets configuration. | +| log\_encryption\_kms\_key\_id | The KMS key used for encrypting log files. | +| requested\_ami\_version | The AMI version requested for this cluster. | +| running\_ami\_version | The AMI version running on this cluster. | +| release\_label | The Amazon EMR release label, which determines the version of open-source application packages installed on the cluster. | +| auto\_terminate | Specifies whether the cluster should terminate after completing all steps. | +| termination\_protected | Indicates whether Amazon EMR will lock the cluster to prevent the EC2 instances from being terminated by an API call or user intervention, or in the event of a cluster error. | +| visible\_to\_all\_users | Indicates whether the cluster is visible to IAM principals in the Amazon Web Services account associated with the cluster. | +| master\_public\_dns\_name | The DNS name of the master node. If the cluster is on a private subnet, this is the private DNS name. On a public subnet, this is the public DNS name. | +| security\_configuration | The name of the security configuration applied to the cluster. | +| autoscaling\_role | An IAM role for automatic scaling policies. | +| scale\_down\_behavior | The way that individual Amazon EC2 instances terminate when an automatic scale-in activity occurs or an instance group is resized. | +| custom\_ami\_id | The ID of a custom Amazon EBS-backed Linux AMI if the cluster uses a custom AMI. | +| repo\_upgrade\_on\_boot | Specifies the type of updates that are applied from the Amazon Linux AMI package repositories when an instance boots using the AMI. | +| outpost\_arn | The Amazon Resource Name (ARN) of the Outpost where the cluster is launched. | +| log\_uri | The path to the Amazon S3 location where logs for this cluster are stored. | +| servicerole | Service Role of the EMR Cluster | + + +#### Relationships + +- EMR Clusters belong to AWS Accounts. + ``` + (AWSAccount)-[RESOURCE]->(EMRCluster) + ``` + + +### ESDomain + +Representation of an AWS [ElasticSearch Domain](https://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-configuration-api.html#es-configuration-api-datatypes) (see ElasticsearchDomainConfig). + +| Field | Description | +|-------|-------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| elasticsearch\_cluster\_config\_instancetype | The instancetype | +| elasticsearch\_version | The version of elasticsearch | +| elasticsearch\_cluster\_config\_zoneawarenessenabled | Indicates whether multiple Availability Zones are enabled. | +| elasticsearch\_cluster\_config\_dedicatedmasterenabled | Indicates whether dedicated master nodes are enabled for the cluster. True if the cluster will use a dedicated master node. False if the cluster will not. | +| elasticsearch\_cluster\_config\_dedicatedmastercount |Number of dedicated master nodes in the cluster.| +| elasticsearch\_cluster\_config\_dedicatedmastertype | Amazon ES instance type of the dedicated master nodes in the cluster.| +| domainid | Unique identifier for an Amazon ES domain. | +| encryption\_at\_rest\_options\_enabled | Specify true to enable encryption at rest. | +| deleted | Status of the deletion of an Amazon ES domain. True if deletion of the domain is complete. False if domain deletion is still in progress. | +| **id** | same as `domainid` | +| **arn** |Amazon Resource Name (ARN) of an Amazon ES domain. | +| exposed\_internet | `exposed_internet` is set to `True` if the ElasticSearch domain has a policy applied to it that makes it internet-accessible. This policy determination is made by using the [policyuniverse](https://github.com/Netflix-Skunkworks/policyuniverse) library. The code for this augmentation is implemented at `cartography.intel.aws.elasticsearch._process_access_policy()`. | + +#### Relationships + +- Elastic Search domains can be members of EC2 Security Groups. + + ``` + (ESDomain)-[MEMBER_OF_EC2_SECURITY_GROUP]->(EC2SecurityGroup) + ``` + +- Elastic Search domains belong to AWS Accounts. + + ``` + (AWSAccount)-[RESOURCE]->(ESDomain) + ``` + +- DNS Records can point to Elastic Search domains. + + ``` + (DNSRecord)-[DNS_POINTS_TO]->(ESDomain) + ``` + +### Endpoint + +Representation of a generic network endpoint. + +| Field | Description | +|-------|-------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| protocol | The protocol of this endpoint | +| port | The port of this endpoint | + + +#### Relationships + +- Endpoints can be installed load balancers, though more specifically we would refer to these Endpoint nodes as [ELBListeners](#endpoint::elblistener). + + ``` + (LoadBalancer)-[ELB_LISTENER]->(Endpoint) + ``` + + +### Endpoint::ELBListener + +Representation of an AWS Elastic Load Balancer [Listener](https://docs.aws.amazon.com/elasticloadbalancing/latest/APIReference/API_LoadBalancer.html). Here, an ELBListener is a more specific type of Endpoint. Here'a [good introduction](https://docs.aws.amazon.com/elasticloadbalancing/2012-06-01/APIReference/Welcome.html). + +| Field | Description | +|-------|-------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| protocol | The protocol of this endpoint | +| port | The port of this endpoint | +| policy\_names | A list of SSL policy names set on the listener. +| **id** | The ELB ID. This is a concatenation of the DNS name, port, and protocol. | +| instance\_port | The port open on the EC2 instance that this listener is connected to | +| instance\_protocol | The protocol defined on the EC2 instance that this listener is connected to | + + +#### Relationships + +- A ELBListener is installed on a load balancer. + + ``` + (LoadBalancer)-[ELB_LISTENER]->(ELBListener) + ``` + +### Endpoint::ELBV2Listener + +Representation of an AWS Elastic Load Balancer V2 [Listener](https://docs.aws.amazon.com/elasticloadbalancing/latest/APIReference/API_Listener.html). + +| Field | Description | +|-------|-------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| protocol | The protocol of this endpoint - One of `'HTTP''HTTPS''TCP''TLS''UDP''TCP_UDP'` | +| port | The port of this endpoint | +| ssl\_policy | Only set for HTTPS or TLS listener. The security policy that defines which protocols and ciphers are supported. | +| targetgrouparn | The ARN of the Target Group, if the Action type is `forward`. | + + +#### Relationships + +- A ELBV2Listener is installed on a LoadBalancerV2. + + ``` + (elbv2)-[r:ELBV2_LISTENER]->(ELBV2Listener) + ``` + + +### Ip + +Represents a generic IP address. + +| Field | Description | +|-------|-------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| **ip** | The IPv4 address | +| **id** | Same as `ip` | + + +#### Relationships + +- DNSRecords can point to IP addresses. + + ``` + (DNSRecord)-[DNS_POINTS_TO]->(Ip) + ``` + + +### IpRule + +Represents a generic IP rule. The creation of this node is currently derived from ingesting AWS [EC2 Security Group](#ec2securitygroup) rules. + +| Field | Description | +|-------|-------------| +| **ruleid** | `{group_id}/{rule_type}/{from_port}{to_port}{protocol}` | +| groupid | The groupid of the EC2 Security Group that this was derived from | +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| protocol | The protocol this rule applies to | +| fromport | Lowest port in the range defined by this rule| +| toport | Highest port in the range defined by this rule| + + +#### Relationships + +- IpRules are defined from EC2SecurityGroups. + + ``` + (IpRule, IpPermissionInbound)-[MEMBER_OF_EC2_SECURITY_GROUP]->(EC2SecurityGroup) + ``` + + +### IpRule::IpPermissionInbound + +An IpPermissionInbound node is a specific type of IpRule. It represents a generic inbound IP-based rules. The creation of this node is currently derived from ingesting AWS [EC2 Security Group](#ec2securitygroup) rules. + +| Field | Description | +|-------|-------------| +| **ruleid** | `{group_id}/{rule_type}/{from_port}{to_port}{protocol}` | +| groupid | The groupid of the EC2 Security Group that this was derived from | +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| protocol | The protocol this rule applies to | +| fromport | Lowest port in the range defined by this rule| +| toport | Highest port in the range defined by this rule| + +#### Relationships + +- IpPermissionInbound rules are defined from EC2SecurityGroups. + + ``` + (IpRule, IpPermissionInbound)-[MEMBER_OF_EC2_SECURITY_GROUP]->(EC2SecurityGroup) + ``` + + +### LoadBalancer + +Represents an AWS Elastic Load Balancer. See [spec for details](https://docs.aws.amazon.com/elasticloadbalancing/2012-06-01/APIReference/API_LoadBalancerDescription.html). + +| Field | Description | +|-------|-------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| scheme| The type of load balancer. Valid only for load balancers in a VPC. If scheme is `internet-facing`, the load balancer has a public DNS name that resolves to a public IP address. If scheme is `internal`, the load balancer has a public DNS name that resolves to a private IP address. | +| name| The name of the load balancer| +| **dnsname** | The DNS name of the load balancer. | +| canonicalhostedzonename| The DNS name of the load balancer | +| **id** | Currently set to the `dnsname` of the load balancer. | +| region| The region of the load balancer | +|createdtime | The date and time the load balancer was created. | +|canonicalhostedzonenameid| The ID of the Amazon Route 53 hosted zone for the load balancer. | +| exposed\_internet | The `exposed_internet` flag is set to `True` when the load balancer's `scheme` field is set to `internet-facing`. This indicates that the load balancer has a public DNS name that resolves to a public IP address. | + + +#### Relationships + +- LoadBalancers can be connected to EC2Instances and therefore expose them. + + ``` + (LoadBalancer)-[EXPOSE]->(EC2Instance) + ``` + +- LoadBalancers can have [source security groups](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-security-groups.html) configured. + + ``` + (LoadBalancer)-[SOURCE_SECURITY_GROUP]->(EC2SecurityGroup) + ``` + +- LoadBalancers can be part of EC2SecurityGroups. + + ``` + (LoadBalancer)-[MEMBER_OF_EC2_SECURITY_GROUP]->(EC2SecurityGroup) + ``` + +- LoadBalancers can be part of EC2 Subnets + + ``` + (LoadBalancer)-[SUBNET]->(EC2Subnet) + ``` + + +- LoadBalancers can be part of EC2 Subnets + + ``` + (LoadBalancer)-[PART_OF_SUBNET]->(EC2Subnet) + ``` + +- LoadBalancers can have listeners configured to accept connections from clients ([good introduction](https://docs.aws.amazon.com/elasticloadbalancing/2012-06-01/APIReference/Welcome.html)). + + ``` + (LoadBalancer)-[ELB_LISTENER]->(Endpoint, ELBListener) + ``` + +- LoadBalancers are part of AWSAccounts. + + ``` + (AWSAccount)-[RESOURCE]->(LoadBalancer) + ``` + +- AWSDNSRecords and DNSRecords point to LoadBalancers. + + ``` + (AWSDNSRecord, DNSRecord)-[DNS_POINTS_TO]->(LoadBalancer) + ``` + +### LoadBalancerV2 + +Represents an Elastic Load Balancer V2 ([Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html) or [Network Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/introduction.html).) API reference [here](https://docs.aws.amazon.com/elasticloadbalancing/latest/APIReference/API_LoadBalancer.html). + +| Field | Description | +|-------|-------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| scheme| The type of load balancer. If scheme is `internet-facing`, the load balancer has a public DNS name that resolves to a public IP address. If scheme is `internal`, the load balancer has a public DNS name that resolves to a private IP address. | +| name| The name of the load balancer| +| **dnsname** | The DNS name of the load balancer. | +| exposed_internet | The `exposed_internet` flag is set to `True` when the load balancer's `scheme` field is set to `internet-facing`. This indicates that the load balancer has a public DNS name that resolves to a public IP address. | +| **id** | Currently set to the `dnsname` of the load balancer. | +| type | Can be `application` or `network` | +| region| The region of the load balancer | +|createdtime | The date and time the load balancer was created. | +|canonicalhostedzonenameid| The ID of the Amazon Route 53 hosted zone for the load balancer. | + + +#### Relationships + + +- LoadBalancerV2's can be connected to EC2Instances and therefore expose them. + + ``` + (LoadBalancerV2)-[EXPOSE]->(EC2Instance) + ``` + +- LoadBalancerV2's can be part of EC2SecurityGroups but only if their `type` = "application". NLBs don't have SGs. + + ``` + (LoadBalancerV2)-[MEMBER_OF_EC2_SECURITY_GROUP]->(EC2SecurityGroup) + ``` + +- LoadBalancerV2's can be part of EC2 Subnets + + ``` + (LoadBalancerV2)-[SUBNET]->(EC2Subnet) + ``` + +- LoadBalancerV2's can be part of EC2 Subnets + + ``` + (LoadBalancerV2)-[PART_OF_SUBNET]->(EC2Subnet) + ``` + +- LoadBalancerV2's have [listeners](https://docs.aws.amazon.com/elasticloadbalancing/latest/APIReference/API_Listener.html): + + ``` + (LoadBalancerV2)-[ELBV2_LISTENER]->(ELBV2Listener) + ``` + +### Nameserver + +Represents a DNS nameserver. +| Field | Description | +|-------|-------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| id | The address of the nameserver| +| name | The name or address of the nameserver| + +#### Relationships + +- Nameservers are nameservers for to DNSZone. + + ``` + (Nameserver)-[NAMESERVER]->(DNSZone) + ``` + +### NetworkInterface + +Representation of a generic Network Interface. Currently however, we only create NetworkInterface nodes from AWS [EC2 Instances](#ec2instance). The spec for an AWS EC2 network interface is [here](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_InstanceNetworkInterface.html). + +| Field | Description | +|-------|-------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| mac\_address| The MAC address of the network interface| +| description | Description of the network interface| +| private\_ip\_address| The primary IPv4 address of the network interface within the subnet | +| **id** | The ID of the network interface. (known as `networkInterfaceId` in EC2) | +| private\_dns\_name| The private DNS name | +| status | Status of the network interface. Valid Values: ``available \| associated \| attaching \| in-use \| detaching `` | +| subnetid | The ID of the subnet | +| interface_type | Describes the type of network interface. Valid values: `` interface \| efa `` | +| requester_id | Id of the requester, e.g. `amazon-elb` for ELBs | +| requester_managed | Indicates whether the interface is managed by the requester | +| source_dest_check | Indicates whether to validate network traffic to or from this network interface. | +| public_ip | Public IPv4 address attached to the interface | + + +#### Relationships + +- EC2 Network Interfaces belong to AWS accounts. + + (NetworkInterface)<-[:RESOURCE]->(:AWSAccount) + +- Network interfaces can be connected to EC2Subnets. + + ``` + (NetworkInterface)-[PART_OF_SUBNET]->(EC2Subnet) + ``` + +- Network interfaces can be members of EC2SecurityGroups. + + ``` + (NetworkInterface)-[MEMBER_OF_EC2_SECURITY_GROUP]->(EC2SecurityGroup) + ``` + +- EC2Instances can have NetworkInterfaces connected to them. + + ``` + (EC2Instance)-[NETWORK_INTERFACE]->(NetworkInterface) + ``` + +- LoadBalancers can have NetworkInterfaces connected to them. + + ``` + (LoadBalancer)-[NETWORK_INTERFACE]->(NetworkInterface) + ``` + +- LoadBalancerV2s can have NetworkInterfaces connected to them. + + ``` + (LoadBalancerV2)-[NETWORK_INTERFACE]->(NetworkInterface) + ``` +- EC2PrivateIps are connected to a NetworkInterface. + + ``` + (NetworkInterface)-[PRIVATE_IP_ADDRESS]->(EC2PrivateIp) + ``` +- EC2 Network Interfaces can be tagged with AWSTags. + + ``` + (NetworkInterface)-[TAGGED]->(AWSTag) + ``` + +### AWSPeeringConnection + +Representation of an AWS [PeeringConnection](https://docs.aws.amazon.com/vpc/latest/peering/what-is-vpc-peering.html) implementing an AWS [VpcPeeringConnection](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_VpcPeeringConnection.html) object. + +| Field | Description | +|-------|-------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| **id** | vpcPeeringConnectionId, The ID of the VPC peering connection. | +| allow_dns_resolution_from_remote_vpc | Indicates whether a local VPC can resolve public DNS hostnames to private IP addresses when queried from instances in a peer VPC. | +| allow_egress_from_local_classic_link_to_remote_vpc | Indicates whether a local ClassicLink connection can communicate with the peer VPC over the VPC peering connection. | +| allow_egress_from_local_vpc_to_remote_classic_link | Indicates whether a local VPC can communicate with a ClassicLink connection in the peer VPC over the VPC peering connection. | +| requester_region | Peering requester region | +| accepter_region | Peering accepter region | +| status_code | The status of the VPC peering connection. | +| status_message | A message that provides more information about the status, if applicable. | + +#### Relationships + +- `AWSVpc` is an accepter or requester vpc. + ``` + (AWSVpc)<-[REQUESTER_VPC]-(AWSPeeringConnection) + (AWSVpc)<-[ACCEPTER_VPC]-(AWSPeeringConnection) + ``` + +- `AWSCidrBlock` is an accepter or requester cidr. + ``` + (AWSCidrBlock)<-[REQUESTER_CIDR]-(AWSPeeringConnection) + (AWSCidrBlock)<-[ACCEPTER_CIDR]-(AWSPeeringConnection) + ``` + +### RedshiftCluster + +Representation of an AWS [RedshiftCluster](https://docs.aws.amazon.com/redshift/latest/APIReference/API_Cluster.html). + +| Field | Description | +|-------|-------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| **arn** | The Amazon Resource Name (ARN) for the Redshift cluster | +| **id** | Same as arn | +| availability\_zone | Specifies the name of the Availability Zone the cluster is located in | +| cluster\_create\_time | Provides the date and time the cluster was created | +| cluster\_identifier | The unique identifier of the cluster. | +| cluster_revision_number | The specific revision number of the database in the cluster. | +| db_name | The name of the initial database that was created when the cluster was created. This same name is returned for the life of the cluster. If an initial database was not specified, a database named devdev was created by default. | +| encrypted | Specifies whether the cluster has encryption enabled | +| cluster\_status | The current state of the cluster. | +| endpoint\_address | DNS name of the Redshift cluster endpoint | +| endpoint\_port | The port that the Redshift cluster's endpoint is listening on | +| master\_username | The master user name for the cluster. This name is used to connect to the database that is specified in the DBName parameter. | +| node_type | The node type for the nodes in the cluster. | +| number\_of\_nodes | The number of compute nodes in the cluster. | +| publicly_accessible | A boolean value that, if true, indicates that the cluster can be accessed from a public network. | +| vpc_id | The identifier of the VPC the cluster is in, if the cluster is in a VPC. | + + +#### Relationships + +- Redshift clusters are part of AWS Accounts. + + ``` + (AWSAccount)-[RESOURCE]->(RedshiftCluster) + ``` + +- Redshift clusters can be members of EC2 Security Groups. + + ``` + (RedshiftCluster)-[MEMBER_OF_EC2_SECURITY_GROUP]->(EC2SecurityGroup) + ``` + +- Redshift clusters may assume IAM roles. See [this article](https://docs.aws.amazon.com/redshift/latest/mgmt/authorizing-redshift-service.html). + + ``` + (RedshiftCluster)-[STS_ASSUMEROLE_ALLOW]->(AWSPrincipal) + ``` + +- Redshift clusters can be members of AWSVpcs. + + ``` + (RedshiftCluster)-[MEMBER_OF_AWS_VPC]->(AWSVpc) + ``` + +### RDSCluster + +Representation of an AWS Relational Database Service [DBCluster](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DBCluster.html) + +| Field | Description | +|-------|-------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| **id** | Same as ARN | +| **arn** | The Amazon Resource Name (ARN) for the DB cluster. | +| **allocated\_storage** | For all database engines except Amazon Aurora, AllocatedStorage specifies the allocated storage size in gibibytes (GiB). For Aurora, AllocatedStorage always returns 1, because Aurora DB cluster storage size isn't fixed, but instead automatically adjusts as needed. | +| **availability\_zones** | Provides the list of Availability Zones (AZs) where instances in the DB cluster can be created. | +| **backup\_retention\_period** | Specifies the number of days for which automatic DB snapshots are retained. | +| **character\_set\_name** | If present, specifies the name of the character set that this cluster is associated with. | +| **database\_name** | Contains the name of the initial database of this DB cluster that was provided at create time, if one was specified when the DB cluster was created. This same name is returned for the life of the DB cluster. | +| **db\_cluster\_identifier** | Contains a user-supplied DB cluster identifier. This identifier is the unique key that identifies a DB cluster. | +| **db\_parameter\_group** | Specifies the name of the DB cluster parameter group for the DB cluster. | +| **status** | Specifies the current state of this DB cluster. | +| **earliest\_restorable\_time** | The earliest time to which a database can be restored with point-in-time restore. | +| **endpoint** | Specifies the connection endpoint for the primary instance of the DB cluster. | +| **reader\_endpoint** | The reader endpoint for the DB cluster. The reader endpoint for a DB cluster load-balances connections across the Aurora Replicas that are available in a DB cluster. As clients request new connections to the reader endpoint, Aurora distributes the connection requests among the Aurora Replicas in the DB cluster. This functionality can help balance your read workload across multiple Aurora Replicas in your DB cluster. If a failover occurs, and the Aurora Replica that you are connected to is promoted to be the primary instance, your connection is dropped. To continue sending your read workload to other Aurora Replicas in the cluster, you can then reconnect to the reader endpoint. | +| **multi\_az** | Specifies whether the DB cluster has instances in multiple Availability Zones. | +| **engine** | The name of the database engine to be used for this DB cluster. | +| **engine\_version** | Indicates the database engine version. | +| **latest\_restorable\_time** | Specifies the latest time to which a database can be restored with point-in-time restore. | +| **port** | Specifies the port that the database engine is listening on. | +| **master\_username** | Contains the master username for the DB cluster. | +| **preferred\_backup\_window** | Specifies the daily time range during which automated backups are created if automated backups are enabled, as determined by the BackupRetentionPeriod. | +| **preferred\_maintenance\_window** | Specifies the weekly time range during which system maintenance can occur, in Universal Coordinated Time (UTC). | +| **hosted\_zone\_id** | Specifies the ID that Amazon Route 53 assigns when you create a hosted zone. | +| **storage\_encrypted** | Specifies whether the DB cluster is encrypted. | +| **kms\_key\_id** | If StorageEncrypted is enabled, the AWS KMS key identifier for the encrypted DB cluster. The AWS KMS key identifier is the key ARN, key ID, alias ARN, or alias name for the AWS KMS customer master key (CMK). | +| **db\_cluster\_resource\_id** | The AWS Region-unique, immutable identifier for the DB cluster. This identifier is found in AWS CloudTrail log entries whenever the AWS KMS CMK for the DB cluster is accessed. | +| **clone\_group\_id** | Identifies the clone group to which the DB cluster is associated. | +| **cluster\_create\_time** | Specifies the time when the DB cluster was created, in Universal Coordinated Time (UTC). | +| **earliest\_backtrack\_time** | The earliest time to which a DB cluster can be backtracked. | +| **backtrack\_window** | The target backtrack window, in seconds. If this value is set to 0, backtracking is disabled for the DB cluster. Otherwise, backtracking is enabled. | +| **backtrack\_consumed\_change\_records** | The number of change records stored for Backtrack. | +| **capacity** | The current capacity of an Aurora Serverless DB cluster. The capacity is 0 (zero) when the cluster is paused. | +| **engine\_mode** | The DB engine mode of the DB cluster, either provisioned, serverless, parallelquery, global, or multimaster. | +| **scaling\_configuration\_info\_min\_capacity** | The minimum capacity for the Aurora DB cluster in serverless DB engine mode. | +| **scaling\_configuration\_info\_max\_capacity** | The maximum capacity for an Aurora DB cluster in serverless DB engine mode. | +| **scaling\_configuration\_info\_auto\_pause** | A value that indicates whether automatic pause is allowed for the Aurora DB cluster in serverless DB engine mode. | +| **deletion\_protection** | Indicates if the DB cluster has deletion protection enabled. The database can't be deleted when deletion protection is enabled. | + +#### Relationships + +- RDS Clusters are part of AWS Accounts. + + ``` + (AWSAccount)-[RESOURCE]->(RDSCluster) + ``` + +- Some RDS instances are cluster members. + + ``` + (replica:RDSInstance)-[IS_CLUSTER_MEMBER_OF]->(source:RDSCluster) + ``` + +### RDSInstance + +Representation of an AWS Relational Database Service [DBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DBInstance.html). + +| Field | Description | +|-------|-------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| **id** | Same as ARN | +| **arn** | The Amazon Resource Name (ARN) for the DB instance. | +| **db\_instance_identifier** | Contains a user-supplied database identifier. This identifier is the unique key that identifies a DB instance. | +| availability\_zone | Specifies the name of the Availability Zone the DB instance is located in. | +| backup\_retention\_period | Specifies the number of days for which automatic DB snapshots are retained. | +| preferred\_backup\_window | Specifies the daily time range during which automated backups are created if automated backups are enabled, as determined by the BackupRetentionPeriod. | +| ca\_certificate\_identifier | The identifier of the CA certificate for this DB instance. | +| db\_cluster\_identifier | If the DB instance is a member of a DB cluster, contains the name of the DB cluster that the DB instance is a member of. | +| db\_instance\_class | Contains the name of the compute and memory capacity class of the DB instance. | +| db\_instance\_port | Specifies the port that the DB instance listens on. | +| dbi\_resource\_id | The AWS Region-unique, immutable identifier for the DB instance. This identifier is found in AWS CloudTrail log entries whenever the AWS KMS key for the DB instance is accessed. | +| db\_name | The meaning of this parameter differs according to the database engine you use. For example, this value returns MySQL, MariaDB, or PostgreSQL information when returning values from CreateDBInstanceReadReplica since Read Replicas are only supported for these engines.

**MySQL, MariaDB, SQL Server, PostgreSQL:** Contains the name of the initial database of this instance that was provided at create time, if one was specified when the DB instance was created. This same name is returned for the life of the DB instance.

**Oracle:** Contains the Oracle System ID (SID) of the created DB instance. Not shown when the returned parameters do not apply to an Oracle DB instance. | +| engine | Provides the name of the database engine to be used for this DB instance. | +| engine\_version | Indicates the database engine version. | +| enhanced\_monitoring\_resource\_arn | The Amazon Resource Name (ARN) of the Amazon CloudWatch Logs log stream that receives the Enhanced Monitoring metrics data for the DB instance. | +| instance\_create\_time | Provides the date and time the DB instance was created. | +| kms\_key\_id | If StorageEncrypted is true, the AWS KMS key identifier for the encrypted DB instance. | +| master\_username | Contains the master username for the DB instance. | +| monitoring\_role\_arn | The ARN for the IAM role that permits RDS to send Enhanced Monitoring metrics to Amazon CloudWatch Logs. | +| multi\_az | Specifies if the DB instance is a Multi-AZ deployment. | +| performance\_insights\_enabled | True if Performance Insights is enabled for the DB instance, and otherwise false. | +| preferred\_maintenance\_window | Specifies the weekly time range during which system maintenance can occur, in Universal Coordinated Time (UTC). | +| publicly\_accessible | Specifies the accessibility options for the DB instance. A value of true specifies an Internet-facing instance with a publicly resolvable DNS name, which resolves to a public IP address. A value of false specifies an internal instance with a DNS name that resolves to a private IP address. | +| storage\_encrypted | Specifies whether the DB instance is encrypted. | +| endpoint\_address | DNS name of the RDS instance| +| endpoint\_port | The port that the RDS instance is listening on | +| endpoint\_hostedzoneid | The AWS DNS Zone ID that is associated with the RDS instance's DNS entry | +| auto\_minor\_version\_upgrade | Specifies whether minor version upgrades are applied automatically to the DB instance during the maintenance window | +| iam\_database\_authentication\_enabled | Specifies if mapping of AWS Identity and Access Management (IAM) accounts to database accounts is enabled | + + + +#### Relationships + +- RDS Instances are part of AWS Accounts. + + ``` + (AWSAccount)-[RESOURCE]->(RDSInstance) + ``` + +- Some RDS instances are Read Replicas. + + ``` + (replica:RDSInstance)-[IS_READ_REPLICA_OF]->(source:RDSInstance) + ``` + +- RDS Instances can be members of EC2 Security Groups. + + ``` + (RDSInstance)-[m:MEMBER_OF_EC2_SECURITY_GROUP]->(EC2SecurityGroup) + ``` + +- RDS Instances are connected to DB Subnet Groups. + + ``` + (RDSInstance)-[:MEMBER_OF_DB_SUBNET_GROUP]->(DBSubnetGroup) + ``` + +- RDS Instances can be tagged with AWSTags. + + ``` + (RDSInstance)-[TAGGED]->(AWSTag) + ``` + +### RDSSnapshot + +Representation of an AWS Relational Database Service [DBSnapshot](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DBSnapshot.html). + +| Field | Description | +|-------|-------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| **id** | Same as ARN | +| **arn** | The Amazon Resource Name (ARN) for the DB snapshot. | +| **db\_snapshot\_identifier** | Specifies the identifier for the DB snapshot. | +| db\_instance\_identifier | Specifies the DB instance identifier of the DB instance this DB snapshot was created from. | +| snapshot\_create\_time | Specifies when the snapshot was taken in Coordinated Universal Time (UTC). Changes for the copy when the snapshot is copied. | +| engine | Specifies the name of the database engine. | +| allocated\_storage | Specifies the allocated storage size in gibibytes (GiB). | +| status | Specifies the status of this DB snapshot. | +| port | Specifies the port that the database engine was listening on at the time of the snapshot. | +| availability\_zone | Specifies the name of the Availability Zone the DB instance was located in at the time of the DB snapshot. | +| vpc\_id | Provides the VPC ID associated with the DB snapshot. | +| instance\_create\_time | Specifies the time in Coordinated Universal Time (UTC) when the DB instance, from which the snapshot was taken, was created. | +| master\_username | Provides the master username for the DB snapshot. | +| engine\_version | Specifies the version of the database engine. | +| license\_model | License model information for the restored DB instance. | +| snapshot\_type | Provides the type of the DB snapshot. | +| iops | Specifies the Provisioned IOPS (I/O operations per second) value of the DB instance at the time of the snapshot. | +| option\_group\_name | Provides the option group name for the DB snapshot. | +| percent\_progress | The percentage of the estimated data that has been transferred. | +| source\_region | The AWS Region that the DB snapshot was created in or copied from. | +| source\_db\_snapshot\_identifier | The DB snapshot Amazon Resource Name (ARN) that the DB snapshot was copied from. It only has a value in the case of a cross-account or cross-Region copy. | +| storage\_type | Specifies the storage type associated with DB snapshot. | +| tde\_credential\_arn | The ARN from the key store with which to associate the instance for TDE encryption. | +| encrypted | Specifies whether the DB snapshot is encrypted. | +| kms\_key\_id | If Encrypted is true, the AWS KMS key identifier for the encrypted DB snapshot. The AWS KMS key identifier is the key ARN, key ID, alias ARN, or alias name for the KMS key. | +| timezone | The time zone of the DB snapshot. In most cases, the Timezone element is empty. Timezone content appears only for snapshots taken from Microsoft SQL Server DB instances that were created with a time zone specified. | +| iam\_database\_authentication\_enabled | True if mapping of AWS Identity and Access Management (IAM) accounts to database accounts is enabled, and otherwise false. | +| processor\_features | The number of CPU cores and the number of threads per core for the DB instance class of the DB instance when the DB snapshot was created. | +| dbi\_resource\_id | The identifier for the source DB instance, which can't be changed and which is unique to an AWS Region. | +| original\_snapshot\_create\_time | Specifies the time of the CreateDBSnapshot operation in Coordinated Universal Time (UTC). Doesn't change when the snapshot is copied. | +| snapshot\_database\_time | The timestamp of the most recent transaction applied to the database that you're backing up. Thus, if you restore a snapshot, SnapshotDatabaseTime is the most recent transaction in the restored DB instance. In contrast, originalSnapshotCreateTime specifies the system time that the snapshot completed. If you back up a read replica, you can determine the replica lag by comparing SnapshotDatabaseTime with originalSnapshotCreateTime. For example, if originalSnapshotCreateTime is two hours later than SnapshotDatabaseTime, then the replica lag is two hours. | +| snapshot\_target | Specifies where manual snapshots are stored: AWS Outposts or the AWS Region. | +| storage\_throughput | | +| region | The AWS region of the snapshot | + + + +#### Relationships + +- RDS Snapshots are part of AWS Accounts. + + ``` + (AWSAccount)-[RESOURCE]->(RDSSnapshot) + ``` + +- RDS Snapshots are connected to DB Instances. + + ``` + (RDSSnapshot)-[:IS_SNAPSHOT_SOURCE]->(RDSInstance) + ``` + +- RDS Snapshots can be tagged with AWSTags. + + ``` + (RDSSnapshot)-[TAGGED]->(AWSTag) + ``` + +### S3Acl + +Representation of an AWS S3 [Access Control List](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_S3AccessControlList.html). + +| Field | Description | +|-------|-------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| granteeid | The ID of the grantee as defined [here](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_S3Grantee.html) | +| displayname | Optional display name for the ACL | +| permission | Valid values: ``FULL_CONTROL \| READ \| WRITE \| READ_ACP \| WRITE_ACP`` (ACP = Access Control Policy)| +| **id** | The ID of this ACL| +| type | The type of the [grantee](https://docs.aws.amazon.com/AmazonS3/latest/API/API_Grantee.html). Either ``CanonicalUser \| AmazonCustomerByEmail \| Group``. | +| ownerid| The ACL's owner ID as defined [here](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_S3ObjectOwner.html)| + + +#### Relationships + + +- S3 Access Control Lists apply to S3 buckets. + + ``` + (S3Acl)-[APPLIES_TO]->(S3Bucket) + ``` + +### S3Bucket + +Representation of an AWS S3 [Bucket](https://docs.aws.amazon.com/AmazonS3/latest/API/API_Bucket.html). + +| Field | Description | +|-------|-------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| creationdate | Date-time when the bucket was created | +| **id** | Same as `name`, as seen below | +| name | The name of the bucket. This is guaranteed to be [globally unique](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3.html#S3.Client.list_buckets) | +| anonymous\_actions | List of anonymous internet accessible actions that may be run on the bucket. This list is taken by running [policyuniverse](https://github.com/Netflix-Skunkworks/policyuniverse#internet-accessible-policy) on the policy that applies to the bucket. | +| anonymous\_access | True if this bucket has a policy applied to it that allows anonymous access or if it is open to the internet. These policy determinations are made by using the [policyuniverse](https://github.com/Netflix-Skunkworks/policyuniverse) library. | +| region | The region that the bucket is in. Only defined if the S3 bucket has a [location constraint](https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingBucket.html#access-bucket-intro) | +| default\_encryption | True if this bucket has [default encryption](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-encryption.html) enabled. | +| encryption\_algorithm | The encryption algorithm used for default encryption. Only defined if the S3 bucket has default encryption enabled. | +| encryption\_key\_id | The KMS key ID used for default encryption. Only defined if the S3 bucket has SSE-KMS enabled as the default encryption method. | +| bucket\_key\_enabled | True if a bucket key is enabled, when using SSE-KMS as the default encryption method. | +| versioning\_status | The versioning state of the bucket. | +| mfa\_delete | Specifies whether MFA delete is enabled in the bucket versioning configuration. | +| block\_public\_acls | Specifies whether Amazon S3 should block public access control lists (ACLs) for this bucket and objects in this bucket. | +| ignore\_public\_acls | Specifies whether Amazon S3 should ignore public ACLs for this bucket and objects in this bucket. | +| block\_public\_acls | Specifies whether Amazon S3 should block public bucket policies for this bucket. | +| restrict\_public\_buckets | Specifies whether Amazon S3 should restrict public bucket policies for this bucket. | + +#### Relationships + +- S3Buckets are resources in an AWS Account. + + ``` + (AWSAccount)-[RESOURCE]->(S3Bucket) + ``` + +- S3 Access Control Lists apply to S3 buckets. + + ``` + (S3Acl)-[APPLIES_TO]->(S3Bucket) + ``` + +- S3 Buckets can be tagged with AWSTags. + + ``` + (S3Bucket)-[TAGGED]->(AWSTag) + ``` + +### S3PolicyStatement + +Representation of an AWS S3 [Bucket Policy Statements](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-policies.html) for controlling ownership of objects and ACLs of the bucket. + +| Field | Description | +|-------|-------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| policy_id | Optional string "Id" for the bucket's policy | +| policy_version| Version of the bucket's policy | +| **id** | The unique identifier for a bucket policy statement.
If the statement has an Sid the id will be calculated as _S3Bucket.id_/policy_statement/_index of statement in statement_/_Sid_.
If the statement has no Sid the id will be calculated as _S3Bucket.id_/policy_statement/_index of statement in statement_/ | +| effect | Specifies "Deny" or "Allow" for the policy statement | +| action | Specifies permissions that policy statement applies to, as defined [here](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html) | +| resource | Specifies the resource the bucket policy statement is based on | +| condition | Specifies conditions where permissions are granted: [examples](https://docs.aws.amazon.com/AmazonS3/latest/userguide/amazon-s3-policy-keys.html) | +| sid | Optional string to label the specific bucket policy statement | + +#### Relationships + +- S3PolicyStatements define the policy for S3 Buckets. + + ``` + (:S3Bucket)-[:POLICY_STATEMENT]->(:S3PolicyStatement) + ``` + + +### KMSKey + +Representation of an AWS [KMS Key](https://docs.aws.amazon.com/kms/latest/APIReference/API_KeyListEntry.html). + +| Field | Description | +|-------|-------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| **id** | The id of the key| +| name | The name of the key | +| description | The description of the key | +| enabled | Whether the key is enabled | +| region | The region where key is created| +| anonymous\_actions | List of anonymous internet accessible actions that may be run on the key. | +| anonymous\_access | True if this key has a policy applied to it that allows anonymous access or if it is open to the internet. | + +#### Relationships + +- AWS KMS Keys are resources in an AWS Account. + + ``` + (AWSAccount)-[RESOURCE]->(KMSKey) + ``` + +- AWS KMS Key may also be refered as KMSAlias via aliases. + + ``` + (KMSKey)-[KNOWN_AS]->(KMSAlias) + ``` + +- AWS KMS Key may also have KMSGrant based on grants. + + ``` + (KMSGrant)-[APPLIED_ON]->(KMSKey) + ``` + +### KMSAlias + +Representation of an AWS [KMS Key Alias](https://docs.aws.amazon.com/kms/latest/APIReference/API_AliasListEntry.html). + +| Field | Description | +|-------|-------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| **id** | The arn of the alias| +| aliasname | The name of the alias | +| targetkeyid | The kms key id associated via this alias | + +#### Relationships + +- AWS KMS Key may also be refered as KMSAlias via aliases. + + ``` + (KMSKey)-[KNOWN_AS]->(KMSAlias) + ``` + +### KMSGrant + +Representation of an AWS [KMS Key Grant](https://docs.aws.amazon.com/kms/latest/APIReference/API_GrantListEntry.html). + +| Field | Description | +|-------|-------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| **id** | The id of the key grant| +| name | The name of the key grant | +| granteeprincipal | The principal associated with the key grant | +| creationdate | ISO 8601 date-time string when the grant was created | + +#### Relationships + +- AWS KMS Key may also have KMSGrant based on grants. + + ``` + (KMSGrant)-[APPLIED_ON]->(KMSKey) + ``` + +### APIGatewayRestAPI + +Representation of an AWS [API Gateway REST API](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-rest-api.html). + +| Field | Description | +|-------|-------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| **id** | The id of the REST API| +| createddate | The timestamp when the REST API was created | +| version | The version identifier for the API | +| minimumcompressionsize | A nullable integer that is used to enable or disable the compression of the REST API | +| disableexecuteapiendpoint | Specifies whether clients can invoke your API by using the default `execute-api` endpoint | +| region | The region where the REST API is created | +| anonymous\_actions | List of anonymous internet accessible actions that may be run on the API. | +| anonymous\_access | True if this API has a policy applied to it that allows anonymous access or if it is open to the internet. | + +#### Relationships + +- AWS API Gateway REST APIs are resources in an AWS Account. + + ``` + (AWSAccount)-[RESOURCE]->(APIGatewayRestAPI) + ``` + +- AWS API Gateway REST APIs may be associated with an API Gateway Stage. + + ``` + (APIGatewayRestAPI)-[ASSOCIATED_WITH]->(APIGatewayStage) + ``` + +- AWS API Gateway REST APIs may also have API Gateway Resource resources. + + ``` + (APIGatewayRestAPI)-[RESOURCE]->(APIGatewayResource) + ``` + +### APIGatewayStage + +Representation of an AWS [API Gateway Stage](https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-stages.html). + +| Field | Description | +|-------|-------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| **id** | The name of the API Gateway Stage| +| createddate | The timestamp when the stage was created | +| deploymentid | The identifier of the Deployment that the stage points to. | +| clientcertificateid | The identifier of a client certificate for an API stage. | +| cacheclusterenabled | Specifies whether a cache cluster is enabled for the stage. | +| cacheclusterstatus | The status of the cache cluster for the stage, if enabled. | +| tracingenabled | Specifies whether active tracing with X-ray is enabled for the Stage | +| webaclarn | The ARN of the WebAcl associated with the Stage | + +#### Relationships + +- AWS API Gateway REST APIs may be associated with an API Gateway Stage. + + ``` + (APIGatewayRestAPI)-[ASSOCIATED_WITH]->(APIGatewayStage) + ``` + +- AWS API Gateway Stage may also contain a Client Certificate. + + ``` + (APIGatewayStage)-[HAS_CERTIFICATE]->(APIGatewayClientCertificate) + ``` + +### APIGatewayClientCertificate + +Representation of an AWS [API Gateway Client Certificate](https://docs.aws.amazon.com/apigateway/api-reference/resource/client-certificate/). + +| Field | Description | +|-------|-------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| **id** | The identifier of the client certificate | +| createddate | The timestamp when the client certificate was created | +| expirationdate | The timestamp when the client certificate will expire | + +#### Relationships + +- AWS API Gateway Stage may also contain a Client Certificate. + + ``` + (APIGatewayStage)-[HAS_CERTIFICATE]->(APIGatewayClientCertificate) + ``` + +### APIGatewayResource + +Representation of an AWS [API Gateway Resource](https://docs.aws.amazon.com/apigateway/api-reference/resource/resource/). + +| Field | Description | +|-------|-------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| **id** | The id of the REST API| +| path | The timestamp when the REST API was created | +| pathpart | The version identifier for the API | +| parentid | A nullable integer that is used to enable or disable the compression of the REST API | + +#### Relationships + +- AWS API Gateway REST APIs may also have API Gateway Resource resources. + + ``` + (APIGatewayRestAPI)-[RESOURCE]->(APIGatewayResource) + ``` + +### AutoScalingGroup + +Representation of an AWS [Auto Scaling Group Resource](https://docs.aws.amazon.com/autoscaling/ec2/userguide/AutoScalingGroup.html). + +| Field | Description | +|-------|-------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| **arn** | The ARN of the Auto Scaling Group| +| name | The name of the Auto Scaling group. | +| createdtime | The date and time the group was created. | +| launchconfigurationname | The name of the associated launch configuration. | +| launchtemplatename | The name of the launch template. | +| launchtemplateid | The ID of the launch template. | +| launchtemplateversion | The version number of the launch template. | +| maxsize | The maximum size of the group.| +| minsize | The minimum size of the group.| +| defaultcooldown | The duration of the default cooldown period, in seconds. | +| desiredcapacity | The desired size of the group. | +| healthchecktype | The service to use for the health checks. | +| healthcheckgraceperiod | The amount of time, in seconds, that Amazon EC2 Auto Scaling waits before checking the health status of an EC2 instance that has come into service.| +| status | The current state of the group when the DeleteAutoScalingGroup operation is in progress. | +| newinstancesprotectedfromscalein | Indicates whether newly launched instances are protected from termination by Amazon EC2 Auto Scaling when scaling in.| +| maxinstancelifetime | The maximum amount of time, in seconds, that an instance can be in service. | +| capacityrebalance | Indicates whether Capacity Rebalancing is enabled. | +| region | The region of the auto scaling group. | + + +[Link to API Documentation](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_AutoScalingGroup.html) of AWS Auto Scaling Groups + +#### Relationships + +- AWS Auto Scaling Groups are a resource under the AWS Account. + + ``` + (AWSAccount)-[RESOURCE]->(AutoScalingGroup) + ``` +- AWS Auto Scaling Groups has one or more subnets/vpc identifiers. + + ``` + (AutoScalingGroup)-[VPC_IDENTIFIER]->(EC2Subnet) + ``` +- AWS EC2 Instances are members of one or more AWS Auto Scaling Groups. + + ``` + (EC2Instance)-[MEMBER_AUTO_SCALE_GROUP]->(AutoScalingGroup) + ``` +- AWS Auto Scaling Groups have Launch Configurations + + ``` + (AutoScalingGroup)-[HAS_LAUNCH_CONFIG]->(LaunchConfiguration) + ``` +- AWS Auto Scaling Groups have Launch Templates + + ``` + (AutoScalingGroup)-[HAS_LAUNCH_TEMPLATE]->(LaunchTemplate) + ``` + +### EC2Image + +Representation of an AWS [EC2 Images (AMIs)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMIs.html). + +| Field | Description | +|-------|-------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| **id** | The ID of the AMI.| +| name | The name of the AMI that was provided during image creation. | +| creationdate | The date and time the image was created. | +| architecture | The architecture of the image. | +| location | The location of the AMI.| +| type | The type of image.| +| ispublic | Indicates whether the image has public launch permissions. | +| platform | This value is set to `windows` for Windows AMIs; otherwise, it is blank. | +| usageoperation | The operation of the Amazon EC2 instance and the billing code that is associated with the AMI. | +| state | The current state of the AMI.| +| description | The description of the AMI that was provided during image creation.| +| enasupport | Specifies whether enhanced networking with ENA is enabled.| +| hypervisor | The hypervisor type of the image.| +| rootdevicename | The device name of the root device volume (for example, `/dev/sda1` ). | +| rootdevicetype | The type of root device used by the AMI. | +| virtualizationtype | The type of virtualization of the AMI. | +| bootmode | The boot mode of the image. | +| region | The region of the image. | + + +[Link to API Documentation](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_Image.html) of EC2 Images + +#### Relationships + +- AWS EC2 Images (AMIs) are a resource under the AWS Account. + + ``` + (AWSAccount)-[RESOURCE]->(EC2Image) + ``` + +### EC2ReservedInstance + +Representation of an AWS [EC2 Reserved Instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-reserved-instances.html). + +| Field | Description | +|-------|-------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| **id** | The ID of the Reserved Instance.| +| availabilityzone | The Availability Zone in which the Reserved Instance can be used. | +| duration | The duration of the Reserved Instance, in seconds. | +| end | The time when the Reserved Instance expires. | +| start | The date and time the Reserved Instance started.| +| count | The number of reservations purchased.| +| type | The instance type on which the Reserved Instance can be used. | +| productdescription | The Reserved Instance product platform description. | +| state | The state of the Reserved Instance purchase. | +| currencycode | The currency of the Reserved Instance. It's specified using ISO 4217 standard currency codes.| +| instancetenancy | The tenancy of the instance.| +| offeringclass | The offering class of the Reserved Instance.| +| offeringtype | The Reserved Instance offering type.| +| scope | The scope of the Reserved Instance.| +| fixedprice | The purchase price of the Reserved Instance. | +| region | The region of the reserved instance. | + +#### Relationships + +- AWS EC2 Reserved Instances are a resource under the AWS Account. + + ``` + (AWSAccount)-[RESOURCE]->(EC2ReservedInstance) + ``` + +### SecretsManagerSecret + +Representation of an AWS [Secrets Manager Secret](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_SecretListEntry.html) + +| Field | Description | +|-------|-------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| **id** | The arn of the secret. | +| created\_date | The date and time when a secret was created. | +| deleted\_date | The date and time the deletion of the secret occurred. Not present on active secrets. The secret can be recovered until the number of days in the recovery window has passed, as specified in the RecoveryWindowInDays parameter of the DeleteSecret operation. | +| description | The user-provided description of the secret. | +| kms\_key\_id | The ARN or alias of the AWS KMS customer master key (CMK) used to encrypt the SecretString and SecretBinary fields in each version of the secret. If you don't provide a key, then Secrets Manager defaults to encrypting the secret fields with the default KMS CMK, the key named awssecretsmanager, for this account. | +| last\_accessed\_date | The last date that this secret was accessed. This value is truncated to midnight of the date and therefore shows only the date, not the time. | +| last\_changed\_date | The last date and time that this secret was modified in any way. | +| last\_rotated\_date | The most recent date and time that the Secrets Manager rotation process was successfully completed. This value is null if the secret hasn't ever rotated. | +| name | The friendly name of the secret. You can use forward slashes in the name to represent a path hierarchy. For example, /prod/databases/dbserver1 could represent the secret for a server named dbserver1 in the folder databases in the folder prod. | +| owning\_service | Returns the name of the service that created the secret. | +| primary\_region | The Region where Secrets Manager originated the secret. | +| rotation\_enabled | Indicates whether automatic, scheduled rotation is enabled for this secret. | +| rotation\_lambda\_arn | The ARN of an AWS Lambda function invoked by Secrets Manager to rotate and expire the secret either automatically per the schedule or manually by a call to RotateSecret. | +| rotation\_rules\_automatically\_after\_days | Specifies the number of days between automatic scheduled rotations of the secret. | + +#### Relationships + +- AWS Secrets Manager Secrets are a resource under the AWS Account. + + ``` + (AWSAccount)-[RESOURCE]->(SecretsManagerSecret) + ``` + +### EBSVolume + +Representation of an AWS [EBS Volume](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volumes.html). + +| Field | Description | +|-------|-------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| **id** | The ID of the EBS Volume.| +| availabilityzone | The Availability Zone for the volume. | +| createtime | The time stamp when volume creation was initiated. | +| encrypted | Indicates whether the volume is encrypted. | +| size | The size of the volume, in GiBs.| +| state | The volume state.| +| outpostarn | The Amazon Resource Name (ARN) of the Outpost. | +| snapshotid | The snapshot ID. | +| iops | The number of I/O operations per second (IOPS). | +| type | The volume type.| +| fastrestored | Indicates whether the volume was created using fast snapshot restore.| +| multiattachenabled |Indicates whether Amazon EBS Multi-Attach is enabled.| +| throughput | The throughput that the volume supports, in MiB/s.| +| kmskeyid | The Amazon Resource Name (ARN) of the AWS Key Management Service (AWS KMS) customer master key (CMK) that was used to protect the volume encryption key for the volume.| +| deleteontermination | Indicates whether the volume is deleted on instance termination. | +| region | The region of the volume. | + +#### Relationships + +- AWS EBS Volumes are a resource under the AWS Account. + + ``` + (AWSAccount)-[RESOURCE]->(EBSVolume) + ``` + +- AWS EBS Snapshots are created using EBS Volumes + + ``` + (EBSSnapshot)-[CREATED_FROM]->(EBSVolume) + ``` + +- AWS EBS Volumes are attached to an EC2 Instance + + ``` + (EBSVolume)-[ATTACHED_TO_EC2_INSTANCE]->(EC2Instance) + ``` + +- `AWSTag` + ``` + (EBSVolume)-[TAGGED]->(AWSTag) + ``` + +### EBSSnapshot + +Representation of an AWS [EBS Snapshot](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSSnapshots.html). + +| Field | Description | +|-------|-------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| **id** | The ID of the EBS Snapshot.| +| description | The description of the snapshot. | +| progress | The progress of the snapshot, as a percentage. | +| encrypted |Indicates whether the snapshot is encrypted. | +| starttime | The time stamp when the snapshot was initiated.| +| state | The snapshot state.| +| statemessage | Encrypted Amazon EBS snapshots are copied asynchronously. If a snapshot copy operation fails (for example, if the proper AWS Key Management Service (AWS KMS) permissions are not obtained) this field displays error state details to help you diagnose why the error occurred. This parameter is only returned by DescribeSnapshots .| +| volumeid | The volume ID. | +| volumesize | The size of the volume, in GiB.| +| outpostarn | The ARN of the AWS Outpost on which the snapshot is stored. | +| dataencryptionkeyid | The data encryption key identifier for the snapshot.| +| kmskeyid | The Amazon Resource Name (ARN) of the AWS Key Management Service (AWS KMS) customer master key (CMK) that was used to protect the volume encryption key for the parent volume.| +| region | The region of the snapshot. | + +#### Relationships + +- AWS EBS Snapshots are a resource under the AWS Account. + + ``` + (AWSAccount)-[RESOURCE]->(EBSSnapshot) + ``` + +- AWS EBS Snapshots are created using EBS Volumes + + ``` + (EBSSnapshot)-[CREATED_FROM]->(EBSVolume) + ``` + +### SQSQueue + +Representation of an AWS [SQS Queue](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_GetQueueAttributes.html) + +| Field | Description | +|-------|-------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| **id** | The arn of the sqs queue. | +| created\_timestamp | The time when the queue was created in seconds | +| delay\_seconds | The default delay on the queue in seconds. | +| last\_modified\_timestamp | The time when the queue was last changed in seconds. | +| maximum\_message\_size | The limit of how many bytes a message can contain before Amazon SQS rejects it. | +| message\_retention\_period | he length of time, in seconds, for which Amazon SQS retains a message. | +| policy | The IAM policy of the queue. | +| arn | The arn of the sqs queue. | +| receive\_message\_wait\_time\_seconds | The length of time, in seconds, for which the ReceiveMessage action waits for a message to arrive. | +| redrive\_policy\_dead\_letter\_target\_arn | The Amazon Resource Name (ARN) of the dead-letter queue to which Amazon SQS moves messages after the value of maxReceiveCount is exceeded. | +| redrive\_policy\_max\_receive\_count | The number of times a message is delivered to the source queue before being moved to the dead-letter queue. When the ReceiveCount for a message exceeds the maxReceiveCount for a queue, Amazon SQS moves the message to the dead-letter-queue. | +| visibility\_timeout | The visibility timeout for the queue. | +| kms\_master\_key\_id | The ID of an AWS managed customer master key (CMK) for Amazon SQS or a custom CMK. | +| kms\_data\_key\_reuse\_period\_seconds | The length of time, in seconds, for which Amazon SQS can reuse a data key to encrypt or decrypt messages before calling AWS KMS again. | +| fifo\_queue | Whether or not the queue is FIFO. | +| content\_based\_deduplication | Whether or not content-based deduplication is enabled for the queue. | +| deduplication\_scope | Specifies whether message deduplication occurs at the message group or queue level. | +| fifo\_throughput\_limit | Specifies whether the FIFO queue throughput quota applies to the entire queue or per message group. | + +#### Relationships + +- AWS SQS Queues are a resource under the AWS Account. + + ``` + (AWSAccount)-[RESOURCE]->(SQSQueue) + ``` + +- AWS SQS Queues can have other SQS Queues configured as dead letter queues + + ``` + (SQSQueue)-[HAS_DEADLETTER_QUEUE]->(SQSQueue) + ``` + +### SecurityHub + +Representation of the configuration of AWS [Security Hub](https://docs.aws.amazon.com/securityhub/1.0/APIReference/API_DescribeHub.html) + +| Field | Description | +|-------|-------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| **id** | The arn of the hub resource. | +| subscribed\_at | The date and time when Security Hub was enabled in the account. | +| auto\_enable\_controls | Whether to automatically enable new controls when they are added to standards that are enabled. | + +#### Relationships + +- AWS Security Hub nodes are a resource under the AWS Account. + + ``` + (AWSAccount)-[RESOURCE]->(SecurityHub) + ``` + +### AWSConfigurationRecorder + +Representation of an AWS [Config Configuration Recorder](https://docs.aws.amazon.com/config/latest/APIReference/API_ConfigurationRecorder.html) + +| Field | Description | +|-------|-------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| **id** | A combination of name:account\_id:region | +| name | The name of the recorder. | +| role\_arn | Amazon Resource Name (ARN) of the IAM role used to describe the AWS resources associated with the account. | +| recording\_group\_all\_supported | Specifies whether AWS Config records configuration changes for every supported type of regional resource. | +| recording\_group\_include\_global\_resource\_types | Specifies whether AWS Config includes all supported types of global resources (for example, IAM resources) with the resources that it records. | +| recording\_group\_resource\_types | A comma-separated list that specifies the types of AWS resources for which AWS Config records configuration changes (for example, AWS::EC2::Instance or AWS::CloudTrail::Trail). | +| region | The region of the configuration recorder. | + +#### Relationships + +- AWS Configuration Recorders are a resource under the AWS Account. + + ``` + (AWSAccount)-[RESOURCE]->(AWSConfigurationRecorder) + ``` + +### AWSConfigDeliveryChannel + +Representation of an AWS [Config Delivery Channel](https://docs.aws.amazon.com/config/latest/APIReference/API_DeliveryChannel.html) + +| Field | Description | +|-------|-------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| **id** | A combination of name:account\_id:region | +| name | The name of the delivery channel. | +| s3\_bucket\_name | The name of the Amazon S3 bucket to which AWS Config delivers configuration snapshots and configuration history files. | +| s3\_key\_prefix | The prefix for the specified Amazon S3 bucket. | +| s3\_kms\_key\_arn | The Amazon Resource Name (ARN) of the AWS Key Management Service (KMS) customer managed key (CMK) used to encrypt objects delivered by AWS Config. Must belong to the same Region as the destination S3 bucket. | +| sns\_topic\_arn | The Amazon Resource Name (ARN) of the Amazon SNS topic to which AWS Config sends notifications about configuration changes. | +| config\_snapshot\_delivery\_properties\_delivery\_frequency | The frequency with which AWS Config delivers configuration snapshots. | +| region | The region of the delivery channel. | + +#### Relationships + +- AWS Config Delivery Channels are a resource under the AWS Account. + + ``` + (AWSAccount)-[RESOURCE]->(AWSConfigDeliveryChannel) + ``` + +### AWSConfigRule + +Representation of an AWS [Config Rule](https://docs.aws.amazon.com/config/latest/APIReference/API_DeliveryChannel.html) + +| Field | Description | +|-------|-------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| **id** | The ARN of the config rule. | +| name | The name of the delivery channel. | +| description | The description that you provide for the AWS Config rule. | +| arn | The ARN of the config rule. | +| rule\_id | The ID of the AWS Config rule. | +| scope\_compliance\_resource\_types | The resource types of only those AWS resources that you want to trigger an evaluation for the rule. You can only specify one type if you also specify a resource ID for ComplianceResourceId. | +| scope\_tag\_key | The tag key that is applied to only those AWS resources that you want to trigger an evaluation for the rule. | +| scope\_tag\_value | The tag value applied to only those AWS resources that you want to trigger an evaluation for the rule. If you specify a value for TagValue, you must also specify a value for TagKey. | +| scope\_tag\_compliance\_resource\_id | The resource types of only those AWS resources that you want to trigger an evaluation for the rule. You can only specify one type if you also specify a resource ID for ComplianceResourceId. | +| source\_owner | Indicates whether AWS or the customer owns and manages the AWS Config rule. | +| source\_identifier | For AWS Config managed rules, a predefined identifier from a list. For example, IAM\_PASSWORD\_POLICY is a managed rule. | +| source\_details | Provides the source and type of the event that causes AWS Config to evaluate your AWS resources. | +| input\_parameters | A string, in JSON format, that is passed to the AWS Config rule Lambda function. | +| maximum\_execution\_frequency | The maximum frequency with which AWS Config runs evaluations for a rule. | +| created\_by | Service principal name of the service that created the rule. | +| region | The region of the delivery channel. | + +#### Relationships + +- AWS Config Rules are a resource under the AWS Account. + + ``` + (AWSAccount)-[RESOURCE]->(AWSConfigRule) + ``` + +### LaunchConfiguration + +Representation of an AWS [Launch Configuration](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_LaunchConfiguration.html) + +| Field | Description | +|-------|-------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| **id** | The ARN of the launch configuration. | +| name | The name of the launch configuration. | +| arn | The ARN of the launch configuration. | +| created\_time| The creation date and time for the launch configuration. | +| image\_id | The ID of the Amazon Machine Image (AMI) to use to launch your EC2 instances. | +| key\_name | The name of the key pair. | +| security\_groups | A list that contains the security groups to assign to the instances in the Auto Scaling group. | +| instance\_type | The instance type for the instances. | +| kernel\_id | The ID of the kernel associated with the AMI. | +| ramdisk\_id | The ID of the RAM disk associated with the AMI. | +| instance\_monitoring\_enabled | If true, detailed monitoring is enabled. Otherwise, basic monitoring is enabled. | +| spot\_price | The maximum hourly price to be paid for any Spot Instance launched to fulfill the request. | +| iam\_instance\_profile | The name or the Amazon Resource Name (ARN) of the instance profile associated with the IAM role for the instance. | +| ebs\_optimized | Specifies whether the launch configuration is optimized for EBS I/O (true) or not (false). | +| associate\_public\_ip\_address | For Auto Scaling groups that are running in a VPC, specifies whether to assign a public IP address to the group's instances. | +| placement\_tenancy | The tenancy of the instance, either default or dedicated. An instance with dedicated tenancy runs on isolated, single-tenant hardware and can only be launched into a VPC. | +| region | The region of the launch configuration. | + +#### Relationships + +- Launch Configurations are a resource under the AWS Account. + + ``` + (AWSAccount)-[RESOURCE]->(LaunchConfiguration) + ``` + +### LaunchTemplate + +Representation of an AWS [Launch Template](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_LaunchTemplate.html) + +| Field | Description | +|-------|-------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| **id** | The ID of the launch template. | +| name | The name of the launch template. | +| create\_time | The time launch template was created. | +| created\_by | The principal that created the launch template. | +| default\_version\_number | The version number of the default version of the launch template. | +| latest\_version\_number | The version number of the latest version of the launch template. | +| region | The region of the launch template. | + +#### Relationships + +- Launch Templates are a resource under the AWS Account. + + ``` + (AWSAccount)-[RESOURCE]->(LaunchTemplate) + ``` +- Launch templates have Launch Template Versions + + ``` + (LaunchTemplate)-[VERSION]->(LaunchTemplateVersion) + ``` + +### LaunchTemplateVersion + +Representation of an AWS [Launch Template Version](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_LaunchTemplateVersion.html) + +| Field | Description | +|-------|-------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| **id** | The ID of the launch template version (ID-version). | +| name | The name of the launch template. | +| create\_time | The time the version was created. | +| created\_by | The principal that created the version. | +| default\_version | Indicates whether the version is the default version. | +| version\_number | The version number. | +| version\_description | The description of the version. | +| kernel\_id | The ID of the kernel, if applicable. | +| ebs\_optimized | Indicates whether the instance is optimized for Amazon EBS I/O. | +| iam\_instance\_profile\_arn | The Amazon Resource Name (ARN) of the instance profile. | +| iam\_instance\_profile\_name | The name of the instance profile. | +| image\_id | The ID of the AMI that was used to launch the instance. | +| instance\_type | The instance type. | +| key\_name | The name of the key pair. | +| monitoring\_enabled | Indicates whether detailed monitoring is enabled. Otherwise, basic monitoring is enabled. | +| ramdisk\_id | The ID of the RAM disk, if applicable. | +| disable\_api\_termination | If set to true, indicates that the instance cannot be terminated using the Amazon EC2 console, command line tool, or API. | +| instance\_initiated\_shutdown\_behavior | Indicates whether an instance stops or terminates when you initiate shutdown from the instance (using the operating system command for system shutdown). | +| security\_group\_ids | The security group IDs. | +| security\_groups | The security group names. | +| region | The region of the launch template. | + +#### Relationships + +- Launch Template Versions are a resource under the AWS Account. + + ``` + (AWSAccount)-[RESOURCE]->(LaunchTemplateVersion) + ``` + +### ElasticIPAddress + +Representation of an AWS EC2 [Elastic IP address](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_Address.html) + +| Field | Description | +|-------|-------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| **id** | The Elastic IP address | +| instance\_id | The ID of the instance that the address is associated with (if any). | +| public\_ip | The Elastic IP address. | +| allocation\_id | The ID representing the allocation of the address for use with EC2-VPC. | +| association\_id | The ID representing the association of the address with an instance in a VPC. | +| domain | Indicates whether this Elastic IP address is for use with instances in EC2-Classic (standard) or instances in a VPC (vpc). | +| network\_interface\_id | The ID of the network interface. | +| private\_ip\_address | The private IP address associated with the Elastic IP address. | +| public\_ipv4\_pool | The ID of an address pool. | +| network\_border\_group | The name of the unique set of Availability Zones, Local Zones, or Wavelength Zones from which AWS advertises IP addresses. | +| customer\_owned\_ip | The customer-owned IP address. | +| customer\_owned\_ipv4\_pool | The ID of the customer-owned address pool. | +| carrier\_ip | The carrier IP address associated. This option is only available for network interfaces which reside in a subnet in a Wavelength Zone (for example an EC2 instance). | +| region | The region of the IP. | + +#### Relationships + +- Elastic IPs are a resource under the AWS Account. + + ``` + (AWSAccount)-[RESOURCE]->(ElasticIPAddress) + ``` + +- Elastic IPs can be attached to EC2 instances + + ``` + (EC2Instance)-[ELASTIC_IP_ADDRESS]->(ElasticIPAddress) + ``` + +- Elastic IPs can be attached to NetworkInterfaces + + ``` + (NetworkInterface)-[ELASTIC_IP_ADDRESS]->(ElasticIPAddress) + ``` + +### ECSCluster + +Representation of an AWS ECS [Cluster](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_Cluster.html) + +| Field | Description | +|-------|-------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| **id** | The ARN of the cluster | +| region | The region of the cluster. | +| name | A user-generated string that you use to identify your cluster. | +| arn | The ARN of the cluster | +| ecc\_kms\_key\_id | An AWS Key Management Service key ID to encrypt the data between the local client and the container. | +| ecc\_logging | The log setting to use for redirecting logs for your execute command results. | +| ecc\_log\_configuration\_cloud\_watch\_log\_group\_name | The name of the CloudWatch log group to send logs to. | +| ecc\_log\_configuration\_cloud\_watch\_encryption\_enabled | Determines whether to enable encryption on the CloudWatch logs. | +| ecc\_log\_configuration\_s3\_bucket\_name | The name of the S3 bucket to send logs to. | +| ecc\_log\_configuration\_s3\_encryption\_enabled | Determines whether to use encryption on the S3 logs. | +| ecc\_log\_configuration\_s3\_key\_prefix | An optional folder in the S3 bucket to place logs in. | +| status | The status of the cluster | +| settings\_container\_insights | If enabled is specified, CloudWatch Container Insights will be enabled for the cluster, otherwise it will be disabled unless the containerInsights account setting is enabled. | +| capacity\_providers | The capacity providers associated with the cluster. | +| attachments\_status | The status of the capacity providers associated with the cluster. | + +#### Relationships + +- ECSClusters are a resource under the AWS Account. + + ``` + (AWSAccount)-[RESOURCE]->(ECSCluster) + ``` + +### ECSContainerInstance + +Representation of an AWS ECS [Container Instance](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ContainerInstance.html) + +| Field | Description | +|-------|-------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| **id** | The ARN of the container instance | +| region | The region of the container instance. | +| ec2\_instance\_id | The ID of the container instance. For Amazon EC2 instances, this value is the Amazon EC2 instance ID. For external instances, this value is the AWS Systems Manager managed instance ID. | +| arn | The ARN of the container instance | +| capacity\_provider\_name | The capacity provider that's associated with the container instance. | +| version | The version counter for the container instance. | +| version\_info\_agent\_version | The version number of the Amazon ECS container agent. | +| version\_info\_agent\_hash | The Git commit hash for the Amazon ECS container agent build on the amazon-ecs-agent GitHub repository. | +| version\_info\_agent\_docker\_version | The Docker version that's running on the container instance. | +| status | The status of the container instance. | +| status\_reason | The reason that the container instance reached its current status. | +| agent\_connected | This parameter returns true if the agent is connected to Amazon ECS. Registered instances with an agent that may be unhealthy or stopped return false. | +| agent\_update\_status | The status of the most recent agent update. If an update wasn't ever requested, this value is NULL. | +| registered\_at | The Unix timestamp for the time when the container instance was registered. | + +#### Relationships + +- An ECSCluster has ECSContainerInstances + + ``` + (ECSCluster)-[HAS_CONTAINER_INSTANCE]->(ECSContainerInstance) + ``` + +- ECSContainerInstances have ECSTasks + + ``` + (ECSContainerInstance)-[HAS_TASK]->(ECSTask) + ``` + +### ECSService + +Representation of an AWS ECS [Service](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_Service.html) + +| Field | Description | +|-------|-------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| **id** | The ARN of the service | +| region | The region of the service. | +| name | The name of your service. | +| arn | The ARN of the service | +| cluster_arn | The Amazon Resource Name (ARN) of the cluster that hosts the service. | +| status | The status of the service. | +| desired\_count | The desired number of instantiations of the task definition to keep running on the service. | +| running\_count | The number of tasks in the cluster that are in the RUNNING state. | +| pending\_count | The number of tasks in the cluster that are in the PENDING state. | +| launch\_type | The launch type the service is using. | +| platform\_version | The platform version to run your service on. A platform version is only specified for tasks that are hosted on AWS Fargate. | +| platform\_family | The operating system that your tasks in the service run on. A platform family is specified only for tasks using the Fargate launch type. | +| task\_definition | The task definition to use for tasks in the service. | +| deployment\_config\_circuit\_breaker\_enable | Determines whether to enable the deployment circuit breaker logic for the service. | +| deployment\_config\_circuit\_breaker\_rollback | Determines whether to enable Amazon ECS to roll back the service if a service deployment fails. | +| deployment\_config\_maximum\_percent | If a service is using the rolling update (ECS) deployment type, the maximum percent parameter represents an upper limit on the number of tasks in a service that are allowed in the RUNNING or PENDING state during a deployment, as a percentage of the desired number of tasks (rounded down to the nearest integer), and while any container instances are in the DRAINING state if the service contains tasks using the EC2 launch type. | +| deployment\_config\_minimum\_healthy\_percent | If a service is using the rolling update (ECS) deployment type, the minimum healthy percent represents a lower limit on the number of tasks in a service that must remain in the RUNNING state during a deployment, as a percentage of the desired number of tasks (rounded up to the nearest integer), and while any container instances are in the DRAINING state if the service contains tasks using the EC2 launch type. | +| role\_arn | The ARN of the IAM role that's associated with the service. | +| created\_at | The Unix timestamp for the time when the service was created. | +| health\_check\_grace\_period\_seconds | The period of time, in seconds, that the Amazon ECS service scheduler ignores unhealthy Elastic Load Balancing target health checks after a task has first started. | +| created\_by | The principal that created the service. | +| enable\_ecs\_managed\_tags | Determines whether to enable Amazon ECS managed tags for the tasks in the service. | +| propagate\_tags | Determines whether to propagate the tags from the task definition or the service to the task. | +| enable\_execute\_command | Determines whether the execute command functionality is enabled for the service. | + +#### Relationships + +- An ECSCluster has ECSService + + ``` + (ECSCluster)-[HAS_SERVICE]->(ECSService) + ``` + +- An ECSCluster has ECSContainerInstances + + ``` + (ECSCluster)-[HAS_CONTAINER_INSTANCE]->(ECSContainerInstance) + ``` + +### ECSTaskDefinition + +Representation of an AWS ECS [Task Definition](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_TaskDefinition.html) + +| Field | Description | +|-------|-------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| **id** | The ARN of the task definition | +| region | The region of the task definition. | +| family | The name of a family that this task definition is registered to. | +| task\_role\_arn | The short name or full Amazon Resource Name (ARN) of the AWS Identity and Access Management role that grants containers in the task permission to call AWS APIs on your behalf. | +| execution\_role\_arn | The Amazon Resource Name (ARN) of the task execution role that grants the Amazon ECS container agent permission to make AWS API calls on your behalf. | +| network\_mode | The Docker networking mode to use for the containers in the task. The valid values are none, bridge, awsvpc, and host. If no network mode is specified, the default is bridge. | +| revision | The revision of the task in a particular family. | +| status | The status of the task definition. | +| compatibilities | The task launch types the task definition validated against during task definition registration. | +| runtime\_platform\_cpu\_architecture | The CPU architecture. | +| runtime\_platform\_operating\_system\_family | The operating system. | +| requires\_compatibilities | The task launch types the task definition was validated against. | +| cpu | The number of cpu units used by the task. | +| memory | The amount (in MiB) of memory used by the task. | +| pid\_mode | The process namespace to use for the containers in the task. | +| ipc\_mode | The IPC resource namespace to use for the containers in the task. | +| proxy\_configuration\_type | The proxy type. | +| proxy\_configuration\_container\_name | The name of the container that will serve as the App Mesh proxy. | +| registered\_at | The Unix timestamp for the time when the task definition was registered. | +| deregistered\_at | The Unix timestamp for the time when the task definition was deregistered. | +| registered\_by | The principal that registered the task definition. | +| ephemeral\_storage\_size\_in\_gib | The total amount, in GiB, of ephemeral storage to set for the task. | + +#### Relationships + +- ECSTaskDefinition are a resource under the AWS Account. + + ``` + (AWSAccount)-[RESOURCE]->(ECSTaskDefinition) + ``` + +- An ECSTask has an ECSTaskDefinition. + + ``` + (ECSTask)-[HAS_TASK_DEFINITION]->(ECSTaskDefinition) + ``` + +### ECSContainerDefinition + +Representation of an AWS ECS [Container Definition](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ContainerDefinition.html) + +| Field | Description | +|-------|-------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| **id** | The ARN of the task definition, plus the container definition name | +| region | The region of the container definition. | +| name | The name of a container. | +| image | The image used to start a container. This string is passed directly to the Docker daemon. | +| cpu | The number of cpu units reserved for the container. | +| memory | The amount (in MiB) of memory to present to the container. | +| memory\_reservation | The soft limit (in MiB) of memory to reserve for the container. | +| links | The links parameter allows containers to communicate with each other without the need for port mappings. | +| essential | If the essential parameter of a container is marked as true, and that container fails or stops for any reason, all other containers that are part of the task are stopped. | +| entry\_point | The entry point that's passed to the container. | +| command | The command that's passed to the container. | +| start\_timeout | Time duration (in seconds) to wait before giving up on resolving dependencies for a container. | +| stop\_timeout | Time duration (in seconds) to wait before the container is forcefully killed if it doesn't exit normally on its own. | +| hostname | The hostname to use for your container. | +| user | The user to use inside the container. | +| working\_directory | The working directory to run commands inside the container in. | +| disable\_networking | When this parameter is true, networking is disabled within the container. | +| privileged | When this parameter is true, the container is given elevated privileges on the host container instance (similar to the root user). | +| readonly\_root\_filesystem | When this parameter is true, the container is given read-only access to its root file system. | +| dns\_servers | A list of DNS servers that are presented to the container. | +| dns\_search\_domains | A list of DNS search domains that are presented to the container. | +| docker\_security\_options | A list of strings to provide custom labels for SELinux and AppArmor multi-level security systems. This field isn't valid for containers in tasks using the Fargate launch type. | +| interactive | When this parameter is true, you can deploy containerized applications that require stdin or a tty to be allocated. | +| pseudo\_terminal | When this parameter is true, a TTY is allocated. | + +#### Relationships + +- ECSTaskDefinitions have ECSContainerDefinitions + + ``` + (ECSTaskDefinition)-[HAS_CONTAINER_DEFINITION]->(ECSContainerDefinition) + ``` + +### ECSTask + +Representation of an AWS ECS [Task](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_Task.html) + +| Field | Description | +|-------|-------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| **id** | The ARN of the task | +| region | The region of the task. | +| arn | The arn of the task. | +| availability\_zone | The Availability Zone for the task. | +| capacity\_provider\_name | The capacity provider that's associated with the task. | +| cluster\_arn | The ARN of the cluster that hosts the task. | +| connectivity | The connectivity status of a task. | +| connectivity\_at | The Unix timestamp for the time when the task last went into CONNECTED status. | +| container\_instance\_arn | The ARN of the container instances that host the task. | +| cpu | The number of CPU units used by the task as expressed in a task definition. | +| created\_at | The Unix timestamp for the time when the task was created. More specifically, it's for the time when the task entered the PENDING state. | +| desired\_status | The desired status of the task. | +| enable\_execute\_command | Determines whether execute command functionality is enabled for this task. | +| execution\_stopped\_at | The Unix timestamp for the time when the task execution stopped. | +| group | The name of the task group that's associated with the task. | +| health\_status | The health status for the task. | +| last\_status | The last known status for the task. | +| launch\_type | The infrastructure where your task runs on. | +| memory | The amount of memory (in MiB) that the task uses as expressed in a task definition. | +| platform\_version | The platform version where your task runs on. | +| platform\_family | The operating system that your tasks are running on. | +| pull\_started\_at | The Unix timestamp for the time when the container image pull began. | +| pull\_stopped\_at | The Unix timestamp for the time when the container image pull completed. | +| started\_at | The Unix timestamp for the time when the task started. More specifically, it's for the time when the task transitioned from the PENDING state to the RUNNING state. | +| started\_by | The tag specified when a task is started. If an Amazon ECS service started the task, the startedBy parameter contains the deployment ID of that service. | +| stop\_code | The stop code indicating why a task was stopped. | +| stopped\_at | The Unix timestamp for the time when the task was stopped. More specifically, it's for the time when the task transitioned from the RUNNING state to the STOPPED state. | +| stopped\_reason | The reason that the task was stopped. | +| stopping\_at | The Unix timestamp for the time when the task stops. More specifically, it's for the time when the task transitions from the RUNNING state to STOPPED. | +| task\_definition\_arn | The ARN of the task definition that creates the task. | +| version | The version counter for the task. | +| ephemeral\_storage\_size\_in\_gib | The total amount, in GiB, of ephemeral storage to set for the task. | + +#### Relationships + +- ECSClusters have ECSTasks + + ``` + (ECSCluster)-[HAS_TASK]->(ECSTask) + ``` + +- ECSContainerInstances have ECSTasks + + ``` + (ECSContainerInstance)-[HAS_TASK]->(ECSTask) + ``` + +- ECSTasks have ECSTaskDefinitions + + ``` + (ECSTask)-[HAS_TASK_DEFINITION]->(ECSTaskDefinition) + ``` + +### ECSContainer + +Representation of an AWS ECS [Container](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_Container.html) + +| Field | Description | +|-------|-------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| **id** | The ARN of the container | +| region | The region of the container. | +| arn | The arn of the container. | +| task\_arn | The ARN of the task. | +| name | The name of the container. | +| image | The image used for the container. | +| image\_digest | The container image manifest digest. | +| runtime\_id | The ID of the Docker container. | +| last\_status | The last known status of the container. | +| exit\_code | The exit code returned from the container. | +| reason | A short (255 max characters) human-readable string to provide additional details about a running or stopped container. | +| health\_status | The health status of the container. | +| cpu | The number of CPU units set for the container. | +| memory | The hard limit (in MiB) of memory set for the container. | +| memory\_reservation | The soft limit (in MiB) of memory set for the container. | +| gpu\_ids | The IDs of each GPU assigned to the container. | + +#### Relationships + +- ECSTasks have ECSContainers + + ``` + (ECSTask)-[HAS_CONTAINER]->(ECSContainer) + ``` + +### SSMInstanceInformation + +Representation of an AWS SSM [InstanceInformation](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_InstanceInformation.html) + +| Field | Description | +|-------|-------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| **id** | The ARN of the instance information | +| region | The region of the instance information. | +| instance\_id | The managed node ID. | +| ping\_status | Connection status of SSM Agent. | +| last\_ping\_date\_time | The date and time when the agent last pinged the Systems Manager service. | +| agent\_version | The version of SSM Agent running on your Linux managed node. | +| is\_latest\_version | Indicates whether the latest version of SSM Agent is running on your Linux managed node. This field doesn't indicate whether or not the latest version is installed on Windows managed nodes, because some older versions of Windows Server use the EC2Config service to process Systems Manager requests. | +| platform\_type | The operating system platform type. | +| platform\_name | The name of the operating system platform running on your managed node. | +| platform\_version | The version of the OS platform running on your managed node. | +| activation\_id | The activation ID created by AWS Systems Manager when the server or virtual machine (VM) was registered. | +| iam\_role | The AWS Identity and Access Management (IAM) role assigned to the on-premises Systems Manager managed node. This call doesn't return the IAM role for Amazon Elastic Compute Cloud (Amazon EC2) instances. | +| registration\_date | The date the server or VM was registered with AWS as a managed node. | +| resource\_type | The type of instance. Instances are either EC2 instances or managed instances. | +| name | The name assigned to an on-premises server, edge device, or virtual machine (VM) when it is activated as a Systems Manager managed node. The name is specified as the DefaultInstanceName property using the CreateActivation command. | +| ip\_address | The IP address of the managed node. | +| computer\_name | The fully qualified host name of the managed node. | +| association\_status | The status of the association. | +| last\_association\_execution\_date | The date the association was last run. | +| last\_successful\_association\_execution\_date | The last date the association was successfully run. | +| source\_id | The ID of the source resource. For AWS IoT Greengrass devices, SourceId is the Thing name. | +| source\_type | The type of the source resource. For AWS IoT Greengrass devices, SourceType is AWS::IoT::Thing. | + +#### Relationships + +- SSMInstanceInformation is a resource under the AWS Account. + + ``` + (AWSAccount)-[RESOURCE]->(SSMInstanceInformation) + ``` + +- SSMInstanceInformation is a resource of an EC2Instance + + ``` + (EC2Instance)-[HAS_INFORMATION]->(SSMInstanceInformation) + ``` + +### SSMInstancePatch + +Representation of an AWS SSM [PatchComplianceData](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_PatchComplianceData.html) + +| Field | Description | +|-------|-------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| **id** | The ARN of the instance patch | +| region | The region of the instance patch. | +| instance\_id | The managed node ID. | +| title | The title of the patch. | +| kb\_id | The operating system-specific ID of the patch. | +| classification | The classification of the patch, such as SecurityUpdates, Updates, and CriticalUpdates. | +| severity | The severity of the patch such as Critical, Important, and Moderate. | +| state | The state of the patch on the managed node, such as INSTALLED or FAILED. | +| installed\_time | The date/time the patch was installed on the managed node. Not all operating systems provide this level of information. | +| cve\_ids | The IDs of one or more Common Vulnerabilities and Exposure (CVE) issues that are resolved by the patch. | + +#### Relationships + +- SSMInstancePatch is a resource under the AWS Account. + + ``` + (AWSAccount)-[RESOURCE]->(SSMInstancePatch) + ``` + +- EC2Instances have SSMInstancePatches + + ``` + (EC2Instance)-[HAS_INFORMATION]->(SSMInstancePatch) + ``` diff --git a/_sources/modules/azure/config.md.txt b/_sources/modules/azure/config.md.txt new file mode 100644 index 0000000000..92d6f808d9 --- /dev/null +++ b/_sources/modules/azure/config.md.txt @@ -0,0 +1,18 @@ +## Azure Configuration + +.. _azure_config: + +Follow these steps to analyze Microsoft Azure assets with Cartography: + +1. Set up an Azure identity for Cartography to use, and ensure that this identity has the built-in Azure [Reader role](https://docs.microsoft.com/en-us/azure/role-based-access-control/built-in-roles#reader) attached: + * Authenticate: `$ az login` + * Create a Service Principal: `$ az ad sp create-for-rbac --name cartography --role Reader` + * Note the values of the `tenant`, `appId`, and `password` fields +1. Populate environment variables with the values generated in the previous step (e.g., `AZURE_TENANT_ID`, `AZURE_CLIENT_ID`, `AZURE_CLIENT_SECRET`) +1. Call the `cartography` CLI with: + ```bash + --azure-sp-auth --azure-sync-all-subscriptions \ + --azure-tenant-id ${AZURE_TENANT_ID} \ + --azure-client-id ${AZURE_CLIENT_ID} \ + --azure-client-secret-env-var AZURE_CLIENT_SECRET + ``` diff --git a/_sources/modules/azure/index.rst.txt b/_sources/modules/azure/index.rst.txt new file mode 100644 index 0000000000..3b82e79cd6 --- /dev/null +++ b/_sources/modules/azure/index.rst.txt @@ -0,0 +1,15 @@ +Microsoft Azure +############### + +The azure module has the following coverage: + +* CosmosDB +* SQL +* Storage +* Virtual Machine + +.. toctree:: + :hidden: + :glob: + + * diff --git a/_sources/modules/azure/schema.md.txt b/_sources/modules/azure/schema.md.txt new file mode 100644 index 0000000000..f18fae648f --- /dev/null +++ b/_sources/modules/azure/schema.md.txt @@ -0,0 +1,1173 @@ +## Azure Schema + +.. _azure_schema: + +### AzureTenant + +Representation of an [Azure Tenant](https://docs.microsoft.com/en-us/rest/api/resources/Tenants/List). + +| Field | Description | +|-------|-------------| +|firstseen| Timestamp of when a sync job discovered this node| +|lastupdated| Timestamp of the last time the node was updated| +|**id**| The Azure Tenant ID number| + +#### Relationships + +- Azure Principal is part of the Azure Account. + + ``` + (AzureTenant)-[RESOURCE]->(AzurePrincipal) + ``` + +### AzurePrincipal + +Representation of an [Azure Principal](https://docs.microsoft.com/en-us/graph/api/resources/user?view=graph-rest-1.0).. + +| Field | Description | +|-------|-------------| +|firstseen| Timestamp of when a sync job discovered this node| +|lastupdated| Timestamp of the last time the node was updated| +|**email**| Email of the Azure Principal| + +#### Relationships + +- Azure Principal is part of the Azure Account. + + ``` + (AzurePrincipal)-[RESOURCE]->(AzureTenant) + ``` + +### AzureSubscription + +Representation of an [Azure Subscription](https://docs.microsoft.com/en-us/rest/api/resources/subscriptions).. + +| Field | Description | +|-------|-------------| +|firstseen| Timestamp of when a sync job discovered this node| +|lastupdated| Timestamp of the last time the node was updated| +|**id**| The Azure Subscription ID number| +|name | The friendly name that identifies the subscription| +|path | The full ID for the Subscription| +|state| Can be one of ``Enabled \| Disabled \| Deleted \| PastDue \| Warned``| + +#### Relationships + +- Azure Tenant contains one or more Subscriptions. + + ``` + (AzureTenant)-[RESOURCE]->(AzureSubscription) + ``` + +### VirtualMachine + +Representation of an [Azure Virtual Machine](https://docs.microsoft.com/en-us/rest/api/compute/virtualmachines). + +| Field | Description | +|-------|-------------| +|firstseen| Timestamp of when a sync job discovered this node| +|lastupdated| Timestamp of the last time the node was updated| +|**id**| The Azure Virtual Machine ID number| +|type | The type of the resource| +|location | The location where Virtual Machine is created| +|resourcegroup | The Resource Group where Virtual Machine is created| +|name | The friendly name that identifies the Virtual Machine| +|plan | The plan associated with the Virtual Machine| +|size | The size of the Virtual Machine| +|license\_type | The type of license| +|computer\_name | The computer name| +|identity\_type | The type of identity used for the virtual machine| +|zones | The Virtual Machine zones| +|ultra\_ssd\_enabled | Enables or disables a capability on the virtual machine or virtual machine scale set.| +|priority | Specifies the priority for the virtual machine| +|eviction\_policy | Specifies the eviction policy for the Virtual Machine| + +#### Relationships + +- Azure Subscription contains one or more Virtual Machines. + + ``` + (AzureSubscription)-[RESOURCE]->(VirtualMachine) + ``` + +### AzureDataDisk + +Representation of an [Azure Data Disk](https://docs.microsoft.com/en-us/rest/api/compute/virtualmachines/get#datadisk). + +| Field | Description | +|-------|-------------| +|firstseen| Timestamp of when a sync job discovered this node| +|lastupdated| Timestamp of the last time the node was updated| +|**id**| The Azure Data Disk ID number| +|lun | Specifies the logical unit number of the data disk| +|name | The data disk name| +|vhd | The virtual hard disk associated with data disk| +|image | The source user image virtual hard disk| +|size | The size of the disk in GB| +|caching | Specifies the caching requirement| +|createoption | Specifies how the disk should be created| +|write\_accelerator\_enabled | Specifies whether writeAccelerator should be enabled or disabled on the data disk| +|managed\_disk\_storage\_type | The data disk storage type| + +#### Relationships + +- Azure Virtual Machines are attached to Data Disks. + + ``` + (VirtualMachine)-[ATTACHED_TO]->(AzureDataDisk) + ``` + +### AzureDisk + +Representation of an [Azure Disk](https://docs.microsoft.com/en-us/rest/api/compute/disks). + +| Field | Description | +|-------|-------------| +|firstseen| Timestamp of when a sync job discovered this node| +|lastupdated| Timestamp of the last time the node was updated| +|**id**| The Azure Disk ID number| +|type | The type of the resource| +|location | The location where Disk is created| +|resourcegroup | The Resource Group where Disk is created| +|name | The friendly name that identifies the Disk| +|createoption | Specifies how the disk should be created| +|disksizegb | The size of the disk in GB| +|encryption | Specifies whether the disk has encryption enabled | +|maxshares | Specifies how many machines can share the disk| +|ostype | The operating system type of the disk| +|tier | Performance Tier associated with the disk| +|sku | The disk sku name| +|zones | The logical zone list for disk| + +#### Relationships + +- Azure Subscription contains one or more Disks. + + ``` + (AzureSubscription)-[RESOURCE]->(AzureDisk) + ``` + +### AzureSnapshot + +Representation of an [Azure Snapshot](https://docs.microsoft.com/en-us/rest/api/compute/snapshots). + +| Field | Description | +|-------|-------------| +|firstseen| Timestamp of when a sync job discovered this node| +|lastupdated| Timestamp of the last time the node was updated| +|**id**| The Azure Snapshot ID number| +|type | The type of the resource| +|location | The location where snapshot is created| +|resourcegroup | The Resource Group where snapshot is created| +|name | The friendly name that identifies the snapshot| +|createoption | Specifies how the disk should be created| +|disksizegb | The size of the snapshot in GB| +|encryption | Specifies whether the snapshot has encryption enabled | +|incremental | Indicates whether a snapshot is incremental or not | +|network\_access\_policy | Policy for accessing the snapshot via network| +|ostype | The operating system type of the snapshot| +|tier | Performance Tier associated with the snapshot| +|sku | The snapshot sku name| +|zones | The logical zone list for snapshot| + +#### Relationships + +- Azure Subscription contains one or more Snapshots. + + ``` + (AzureSubscription)-[RESOURCE]->(AzureSnapshot) + ``` + +### AzureSQLServer + +Representation of an [AzureSQLServer](https://docs.microsoft.com/en-us/rest/api/sql/servers). + +| Field | Description | +|-------|-------------| +|firstseen| Timestamp of when a sync job discovered this node| +|lastupdated| Timestamp of the last time the node was updated| +|**id**| The resource ID| +|location | The location where the resource is created| +|resourcegroup | The Resource Group where SQL Server is created| +|name | The friendly name that identifies the SQL server| +|kind | Specifies the kind of SQL server| +|state | The state of the server| +|version | The version of the server | + +#### Relationships + +- Azure Subscription contains one or more SQL Servers. + + ``` + (AzureSubscription)-[RESOURCE]->(AzureSQLServer) + ``` +- Azure SQL Server can be used by one or more Azure Server DNS Aliases. + + ``` + (AzureSQLServer)-[USED_BY]->(AzureServerDNSAlias) + ``` +- Azure SQL Server can be administered by one or more Azure Server AD Administrators. + + ``` + (AzureSQLServer)-[ADMINISTERED_BY]->(AzureServerADAdministrator) + ``` +- Azure SQL Server has one or more Azure Recoverable Database. + + ``` + (AzureSQLServer)-[RESOURCE]->(AzureRecoverableDatabase) + ``` +- Azure SQL Server has one or more Azure Restorable Dropped Database. + + ``` + (AzureSQLServer)-[RESOURCE]->(AzureRestorableDroppedDatabase) + ``` +- Azure SQL Server has one or more Azure Failover Group. + + ``` + (AzureSQLServer)-[RESOURCE]->(AzureFailoverGroup) + ``` +- Azure SQL Server has one or more Azure Elastic Pool. + + ``` + (AzureSQLServer)-[RESOURCE]->(AzureElasticPool) + ``` +- Azure SQL Server has one or more Azure SQL Database. + + ``` + (AzureSQLServer)-[RESOURCE]->(AzureSQLDatabase) + ``` + +### AzureServerDNSAlias + +Representation of an [AzureServerDNSAlias](https://docs.microsoft.com/en-us/rest/api/sql/serverdnsaliases). + +| Field | Description | +|-------|-------------| +|firstseen| Timestamp of when a sync job discovered this node| +|lastupdated| Timestamp of the last time the node was updated| +|**id**| The resource ID| +|name | The name of the server DNS alias| +|dnsrecord | The fully qualified DNS record for alias.| + +#### Relationships + +- Azure SQL Server can be used by one or more Azure Server DNS Aliases. + + ``` + (AzureSQLServer)-[USED_BY]->(AzureServerDNSAlias) + ``` + +### AzureServerADAdministrator + +Representation of an [AzureServerADAdministrator](https://docs.microsoft.com/en-us/rest/api/sql/serverazureadadministrators). + +| Field | Description | +|-------|-------------| +|firstseen| Timestamp of when a sync job discovered this node| +|lastupdated| Timestamp of the last time the node was updated| +|**id**| The resource ID| +|name | The name of the resource.| +|administratortype | The type of the server administrator.| +|login | The login name of the server administrator.| + +#### Relationships + +- Azure SQL Server can be administered by one or more Azure Server AD Administrators. + + ``` + (AzureSQLServer)-[ADMINISTERED_BY]->(AzureServerADAdministrator) + ``` + +### AzureRecoverableDatabase + +Representation of an [AzureRecoverableDatabase](https://docs.microsoft.com/en-us/rest/api/sql/recoverabledatabases). + +| Field | Description | +|-------|-------------| +|firstseen| Timestamp of when a sync job discovered this node| +|lastupdated| Timestamp of the last time the node was updated| +|**id**| The resource ID| +|name | The name of the resource.| +|edition | The edition of the database.| +|servicelevelobjective | The service level objective name of the database.| +|lastbackupdate | The last available backup date of the database (ISO8601 format).| + +#### Relationships + +- Azure SQL Server has one or more Azure Recoverable Database. + + ``` + (AzureSQLServer)-[RESOURCE]->(AzureRecoverableDatabase) + ``` + +### AzureRestorableDroppedDatabase + +Representation of an [AzureRestorableDroppedDatabase](https://docs.microsoft.com/en-us/rest/api/sql/restorabledroppeddatabases). + +| Field | Description | +|-------|-------------| +|firstseen| Timestamp of when a sync job discovered this node| +|lastupdated| Timestamp of the last time the node was updated| +|**id**| The resource ID| +|name | The name of the resource.| +|location | The geo-location where the resource lives.| +|databasename | The name of the database.| +|creationdate | The creation date of the database (ISO8601 format).| +|deletiondate | The deletion date of the database (ISO8601 format).| +|restoredate | The earliest restore date of the database (ISO8601 format).| +|edition | The edition of the database.| +|servicelevelobjective | The service level objective name of the database.| +|maxsizebytes | The max size in bytes of the database.| + +#### Relationships + +- Azure SQL Server has one or more Azure Restorable Dropped Database. + + ``` + (AzureSQLServer)-[RESOURCE]->(AzureRestorableDroppedDatabase) + ``` + +### AzureFailoverGroup + +Representation of an [AzureFailoverGroup](https://docs.microsoft.com/en-us/rest/api/sql/failovergroups). + +| Field | Description | +|-------|-------------| +|firstseen| Timestamp of when a sync job discovered this node| +|lastupdated| Timestamp of the last time the node was updated| +|**id**| The resource ID| +|name | The name of the resource.| +|location | The geo-location where the resource lives.| +|replicationrole | Local replication role of the failover group instance.| +|replicationstate | Replication state of the failover group instance.| + +#### Relationships + +- Azure SQL Server has one or more Azure Failover Group. + + ``` + (AzureSQLServer)-[RESOURCE]->(AzureFailoverGroup) + ``` + +### AzureElasticPool + +Representation of an [AzureElasticPool](https://docs.microsoft.com/en-us/rest/api/sql/elasticpools). + +| Field | Description | +|-------|-------------| +|firstseen| Timestamp of when a sync job discovered this node| +|lastupdated| Timestamp of the last time the node was updated| +|**id**| The resource ID| +|name | The name of the resource.| +|location | The location of the resource.| +|kind | The kind of elastic pool.| +|creationdate | The creation date of the elastic pool (ISO8601 format).| +|state | The state of the elastic pool.| +|maxsizebytes | The storage limit for the database elastic pool in bytes.| +|licensetype | The license type to apply for this elastic pool. | +|zoneredundant | Specifies whether or not this elastic pool is zone redundant, which means the replicas of this elastic pool will be spread across multiple availability zones.| + +#### Relationships + +- Azure SQL Server has one or more Azure Elastic Pool. + + ``` + (AzureSQLServer)-[RESOURCE]->(AzureElasticPool) + ``` + +### AzureSQLDatabase + +Representation of an [AzureSQLDatabase](https://docs.microsoft.com/en-us/rest/api/sql/databases). + +| Field | Description | +|-------|-------------| +|firstseen| Timestamp of when a sync job discovered this node| +|lastupdated| Timestamp of the last time the node was updated| +|**id**| The resource ID| +|name | The name of the resource.| +|location | The location of the resource.| +|kind | The kind of database.| +|creationdate | The creation date of the database (ISO8601 format).| +|databaseid | The ID of the database.| +|maxsizebytes | The max size of the database expressed in bytes.| +|licensetype | The license type to apply for this database.| +|secondarylocation | The default secondary region for this database.| +|elasticpoolid | The resource identifier of the elastic pool containing this database.| +|collation | The collation of the database.| +|failovergroupid | Failover Group resource identifier that this database belongs to.| +|zoneredundant | Whether or not this database is zone redundant, which means the replicas of this database will be spread across multiple availability zones.| +|restorabledroppeddbid | The resource identifier of the restorable dropped database associated with create operation of this database.| +|recoverabledbid | The resource identifier of the recoverable database associated with create operation of this database.| + +#### Relationships + +- Azure SQL Server has one or more Azure SQL Database. + + ``` + (AzureSQLServer)-[RESOURCE]->(AzureSQLDatabase) + ``` +- Azure SQL Database contains one or more Azure Replication Links. + + ``` + (AzureSQLDatabase)-[CONTAINS]->(AzureReplicationLink) + ``` +- Azure SQL Database contains a Database Threat Detection Policy. + + ``` + (AzureSQLDatabase)-[CONTAINS]->(AzureDatabaseThreatDetectionPolicy) + ``` +- Azure SQL Database contains one or more Restore Points. + + ``` + (AzureSQLDatabase)-[CONTAINS]->(AzureRestorePoint) + ``` +- Azure SQL Database contains Transparent Data Encryption. + + ``` + (AzureSQLDatabase)-[CONTAINS]->(AzureTransparentDataEncryption) + ``` + +### AzureReplicationLink + +Representation of an [AzureReplicationLink](https://docs.microsoft.com/en-us/rest/api/sql/replicationlinks). + +| Field | Description | +|-------|-------------| +|firstseen| Timestamp of when a sync job discovered this node| +|lastupdated| Timestamp of the last time the node was updated| +|**id**| The resource ID| +|name | The name of the resource.| +|location | Location of the server that contains this firewall rule.| +|partnerdatabase | The name of the partner database.| +|partnerlocation | The Azure Region of the partner database.| +|partnerrole | The role of the database in the replication link.| +|partnerserver | The name of the server hosting the partner database.| +|mode | Replication mode of this replication link.| +|state | The replication state for the replication link.| +|percentcomplete | The percentage of seeding complete for the replication link.| +|role | The role of the database in the replication link.| +|starttime | The start time for the replication link.| +|terminationallowed | Legacy value indicating whether termination is allowed.| + +#### Relationships + +- Azure SQL Database contains one or more Azure Replication Links. + + ``` + (AzureSQLDatabase)-[CONTAINS]->(AzureReplicationLink) + ``` + +### AzureDatabaseThreatDetectionPolicy + +Representation of an [AzureDatabaseThreatDetectionPolicy](https://docs.microsoft.com/en-us/rest/api/sql/databasethreatdetectionpolicies). + +| Field | Description | +|-------|-------------| +|firstseen| Timestamp of when a sync job discovered this node| +|lastupdated| Timestamp of the last time the node was updated| +|**id**| The resource ID| +|name | The name of the resource.| +|location | The geo-location where the resource lives.| +|kind | The kind of the resource.| +|emailadmins | Specifies that the alert is sent to the account administrators.| +|emailaddresses | Specifies the semicolon-separated list of e-mail addresses to which the alert is sent.| +|retentiondays | Specifies the number of days to keep in the Threat Detection audit logs.| +|state | Specifies the state of the policy.| +|storageendpoint | Specifies the blob storage endpoint.| +|useserverdefault | Specifies whether to use the default server policy.| +|disabledalerts | Specifies the semicolon-separated list of alerts that are disabled, or empty string to disable no alerts.| + +#### Relationships + +- Azure SQL Database contains a Database Threat Detection Policy. + + ``` + (AzureSQLDatabase)-[CONTAINS]->(AzureDatabaseThreatDetectionPolicy) + ``` + +### AzureRestorePoint + +Representation of an [AzureRestorePoint](https://docs.microsoft.com/en-us/rest/api/sql/restorepoints). + +| Field | Description | +|-------|-------------| +|firstseen| Timestamp of when a sync job discovered this node| +|lastupdated| Timestamp of the last time the node was updated| +|**id**| The resource ID| +|name | The name of the resource.| +|location | The geo-location where the resource lives.| +|restoredate | The earliest time to which this database can be restored.| +|restorepointtype | The type of restore point.| +|creationdate | The time the backup was taken.| + +#### Relationships + +- Azure SQL Database contains one or more Restore Points. + + ``` + (AzureSQLDatabase)-[CONTAINS]->(AzureRestorePoint) + ``` + +### AzureTransparentDataEncryption + +Representation of an [AzureTransparentDataEncryption](https://docs.microsoft.com/en-us/rest/api/sql/transparentdataencryptions). + +| Field | Description | +|-------|-------------| +|firstseen| Timestamp of when a sync job discovered this node| +|lastupdated| Timestamp of the last time the node was updated| +|**id**| The resource ID| +|name | The name of the resource.| +|location | The resource location.| +|status | The status of the database transparent data encryption.| + +#### Relationships + +- Azure SQL Database contains Transparent Data Encryption. + + ``` + (AzureSQLDatabase)-[CONTAINS]->(AzureTransparentDataEncryption) + ``` + +### AzureStorageAccount + +Representation of an [AzureStorageAccount](https://docs.microsoft.com/en-us/rest/api/storagerp/storageaccounts). + +| Field | Description | +|-------|-------------| +|firstseen| Timestamp of when a sync job discovered this node| +|lastupdated| Timestamp of the last time the node was updated| +|**id**| Fully qualified resource ID for the resource.| +|type | The type of the resource.| +|location | The geo-location where the resource lives.| +|resourcegroup | The Resource Group where the storage account is created| +|name | The name of the resource.| +|kind | Gets the Kind of the resource.| +|creationtime | Gets the creation date and time of the storage account in UTC.| +|hnsenabled | Specifies if the Account HierarchicalNamespace is enabled.| +|primarylocation | Gets the location of the primary data center for the storage account.| +|secondarylocation | Gets the location of the geo-replicated secondary for the storage account.| +|provisioningstate | Gets the status of the storage account at the time the operation was called.| +|statusofprimary | Gets the status availability status of the primary location of the storage account.| +|statusofsecondary | Gets the status availability status of the secondary location of the storage account.| +|supportshttpstrafficonly | Allows https traffic only to storage service if sets to true.| + +#### Relationships + +- Azure Subscription contains one or more Storage Accounts. + + ``` + (AzureSubscription)-[RESOURCE]->(AzureStorageAccount) + ``` +- Azure Storage Accounts uses one or more Queue Services. + + ``` + (AzureStorageAccount)-[USES]->(AzureStorageQueueService) + ``` +- Azure Storage Accounts uses one or more Table Services. + + ``` + (AzureStorageAccount)-[USES]->(AzureStorageTableService) + ``` +- Azure Storage Accounts uses one or more File Services. + + ``` + (AzureStorageAccount)-[USES]->(AzureStorageFileService) + ``` +- Azure Storage Accounts uses one or more Blob Services. + + ``` + (AzureStorageAccount)-[USES]->(AzureStorageBlobService) + ``` + +### AzureStorageQueueService + +Representation of an [AzureStorageQueueService](https://docs.microsoft.com/en-us/rest/api/storagerp/queueservices). + +| Field | Description | +|-------|-------------| +|firstseen| Timestamp of when a sync job discovered this node| +|lastupdated| Timestamp of the last time the node was updated| +|**id**| Fully qualified resource ID for the resource.| +|type | The type of the resource.| +|name | The name of the queue service.| + +#### Relationships + +- Azure Storage Accounts uses one or more Queue Services. + + ``` + (AzureStorageAccount)-[USES]->(AzureStorageQueueService) + ``` +- Queue Service contains one or more queues. + + ``` + (AzureStorageQueueService)-[CONTAINS]->(AzureStorageQueue) + ``` + +### AzureStorageTableService + +Representation of an [AzureStorageTableService](https://docs.microsoft.com/en-us/rest/api/storagerp/tableservices). + +| Field | Description | +|-------|-------------| +|firstseen| Timestamp of when a sync job discovered this node| +|lastupdated| Timestamp of the last time the node was updated| +|**id**| Fully qualified resource ID for the resource.| +|type | The type of the resource.| +|name | The name of the table service.| + +#### Relationships + +- Azure Storage Accounts uses one or more Table Services. + + ``` + (AzureStorageAccount)-[USES]->(AzureStorageTableService) + ``` +- Table Service contains one or more tables. + + ``` + (AzureStorageTableService)-[CONTAINS]->(AzureStorageTable) + ``` + +### AzureStorageFileService + +Representation of an [AzureStorageFileService](https://docs.microsoft.com/en-us/rest/api/storagerp/fileservices). + +| Field | Description | +|-------|-------------| +|firstseen| Timestamp of when a sync job discovered this node| +|lastupdated| Timestamp of the last time the node was updated| +|**id**| Fully qualified resource ID for the resource.| +|type | The type of the resource.| +|name | The name of the file service.| + +#### Relationships + +- Azure Storage Accounts uses one or more File Services. + + ``` + (AzureStorageAccount)-[USES]->(AzureStorageFileService) + ``` +- Table Service contains one or more file shares. + + ``` + (AzureStorageFileService)-[CONTAINS]->(AzureStorageFileShare) + ``` + +### AzureStorageBlobService + +Representation of an [AzureStorageBlobService](https://docs.microsoft.com/en-us/rest/api/storagerp/blobservices). + +| Field | Description | +|-------|-------------| +|firstseen| Timestamp of when a sync job discovered this node| +|lastupdated| Timestamp of the last time the node was updated| +|**id**| Fully qualified resource ID for the resource.| +|type | The type of the resource.| +|name | The name of the blob service.| + +#### Relationships + +- Azure Storage Accounts uses one or more Blob Services. + + ``` + (AzureStorageAccount)-[USES]->(AzureStorageBlobService) + ``` +- Blob Service contains one or more blob containers. + + ``` + (AzureStorageBlobService)-[CONTAINS]->(AzureStorageBlobContainer) + ``` + +### AzureStorageQueue + +Representation of an [AzureStorageQueue](https://docs.microsoft.com/en-us/rest/api/storagerp/queue). + +| Field | Description | +|-------|-------------| +|firstseen| Timestamp of when a sync job discovered this node| +|lastupdated| Timestamp of the last time the node was updated| +|**id**| Fully qualified resource ID for the resource.| +|type | The type of the resource.| +|name | The name of the queue.| + +#### Relationships + +- Queue Service contains one or more queues. + + ``` + (AzureStorageQueueService)-[CONTAINS]->(AzureStorageQueue) + ``` + +### AzureStorageTable + +Representation of an [AzureStorageTable](https://docs.microsoft.com/en-us/rest/api/storagerp/table). + +| Field | Description | +|-------|-------------| +|firstseen| Timestamp of when a sync job discovered this node| +|lastupdated| Timestamp of the last time the node was updated| +|**id**| Fully qualified resource ID for the resource.| +|type | The type of the resource.| +|name | The name of the table resource.| +|tablename | Table name under the specified account.| + +#### Relationships + +- Table Service contains one or more tables. + + ``` + (AzureStorageTableService)-[CONTAINS]->(AzureStorageTable) + ``` + +### AzureStorageFileShare + +Representation of an [AzureStorageFileShare](https://docs.microsoft.com/en-us/rest/api/storagerp/fileshares). + +| Field | Description | +|-------|-------------| +|firstseen| Timestamp of when a sync job discovered this node| +|lastupdated| Timestamp of the last time the node was updated| +|**id**| Fully qualified resource ID for the resource.| +|type | The type of the resource.| +|name | The name of the resource.| +|lastmodifiedtime | Specifies the date and time the share was last modified.| +|sharequota | The maximum size of the share, in gigabytes.| +|accesstier | Specifies the access tier for the share.| +|deleted | Indicates whether the share was deleted.| +|accesstierchangetime | Indicates the last modification time for share access tier.| +|accesstierstatus | Indicates if there is a pending transition for access tier.| +|deletedtime | The deleted time if the share was deleted.| +|enabledprotocols | The authentication protocol that is used for the file share.| +|remainingretentiondays | Remaining retention days for share that was soft deleted.| +|shareusagebytes | The approximate size of the data stored on the share.| +|version | The version of the share.| + +#### Relationships + +- File Service contains one or more file shares. + + ``` + (AzureStorageTableService)-[CONTAINS]->(AzureStorageFileShare) + ``` + +### AzureStorageBlobContainer + +Representation of an [AzureStorageBlobContainer](https://docs.microsoft.com/en-us/rest/api/storagerp/blobcontainers). + +| Field | Description | +|-------|-------------| +|firstseen| Timestamp of when a sync job discovered this node| +|lastupdated| Timestamp of the last time the node was updated| +|**id**| Fully qualified resource ID for the resource.| +|type | The type of the resource.| +|name | The name of the resource.| +|deleted | Indicates whether the blob container was deleted.| +|deletedtime | Blob container deletion time.| +|defaultencryptionscope | Default the container to use specified encryption scope for all writes.| +|publicaccess | Specifies whether data in the container may be accessed publicly and the level of access.| +|leasestatus | The lease status of the container.| +|leasestate | Lease state of the container.| +|lastmodifiedtime | Specifies the date and time the container was last modified.| +|remainingretentiondays | Specifies the remaining retention days for soft deleted blob container.| +|version | The version of the deleted blob container.| +|hasimmutabilitypolicy | Specifies the if the container has an ImmutabilityPolicy or not.| +|haslegalhold | Specifies if the container has any legal hold tags.| +|leaseduration | Specifies whether the lease on a container is of infinite or fixed duration, only when the container is leased.| + +#### Relationships + +- Blob Service contains one or more blob containers. + + ``` + (AzureStorageBlobService)-[CONTAINS]->(AzureStorageBlobContainer) + ``` + +### AzureCosmosDBAccount + +Representation of an [AzureCosmosDBAccount](https://docs.microsoft.com/en-us/rest/api/cosmos-db-resource-provider/). + +| Field | Description | +|-------|-------------| +|firstseen| Timestamp of when a sync job discovered this node| +|lastupdated| Timestamp of the last time the node was updated| +|**id**| The unique resource identifier of the ARM resource.| +|location | The location of the resource group to which the resource belongs.| +|resourcegroup | The Resource Group where the database account is created.| +|name | The name of the ARM resource.| +|kind | Indicates the type of database account.| +|type | The type of Azure resource.| +|ipranges | List of IpRules.| +|capabilities | List of Cosmos DB capabilities for the account.| +|documentendpoint | The connection endpoint for the Cosmos DB database account.| +|virtualnetworkfilterenabled | Flag to indicate whether to enable/disable Virtual Network ACL rules.| +|enableautomaticfailover | Enables automatic failover of the write region in the rare event that the region is unavailable due to an outage.| +|provisioningstate | The status of the Cosmos DB account at the time the operation was called.| +|multiplewritelocations | Enables the account to write in multiple locations.| +|accountoffertype | The offer type for the Cosmos DB database account.| +|publicnetworkaccess | Whether requests from Public Network are allowed.| +|enablecassandraconnector | Enables the cassandra connector on the Cosmos DB C* account.| +|connectoroffer | The cassandra connector offer type for the Cosmos DB database C* account.| +|disablekeybasedmetadatawriteaccess | Disable write operations on metadata resources (databases, containers, throughput) via account keys.| +|keyvaulturi | The URI of the key vault.| +|enablefreetier | Flag to indicate whether Free Tier is enabled.| +|enableanalyticalstorage | Flag to indicate whether to enable storage analytics.| +|defaultconsistencylevel | The default consistency level and configuration settings of the Cosmos DB account.| +|maxstalenessprefix | When used with the Bounded Staleness consistency level, this value represents the number of stale requests tolerated.| +|maxintervalinseconds | When used with the Bounded Staleness consistency level, this value represents the time amount of staleness (in seconds) tolerated.| + +#### Relationships + +- Azure Subscription contains one or more database accounts. + + ``` + (AzureSubscription)-[RESOURCE]->(AzureCosmosDBAccount) + ``` +- Azure Database Account can be read from, written from and is associated with Azure CosmosDB Locations. + + ``` + (AzureCosmosDBAccount)-[CAN_WRITE_FROM]->(AzureCosmosDBLocation) + ``` + (AzureCosmosDBAccount)-[CAN_READ_FROM]->(AzureCosmosDBLocation) + ``` + (AzureCosmosDBAccount)-[ASSOCIATED_WITH]->(AzureCosmosDBLocation) + ``` +- Azure Database Account contains one or more Cors Policy. + + ``` + (AzureCosmosDBAccount)-[CONTAINS]->(AzureCosmosDBCorsPolicy) + ``` +- Azure Database Account contains one or more failover policies. + + ``` + (AzureCosmosDBAccount)-[CONTAINS]->(AzureCosmosDBAccountFailoverPolicy) + ``` +- Azure Database Account is configured with one or more private endpoint connections. + + ``` + (AzureCosmosDBAccount)-[CONFIGURED_WITH]->(AzureCDBPrivateEndpointConnection) + ``` +- Azure Database Account is configured with one or more virtual network rules. + + ``` + (AzureCosmosDBAccount)-[CONFIGURED_WITH]->(AzureCosmosDBVirtualNetworkRule) + ``` +- Azure Database Account contains one or more SQL databases. + + ``` + (AzureCosmosDBAccount)-[CONTAINS]->(AzureCosmosDBSqlDatabase) + ``` +- Azure Database Account contains one or more Cassandra keyspace. + + ``` + (AzureCosmosDBAccount)-[CONTAINS]->(AzureCosmosDBCassandraKeyspace) + ``` +- Azure Database Account contains one or more MongoDB Database. + + ``` + (AzureCosmosDBAccount)-[CONTAINS]->(AzureCosmosDBMongoDBDatabase) + ``` +- Azure Database Account contains one or more table resource. + + ``` + (AzureCosmosDBAccount)-[CONTAINS]->(AzureCosmosDBTableResource) + ``` + +### AzureCosmosDBLocation + +Representation of an [Azure CosmosDB Location](https://docs.microsoft.com/en-us/rest/api/cosmos-db-resource-provider/). + +| Field | Description | +|-------|-------------| +|firstseen| Timestamp of when a sync job discovered this node| +|lastupdated| Timestamp of the last time the node was updated| +|**id**| The unique identifier of the region within the database account.| +|locationname | The name of the region.| +|documentendpoint | The connection endpoint for the specific region.| +|provisioningstate | The status of the Cosmos DB account at the time the operation was called.| +|failoverpriority | The failover priority of the region.| +|iszoneredundant | Flag to indicate whether or not this region is an AvailabilityZone region.| + +#### Relationships + +- Azure Database Account has write permissions from, read permissions from and is associated with Azure CosmosDB Locations. + + ``` + (AzureCosmosDBAccount)-[CAN_WRITE_FROM]->(AzureCosmosDBLocation) + ``` + (AzureCosmosDBAccount)-[CAN_READ_FROM]->(AzureCosmosDBLocation) + ``` + (AzureCosmosDBAccount)-[ASSOCIATED_WITH]->(AzureCosmosDBLocation) + ``` + +### AzureCosmosDBCorsPolicy + +Representation of an [Azure Cosmos DB Cors Policy](https://docs.microsoft.com/en-us/rest/api/cosmos-db-resource-provider/). + +| Field | Description | +|-------|-------------| +|firstseen| Timestamp of when a sync job discovered this node| +|lastupdated| Timestamp of the last time the node was updated| +|**id**| The unique resource identifier for Cors Policy.| +|allowedorigins | The origin domains that are permitted to make a request against the service via CORS.| +|allowedmethods | The methods (HTTP request verbs) that the origin domain may use for a CORS request.| +|allowedheaders | The request headers that the origin domain may specify on the CORS request.| +|exposedheaders | The response headers that may be sent in the response to the CORS request and exposed by the browser to the request issuer.| +|maxageinseconds | The maximum amount time that a browser should cache the preflight OPTIONS request.| + +#### Relationships + +- Azure Database Account contains one or more Cors Policy. + + ``` + (AzureCosmosDBAccount)-[CONTAINS]->(AzureCosmosDBCorsPolicy) + ``` + +### AzureCosmosDBAccountFailoverPolicy + +Representation of an Azure Database Account [Failover Policy](https://docs.microsoft.com/en-us/rest/api/cosmos-db-resource-provider/). + +| Field | Description | +|-------|-------------| +|firstseen| Timestamp of when a sync job discovered this node| +|lastupdated| Timestamp of the last time the node was updated| +|**id**| The unique identifier of the region in which the database account replicates to.| +|locationname | The name of the region in which the database account exists.| +|failoverpriority | The failover priority of the region. A failover priority of 0 indicates a write region.| + +#### Relationships + +- Azure Database Account contains one or more failover policies. + + ``` + (AzureCosmosDBAccount)-[CONTAINS]->(AzureCosmosDBAccountFailoverPolicy) + ``` + +### AzureCDBPrivateEndpointConnection + +Representation of an Azure Cosmos DB [Private Endpoint Connection](https://docs.microsoft.com/en-us/rest/api/cosmos-db-resource-provider/). + +| Field | Description | +|-------|-------------| +|firstseen| Timestamp of when a sync job discovered this node| +|lastupdated| Timestamp of the last time the node was updated| +|**id**| Fully qualified resource Id for the resource.| +|name | The name of the resource.| +|privateendpointid | Resource id of the private endpoint.| +|status | The private link service connection status.| +|actionrequired | Any action that is required beyond basic workflow (approve/ reject/ disconnect).| + +#### Relationships + +- Azure Database Account is configured with one or more private endpoint connections. + + ``` + (AzureCosmosDBAccount)-[CONFIGURED_WITH]->(AzureCDBPrivateEndpointConnection) + ``` + +### AzureCosmosDBVirtualNetworkRule + +Representation of an Azure Cosmos DB [Virtual Network Rule](https://docs.microsoft.com/en-us/rest/api/cosmos-db-resource-provider/). + +| Field | Description | +|-------|-------------| +|firstseen| Timestamp of when a sync job discovered this node| +|lastupdated| Timestamp of the last time the node was updated| +|**id**| Resource ID of a subnet.| +|ignoremissingvnetserviceendpoint | Create firewall rule before the virtual network has vnet service endpoint enabled.| + +#### Relationships + +- Azure Database Account is configured with one or more virtual network rules. + + ``` + (AzureCosmosDBAccount)-[CONFIGURED_WITH]->(AzureCosmosDBVirtualNetworkRule) + ``` + +### AzureCosmosDBSqlDatabase + +Representation of an [AzureCosmosDBSqlDatabase](https://docs.microsoft.com/en-us/rest/api/cosmos-db-resource-provider/). + +| Field | Description | +|-------|-------------| +|firstseen| Timestamp of when a sync job discovered this node| +|lastupdated| Timestamp of the last time the node was updated| +|**id**| The unique resource identifier of the ARM resource.| +|name | The name of the ARM resource.| +|type| The type of Azure resource.| +|location| The location of the resource group to which the resource belongs.| +|throughput| Value of the Cosmos DB resource throughput or autoscaleSettings.| +|maxthroughput| Represents maximum throughput, the resource can scale up to.| + +#### Relationships + +- Azure Database Account contains one or more SQL databases. + + ``` + (AzureCosmosDBAccount)-[CONTAINS]->(AzureCosmosDBSqlDatabase) + ``` +- SQL Databases contain one or more SQL containers. + + ``` + (AzureCosmosDBSqlDatabase)-[CONTAINS]->(AzureCosmosDBSqlContainer) + ``` + +### AzureCosmosDBCassandraKeyspace + +Representation of an [AzureCosmosDBCassandraKeyspace](https://docs.microsoft.com/en-us/rest/api/cosmos-db-resource-provider/). + +| Field | Description | +|-------|-------------| +|firstseen| Timestamp of when a sync job discovered this node| +|lastupdated| Timestamp of the last time the node was updated| +|**id**| The unique resource identifier of the ARM resource.| +|name | The name of the ARM resource.| +|type| The type of Azure resource.| +|location| The location of the resource group to which the resource belongs.| +|throughput| Value of the Cosmos DB resource throughput or autoscaleSettings.| +|maxthroughput| Represents maximum throughput, the resource can scale up to.| + +#### Relationships + +- Azure Database Account contains one or more Cassandra keyspace. + + ``` + (AzureCosmosDBAccount)-[CONTAINS]->(AzureCosmosDBCassandraKeyspace) + ``` +- Cassandra Keyspace contains one or more Cassandra tables. + + ``` + (AzureCosmosDBCassandraKeyspace)-[CONTAINS]->(AzureCosmosDBCassandraTable) + ``` + +### AzureCosmosDBMongoDBDatabase + +Representation of an [AzureCosmosDBMongoDBDatabase](https://docs.microsoft.com/en-us/rest/api/cosmos-db-resource-provider/). + +| Field | Description | +|-------|-------------| +|firstseen| Timestamp of when a sync job discovered this node| +|lastupdated| Timestamp of the last time the node was updated| +|**id**| The unique resource identifier of the ARM resource.| +|name | The name of the ARM resource.| +|type| The type of Azure resource.| +|location| The location of the resource group to which the resource belongs.| +|throughput| Value of the Cosmos DB resource throughput or autoscaleSettings.| +|maxthroughput| Represents maximum throughput, the resource can scale up to.| + +#### Relationships + +- Azure Database Account contains one or more MongoDB Database. + + ``` + (AzureCosmosDBAccount)-[CONTAINS]->(AzureCosmosDBMongoDBDatabase) + ``` +- MongoDB database contains one or more MongoDB collections. + + ``` + (AzureCosmosDBMongoDBDatabase)-[CONTAINS]->(AzureCosmosDBMongoDBCollection) + ``` + +### AzureCosmosDBTableResource + +Representation of an [AzureCosmosDBTableResource](https://docs.microsoft.com/en-us/rest/api/cosmos-db-resource-provider/). + +| Field | Description | +|-------|-------------| +|firstseen| Timestamp of when a sync job discovered this node| +|lastupdated| Timestamp of the last time the node was updated| +|**id**| The unique resource identifier of the ARM resource.| +|name | The name of the ARM resource.| +|type| The type of Azure resource.| +|location| The location of the resource group to which the resource belongs.| +|throughput| Value of the Cosmos DB resource throughput or autoscaleSettings.| +|maxthroughput| Represents maximum throughput, the resource can scale up to.| + +#### Relationships + +- Azure Database Account contains one or more table resource. + + ``` + (AzureCosmosDBAccount)-[CONTAINS]->(AzureCosmosDBTableResource) + ``` + +### AzureCosmosDBSqlContainer + +Representation of an [AzureCosmosDBSqlContainer](https://docs.microsoft.com/en-us/rest/api/cosmos-db-resource-provider/). + +| Field | Description | +|-------|-------------| +|firstseen| Timestamp of when a sync job discovered this node| +|lastupdated| Timestamp of the last time the node was updated| +|**id**| The unique resource identifier of the ARM resource.| +|name | The name of the ARM resource.| +|type| The type of Azure resource.| +|location| The location of the resource group to which the resource belongs.| +|throughput| Value of the Cosmos DB resource throughput or autoscaleSettings.| +|maxthroughput| Represents maximum throughput, the resource can scale up to.| +|container| Name of the Cosmos DB SQL container.| +|defaultttl| Default time to live.| +|analyticalttl| Specifies the Analytical TTL.| +|isautomaticindexingpolicy| Indicates if the indexing policy is automatic.| +|indexingmode| Indicates the indexing mode.| +|conflictresolutionpolicymode| Indicates the conflict resolution mode.| + +#### Relationships + +- SQL Databases contain one or more SQL containers. + + ``` + (AzureCosmosDBSqlDatabase)-[CONTAINS]->(AzureCosmosDBSqlContainer) + ``` + +### AzureCosmosDBCassandraTable + +Representation of an [AzureCosmosDBCassandraTable](https://docs.microsoft.com/en-us/rest/api/cosmos-db-resource-provider/). + +| Field | Description | +|-------|-------------| +|firstseen| Timestamp of when a sync job discovered this node| +|lastupdated| Timestamp of the last time the node was updated| +|**id**| The unique resource identifier of the ARM resource.| +|name | The name of the ARM resource.| +|type| The type of Azure resource.| +|location| The location of the resource group to which the resource belongs.| +|throughput| Value of the Cosmos DB resource throughput or autoscaleSettings.| +|maxthroughput| Represents maximum throughput, the resource can scale up to.| +|container| Name of the Cosmos DB Cassandra table.| +|defaultttl| Time to live of the Cosmos DB Cassandra table.| +|analyticalttl| Specifies the Analytical TTL.| + +#### Relationships + +- Cassandra Keyspace contains one or more Cassandra tables. + + ``` + (AzureCosmosDBCassandraKeyspace)-[CONTAINS]->(AzureCosmosDBCassandraTable) + ``` + +### AzureCosmosDBMongoDBCollection + +Representation of an [AzureCosmosDBMongoDBCollection](https://docs.microsoft.com/en-us/rest/api/cosmos-db-resource-provider/). + +| Field | Description | +|-------|-------------| +|firstseen| Timestamp of when a sync job discovered this node| +|lastupdated| Timestamp of the last time the node was updated| +|**id**| The unique resource identifier of the ARM resource.| +|name | The name of the ARM resource.| +|type| The type of Azure resource.| +|location| The location of the resource group to which the resource belongs.| +|throughput| Value of the Cosmos DB resource throughput or autoscaleSettings.| +|maxthroughput| Represents maximum throughput, the resource can scale up to.| +|collectionname| Name of the Cosmos DB MongoDB collection.| +|analyticalttl| Specifies the Analytical TTL.| + +#### Relationships + +- MongoDB database contains one or more MongoDB collections. + + ``` + (AzureCosmosDBMongoDBDatabase)-[CONTAINS]->(AzureCosmosDBMongoDBCollection) + ``` diff --git a/_sources/modules/bigfix/config.md.txt b/_sources/modules/bigfix/config.md.txt new file mode 100644 index 0000000000..6e7eac0020 --- /dev/null +++ b/_sources/modules/bigfix/config.md.txt @@ -0,0 +1,10 @@ +## BigFix Configuration + +.. _bigfix_config: + +Follow these steps to analyze BigFix objects with Cartography. + +1. Prepare a read-only BigFix username and password. +1. Pass the BigFix username to the `--bigfix-username` CLI arg. +1. Populate an environment variable with the password. +1. Pass that env var name to the `--bigfix_password_env_var` CLI arg. diff --git a/_sources/modules/bigfix/index.rst.txt b/_sources/modules/bigfix/index.rst.txt new file mode 100644 index 0000000000..ba874d3989 --- /dev/null +++ b/_sources/modules/bigfix/index.rst.txt @@ -0,0 +1,12 @@ +Lastpass +######## + +The BigFix module has the following coverage: + +* Computers + +.. toctree:: + :hidden: + :glob: + + * diff --git a/_sources/modules/bigfix/schema.md.txt b/_sources/modules/bigfix/schema.md.txt new file mode 100644 index 0000000000..5f07b4b099 --- /dev/null +++ b/_sources/modules/bigfix/schema.md.txt @@ -0,0 +1,49 @@ +## BigFix Schema + +.. _bigfix_schema: + + +### BigfixComputer + +Represents a computer tracked by BigFix. + +| Field | Description | +|-------|--------------| +| firstseen| Timestamp of when a sync job first created this node | +| lastupdated | Timestamp of the last time the node was updated | +| id | String. Internal BigFix ID. | +| activedirectorypath | Example: CN=my-server-2,CN=Computers,DC=example-corp,DC=net | +| agenttype | Example: Native | +| agentversion | Version of the BigFix agent. Example: 10.0.7.52 | +| averageevaluationcycle | Example: 106 (integer)| +| besrelayselectionmethod | Example: Manual | +| besrootserver | Example: bigfixroot.example.com (0) | +| bios | String value. Example: 06/25/2021 | +| computername | Example: my-server-2 | +| computertype | Example: Virtual, Physical | +| cpu | Example: 2300 MHz Xeon Gold 5218 | +| devicetype | Example: Server | +| dnsname | Example: my-server-2.example.com | +| enrollmentdatetime | The date time this asset was enrolled in BigFix. Example: 2022-04-06T18:54:01-07:00 | +| ipaddress | Example: 192.168.128.215 | +| ipv6address | Example: fe80:0:0:0:abcd:abcd:abcd:abcd | +| islocked | Boolean - whether this asset is locked | +| lastreporttime | Last reported datetime of this asset 2023-04-19T15:55:23Z | +| locationbyiprange | Example: SF | +| loggedonuser | Currently logged on username. Example: , bartsimpson | +| macaddress | Example: 00-50-ab-cd-ab-cd | +| os | Example: Win2019 10.0.17763.3406 (1809) | +| providername | Example: VMware, On Premises | +| ram | Example: 16384 MB | +| relay | Example: mybigfixrelay.example.com | +| remotedesktopisenabled | Boolean - whether remote desktop is enabled | +| subnetaddress | Example: 192.168.128.0 | +| username | Example: , bartsimpson | + + +#### Relationships + +- A BigfixComputer is a resource of a BigfixRoot. + ``` + (:BigfixRoot)-[:RESOURCE]->(:BigfixComputer) + ``` diff --git a/_sources/modules/crowdstrike/config.md.txt b/_sources/modules/crowdstrike/config.md.txt new file mode 100644 index 0000000000..cd89740414 --- /dev/null +++ b/_sources/modules/crowdstrike/config.md.txt @@ -0,0 +1,11 @@ +## Crowdstrike Configuration + +.. _crowdstrike_config: + +Follow these steps to analyze Crowdstrike falcon objects in Cartography. + +1. Prepare an API key for crowdstrike falcon + 1. Crowdstrike's documentation is private, so please see your instance's documentation on how to generate an API key. + 1. Populate an environment variable with the Client ID. You can pass the environment variable name via CLI with the `--crowdstrike-client-id-env-var` parameter. + 1. Populate an environment variable with the Client Secret. You can pass the environment variable name via CLI with the `--crowdstrike-client-secret-env-var` parameter. + 1. If you are using a self-hosted version of crowdstrike, you can change the API url, by passing it into the CLI with the `--crowdstrike-api-url` parameter. diff --git a/_sources/modules/crowdstrike/index.rst.txt b/_sources/modules/crowdstrike/index.rst.txt new file mode 100644 index 0000000000..e3ca2f96b1 --- /dev/null +++ b/_sources/modules/crowdstrike/index.rst.txt @@ -0,0 +1,14 @@ +Crowdstrike +########### + +The crowdstrike module has the following coverage: + +* Hosts +* Spotlight Vulnerabilities +* CVEs + +.. toctree:: + :hidden: + :glob: + + * diff --git a/_sources/modules/crowdstrike/schema.md.txt b/_sources/modules/crowdstrike/schema.md.txt new file mode 100644 index 0000000000..2c634155f7 --- /dev/null +++ b/_sources/modules/crowdstrike/schema.md.txt @@ -0,0 +1,103 @@ +## Crowdstrike Schema + +.. _crowdstrike_schema: + +### CrowdstrikeHost + +Representation of a Crowdstrike Host + +| Field | Description | +|-------|-------------| +| firstseen | Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| id | The device ID for this host | +| cid | The customer ID | +| instance\_id | The AWS instance ID associated with this host | +| status | Containment Status of the machine. "Normal" denotes good operations; other values might mean reduced functionality or support. | +| hostname | The name of the machine. | +| machine\_domain | Active Directory domain name. | +| crowdstrike\_first\_seen | Timestamp of device’s first connection to Falcon | +| crowdstrike\_last\_seen | Timestamp of device’s most recent connection to Falcon | +| local\_ip | The device's local IP address. | +| external\_ip | External IP of the device, as seen by CrowdStrike. | +| cpu\_signature | The CPU signature of the device. | +| bios\_manufacturer | Bios manufacture name. | +| bios\_version | Bios version. | +| mac\_address | The MAC address of the device | +| os\_version | Operating system version. | +| os\_build | The build of the OS | +| platform\_id | CrowdStrike agent configuration notes | +| platform\_name | Operating system platform. | +| service\_provider | The service provider for the device. | +| service\_provider\_account\_id | The service provider account ID associated with this device | +| agent\_version | CrowdStrike agent configuration notes | +| system\_manufacturer | Name of system manufacturer | +| system\_product\_name | Name of system product | +| product\_type | The product type | +| product\_type\_desc | Name of product type. | +| provision\_status | The provision status of the device | +| reduced\_functionality\_mode | Reduced functionality mode (RFM) status | +| kernel\_version | Kernel version of the host OS. | +| major\_version | Major version of the Operating System | +| minor\_version | Minor version of the Operating System | +| tags | Grouping tags for the device | +| modified\_timestamp | The last time that the machine record was updated. Can include status like containment status changes or configuration group changes | + +#### Relationships + +- CrowdstrikeHost has SpotlightVulnerability + ``` + (CrowdstrikeHost)-[HAS_VULNERABILITY]->(SpotlightVulnerability) + ``` + +### SpotlightVulnerability + +Representation of a Crowdstrike Vulnerability + +| Field | Description | +|-------|-------------| +| firstseen | Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| id | The ID for this vulnerability | +| cid | The customer ID | +| aid | The unique identifier (agent ID) of the sensor where the vulnerability was found. | +| status | The vulnerability’s current status. One of open, closed, reopen, or expired. | +| created\_timestamp | The UTC date and time that the vulnerability was created in Spotlight. | +| closed\_timestamp | The date and time a vulnerability was set to a status of "closed" | +| updated\_timestamp | The UTC date and time of the last update made on a vulnerability. | +| cve\_id | The ID of the CVE. | +| host\_info\_local\_ip | The device’s local IP address. | +| remediation\_ids | The unique IDs of the remediations. | +| app\_product\_name\_version | The name and version of the product associated with the vulnerability. | + +#### Relationships + +- CrowdstrikeHost has SpotlightVulnerability + ``` + (CrowdstrikeHost)-[HAS_VULNERABILITY]->(SpotlightVulnerability) + ``` + +- SpotlightVulnerability has CVE + ``` + (SpotlightVulnerability)-[HAS_CVE]->(CVE) + ``` + +### CVE::CrowdstrikeFinding + +Representation of a CVE + +| Field | Description | +|-------|-------------| +| firstseen | Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| id | The ID for this CVE | +| base\_score | Base score of the CVE (float value between 1 and 10). | +| severity | Severity of the CVE. One of CRITICAL, HIGH, MEDIUM, LOW, UNKNOWN, or NONE. | +| exploitability\_score | Numeric value of the most severe known exploit. 0=UNPROVEN; 30=AVAILABLE; 60=EASILY\_ACCESSIBLE; 90=ACTIVELY\_USED | + +#### Relationships + +- SpotlightVulnerability has CVE + ``` + (SpotlightVulnerability)-[HAS_CVE]->(CVE) + ``` diff --git a/_sources/modules/crxcavator/config.md.txt b/_sources/modules/crxcavator/config.md.txt new file mode 100644 index 0000000000..025db1fdab --- /dev/null +++ b/_sources/modules/crxcavator/config.md.txt @@ -0,0 +1,12 @@ +## Crxcavator Configuration + +.. _crxcavator_config: + +Follow these steps to analyze Chrome Extensions with Cartography. + +1. **Prepare your CRXcavator API key** + + 1. Generate an API key from your CRXcavator [user page](https://crxcavator.io/user/settings#) + 1. Add the required commandline arguments when calling Cartography + 1. `--crxcavator-api-base-url` - the full URL to the CRXcavator API. https://api.crxcavator.io/v1 as of 01/16/2020 (this value will be used if not provided) + 1. `--crxcavator-api-key-env-var` - Name of environment variable holding your API key generated in the previous step. Note this is a credential and should be stored in an appropriate secret store to be populated securely into your runtime environment. diff --git a/_sources/modules/crxcavator/index.rst.txt b/_sources/modules/crxcavator/index.rst.txt new file mode 100644 index 0000000000..e74b2e04e1 --- /dev/null +++ b/_sources/modules/crxcavator/index.rst.txt @@ -0,0 +1,13 @@ +Duo CRXcavator +############## + +The crxcavator module has the following coverage: + +* Chrome extensions +* GSuite users + +.. toctree:: + :hidden: + :glob: + + * diff --git a/_sources/modules/crxcavator/schema.md.txt b/_sources/modules/crxcavator/schema.md.txt new file mode 100644 index 0000000000..3029ecb59c --- /dev/null +++ b/_sources/modules/crxcavator/schema.md.txt @@ -0,0 +1,67 @@ +## Crxcavtor Schema + +### GSuiteUser + +Placeholder representation of a single G Suite [user object](https://developers.google.com/admin-sdk/directory/v1/reference/users). This node is the minimal data necessary to map who has extensions installed until full G Suite data is imported. + + +| Field | Description | +|-------|--------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| id | The user's email address, will change to actual G Suite id in future | +| email | The user's email address + +#### Relationships + +- GSuiteUsers install ChromeExtensions. + + ``` + (GSuiteUser)-[INSTALLS]->(ChromeExtension) + ``` + +### ChromeExtension + + Representation of a CRXcavator Chrome Extension [Report](https://crxcavator.io/apidocs#tag/report). + +| Field | Description | +|-------|--------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| id | The combined extension name and version e.g. ``"Docs\|1.0"`` | +| extension\_id | CRXcavator id for extension. | +| version | The versions of the extension in this report | +| risk\_total | CRXcavator risk score for the extension | +| risk\_metadata | Additional data provided by CRXcavator on the risk score | +| risk\_permissions\_score | Sum of the permissions component of the risk score | +| risk\_webstore\_score | Sum of the webstore component of the risk score | +| risk\_csp\_score | Sum of the CSP component of the risk score | +| risk\_optional\_permissions\_score | Sum of the optional permissions component of the risk score | +| risk\_extcalls\_score | Sum of the external calls component of the risk score | +| risk\_vuln\_score | Sum of the RetireJS vulnerability component of the risk score | +| address | Physical address of extension developer | +| email | Email address of extension developer | +| icon | URL of the extension icon | +| crxcavator\_last\_updated | Date the extension was last updated in the webstore | +| name | Full name of the extension | +| offered\_by | Name of the extension developer | +| permissions\_warnings | Concatenated list of permissions warnings for the extension | +| privacy\_policy | URL of privacy policy for extension | +| rating | Current webstore rating for extension | +| rating\_users | How many users have provided a rating for the extension | +| short\_description | Summary of what extension does | +| size | Size of extension download | +| support\_site | URL of developer support site | +| users | Webstore count of extension users | +| website | Developer URL for extension | +| type | Extension categorization | +| price | Extension price in webstore if applicable | +| report\_link | URL of full extension report on crxcavator.io | + +#### Relationships + +- GSuiteUsers install ChromeExtensions. + + ``` + (GSuiteUser)-[INSTALLS]->(ChromeExtension) + ``` diff --git a/_sources/modules/cve/config.md.txt b/_sources/modules/cve/config.md.txt new file mode 100644 index 0000000000..8a5cb67b27 --- /dev/null +++ b/_sources/modules/cve/config.md.txt @@ -0,0 +1,8 @@ +## CVE Configuration + +.. _cve_config: + +Follow these steps to analyze CVE objects with Cartography. + +1. Call cartography with the `--enable-cve` flag. +1. If you are mirroring the CVE data, and wish to change the base url, you can pass the base url into the cli with the `--nist-cve-url` flag. diff --git a/_sources/modules/cve/index.rst.txt b/_sources/modules/cve/index.rst.txt new file mode 100644 index 0000000000..72981da2b9 --- /dev/null +++ b/_sources/modules/cve/index.rst.txt @@ -0,0 +1,12 @@ +CVE +### + +The CVE module has the following coverage: + +* CVE data, as defined by the v4 JSON CVE format + +.. toctree:: + :hidden: + :glob: + + * diff --git a/_sources/modules/cve/schema.md.txt b/_sources/modules/cve/schema.md.txt new file mode 100644 index 0000000000..5fb78a2ee3 --- /dev/null +++ b/_sources/modules/cve/schema.md.txt @@ -0,0 +1,36 @@ +## CVE Schema + +.. _cve_schema: + +### CVE + +Representation of a [CVE](https://github.com/CVEProject/automation-working-group/blob/master/cve_json_schema/DRAFT-JSON-file-format-v4.md) + +| Field | Description | +|-------|--------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| id | The CVE ID | +| assigner | The assigner of the CVE (email address) | +| description\_en | The english description of the issue. | +| references | This is reference data in the form of URLs | +| problem\_types | A list of CWE identifiers | +| vector\_string | The CVSSv3 scoring data. | +| attack\_vector | The attack vector | +| attack\_complexity | The attack complexity | +| privileges\_required | The privileges required | +| user\_interaction | The user interaction | +| scope | The scope | +| confidentiality\_impact | The confidentiality impact | +| integrity\_impact | The integrity impact | +| availability\_impact | The availability impact | +| base\_score | The CVSSv3 score | +| base\_severity | The severity | +| exploitability\_score | The exploitability score | +| impact\_score | The impact score | +| published\_date | The date the CVE was published | +| last\_modified\_date | The date the CVE was last updated | + +#### Relationships + +None diff --git a/_sources/modules/digitalocean/config.md.txt b/_sources/modules/digitalocean/config.md.txt new file mode 100644 index 0000000000..50b553fb3d --- /dev/null +++ b/_sources/modules/digitalocean/config.md.txt @@ -0,0 +1,15 @@ +## Configuration + +.. _digitalocean_config: + +Follow these steps to analyze GitHub repos and other objects with Cartography. + +1. Prepare your DigitalOcean credentials. Visit [official docs](https://cloud.digitalocean.com/account/api/tokens) for +more up to date info. + 1. Login into your DigitalOcean Account + 1. Visit Account -> API -> Tokens section + 1. Click on `Generate New Token` to create a personal access token + 1. Make sure the scope of the token is set to `READ` +1. Populate an environment variable of your choice with the access token generated in the previous step. +1. Call the `cartography` CLI with `--digitalocean-token-env-var YOUR_ENV_VAR_HERE`. +1. `Cartography` will then load your graph with data from the account linked to the token you specified. diff --git a/_sources/modules/digitalocean/index.rst.txt b/_sources/modules/digitalocean/index.rst.txt new file mode 100644 index 0000000000..174fcd09f8 --- /dev/null +++ b/_sources/modules/digitalocean/index.rst.txt @@ -0,0 +1,14 @@ +DigitalOcean +############ + +The digitalocean module has the following coverage: + +* Accounts +* Projects +* Compute - Droplets + +.. toctree:: + :hidden: + :glob: + + * diff --git a/_sources/modules/digitalocean/schema.md.txt b/_sources/modules/digitalocean/schema.md.txt new file mode 100644 index 0000000000..699b4a5705 --- /dev/null +++ b/_sources/modules/digitalocean/schema.md.txt @@ -0,0 +1,82 @@ +## DigitalOcean Schema + +.. _digitalocean_schema: + +### DOAccount +Representation of a DigitalOcean [Account](https://developers.digitalocean.com/documentation/v2/#account) object. + +| Field | Description | +| ----- | ----------- | +| firstseen | Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| id | The UUID of the account | +| uuid | The UUID of the account (same value as id) | +| droplet_limit | Total number of droplets that the account can have at one time | +| floating_ip_limit | Total number of floating IPs the account may have | +| status | Status of the account | + +#### Relationships + +- DOAccount contains DOProjects. + + ``` + (DOAccount)-[RESOURCE]->(DOProjects) + ``` + +### DOProject +Representation of a DigitalOcean [Project](https://developers.digitalocean.com/documentation/v2/#projects) object. + +| Field | Description | +| ----- | ----------- | +| firstseen | Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| id | The unique universal identifier of the project | +| account_id | Id of the DOAccount where this project belongs to | +| description | The description of the project | +| environment | The environment of the project's resources | +| is_default | If true, all resources will be added to this project if no project is specified | +| name | The human-readable name for the project | +| owner_uuid | The unique universal identifier of the project's owner | +| created_at | A time value given in ISO8601 combined date and time format that represents when the project was created | +| updated_at | A time value given in ISO8601 combined date and time format that represents when the project was updated | + +#### Relationships + +- DOProject has DODroplets as resource. + + ``` + (DOProject)-[RESOURCE]->(DODroplet) + ``` + +### DODroplet +Representation of a DigitalOcean [Droplet](https://developers.digitalocean.com/documentation/v2/#droplets) object. + +| Field | Description | +| ----- | ----------- | +| firstseen | Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| id | A unique identifier for each Droplet instance | +| account_id | Id of the DOAccount where this Droplet belongs to | +| features | An array of features enabled on this Droplet | +| locked | A boolean value indicating whether the Droplet has been locked, preventing actions by users | +| image | The slug of the base image used to create the Droplet instance| +| ip_address | The v4 external ip address of this Droplet | +| ip_v6_address | The v6 external ip address of this Droplet | +| kernel | The current kernel image id| +| name | The human-readable name set for the Droplet instance | +| private_ip_address | The v4 internal ip address of this Droplet | +| project_id | Id of the DOProject where this Droplet belongs to | +| region | The region that the Droplet instance is deployed in | +| size | The current size object describing the Droplet | +| status | A status string indicating the state of the Droplet instance.This may be "new", "active", "off", or "archive"| +| tags | An array of Tags the Droplet has been tagged with | +| volumes | A flat array including the unique identifier for each Block Storage volume attached to the Droplet | +| created_at | A time value given in ISO8601 combined date and time format that represents when the Droplet was created | + +#### Relationships + +- DODroplet is a resource of a DOProject. + + ``` + (DODroplet)<-[RESOURCE]-(DOProject) + ``` diff --git a/_sources/modules/duo/config.md.txt b/_sources/modules/duo/config.md.txt new file mode 100644 index 0000000000..724d575e2b --- /dev/null +++ b/_sources/modules/duo/config.md.txt @@ -0,0 +1,10 @@ +## Duo Configuration + +.. _duo_config: + +Follow these steps to analyze Duo objects with Cartography. + +1. Prepare a [admin api creds](https://duo.com/docs/adminapi). +1. Pass the Duo api host name to the `--duo-api-hostname` CLI arg. +1. Populate environment variables with the api key and api secret. +1. Pass that those var names to the `--duo-api-key-env-var` and `--duo-api-secret-env-var` CLI args. diff --git a/_sources/modules/duo/index.rst.txt b/_sources/modules/duo/index.rst.txt new file mode 100644 index 0000000000..16842beeb2 --- /dev/null +++ b/_sources/modules/duo/index.rst.txt @@ -0,0 +1,14 @@ +Duo +#### + +The okta module has the following coverage: + +* Users +* Groups +* Endpoints + +.. toctree:: + :hidden: + :glob: + + * diff --git a/_sources/modules/duo/schema.md.txt b/_sources/modules/duo/schema.md.txt new file mode 100644 index 0000000000..0e648de3da --- /dev/null +++ b/_sources/modules/duo/schema.md.txt @@ -0,0 +1,311 @@ +## Duo Schema + +.. _duo_schema: + +### DuoApiHost + +Represents a Duo API Host to conain Duo resources. + +| Field | Description | +|-------|--------------| +| firstseen | Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| **id** | The hostname | + +#### Relationships + +- An DuoApiHost contains DuoUsers + + ``` + (DuoApiHost)-[RESOURCE]->(DuoUser) + ``` + +- An DuoApiHost contains DuoGroups + + ``` + (DuoApiHost)-[RESOURCE]->(DuoGroup) + ``` + +- An DuoApiHost contains DuoEndpoints + + ``` + (DuoApiHost)-[RESOURCE]->(DuoEndpoint) + ``` + +- An DuoApiHost contains DuoPhones + + ``` + (DuoApiHost)-[RESOURCE]->(DuoPhone) + ``` + +- An DuoApiHost contains DuoTokens + + ``` + (DuoApiHost)-[RESOURCE]->(DuoToken) + ``` + +- An DuoApiHost contains DuoWebAuthnCredentials + + ``` + (DuoApiHost)-[RESOURCE]->(DuoWebAuthnCredential) + ``` + +### DuoGroup + +Represents a [group](https://duo.com/docs/adminapi#groups) in Duo. + +| Field | Description | +|-------|--------------| +| firstseen | Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| **id** | The user_id | +| desc | The group's description. | +| group_id | The group's ID. | +| mobile_otp_enabled | Legacy parameter; no effect if specified and always returns false. | +| name | The group's name. If managed by directory sync, then the name returned here also indicates the source directory. | +| push_enabled | Legacy parameter; no effect if specified and always returns false. | +| sms_enabled | Legacy parameter; no effect if specified and always returns false | +| status | The group's authentication status. May be one of: "Active", "Bypass", "Disabled" | +| voice_enabled | Legacy parameter; no effect if specified and always returns false | + +#### Relationships + +- An DuoApiHost contains DuoGroups + + ``` + (DuoApiHost)-[RESOURCE]->(DuoGroup) + ``` + +- A DuoUser is part of multiple DuoGroups. + + ``` + (DuoUser)-[MEMBER_OF_DUO_GROUP]->(DuoGroup) + ``` + + +### DuoUser + +Represents a [user](https://duo.com/docs/adminapi#users) in Duo. + +| Field | Description | +|-------|--------------| +| firstseen | Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| **id** | The user_id | +| alias1 | The user's username alias1. | +| alias2 | The user's username alias2. | +| alias3 | The user's username alias3. | +| alias4 | The user's username alias4. | +| aliases | Map of the user's username alias(es). Up to eight aliases may exist. | +| created | The user's creation date as a UNIX timestamp. | +| email | The user's email address. | +| firstname | The user's given name. | +| groups | List of groups to which this user belongs. See Retrieve Groups for response info. | +| is_enrolled | Is true if the user has a phone, hardware token, U2F token, WebAuthn security key, or other WebAuthn method available for authentication. Otherwise, false. | +| last_directory_sync | An integer indicating the last update to the user via directory sync as a Unix timestamp, or null if the user has never synced with an external directory or if the directory that originally created the user has been deleted from Duo. | +| last_login | An integer indicating the last time this user logged in, as a Unix timestamp, or null if the user has not logged in. | +| lastname | The user's surname. | +| notes | Notes about this user. Viewable in the Duo Admin Panel. | +| realname | The user's real name (or full name). | +| status | The user's status. One of: "active", "bypass", "disabled", "locked out", "pending deletion". | +| tokens | A list of tokens that this user can use. A list of JSON strings | +| u2f_tokens | A list of U2F tokens that this user can use. A list of JSON strings | +| user_id | The user's ID. | +| username | The user's username. | +| webauthncredentials | A list of WebAuthn authenticators that this user can use. A list of JSON strings | + +#### Relationships + +- An DuoApiHost contains DuoUsers + + ``` + (DuoApiHost)-[RESOURCE]->(DuoUser) + ``` + +- A DuoUser is part of multiple DuoGroups. + + ``` + (DuoUser)-[MEMBER_OF_DUO_GROUP]->(DuoGroup) + ``` + +- A DuoUser has multiple DuoEndpoints + + ``` + (DuoUser)-[HAS_DUO_ENDPOINT]->(DuoEndpoint) + ``` + +- A DuoUser has multiple DuoPhones + + ``` + (DuoUser)-[HAS_DUO_PHONE]->(DuoPhone) + ``` + +- A DuoUser has multiple DuoTokens + + ``` + (DuoUser)-[HAS_DUO_TOKEN]->(DuoToken) + ``` + +- A DuoUser has multiple WebAuthnCredentials + + ``` + (DuoUser)-[HAS_DUO_WEB_AUTHN_CREDENTIAL]->(WebAuthnCredential) + ``` + +- A DuoUser is an identity to a Human + + ``` + (DuoUser)<-[IDENTITY_DUO]-(Human) + ``` + +### DuoEndpoint + +Represents a [endpoint](https://duo.com/docs/adminapi#endpoints) in Duo. + +| Field | Description | +|-------|--------------| +| firstseen | Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| **id** | The epkey | +| browsers | Collected information about all detected browsers on an individual endpoint. A list of JSON strings | +| computer_sid | The machine security identifier of a Windows endpoint. | +| cpu_id | The CPU ID of a Windows endpoint. | +| device_id | Custom device identifier of a Meraki-managed iOS endpoint. Returned for Duo Premier customers only. | +| device_identifier | The unique device attribute value that identifies the endpoint. Returned for Duo Premier customers only. This property will be deprecated in a future release. | +| device_identifier_type | The device attribute used to identify a unique endpoint. One of "hardware_uuid", "fqdn", "hardware_serial", "device_udid", or none. This property will be deprecated in a future release. | +| device_name | The endpoint's hostname. | +| device_udid | The unique device identifier for iOS endpoints managed by Workspace ONE, MobileIron Cloud or Core, or Sophos Mobile via certificates. Returned for Duo Premier customers only. | +| device_username | The unique attribute value that identifies the endpoint's associated user in the management system. Returned for Duo Premier customers only. | +| device_username_type | The management system attribute used to identify the user associated with the unique endpoint. One of "os_username", "upn", "username", "email", or none. Returned for Duo Premier customers only. | +| disk_encryption_status | The hard drive encryption status of the endpoint as detected by the Duo Device Health app. One of "On", "Off", or "Unknown". | +| domain_sid | The Active Directory domain security identifier for a domain-joined Windows endpoint. Empty if the Windows endpoint is not joined to a domain. | +| email | The email address, if present, of the user associated with an endpoint. | +| epkey | The endpoint's unique identifier. | +| firewall_status | Status of the endpoint's local firewall as detected by the Duo Device Health app. One of "On", "Off", or "Unknown". | +| hardware_uuid | The universally unique identifier for a Mac endpoint. | +| health_app_client_version | The version of the Duo Device Health app installed on the endpoint. | +| health_data_last_collected | The last time the Duo Device Health app performed a device health check, as a Unix timestamp. | +| last_updated | The last time the endpoint accessed Duo, as a Unix timestamp. | +| machine_guid | The globally unique identifier for a Windows endpoint. | +| model | The device model of a 2FA endpoint. | +| os_build | The endpoint's operating system build number. | +| os_family | The endpoint's operating system platform. | +| os_version | The endpoint's operating system version. | +| password_status | Whether the local admin password is set on the endpoint as detected by the Duo Device Health app. One of "Set", "Unset", or "Unknown" | +| security_agents | Information about security agents present on the endpoint as detected by the Duo Device Health app. Returned for Duo Premier customers only. a list of JSON strings | +| trusted_endpoint | Whether the endpoint is a Duo managed endpoint. One of "yes", "no", or "unknown". Returned for Duo Premier customers only. | +| type | The endpoint's device class. | +| username | The Duo username of the user associated with an endpoint. | + + +#### Relationships + +- An DuoApiHost contains DuoEndpoints + + ``` + (DuoApiHost)-[RESOURCE]->(DuoEndpoint) + ``` + +- A DuoUser has multiple DuoEndpoints + + ``` + (DuoUser)-[HAS_DUO_ENDPOINT]->(DuoEndpoint) + ``` + +### DuoPhone + +Represents a [phone](https://duo.com/docs/adminapi#phones) in Duo. + +| Field | Description | +|-------|--------------| +| firstseen | Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| **id** | The phone_id | +| activated | Has this phone been activated for Duo Mobile yet? Either true or false. | +| capabilities | List of strings, each a factor that can be used with the device. Any of "auto", "push", "pphone", "sms", "mobile_otp" | +| encrypted | The encryption status of an Android or iOS device file system. One of: "Encrypted", "Unencrypted", or "Unknown". Blank for other platforms. | +| extension | An extension, if necessary. | +| fingerprint | Whether an Android or iOS phone is configured for biometric verification. One of: "Configured", "Disabled", or "Unknown". Blank for other platforms. | +| last_seen | An integer indicating the timestamp of the last contact between Duo's service and the activated Duo Mobile app installed on the phone. Blank if the device has never activated Duo Mobile or if the platform does not support it. | +| model | The phone's model. | +| name | Free-form label for the phone. | +| phone_id | The phone's ID. | +| platform | The phone platform. One of: "unknown", "google android", "apple ios", "windows phone 7", "rim blackberry", "java j2me", "palm webos", "symbian os", "windows mobile", or "generic smartphone" | +| postdelay | The time (in seconds) to wait after the extension is dialed and before the speaking the prompt. | +| predelay | The time (in seconds) to wait after the number picks up and before dialing the extension. | +| screenlock | Whether screen lock is enabled on an Android or iOS phone. One of: "Locked", "Unlocked", or "Unknown". Blank for other platforms. | +| sms_passcodes_sent | Have SMS passcodes been sent to this phone? Either true or false. | +| tampered | Whether an iOS or Android device is jailbroken or rooted. One of: "Not Tampered", "Tampered", or "Unknown". Blank for other platforms. | +| type | The type of phone. One of: "unknown", "mobile", or "landline". | + +#### Relationships + +- An DuoApiHost contains DuoPhone + + ``` + (DuoApiHost)-[RESOURCE]->(DuoPhone) + ``` + +- A DuoUser has multiple DuoPhones + + ``` + (DuoUser)-[HAS_DUO_PHONE]->(DuoPhone) + ``` + +### DuoToken + +Represents a [token](https://duo.com/docs/adminapi#tokens) in Duo. + +| Field | Description | +|-------|--------------| +| firstseen | Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| **id** | The token_id | +| admins | A list of administrators associated with this hardware token. See Retrieve Administrators for descriptions of the response fields. A list of JSON strings | +| serial | The serial number of the hardware token; used to uniquely identify the hardware token when paired with type. | +| token_id | The hardware token's unique ID. | +| totp_step | Value is null for all supported token types. | +| type | The type of hardware token. | + +#### Relationships + +- An DuoApiHost contains DuoTokens + + ``` + (DuoApiHost)-[RESOURCE]->(DuoToken) + ``` + +- A DuoUser has multiple DuoTokens + + ``` + (DuoUser)-[HAS_DUO_TOKEN]->(DuoToken) + ``` + +### DuoWebAuthnCredential + +Represents a [web authn credential](https://duo.com/docs/adminapi#webauthn-credentials) in Duo. + +| Field | Description | +|-------|--------------| +| firstseen | Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| **id** | The webauthnkey | +| admin |Selected information about the administrator attached to the WebAuthn credential. Returns null if attached to an end user. Not returned if the API application does not have sufficient permission to manage administrators. A JSON string | +| credential_name | Free-form label for the WebAuthn credential. | +| date_added | The date the WebAuthn credential was registered in Duo. | +| label | Indicates the type of WebAuthn credential. One of: "Security Key" or "Touch ID". Present when attached to a user. | +| webauthnkey | The WebAuthn credential's registration identifier. | + +#### Relationships + +- An DuoApiHost contains DuoWebAuthnCredentials + + ``` + (DuoApiHost)-[RESOURCE]->(DuoWebAuthnCredential) + ``` + +- A DuoUser has multiple DuoWebAuthnCredentials + + ``` + (DuoUser)-[HAS_DUO_WEB_AUTHN_CREDENTIAL]->(DuoWebAuthnCredential) + ``` diff --git a/_sources/modules/gcp/config.md.txt b/_sources/modules/gcp/config.md.txt new file mode 100644 index 0000000000..f1a0c7bd93 --- /dev/null +++ b/_sources/modules/gcp/config.md.txt @@ -0,0 +1,21 @@ +## GCP Configuration + +.. _gcp_config: + +Follow these steps to analyze GCP projects with Cartography. + +1. Prepare your GCP credential(s). + + 1. Create an identity - either a User Account or a Service Account - for Cartography to run as + 1. Ensure that this identity has the following roles (https://cloud.google.com/iam/docs/understanding-roles) attached to it: + - `roles/iam.securityReviewer` + - `roles/resourcemanager.organizationViewer`: needed to list/get GCP Organizations + - `roles/resourcemanager.folderViewer`: needed to list/get GCP Folders + 1. Ensure that the machine you are running Cartography on can authenticate to this identity. + - **Method 1**: You can do this by setting your `GOOGLE_APPLICATION_CREDENTIALS` environment variable to point to a json file containing your credentials. As per SecurityCommonSense™️, please ensure that only the user account that runs Cartography has read-access to this sensitive file. + - **Method 2**: If you are running Cartography on a GCE instance or other GCP service, you can make use of the credential management provided by the default service accounts on these services. See the [official docs](https://cloud.google.com/docs/authentication/production) on Application Default Credentials for more details. + +### Multiple GCP Project Setup + +In order for Cartography to be able to pull all assets from all GCP Projects within an Organization, the User/Service Account assigned to Cartography needs to be created at the **Organization** level. +This is because [IAM access control policies applied on the Organization resource apply throughout the hierarchy on all resources in the organization](https://cloud.google.com/resource-manager/docs/cloud-platform-resource-hierarchy#organizations). diff --git a/_sources/modules/gcp/index.rst.txt b/_sources/modules/gcp/index.rst.txt new file mode 100644 index 0000000000..11dce43e29 --- /dev/null +++ b/_sources/modules/gcp/index.rst.txt @@ -0,0 +1,16 @@ +Google Cloud Compute (GCP) +########################## + +The gcp module has the following coverage: + +* Cloud Resource Manager +* Compute +* DNS +* Storage +* Google Kubernetes Engine + +.. toctree:: + :hidden: + :glob: + + * diff --git a/_sources/modules/gcp/schema.md.txt b/_sources/modules/gcp/schema.md.txt new file mode 100644 index 0000000000..daa5999ddf --- /dev/null +++ b/_sources/modules/gcp/schema.md.txt @@ -0,0 +1,639 @@ +## GCP Schema + +### GCPOrganization + +Representation of a GCP [Organization](https://cloud.google.com/resource-manager/reference/rest/v1/organizations) object. + + +| Field | Description | +| -------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| firstseen | Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| id | The name of the GCP Organization, e.g. "organizations/1234" | +| displayname | The "friendly name", e.g. "My Company" | +| lifecyclestate | The organization's current lifecycle state. Assigned by the server. See the [official docs](https://cloud.google.com/resource-manager/reference/rest/v1/organizations#LifecycleState). | + +#### Relationships + +- GCPOrganizations contain GCPFolders. + + ``` + (GCPOrganization)-[RESOURCE]->(GCPFolder) + ``` + +- GCPOrganizations can contain GCPProjects. + + ``` + (GCPOrganization)-[RESOURCE]->(GCPProjects) + ``` + +### GCPFolder + + Representation of a GCP [Folder](https://cloud.google.com/resource-manager/reference/rest/v2/folders). An additional helpful reference is the [Google Compute Platform resource hierarchy](https://cloud.google.com/resource-manager/docs/cloud-platform-resource-hierarchy). + +| Field | Description | +| -------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| firstseen | Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| id | The name of the folder, e.g. "folders/1234" | +| displayname | A friendly name of the folder, e.g. "My Folder". | +| lifecyclestate | The folder's current lifecycle state. Assigned by the server. See the [official docs](https://cloud.google.com/resource-manager/reference/rest/v2/folders#LifecycleState). | + + +#### Relationships + + - GCPOrganizations are parents of GCPFolders. + + ``` + (GCPOrganization)<-[PARENT]-(GCPFolder) + ``` + + - GCPFolders can contain GCPProjects + + ``` + (GCPFolder)-[RESOURCE]->(GCPProject) + ``` + + - GCPFolders can contain other GCPFolders. + + ``` + (GCPFolder)-[RESOURCE]->(GCPFolder) + ``` + +### GCPProject + + Representation of a GCP [Project](https://cloud.google.com/resource-manager/reference/rest/v1/projects). An additional helpful reference is the [Google Compute Platform resource hierarchy](https://cloud.google.com/resource-manager/docs/cloud-platform-resource-hierarchy). + + | Field | Description | + | -------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | firstseen | Timestamp of when a sync job first discovered this node | + | lastupdated | Timestamp of the last time the node was updated | + | id | The ID of the project, e.g. "sys-12345" | + | projectnumber | The number uniquely identifying the project, e.g. '987654' | + | displayname | A friendly name of the project, e.g. "MyProject". | + | lifecyclestate | The project's current lifecycle state. Assigned by the server. See the [official docs](https://cloud.google.com/resource-manager/reference/rest/v1/projects#LifecycleState). | + + ### Relationships + +- GCPOrganizations contain GCPProjects. + + ``` + (GCPOrganization)-[RESOURCE]->(GCPProjects) + ``` + + - GCPFolders can contain GCPProjects + + ``` + (GCPFolder)-[RESOURCE]->(GCPProject) + ``` + +- GCPVpcs are part of GCPProjects + + ``` + (GCPProject)-[RESOURCE]->(GCPVpc) + ``` + + +### GCPBucket +Representation of a GCP [Storage Bucket](https://cloud.google.com/storage/docs/json_api/v1/buckets). + +| Field | Description | +| ----------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| firstseen | Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| id | The ID of the storage bucket, e.g. "bucket-12345" | +| projectnumber | The number uniquely identifying the project associated with the storage bucket, e.g. '987654' | +| self_link | The URI of the storage bucket | +| kind | The kind of item this is. For storage buckets, this is always storage#bucket | +| location | The location of the bucket. Object data for objects in the bucket resides in physical storage within this region. Defaults to US. See [Cloud Storage bucket locations](https://cloud.google.com/storage/docs/locations) for the authoritative list. | +| location_type | The type of location that the bucket resides in, as determined by the `location` property | +| meta_generation | The metadata generation of this bucket | +| storage_class | The bucket's default storage class, used whenever no `storageClass` is specified for a newly-created object. For more information, see [storage classes](https://cloud.google.com/storage/docs/storage-classes) | +| time_created | The creation time of the bucket in RFC 3339 format | +| retention_period | The period of time, in seconds, that objects in the bucket must be retained and cannot be deleted, overwritten, or archived | +| iam_config_bucket_policy_only | The bucket's [Bucket Policy Only](https://cloud.google.com/storage/docs/bucket-policy-only) configuration | +| owner_entity | The entity, in the form `project-owner-projectId` | +| owner_entity_id | The ID for the entity | +| versioning_enabled | The bucket's versioning configuration (if set to `True`, versioning is fully enabled for this bucket) | +| log_bucket | The destination bucket where the current bucket's logs should be placed | +| requester_pays | The bucket's billing configuration (if set to true, Requester Pays is enabled for this bucket) | +| default_kms_key_name | A Cloud KMS key that will be used to encrypt objects inserted into this bucket, if no encryption method is specified | + +#### Relationships + +- GCPBuckets are part of GCPProjects. + + ``` + (GCPProject)-[RESOURCE]->(GCPBucket) + ``` + +- GCPBuckets can be labelled with GCPBucketLabels. + + ``` + (GCPBucket)<-[LABELLED]-(GCPBucketLabels) + ``` + + +### GCPDNSZone + +Representation of a GCP [DNS Zone](https://cloud.google.com/dns/docs/reference/v1/). + +| Field | Description | +| ---------- | ------------------------------------------------------- | +| created_at | The date and time the zone was created | +| description | An optional description of the zone| +| dns_name | The DNS name of this managed zone, for instance "example.com.". +| firstseen | Timestamp of when a sync job first discovered this node | +| **id** |Unique identifier| +| name | The name of the zone | +| nameservers |Virtual name servers the zone is delegated to +| visibility | The zone's visibility: `public` zones are exposed to the Internet, while `private` zones are visible only to Virtual Private Cloud resources.| + + +#### Relationships + +- GKEClusters are resources of GCPProjects. + + ``` + (GCPProject)-[RESOURCE]->(GCPDNSZone) + ``` + + +### Label: GCPBucketLabel +Representation of a GCP [Storage Bucket Label](https://cloud.google.com/storage/docs/key-terms#bucket-labels). This node contains a key-value pair. + + | Field | Description | + | ----------- | ------------------------------------------------------------------- | + | firstseen | Timestamp of when a sync job first discovered this node | + | lastupdated | Timestamp of the last time the node was updated | + | id | The ID of the bucket label. Takes the form "GCPBucketLabel\_{key}." | + | key | The key of the bucket label. | + | value | The value of the bucket label. | + +- GCPBuckets can be labeled with GCPBucketLabels. + + ``` + (GCPBucket)<-[LABELED]-(GCPBucketLabels) + ``` + + +### GCPInstance + +Representation of a GCP [Instance](https://cloud.google.com/compute/docs/reference/rest/v1/instances). Additional references can be found in the [official documentation]( https://cloud.google.com/compute/docs/concepts). + +| Field | Description | +| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| firstseen | Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| id | The partial resource URI representing this instance. Has the form `projects/{project_name}/zones/{zone_name}/instances/{instance_name}`. | +| partial_uri | Same as `id` above. | +| self_link | The full resource URI representing this instance. Has the form `https://www.googleapis.com/compute/v1/{partial_uri}` | +| instancename | The name of the instance, e.g. "my-instance" | +| zone_name | The zone that the instance is installed on | +| hostname | If present, the hostname of the instance | +| exposed_internet | Set to True with `exposed_internet_type = 'direct'` if there is an 'allow' IPRule attached to one of the instance's ingress firewalls with the following conditions: The 'allow' IpRule allows traffic from one or more TCP ports, and the 'allow' IpRule is not superceded by a 'deny' IPRule (in GCP, a firewall rule of priority 1 gets applied ahead of a firewall rule of priority 100, and 'deny' rules of the same priority are applied ahead of 'allow' rules) | +| status | The [GCP Instance Lifecycle](https://cloud.google.com/compute/docs/instances/instance-life-cycle) state of the instance | +#### Relationships + +- GCPInstances are resources of GCPProjects. + + ``` + (GCPProject)-[RESOURCE]->(GCPInstance) + ``` + +- GCPNetworkInterfaces are attached to GCPInstances + + ``` + (GCPInstance)-[NETWORK_INTERFACE]->(GCPNetworkInterface) + ``` + +- GCP Instances may be members of one or more GCP VPCs. + + ``` + (GCPInstance)-[:MEMBER_OF_GCP_VPC]->(GCPVpc) + ``` + + Also note that this relationship is a shortcut for: + + ``` + (GCPInstance)-[:NETWORK_INTERFACE]->(:GCPNetworkInterface)-[:PART_OF_SUBNET]->(GCPSubnet)<-[:RESOURCE]-(GCPVpc) + ``` + +- GCP Instances may have GCP Tags defined on them for use in [network firewall routing](https://cloud.google.com/blog/products/gcp/labelling-and-grouping-your-google-cloud-platform-resources). + + ``` + (GCPInstance)-[:TAGGED]->(GCPNetworkTag) + ``` + +- GCP Firewalls allow ingress to GCP instances. + ``` + (GCPFirewall)-[:FIREWALL_INGRESS]->(GCPInstance) + ``` + + Note that this relationship is a shortcut for: + ``` + (vpc:GCPVpc)<-[MEMBER_OF_GCP_VPC]-(GCPInstance)-[TAGGED]->(GCPNetworkTag)-[TARGET_TAG]-(GCPFirewall{direction: 'INGRESS'})<-[RESOURCE]-(vpc) + ``` + + as well as + ``` + MATCH (fw:GCPFirewall{direction: 'INGRESS', has_target_service_accounts: False}}) + WHERE NOT (fw)-[TARGET_TAG]->(GCPNetworkTag) + MATCH (GCPInstance)-[MEMBER_OF_GCP_VPC]->(GCPVpc)-[RESOURCE]->(fw) + ``` + +### GCPNetworkTag + +Representation of a Tag defined on a GCP Instance or GCP Firewall. Tags are defined on GCP instances for use in [network firewall routing](https://cloud.google.com/blog/products/gcp/labelling-and-grouping-your-google-cloud-platform-resources). + +| Field | Description | +| ----------- | ---------------------------------------------------------------------------------------------------------- | +| firstseen | Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| id | GCP doesn't define a resource URI for Tags so we define this as `{instance resource URI}/tags/{tag value}` | +| tag_id | same as `id` | +| value | The actual value of the tag | + +#### Relationships + +- GCP Instances can be labeled with tags. + ``` + (GCPInstance)-[:TAGGED]->(GCPNetworkTag) + ``` + +- GCP Firewalls can be labeled with tags to direct traffic to or deny traffic to labeled GCPInstances + ``` + (GCPFirewall)-[:TARGET_TAG]->(GCPNetworkTag) + ``` + +- GCPNetworkTags are defined on a VPC and only have effect on assets in that VPC + + ``` + (GCPVpc)-[DEFINED_IN]->(GCPNetworkTag) + ``` + +### GCPVpc + +Representation of a GCP [VPC](https://cloud.google.com/compute/docs/reference/rest/v1/networks/). In GCP documentation this is also known simply as a "Network" object. + +| Field | Description | +| -------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| firstseen | Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| id | The partial resource URI representing this VPC. Has the form `projects/{project_name}/global/networks/{vpc name}`. | +| partial_uri | Same as `id` | +| self_link | The full resource URI representing this VPC. Has the form `https://www.googleapis.com/compute/v1/{partial_uri}` | +| name | The name of the VPC | +| project_id | The project ID that this VPC belongs to | +| auto_create_subnetworks | When set to true, the VPC network is created in "auto" mode. When set to false, the VPC network is created in "custom" mode. An auto mode VPC network starts with one subnet per region. Each subnet has a predetermined range as described in [Auto mode VPC network IP ranges](https://cloud.google.com/vpc/docs/vpc#ip-ranges). | +| routing_confg_routing_mode | The network-wide routing mode to use. If set to REGIONAL, this network's Cloud Routers will only advertise routes with subnets of this network in the same region as the router. If set to GLOBAL, this network's Cloud Routers will advertise routes with all subnets of this network, across regions. | +| description | A description for the VPC | + +#### Relationships + +- GCPVpcs are part of projects + + ``` + (GCPProject)-[RESOURCE]->(GCPVpc) + ``` + +- GCPVpcs contain GCPSubnets + + ``` + (GCPVpc)-[RESOURCE]->(GCPSubnet) + ``` + +- GCPSubnets are part of GCP VPCs + + ``` + (GCPVpc)-[RESOURCE]->(GCPSubnet) + ``` + +- GCPNetworkTags are defined on a VPC and only have effect on assets in that VPC + + ``` + (GCPVpc)-[DEFINED_IN]->(GCPNetworkTag) + ``` + +- GCP Instances may be members of one or more GCP VPCs. + + ``` + (GCPInstance)-[:MEMBER_OF_GCP_VPC]->(GCPVpc) + ``` + + Also note that this relationship is a shortcut for: + + ``` + (GCPInstance)-[:NETWORK_INTERFACE]->(:GCPNetworkInterface)-[:PART_OF_SUBNET]->(GCPSubnet)<-[:RESOURCE]-(GCPVpc) + ``` + +### GCPNetworkInterface + +Representation of a GCP Instance's [network interface](https://cloud.google.com/compute/docs/reference/rest/v1/instances/list) (scroll down to the fields on "networkInterface"). + +| Field | Description | +| ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| firstseen | Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| id | A partial resource URI representing this network interface. Note: GCP does not define a partial resource URI for network interfaces, so we create one so we can uniquely identify GCP network interfaces. Has the form `projects/{project_name}/zones/{zone_name}/instances/{instance_name}/networkinterfaces/{network interface name}`. | +| nic_id | Same as `id` | +| name | The name of the network interface | +| private_ip | The private IP address of this network interface. This IP is valid on the network interface's VPC. | + +#### Relationships + +- GCPNetworkInterfaces are attached to GCPInstances + + ``` + (GCPInstance)-[NETWORK_INTERFACE]->(GCPNetworkInterface) + ``` + +- GCPNetworkInterfaces are connected to GCPSubnets + + ``` + (GCPNetworkInterface)-[PART_OF_SUBNET]->(GCPSubnet) + ``` + +- GCPNetworkInterfaces have GCPNicAccessConfig objects defined on them + + ``` + (GCPNetworkInterface)-[RESOURCE]->(GCPNicAccessConfig) + ``` + + +### GCPNicAccessConfig + +Representation of the AccessConfig object on a GCP Instance's [network interface](https://cloud.google.com/compute/docs/reference/rest/v1/instances/list) (scroll down to the fields on "networkInterface"). + +| Field | Description | +| ---------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| firstseen | Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| id | A partial resource URI representing this AccessConfig. Note: GCP does not define a partial resource URI for AccessConfigs, so we create one so we can uniquely identify GCP network interface access configs. Has the form `projects/{project_name}/zones/{zone_name}/instances/{instance_name}/networkinterfaces/{network interface name}/accessconfigs/{access config type}`. | +| partial_uri | Same as `id` | +| type | The type of configuration. GCP docs say: "The default and only option is ONE_TO_ONE_NAT." | +| name | The name of this access configuration. The default and recommended name is External NAT, but you can use any arbitrary string, such as My external IP or Network Access. | +| public_ip | The external IP associated with this instance | +| set_public_ptr | Specifies whether a public DNS 'PTR' record should be created to map the external IP address of the instance to a DNS domain name. | +| public_ptr_domain_name | The DNS domain name for the public PTR record. You can set this field only if the setPublicPtr field is enabled. | +| network_tier | This signifies the networking tier used for configuring this access configuration and can only take the following values: PREMIUM, STANDARD. | + +#### Relationships + +- GCPNetworkInterfaces have GCPNicAccessConfig objects defined on them + + ``` + (GCPNetworkInterface)-[RESOURCE]->(GCPNicAccessConfig) + ``` + + +### GCPRecordSet + +Representation of a GCP [Resource Record Set](https://cloud.google.com/dns/docs/reference/v1/). + +| Field | Description | +| ---------- | ------------------------------------------------------- | +| data | Data contained in the record +| firstseen | Timestamp of when a sync job first discovered this node | +| **id** |Same as `name`| +| name | The name of the Resource Record Set | +| type | The identifier of a supported record type. See the list of [Supported DNS record types](https://cloud.google.om/dns/docs/overview#supported_dns_record_types). +| ttl | Number of seconds that this ResourceRecordSet can be cached by resolvers. + + +#### Relationships + +- GCPRecordSets are records of GCPDNSZones. + + ``` + (GCPDNSZone)-[HAS_RECORD]->(GCPRecordSet) + ``` + + +### GCPSubnet + +Representation of a GCP [Subnetwork](https://cloud.google.com/compute/docs/reference/rest/v1/subnetworks). + +| Field | Description | +| ------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| firstseen | Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| id | A partial resource URI representing this Subnet. Has the form `projects/{project}/regions/{region}/subnetworks/{subnet name}`. | +| partial_uri | Same as `id` | +| self_link | The full resource URI representing this subnet. Has the form `https://www.googleapis.com/compute/v1/{partial_uri}` | +| project_id | The project ID that this Subnet belongs to | +| name | The name of this Subnet | +| region | The region of this Subnet | +| gateway_address | Gateway IP address of this Subnet | +| ip_cidr_range | The CIDR range covered by this Subnet | +| vpc_partial_uri | The partial URI of the VPC that this Subnet is a part of | +| private_ip_google_access | Whether the VMs in this subnet can access Google services without assigned external IP addresses. This field can be both set at resource creation time and updated using setPrivateIpGoogleAccess. | + +#### Relationships + +- GCPSubnets are part of GCP VPCs + + ``` + (GCPVpc)-[RESOURCE]->(GCPSubnet) + ``` + +- GCPNetworkInterfaces are connected to GCPSubnets + + ``` + (GCPNetworkInterface)-[PART_OF_SUBNET]->(GCPSubnet) + ``` + + +### GCPFirewall + +Representation of a GCP [Firewall](https://cloud.google.com/compute/docs/reference/rest/v1/firewalls/list). + +| Field | Description | +| --------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| firstseen | Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| id | A partial resource URI representing this Firewall. | +| partial_uri | Same as `id` | +| direction | Either 'INGRESS' for inbound or 'EGRESS' for outbound | +| disabled | Whether this firewall object is disabled | +| priority | The priority of this firewall rule from 1 (apply this first)-65535 (apply this last) | +| self_link | The full resource URI to this firewall | +| has_target_service_accounts | Set to True if this Firewall has target service accounts defined. This field is currently a placeholder for future functionality to add GCP IAM objects to Cartography. If True, this firewall rule will only apply to GCP instances that use the specified target service account. | + +#### Relationships + +- Firewalls belong to VPCs + + ``` + (GCPVpc)-[RESOURCE]->(GCPFirewall) + ``` + +- Firewalls define rules that allow traffic + + ``` + (GcpIpRule)-[ALLOWED_BY]->(GCPFirewall) + ``` + +- Firewalls define rules that deny traffic + + ``` + (GcpIpRule)-[DENIED_BY]->(GCPFirewall) + ``` + +- GCP Firewalls can be labeled with tags to direct traffic to or deny traffic to labeled GCPInstances + ``` + (GCPFirewall)-[:TARGET_TAG]->(GCPNetworkTag) + ``` + +- GCP Firewalls allow ingress to GCP instances. + ``` + (GCPFirewall)-[:FIREWALL_INGRESS]->(GCPInstance) + ``` + + Note that this relationship is a shortcut for: + ``` + (vpc:GCPVpc)<-[MEMBER_OF_GCP_VPC]-(GCPInstance)-[TAGGED]->(GCPNetworkTag)-[TARGET_TAG]-(GCPFirewall{direction: 'INGRESS'})<-[RESOURCE]-(vpc) + ``` + + as well as + ``` + MATCH (fw:GCPFirewall{direction: 'INGRESS', has_target_service_accounts: False}}) + WHERE NOT (fw)-[TARGET_TAG]->(GCPNetworkTag) + MATCH (GCPInstance)-[MEMBER_OF_GCP_VPC]->(GCPVpc)-[RESOURCE]->(fw) + ``` + + +### GCPForwardingRule + +Representation of GCP [Forwarding Rules](https://cloud.google.com/compute/docs/reference/rest/v1/forwardingRules/list) and [Global Forwarding Rules](https://cloud.google.com/compute/docs/reference/rest/v1/globalForwardingRules/list). + +| Field | Description | +| --------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | +| firstseen | Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| id | A partial resource URI representing this Forwarding Rule | +| partial_uri | Same as `id` | +| ip_address | IP address that this Forwarding Rule serves | +| ip_protocol | IP protocol to which this rule applies | +| load_balancing_scheme | Specifies the Forwarding Rule type | +| name | Name of the Forwarding Rule | +| network | A partial resource URI of the network this Forwarding Rule belongs to | +| port_range | Port range used in conjunction with a target resource. Only packets addressed to ports in the specified range will be forwarded to target configured | +| ports | Ports to forward to a backend service. Only packets addressed to these ports are forwarded to the backend services configured | +| project_id | The project ID that this Forwarding Rule belongs to | +| region | The region of this Forwarding Rule | +| self_link | Server-defined URL for the resource | +| subnetwork | A partial resource URI of the subnetwork this Forwarding Rule belongs to | +| target | A partial resource URI of the target resource to receive the traffic | + +#### Relationships + +- GCPForwardingRules can be a resource of a GCPVpc. + + ``` + (GCPVpc)-[RESOURCE]->(GCPForwardingRule) + ``` + +- GCPForwardingRules can be a resource of a GCPSubnet. + + ``` + (GCPSubnet)-[RESOURCE]->(GCPForwardingRule) + ``` + +### GKECluster + +Representation of a GCP [GKE Cluster](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/). + +| Field | Description | +| -------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| basic_auth | Set to `True` if both `masterauth_username` and `masterauth_password` are set | +| created_at | The date and time the cluster was created | +| cluster_ipv4cidr | The IP address range of the container pods in the cluster | +| current_master_version | The current software version of the master endpoint | +| database_encryption | Configuration of etcd encryption | +| description | An optional description of the cluster | +| endpoint | The IP address of the cluster's master endpoint. The endpoint can be accessed from the internet at https://username:password@endpoint/ | +| exposed_internet | Set to `True` if at least among `private_nodes`, `private_endpoint_enabled`, or `master_authorized_networks` are disabled | +| firstseen | Timestamp of when a sync job first discovered this node | +| **id** | Same as `self_link` | +| initial_version | The initial Kubernetes version for the cluster | +| location | The name of the Google Compute Engine zone or region in which the cluster resides | +| logging_service | The logging service used to write logs. Available options: `logging.googleapis.com/kubernetes`, `logging.googleapis.com`, `none` | +| master_authorized_networks | If enabled, it disallows all external traffic to access Kubernetes master through HTTPS except traffic from the given CIDR blocks, Google Compute Engine Public IPs and Google Prod IPs | +| masterauth_username | The username to use for HTTP basic authentication to the master endpoint. For clusters v1.6.0 and later, basic authentication can be disabled by leaving username unspecified (or setting it to the empty string) | +| masterauth_password | The password to use for HTTP basic authentication to the master endpoint. If a password is provided for cluster creation, username must be non-empty | +| monitoring_service | The monitoring service used to write metrics. Available options: `monitoring.googleapis.com/kubernetes`, `monitoring.googleapis.com`, `none` | +| name | The name of the cluster | +| network | The name of the Google Compute Engine network to which the cluster is connected | +| network_policy | Set to `True` if a network policy provider has been enabled | +| private_endpoint_enabled | Whether the master's internal IP address is used as the cluster endpoint | +| private_endpoint | The internal IP address of the cluster's master endpoint | +| private_nodes | If enabled, all nodes are given only private addresses and communicate with the master via private networking | +| public_endpoint | The external IP address of the cluster's master endpoint | +| **self_link** | Server-defined URL for the resource | +| services_ipv4cidr | The IP address range of the Kubernetes services in the cluster | +| shielded_nodes | Whether Shielded Nodes are enabled | +| status | The current status of the cluster | +| subnetwork | The name of the Google Compute Engine subnetwork to which the cluster is connected | +| zone | The name of the Google Compute Engine zone in which the cluster resides | + + +#### Relationships + +- GKEClusters are resources of GCPProjects. + + ``` + (GCPProject)-[RESOURCE]->(GKECluster) + ``` + + +### IpRule::IpPermissionInbound::GCPIpRule + +An IpPermissionInbound node is a specific type of IpRule. It represents a generic inbound IP-based rules. The creation of this node is currently derived from ingesting AWS [EC2 Security Group](#ec2securitygroup) rules. + +| Field | Description | +| ----------- | ----------------------------------------------------------- | +| **ruleid** | `{firewall_partial_uri}/{rule_type}/{port_range}{protocol}` | +| firstseen | Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| protocol | The protocol this rule applies to | +| fromport | Lowest port in the range defined by this rule | +| toport | Highest port in the range defined by this rule | + +#### Relationships + +- GCP Firewall rules are defined on IpRange objects. + + ``` + (GCPIpRule, IpRule, IpPermissionInbound)<-[MEMBER_OF_IP_RULE)-(:IpRange) + ``` + +- Firewalls define rules that allow traffic + + ``` + (GcpIpRule)-[ALLOWED_BY]->(GCPFirewall) + ``` + +- Firewalls define rules that deny traffic + + ``` + (GcpIpRule)-[DENIED_BY]->(GCPFirewall) + ``` + +### IpRange + +Representation of an IP range or subnet. + +| Field | Description | +| ----------- | ------------------------------------------------------------------------ | +| firstseen | Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| id | CIDR notation for the IP range. E.g. "0.0.0.0/0" for the whole internet. | + +#### Relationships + +- GCP Firewall rules are defined on IpRange objects. + + ``` + (GCPIpRule, IpRule, IpPermissionInbound)<-[MEMBER_OF_IP_RULE)-(:IpRange) + ``` diff --git a/_sources/modules/github/config.md.txt b/_sources/modules/github/config.md.txt new file mode 100644 index 0000000000..c5f5fbca5e --- /dev/null +++ b/_sources/modules/github/config.md.txt @@ -0,0 +1,37 @@ +## Github Configuration + +.. _github_config: + +Follow these steps to analyze GitHub repos and other objects with Cartography. + +1. Prepare your GitHub credentials. + 1. Prepare a GitHub token; the following scopes are required, at minimum: `repo`, `read:org`, `read:user`, `user:email` + 1. GitHub ingest supports multiple endpoints, such as a public instance and an enterprise instance by taking a base64-encoded config object structured as + ```json + { + "organization": [ + { + "token": "faketoken", + "url": "https://api.github.com/graphql", + "name": "fakeorg" + }, + { + "token": "stillfake", + "url": "https://github.example.com/api/graphql", + "name": "fakeorg" + }] + } + ``` + 1. For each GitHub instance you want to ingest, generate an API token as documented in the [API reference](https://developer.github.com/v3/auth/) + 1. Create your auth config as shown above using the token obtained in the previous step. If you are configuring only the public GitHub instance, you can just use the first config block and delete the second. The name field is for the organization name you want to ingest. + 1. Base64 encode the auth object. You can encode the above sample in Python using + ```python + import json + import base64 + auth_json = json.dumps({"organization":[{"token":"faketoken","url":"https://api.github.com/graphql","name":"fakeorg"},{"token":"stillfake","url":"https://github.example.com/api/graphql","name":"fakeorg"}]}) + base64.b64encode(auth_json.encode()) + ``` + and the resulting environment variable would be ```eyJvcmdhbml6YXRpb24iOiBbeyJ0b2tlbiI6ICJmYWtldG9rZW4iLCAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vZ3JhcGhxbCIsICJuYW1lIjogImZha2VvcmcifSwgeyJ0b2tlbiI6ICJzdGlsbGZha2UiLCAidXJsIjogImh0dHBzOi8vZ2l0aHViLmV4YW1wbGUuY29tL2FwaS9ncmFwaHFsIiwgIm5hbWUiOiAiZmFrZW9yZyJ9XX0=``` +1. Populate an environment variable of your choice with the contents of the base64 output from the previous step. +1. Call the `cartography` CLI with `--github-config-env-var YOUR_ENV_VAR_HERE`. +1. `cartography` will then load your graph with data from all the organizations you specified. diff --git a/_sources/modules/github/index.rst.txt b/_sources/modules/github/index.rst.txt new file mode 100644 index 0000000000..0bfc35ef1e --- /dev/null +++ b/_sources/modules/github/index.rst.txt @@ -0,0 +1,14 @@ +Github +###### + +The github module has the following coverage: + +* Repos +* Branches +* Users + +.. toctree:: + :hidden: + :glob: + + * diff --git a/_sources/modules/github/schema.md.txt b/_sources/modules/github/schema.md.txt new file mode 100644 index 0000000000..e1eb5d5c95 --- /dev/null +++ b/_sources/modules/github/schema.md.txt @@ -0,0 +1,218 @@ +## Github Schema + +.. _github_schema: + +### GitHubRepository + +Representation of a single GitHubRepository (repo) [repository object](https://developer.github.com/v4/object/repository/). This node contains all data unique to the repo. + + +| Field | Description | +|-------|--------------| +| firstseen| Timestamp of when a sync job first created this node | +| lastupdated | Timestamp of the last time the node was updated | +| id | The GitHub repo id. These are not unique across GitHub instances, so are prepended with the API URL the id applies to | +| createdat | GitHub timestamp from when the repo was created | +| name | Name of the repo | +| fullname | Name of the organization and repo together | +| description | Text describing the repo | +| primarylanguage | The primary language used in the repo | +| homepage | The website used as a homepage for project information | +| defaultbranch | The default branch used by the repo, typically master | +| defaultbranchid | The unique identifier of the default branch | +| private | True if repo is private | +| disabled | True if repo is disabled | +| archived | True if repo is archived | +| locked | True if repo is locked | +| giturl | URL used to access the repo from git commandline | +| url | Web URL for viewing the repo +| sshurl | URL for access the repo via SSH +| updatedat | GitHub timestamp for last time repo was modified | + + +#### Relationships + +- GitHubUsers or GitHubOrganizations own GitHubRepositories. + + ``` + (GitHubUser)-[OWNER]->(GitHubRepository) + (GitHubOrganization)-[OWNER]->(GitHubRepository) + ``` + +- GitHubRepositories in an organization can have outside collaborators with different permissions, including ADMIN, +WRITE, MAINTAIN, TRIAGE, and READ ([Reference](https://docs.github.com/en/graphql/reference/enums#repositorypermission)). + + ``` + (GitHubUser)-[:OUTSIDE_COLLAB_{ACTION}]->(GitHubRepository) + ``` + +- GitHubRepositories use ProgrammingLanguages + ``` + (GitHubRepository)-[:LANGUAGE]->(ProgrammingLanguage) + ``` +- GitHubRepositories have GitHubBranches + ``` + (GitHubRepository)-[:BRANCH]->(GitHubBranch) + ``` +- GitHubTeams can have various levels of [access](https://docs.github.com/en/graphql/reference/enums#repositorypermission) to GitHubRepositories. + + ``` + (GitHubTeam)-[ADMIN|READ|WRITE|TRIAGE|MAINTAIN]->(GitHubRepository) + ``` + +### GitHubOrganization + +Representation of a single GitHubOrganization [organization object](https://developer.github.com/v4/object/organization/). This node contains minimal data for the GitHub Organization. + + +| Field | Description | +|-------|--------------| +| firstseen| Timestamp of when a sync job first created this node | +| lastupdated | Timestamp of the last time the node was updated | +| id | The URL of the GitHub organization | +| username | Name of the organization | + + +#### Relationships + +- GitHubOrganizations own GitHubRepositories. + + ``` + (GitHubOrganization)-[OWNER]->(GitHubRepository) + ``` + +- GitHubTeams are resources under GitHubOrganizations + + ``` + (GitHubOrganization)-[RESOURCE]->(GitHubTeam) + ``` + + +### GitHubTeam + +A GitHubTeam [organization object](https://docs.github.com/en/graphql/reference/objects#team). + + +| Field | Description | +|-------|--------------| +| firstseen| Timestamp of when a sync job first created this node | +| lastupdated | Timestamp of the last time the node was updated | +| id | The URL of the GitHub Team | +| name | The name (a.k.a URL slug) of the GitHub Team | +| description | Description of the GitHub team | + + +#### Relationships + +- GitHubTeams can have various levels of [access](https://docs.github.com/en/graphql/reference/enums#repositorypermission) to GitHubRepositories. + + ``` + (GitHubTeam)-[ADMIN|READ|WRITE|TRIAGE|MAINTAIN]->(GitHubRepository) + ``` + +- GitHubTeams are resources under GitHubOrganizations + + ``` + (GitHubOrganization)-[RESOURCE]->(GitHubTeam) + ``` + +### GitHubUser + +Representation of a single GitHubUser [user object](https://developer.github.com/v4/object/user/). This node contains minimal data for the GitHub User. + + +| Field | Description | +|-------|--------------| +| firstseen| Timestamp of when a sync job first created this node | +| lastupdated | Timestamp of the last time the node was updated | +| id | The URL of the GitHub user | +| username | Name of the user | +| fullname | The full name | +| has_2fa_enabled | Whether the user has 2-factor authentication enabled | +| role | Either 'ADMIN' (denoting that the user is an owner of a Github organization) or 'MEMBER' | +| is_site_admin | Whether the user is a site admin | +| permission | Only present if the user is an [outside collaborator](https://docs.github.com/en/graphql/reference/objects#repositorycollaboratorconnection) of this repo. +`permission` is either ADMIN, MAINTAIN, READ, TRIAGE, or WRITE ([ref](https://docs.github.com/en/graphql/reference/enums#repositorypermission)). +| email | The user's publicly visible profile email. +| company | The user's public profile company. + + +#### Relationships + +- GitHubUsers own GitHubRepositories. + + ``` + (GitHubUser)-[OWNER]->(GitHubRepository) + ``` + +- GitHubRepositories in an organization can have outside collaborators with different permissions, including ADMIN, +WRITE, MAINTAIN, TRIAGE, and READ ([Reference](https://docs.github.com/en/graphql/reference/enums#repositorypermission)). + + ``` + (GitHubUser)-[:OUTSIDE_COLLAB_{ACTION}]->(GitHubRepository) + ``` + +### GitHubBranch + +Representation of a single GitHubBranch [ref object](https://developer.github.com/v4/object/ref). This node contains minimal data for a repository branch. + + +| Field | Description | +|-------|--------------| +| firstseen| Timestamp of when a sync job first created this node | +| lastupdated | Timestamp of the last time the node was updated | +| id | The GitHub branch id. These are not unique across GitHub instances, so are prepended with the API URL the id applies to | +| name | Name of the branch | + + +#### Relationships + +- GitHubRepositories have GitHubBranches. + + ``` + (GitHubBranch)<-[BRANCH]-(GitHubRepository) + ``` + +### ProgrammingLanguage + +Representation of a single Programming Language [language object](https://developer.github.com/v4/object/language). This node contains programming language information. + + +| Field | Description | +|-------|--------------| +| firstseen| Timestamp of when a sync job first created this node | +| lastupdated | Timestamp of the last time the node was updated | +| id | Language ids need not be tracked across instances, so defaults to the name | +| name | Name of the language | + + +#### Relationships + +- GitHubRepositories use ProgrammingLanguages. + + ``` + (ProgrammingLanguage)<-[LANGUAGE]-(GitHubRepository) + ``` + + +### Dependency::PythonLibrary + +Representation of a Python library as listed in a [requirements.txt](https://pip.pypa.io/en/stable/user_guide/#requirements-files) +or [setup.cfg](https://setuptools.pypa.io/en/latest/userguide/declarative_config.html) file. +Within a setup.cfg file, cartography will load everything from `install_requires`, `setup_requires`, and `extras_require`. + +| Field | Description | +|-------|-------------| +|**id**|The [canonicalized](https://packaging.pypa.io/en/latest/utils/#packaging.utils.canonicalize_name) name of the library. If the library was pinned in a requirements file using the `==` operator, then `id` has the form ``{canonical name}\|{pinned_version}``.| +|name|The [canonicalized](https://packaging.pypa.io/en/latest/utils/#packaging.utils.canonicalize_name) name of the library.| +|version|The exact version of the library. This field is only present if the library was pinned in a requirements file using the `==` operator.| + +#### Relationships + +- Software on Github repos can import Python libraries by optionally specifying a version number. + + ``` + (GitHubRepository)-[:REQUIRES{specifier}]->(PythonLibrary) + ``` + + - specifier: A string describing this library's version e.g. "<4.0,>=3.0" or "==1.0.2". This field is only present on the `:REQUIRES` edge if the repo's requirements file provided a version pin. diff --git a/_sources/modules/gsuite/config.md.txt b/_sources/modules/gsuite/config.md.txt new file mode 100644 index 0000000000..d726405ba7 --- /dev/null +++ b/_sources/modules/gsuite/config.md.txt @@ -0,0 +1,93 @@ +## GSuite Configuration + +.. _gsuite_config: + +This module allows authentication from a service account or via OAuth tokens. + +Method 1: Using service account (legacy) + +Ingesting GSuite Users and Groups utilizes the [Google Admin SDK](https://developers.google.com/admin-sdk/). + +1. [Enable Google API access](https://support.google.com/a/answer/60757?hl=en) +1. Create a new G Suite user account and accept the Terms of Service. This account will be used as the domain-wide delegated access. +1. [Perform G Suite Domain-Wide Delegation of Authority](https://developers.google.com/admin-sdk/directory/v1/guides/delegation) +1. Download the service account's credentials +1. Export the environmental variables: + 1. `GSUITE_GOOGLE_APPLICATION_CREDENTIALS` - location of the credentials file. + 1. `GSUITE_DELEGATED_ADMIN` - email address that you created in step 2 + +## Method 2: Using OAuth + +1. Create an App on [Google Cloud Console](https://console.cloud.google.com/) +1. Refer to follow documentation if needed: + 1. https://developers.google.com/admin-sdk/directory/v1/quickstart/python + 1. https://developers.google.com/workspace/guides/get-started + 1. https://support.google.com/a/answer/7281227?hl=fr +1. Download credentials file +1. Use helper script below for OAuth flow to obtain refresh_token +1. Serialize needed secret + ```python + import json + import base64 + auth_json = json.dumps({"client_id":"xxxxx.apps.googleusercontent.com","client_secret":"ChangeMe", "refresh_token":"ChangeMe", "token_uri": "https://oauth2.googleapis.com/token"}) + base64.b64encode(auth_json.encode()) + ``` +1. Populate an environment variable of your choice with the contents of the base64 output from the previous step. +1. Call the `cartography` CLI with `--gsuite-tokens-env-var YOUR_ENV_VAR_HERE` and `--gsuite-auth-method oauth`. + + + + +Google Oauth Helper : +```python +from __future__ import print_function +import json +import os + +from google_auth_oauthlib.flow import InstalledAppFlow +from googleapiclient.discovery import build + + +scopes = ["https://www.googleapis.com/auth/admin.directory.userreadonly", "https://www.googleapis.com/auth/admin.directory.group.readonly", "https://www.googleapis.com/auth/admin.directory.group.member"] + +print('Go to https://console.cloud.google.com/ > API & Services > Credentials and download secrets') +project_id = input('Provide your project ID:') +client_id = input('Provide your client ID:') +client_secret = input('Provide your client secret:') +with open('credentials.json', 'w', encoding='utf-8') as fc: + data = { + "installed": { + "client_id": client_id, + "project_id": project_id, + "auth_uri":"https://accounts.google.com/o/oauth2/auth", + "token_uri":"https://oauth2.googleapis.com/token", + "auth_provider_x509_cert_url":"https://www.googleapis.com/oauth2/v1/certs", + "client_secret":"client_secret", + "redirect_uris":["http://localhost"] + }} + json.dump(data, fc) +flow = InstalledAppFlow.from_client_secrets_file( + 'credentials.json', scopes) +flow.redirect_uri = 'http://localhost' +auth_url, _ = flow.authorization_url(prompt='consent') +print(f'Please go to this URL: {auth_url}') +code = input('Enter the authorization code: ') +flow.fetch_token(code=code) +creds = flow.credentials +print('Testing your credentials by gettings first 10 users in the domain ...') +service = build('admin', 'directory_v1', credentials=creds) +print('Getting the first 10 users in the domain') +results = service.users().list(customer='my_customer', maxResults=10, + orderBy='email').execute() +users = results.get('users', []) +if not users: + print('No users in the domain.') +else: + print('Users:') + for user in users: + print(u'{0} ({1})'.format(user['primaryEmail'], + user['name']['fullName'])) +print('Your credentials:') +print(json.dumps(creds.to_json(), indent=2)) +os.remove('credentials.json') +``` diff --git a/_sources/modules/gsuite/index.rst.txt b/_sources/modules/gsuite/index.rst.txt new file mode 100644 index 0000000000..a8818f2393 --- /dev/null +++ b/_sources/modules/gsuite/index.rst.txt @@ -0,0 +1,13 @@ +Google GSuite +############# + +The gsuite module has the following coverage: + +* Users +* Groups + +.. toctree:: + :hidden: + :glob: + + * diff --git a/_sources/modules/gsuite/schema.md.txt b/_sources/modules/gsuite/schema.md.txt new file mode 100644 index 0000000000..75e77c723b --- /dev/null +++ b/_sources/modules/gsuite/schema.md.txt @@ -0,0 +1,62 @@ +## GSuite Schema + +.. _gsuite_schema: + +### GSuiteUser + +Reference: +https://developers.google.com/admin-sdk/directory/v1/reference/users#resource + +| Field | Description | +|-------|--------------| +| id | The unique ID for the user as a string. A user id can be used as a user request URI's userKey +| user_id | duplicate of id. +| agreed_to_terms | This property is true if the user has completed an initial login and accepted the Terms of Service agreement. +| change_password_at_next_login | Indicates if the user is forced to change their password at next login. This setting doesn't apply when the user signs in via a third-party identity provider. +| creation_time | The time the user's account was created. The value is in ISO 8601 date and time format. The time is the complete date plus hours, minutes, and seconds in the form YYYY-MM-DDThh:mm:ssTZD. For example, 2010-04-05T17:30:04+01:00. +| customer_id | The customer ID to retrieve all account users. You can use the alias my_customer to represent your account's customerId. As a reseller administrator, you can use the resold customer account's customerId. To get a customerId, use the account's primary domain in the domain parameter of a users.list request. +| etag | ETag of the resource +| include_in_global_address_list | Indicates if the user's profile is visible in the G Suite global address list when the contact sharing feature is enabled for the domain. For more information about excluding user profiles, see the administration help center. +| ip_whitelisted | If true, the user's IP address is white listed. +| is_admin | Indicates a user with super admininistrator privileges. The isAdmin property can only be edited in the Make a user an administrator operation (makeAdmin method). If edited in the user insert or update methods, the edit is ignored by the API service. +| is_delegated_admin | Indicates if the user is a delegated administrator. Delegated administrators are supported by the API but cannot create or undelete users, or make users administrators. These requests are ignored by the API service. Roles and privileges for administrators are assigned using the Admin console. +| is_enforced_in_2_sv | Is 2-step verification enforced (Read-only) +| is_enrolled_in_2_sv | Is enrolled in 2-step verification (Read-only) +| is_mailbox_setup | Indicates if the user's Google mailbox is created. This property is only applicable if the user has been assigned a Gmail license. +| kind | The type of the API resource. For Users resources, the value is admin#directory#user. +| last_login_time | The last time the user logged into the user's account. The value is in ISO 8601 date and time format. The time is the complete date plus hours, minutes, and seconds in the form YYYY-MM-DDThh:mm:ssTZD. For example, 2010-04-05T17:30:04+01:00. +| name | First name + Last name +| family_name | The user's last name. Required when creating a user account. +| given_name | The user's first name. Required when creating a user account. +| org_unit_path | The full path of the parent organization associated with the user. If the parent organization is the top-level, it is represented as a forward slash (/). +| primary_email | The user's primary email address. This property is required in a request to create a user account. The primaryEmail must be unique and cannot be an alias of another user. +| suspended | Indicates if user is suspended +| thumbnail_photo_etag | ETag of the user's photo +| thumbnail_photo_url | Photo Url of the user +| lastupdated | Timestamp of when a sync job last updated this node +| firstseen | Timestamp of when a sync job first discovered this node + +#### Relationships +- GSuiteUser is an identity for a Human + ``` + (Human)-[IDENTITY_GSUITE]->(GSuiteUser) + ``` + +### GSuiteGroup + +Reference: +https://developers.google.com/admin-sdk/directory/v1/reference/groups + + +| Field | Description | +|-------|--------------| +| id | The unique ID of a group. A group id can be used as a group request URI's groupKey. +| admin_created | Value is true if this group was created by an administrator rather than a user. +| description | An extended description to help users determine the purpose of a group. For example, you can include information about who should join the group, the types of messages to send to the group, links to FAQs about the group, or related groups. Maximum length is 4,096 characters. +| direct_members_count | The number of users that are direct members of the group. If a group is a member (child) of this group (the parent), members of the child group are not counted in the directMembersCount property of the parent group +| email | The group's email address. If your account has multiple domains, select the appropriate domain for the email address. The email must be unique. This property is required when creating a group. Group email addresses are subject to the same character usage rules as usernames, see the administration help center for the details. +| etag | ETag of the resource +| kind | The type of the API resource. For Groups resources, the value is admin#directory#group. +| name | The group's display name. +| lastupdated | Timestamp of when a sync job last updated this node +| firstseen | Timestamp of when a sync job first discovered this node diff --git a/_sources/modules/index.rst.txt b/_sources/modules/index.rst.txt new file mode 100644 index 0000000000..947aa7f149 --- /dev/null +++ b/_sources/modules/index.rst.txt @@ -0,0 +1,5 @@ +.. toctree:: + :hidden: + :glob: + + */index diff --git a/_sources/modules/jamf/index.rst.txt b/_sources/modules/jamf/index.rst.txt new file mode 100644 index 0000000000..0a24c9de2a --- /dev/null +++ b/_sources/modules/jamf/index.rst.txt @@ -0,0 +1,7 @@ +Jamf +#### + +.. toctree:: + :glob: + + * diff --git a/_sources/modules/jamf/schema.md.txt b/_sources/modules/jamf/schema.md.txt new file mode 100644 index 0000000000..362bb9d647 --- /dev/null +++ b/_sources/modules/jamf/schema.md.txt @@ -0,0 +1,17 @@ +## Jamf Schema + +.. _jamf_schema: + +### JamfComputerGroup + +Representation of a Jamf computer group. + +| Field | Description | +|-------|-------------| +|id|The group id| +|name|The friendly name of the group| +|is_smart| Whether the group is [smart](https://docs.jamf.com/10.4.0/jamf-pro/administrator-guide/Smart_Computer_Groups.html)| + +#### Relationships + +- Coming soon! diff --git a/_sources/modules/kubernetes/config.md.txt b/_sources/modules/kubernetes/config.md.txt new file mode 100644 index 0000000000..f6b2b5047d --- /dev/null +++ b/_sources/modules/kubernetes/config.md.txt @@ -0,0 +1,9 @@ +## Kubernetes Configuration + +.. _kubernetes_config: + +Follow these steps to analyze Kubernetes objects in Cartography. + +1. Configure a [kubeconfig file](https://kubernetes.io/docs/concepts/configuration/organize-cluster-access-kubeconfig/) specifying access to one or mulitple clusters. + - Access to mutliple K8 clusters can be organized in a single kubeconfig file. Intel module of Kubernetes will automatically detect that and attempt to sync each cluster. +2. Note down the path of configured kubeconfig file and pass it to cartography CLI with `--k8s-kubeconfig` parameter. diff --git a/_sources/modules/kubernetes/index.rst.txt b/_sources/modules/kubernetes/index.rst.txt new file mode 100644 index 0000000000..fed3b0607c --- /dev/null +++ b/_sources/modules/kubernetes/index.rst.txt @@ -0,0 +1,17 @@ +Kubernetes +########## + +The kubernetes module has the following coverage: + +* Cluster +* Namespace +* Secret +* Service +* Pod +* Container + +.. toctree:: + :hidden: + :glob: + + * diff --git a/_sources/modules/kubernetes/schema.md.txt b/_sources/modules/kubernetes/schema.md.txt new file mode 100644 index 0000000000..75018858d4 --- /dev/null +++ b/_sources/modules/kubernetes/schema.md.txt @@ -0,0 +1,134 @@ +## Kubernetes Schema + +.. _kubernetes_schema: + +### KubernetesCluster +Representation of a [Kubernetes Cluster.](https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/) + +| Field | Description | +|-------|-------------| +| firstseen | Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| id | Identifier for the cluster i.e. UID of `kube-system` namespace | +| name | Name assigned to the cluster which is derived from kubeconfig context | + +#### Relationships +- KubernetesCluster has KubernetesNamespaces. + ``` + (KubernetesCluster)-[HAS_NAMESPACE]->(KubernetesNamespace) + ``` + +- KubernetesCluster can have KubernetesPods. + ``` + (KubernetesCluster)-[HAS_POD]->(KubernetesPod) + ``` + +### KubernetesNamespace +Representation of a [Kubernetes Namespace.](https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/) + +| Field | Description | +|-------|-------------| +| firstseen | Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| id | UID of the kubernetes namespace | +| name | Name of the kubernetes namespace | +| created\_at | Timestamp of the creation time of the kubernetes namespace | +| deleted\_at | Timestamp of the deletion time of the kubernetes namespace | + +#### Relationships +- KubernetesNamespace can have KubernetesPods. + ``` + (KubernetesNamespace)-[HAS_POD]->(KubernetesPod) + ``` + +- KubernetesNamespace can have KubernetesServices. + ``` + (KubernetesNamespace)-[HAS_SERVICE]->(KubernetesService) + ``` + +- KubernetesNamespace can have KubernetesSecrets. + ``` + (KubernetesNamespace)-[HAS_SECRET]->(KubernetesSecret) + ``` + +### KubernetesPod +Representation of a [Kubernetes Pod.](https://kubernetes.io/docs/concepts/workloads/pods/) + +| Field | Description | +|-------|-------------| +| firstseen | Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| id | UID of the kubernetes pod | +| name | Name of the kubernetes pod | +| status\_phase | The phase of a Pod is a simple, high-level summary of where the Pod is in its lifecycle. | +| created\_at | Timestamp of the creation time of the kubernetes pod | +| deleted\_at | Timestamp of the deletion time of the kubernetes pod | + +#### Relationships +- KubernetesPod has KubernetesContainers. + ``` + (KubernetesPod)-[HAS_CONTAINER]->(KubernetesContainer) + ``` + +### KubernetesContainer +Representation of a [Kubernetes Container.](https://kubernetes.io/docs/concepts/workloads/pods/#how-pods-manage-multiple-containers) + +| Field | Description | +|-------|-------------| +| firstseen | Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| id | Identifier for the container which is derived from the UID of pod and the name of container | +| name | Name of the container in kubernetes pod | +| image | Docker image used in the container | +| status\_image\_id | ImageID of the container's image. | +| status\_image\_sha | The SHA portion of the status\_image\_id | +| status\_ready | Specifies whether the container has passed its readiness probe. | +| status\_started | Specifies whether the container has passed its startup probe. | +| statys\_state | State of the container (running, terminated, waiting) | + +#### Relationships +- KubernetesPod has KubernetesContainers. + ``` + (KubernetesPod)-[HAS_CONTAINER]->(KubernetesContainer) + ``` + +### KubernetesService +Representation of a [Kubernetes Service.](https://kubernetes.io/docs/concepts/services-networking/service/) + +| Field | Description | +|-------|-------------| +| firstseen | Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| id | UID of the kubernetes service | +| name | Name of the kubernetes service | +| created\_at | Timestamp of the creation time of the kubernetes service | +| deleted\_at | Timestamp of the deletion time of the kubernetes service | +| type | Type of kubernetes service e.g. `ClusterIP` | +| load\_balancer\_ip | IP of the load balancer when service type is `LoadBalancer` | +| ingress\_host | Hostname of the ingress endpoint, if any | +| ingress\_ip | IP of the ingress endpoint, if any | + +#### Relationships +- KubernetesService can serve KubernetesPods. + ``` + (KubernetesService)-[SERVES_POD]->(KubernetesPod) + ``` + +### KubernetesSecret +Representation of a [Kubernetes Secret.](https://kubernetes.io/docs/concepts/configuration/secret/) + +| Field | Description | +|-------|-------------| +| firstseen | Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| id | UID of the kubernetes secret | +| name | Name of the kubernetes secret | +| created\_at | Timestamp of the creation time of the kubernetes secret | +| deleted\_at | Timestamp of the deletion time of the kubernetes secret | +| type | Type of kubernetes secret e.g. `Opaque` | + +#### Relationships +- KubernetesNamespace can have KubernetesSecrets. + ``` + (KubernetesNamespace)-[HAS_SECRET]->(KubernetesSecret) + ``` diff --git a/_sources/modules/lastpass/config.md.txt b/_sources/modules/lastpass/config.md.txt new file mode 100644 index 0000000000..3d8ebe7530 --- /dev/null +++ b/_sources/modules/lastpass/config.md.txt @@ -0,0 +1,9 @@ +## Lastpass Configuration + +.. _lastpass_config: + +Follow these steps to analyze Lastpass objects with Cartography. + +1. Prepare your Lastpass CID & ProvHash key. + 1. Get your CID (account number) and ProvHash from Lastpass [Where can I find the CID and API secret?](https://support.lastpass.com/help/where-can-i-find-the-cid-and-api-secret) + 1. Populate an environment variable with the CID and Provhash. You can pass the environment variable name via CLI with the `--lastpass-cid-env-var` and `--lastpass-provhash-env-var` parameter. diff --git a/_sources/modules/lastpass/index.rst.txt b/_sources/modules/lastpass/index.rst.txt new file mode 100644 index 0000000000..96a036e946 --- /dev/null +++ b/_sources/modules/lastpass/index.rst.txt @@ -0,0 +1,12 @@ +Lastpass +######## + +The lastpass module has the following coverage: + +* Users + +.. toctree:: + :hidden: + :glob: + + * diff --git a/_sources/modules/lastpass/schema.md.txt b/_sources/modules/lastpass/schema.md.txt new file mode 100644 index 0000000000..cbbff9a5bf --- /dev/null +++ b/_sources/modules/lastpass/schema.md.txt @@ -0,0 +1,45 @@ +## Lastpass Schema + +.. _lastpass_schema: + + +### Human + +Lastpass use Human node as pivot with other Identity Providers (GSuite, GitHub ...) + +Human nodes are not created by Lastpass module, link is made using analysis job. + + +#### Relationships + +- Human as an access to Lastpass + ``` + (Human)-[IDENTITY_LASTPASS]->(LastpassUser) + ``` + +### LastpassUser + +Representation of a single User in Lastpass + +| Field | Description | +|-------|--------------| +| firstseen| Timestamp of when a sync job first created this node | +| lastupdated | Timestamp of the last time the node was updated | +| id | Lastpass ID | +| name | Full name of the user | +| email | User email | +| created | Timestamp of when the account was created | +| last_pw_change | Timestamp of the last master password change | +| last_login | Timestamp of the last login | +| neverloggedin | Flag indicating the user never logged in | +| disabled | Flag indicating accout is disabled | +| admin | Flag for admin account | +| totalscore | Lastpass security score (max 100) | +| mpstrength | Master password strenght (max 100) | +| sites | Number of site credentials stored | +| notes | Number of secured notes stored | +| formfills | Number of forms stored | +| applications | Number of applications (mobile) stored | +| attachments | Number of file attachments stored | +| password_reset_required | Flag indicating user requested password reset | +| multifactor | MFA method (null if None) | diff --git a/_sources/modules/okta/config.md.txt b/_sources/modules/okta/config.md.txt new file mode 100644 index 0000000000..df8fe9fd83 --- /dev/null +++ b/_sources/modules/okta/config.md.txt @@ -0,0 +1,12 @@ +## Okta Configuration + +.. _okta_config: + +Follow these steps to analyze Okta objects with Cartography. + +1. Prepare your Okta API token. + 1. Generate your API token by following the steps from the Okta [Create An API Token documentation](https://developer.okta.com/docs/guides/create-an-api-token/overview/) + 1. Populate an environment variable with the API token. You can pass the environment variable name via CLI with the `--okta-api-key-env-var` parameter. + 1. Use the CLI `--okta-org-id` parameter with the organization ID that you wish to query. The organization ID is the first part of the Okta URL for your organization. + 1. If you are using Okta to [administer AWS as a SAML provider](https://saml-doc.okta.com/SAML_Docs/How-to-Configure-SAML-2.0-for-Amazon-Web-Service#scenarioC) then the module will automatically match OktaGroups to the AWSRole they control access for. + - If you are using a regex other than the standard okta group to role regex `^aws\#\S+\#(?{{role}}[\w\-]+)\#(?{{accountid}}\d+)$` defined in [Step 5: Enabling Group Based Role Mapping in Okta](https://saml-doc.okta.com/SAML_Docs/How-to-Configure-SAML-2.0-for-Amazon-Web-Service#scenarioC) then you can specify your regex with the `--okta-saml-role-regex` parameter. diff --git a/_sources/modules/okta/index.rst.txt b/_sources/modules/okta/index.rst.txt new file mode 100644 index 0000000000..9bf98c36d8 --- /dev/null +++ b/_sources/modules/okta/index.rst.txt @@ -0,0 +1,19 @@ +Okta +#### + +The okta module has the following coverage: + +* Users +* Groups +* Organizations +* Roles +* Applications +* Factors +* Trusted Origins +* Reply URIs + +.. toctree:: + :hidden: + :glob: + + * diff --git a/_sources/modules/okta/schema.md.txt b/_sources/modules/okta/schema.md.txt new file mode 100644 index 0000000000..a66dc14b3d --- /dev/null +++ b/_sources/modules/okta/schema.md.txt @@ -0,0 +1,267 @@ +## Okta Schema + +.. _okta_schema: + +### OktaOrganization + +Representation of an [Okta Organization](https://developer.okta.com/docs/concepts/okta-organizations/). + + +| Field | Description | +|-------|--------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| id | The name of the Okta Organization, e.g. "lyft" | +| name | The name of the Okta Organization, e.g. "lyft" + +#### Relationships + +- An OktaOrganization contains OktaUsers + + ``` + (OktaOrganization)-[RESOURCE]->(OktaUser) + ``` + +- An OktaOrganization contains OktaGroups. + + ``` + (OktaOrganization)-[RESOURCE]->(OktaGroup) + ``` +- An OktaOrganization contains OktaApplications + + ``` + (OktaOrganization)-[RESOURCE]->(OktaApplication) + ``` +- An OktaOrganization has OktaTrustedOrigins + + ``` + (OktaOrganization)-[RESOURCE]->(OktaTrustedOrigin) + ``` +- An OktaOrganization has OktaAdministrationRoles + + ``` + (OktaOrganization)-[RESOURCE]->(OktaAdministrationRole) + ``` + +### OktaUser + +Representation of an [Okta User](https://developer.okta.com/docs/reference/api/users/#user-object). + +| Field | Description | +|-------|--------------| +| id | user id | +| first_name | user first name | +| last_name | user last name | +| login | user usernmae used to login (usually email) | +| email | user email | +| second_email | user secondary email | +| mobile_phone | user mobile phone | +| created | date and time of creation | +| activated | date and time of activation | +| status_changed | date and time of the last state change | +| last_login | date and time of last login | +| okta_last_updated | date and time of last user property changes | +| password_changed | date and time of last password change | +| transition_to_status | date and time of last state transition change | +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | + +#### Relationships + + - An OktaOrganization contains OktaUsers + ``` + (OktaUser)<-[RESOURCE]->(OktaOrganization) + ``` + - OktaUsers are assigned OktaApplication + + ``` + (OktaUser)-[APPLICATION]->(OktaApplication) + ``` + - OktaUser is an identity for a Human + + ``` + (OktaUser)<-[IDENTITY_OKTA]-(Human) + ``` + - An OktaUser can be a member of an OktaGroup + ``` + (OktaUser)-[MEMBER_OF_OKTA_GROUP]->(OktaGroup) + ``` + - An OktaUser can be a member of an OktaAdministrationRole + ``` + (OktaUser)-[MEMBER_OF_OKTA_ROLE]->(OktaAdministrationRole) + ``` + - OktaUsers can have authentication factors + ``` + (OktaUser)-[FACTOR]->(OktaUserFactor) + ``` + +### OktaGroup + +Representation of an [Okta Group](https://developer.okta.com/docs/reference/api/groups/#group-object). + +| Field | Description | +|-------|--------------| +| id | application id | +| name | group name | +| description | group description | +| sam_account_name | windows SAM account name mapped +| dn | group dn | +| windows_domain_qualified_name | windows domain name | +| external_id | group foreign id | +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | + +#### Relationships + + - OktaOrganizations contain OktaGroups + ``` + (OktaGroup)<-[RESOURCE]->(OktaOrganizations) + ``` + - OktaApplications can be assigned to OktaGroups + + ``` + (OktaGroup)-[APPLICATION]->(OktaApplication) + ``` + - An OktaUser can be a member of an OktaGroup + ``` + (OktaUser)-[MEMBER_OF_OKTA_GROUP]->(OktaGroup) + ``` + - An OktaGroup can be a member of an OktaAdministrationRole + ``` + (OktaGroup)-[MEMBER_OF_OKTA_ROLE]->(OktaAdministrationRole) + ``` + +### OktaApplication + +Representation of an [Okta Application](https://developer.okta.com/docs/reference/api/apps/#application-object). + +| Field | Description | +|-------|--------------| +| id | application id | +| name | application name | +| label | application label | +| created | application creation date | +| okta_last_updated | date and time of last application property changes | +| status | application status | +| activated | application activation state | +| features | application features | +| sign_on_mode | application signon mode | +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | + +#### Relationships + + - OktaApplication is a resource of an OktaOrganization + ``` + (OktaApplication)<-[RESOURCE]->(OktaOrganization) + ``` + - OktaGroups can be assigned OktaApplications + + ``` + (OktaGroup)-[APPLICATION]->(OktaApplication) + ``` + - OktaUsers are assigned OktaApplications + + ``` + (OktaUser)-[APPLICATION]->(OktaApplication) + ``` +- OktaApplications have ReplyUris + + ``` + (ReplyUri)-[REPLYURI]->(OktaApplication) + ``` + +### OktaUserFactor + +Representation of Okta User authentication [Factors](https://developer.okta.com/docs/reference/api/factors/#factor-object). + +| Field | Description | +|-------|--------------| +| id | factor id | +| factor_type | factor type | +| provider | factor provider | +| status | factor status | +| created | factor creation date and time | +| okta_last_updated | date and time of last property changes | +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | + +#### Relationships + + - OktaUsers can have authentication Factors + ``` + (OktaUser)-[FACTOR]->(OktaUserFactor) + ``` + +### OktaTrustedOrigin + +Representation of an [Okta Trusted Origin](https://developer.okta.com/docs/reference/api/trusted-origins/#trusted-origin-object) for login/logout or recovery operations. + +| Field | Description | +|-------|--------------| +| id | trusted origin id | +| name | name | +| scopes | array of scope | +| status | status | +| created | date & time of creation in okta | +| create_by | id of user who created the trusted origin | +| okta_last_updated | date and time of last property changes | +| okta_last_updated_by | id of user who last updated the trusted origin | +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | + +#### Relationships + +- An OktaOrganization has OktaTrustedOrigins. + + ``` + (OktaOrganization)-[RESOURCE]->(OktaTrustedOrigin) + ``` + +### OktaAdministrationRole + +Representation of an [Okta Administration Role](https://developer.okta.com/docs/reference/api/roles/#role-object). + +| Field | Description | +|-------|--------------| +| id | role id mapped to the type | +| type | role type | +| label | role label | +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | + +#### Relationships + + - OktaUsers can be members of OktaAdministrationRoles + ``` + (OktaUser)-[MEMBER_OF_OKTA_ROLE]->(OktaAdministrationRole) + ``` + - An OktaGroup can be a member of an OktaAdministrationRolee + ``` + (OktaGroup)-[MEMBER_OF_OKTA_ROLE]->(OktaAdministrationRole) + ``` +- An OktaOrganization contains OktaAdministrationRoles + + ``` + (OktaOrganization)-[RESOURCE]->(OktaAdministrationRole) + ``` + +### Reply Uri + +Representation of [Okta Application ReplyUri](https://developer.okta.com/docs/reference/api/apps/). + +| Field | Description | +|-------|--------------| +| id | uri the app can send the reply to | +| uri | uri the app can send the reply to | +| valid | is the DNS of the reply uri valid. Invalid replyuris can lead to oath phishing | +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | + +#### Relationships + + - OktaApplications have ReplyUris + + ``` + (ReplyUri)-[REPLYURI]->(OktaApplication) + ``` diff --git a/_sources/modules/pagerduty/config.md.txt b/_sources/modules/pagerduty/config.md.txt new file mode 100644 index 0000000000..bba83233f2 --- /dev/null +++ b/_sources/modules/pagerduty/config.md.txt @@ -0,0 +1,10 @@ +## Pagerduty Configuration + +.. _pagerduty_config: + +Follow these steps to analyze PagerDuty objects with Cartography. + +1. Prepare your PagerDuty API key. + 1. Generate your API token by following the steps from the PagerDuty [Generating API Keys documentation](https://support.pagerduty.com/docs/generating-api-keys) + 1. Populate an environment variable with the API key. You can pass the environment variable name via CLI with the `--pagerduty-api-key-env-var` parameter. + 1. You can set the timeout for pagerduty requests via the CLI with `--pagerduty-request-timeout` parameter. diff --git a/_sources/modules/pagerduty/index.rst.txt b/_sources/modules/pagerduty/index.rst.txt new file mode 100644 index 0000000000..d55900051d --- /dev/null +++ b/_sources/modules/pagerduty/index.rst.txt @@ -0,0 +1,18 @@ +PagerDuty +######### + +The pagerduty module has the following coverage: + +* Users +* Teams +* Services +* Schedules +* Escalation Policies +* Integrations +* Vendors + +.. toctree:: + :hidden: + :glob: + + * diff --git a/_sources/modules/pagerduty/schema.md.txt b/_sources/modules/pagerduty/schema.md.txt new file mode 100644 index 0000000000..2647be76b4 --- /dev/null +++ b/_sources/modules/pagerduty/schema.md.txt @@ -0,0 +1,222 @@ +## Pagerduty Schema + +.. _pagerduty_schema: + +### PagerDutyEscalationPolicy + +Representation of a [PagerDuty Escalation Policy](https://developer.pagerduty.com/api-reference/c2NoOjI3NDgwMjE-escalation-policy) + +| Field | Description | +|-------|--------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| id | The ID of the escalation policy | +| html\_url | the API show URL at which the object is accessible | +| type | The type of this pagerduty object (escalation\_policy) | +| summary | A short-form, server-generated string that provides succinct, important information about an object suitable for primary labeling of an entity in a client. In many cases, this will be identical to name, though it is not intended to be an identifier. | +| on\_call\_handoff\_notifications | Determines how on call handoff notifications will be sent for users on the escalation policy. Defaults to "if\_has\_services". | +| name | The name of the escalation policy. | +| num\_loops | The number of times the escalation policy will repeat after reaching the end of its escalation. | + +#### Relationships + +- A PagerDutyEscalationPolicy has PagerDutyEscalationPolicyRules + + ``` + (PagerDutyEscalationPolicy)-[HAS\_RULE]->(PagerDutyEscalationPolicyRule) + ``` + +- A PagerDutyEscalationPolicy is associated with PagerDutyUsers + + ``` + (PagerDutyEscalationPolicy)-[ASSOCIATED\_WITH]->(PagerDutyUser) + ``` + +- A PagerDutyEscalationPolicy is associated with PagerDutySchedules + + ``` + (PagerDutyEscalationPolicy)-[ASSOCIATED\_WITH]->(PagerDutySchedule) + ``` + +- A PagerDutyEscalationPolicy is associated with PagerDutyServices + + ``` + (PagerDutyEscalationPolicy)-[ASSOCIATED\_WITH]->(PagerDutyService) + ``` + +- A PagerDutyEscalationPolicy is associated with PagerDutyTeams + + ``` + (PagerDutyEscalationPolicy)-[ASSOCIATED\_WITH]->(PagerDutyTeam) + ``` + +### PagerDutySchedule + +Representation of a [PagerDuty Schedule](https://developer.pagerduty.com/api-reference/c2NoOjI3NDgwMzU-schedule) + +| Field | Description | +|-------|--------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| id | The ID of the schedule | +| html\_url | the API show URL at which the object is accessible | +| type | The type of this pagerduty object (schedule) | +| summary | A short-form, server-generated string that provides succinct, important information about an object suitable for primary labeling of an entity in a client. In many cases, this will be identical to name, though it is not intended to be an identifier. | +| name | The name of the schedule. | +| time\_zone | The time zone of the schedule | +| description | The description of the schedule | + +#### Relationships + +- A PagerDutySchedule has PagerDutyScheduleLayers + + ``` + (PagerDutySchedule)-[HAS\_LAYER]->(PagerDutyScheduleLayer) + ``` + +### PagerDutyScheduleLayer + +Representation of a layer in a [PagerDuty Schedule](https://developer.pagerduty.com/api-reference/c2NoOjI3NDgwMzU-schedule) + +| Field | Description | +|-------|--------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| id | The ID of the schedule layer | +| schedule\_id | The ID of the schedule this layer is attached to. | +| start | The start time of this layer | +| end | The end time of this layer. If null, the layer does not end. | +| rotation\_virtual\_start | The effective start time of the layer. This can be before the start time of the schedule. | +| rotation\_turn\_length\_seconds | The duration of each on-call shift in seconds. | + +#### Relationships + +No relationships originating from PagerDutyScheduleLayer + +### PagerDutyService + +Representation of a [PagerDuty Service](https://developer.pagerduty.com/api-reference/c2NoOjI3NDgwMjc-service) + +| Field | Description | +|-------|--------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| id | The ID of the service | +| html\_url | the API show URL at which the object is accessible | +| type | The type of this pagerduty object (service) | +| summary | A short-form, server-generated string that provides succinct, important information about an object suitable for primary labeling of an entity in a client. In many cases, this will be identical to name, though it is not intended to be an identifier. | +| name | The name of this service | +| description | The user-provided description of the service. | +| auto\_resolve\_timeout | Time in seconds that an incident is automatically resolved if left open for that long. Value is null if the feature is disabled. Value must not be negative. Setting this field to 0, null (or unset in POST request) will disable the feature. | +| acknowledgement\_timeout | Time in seconds that an incident changes to the Triggered State after being Acknowledged. Value is null if the feature is disabled. Value must not be negative. Setting this field to 0, null (or unset in POST request) will disable the feature. | +| created\_at | The date/time when this service was created | +| status | The current state of the Service. | +| alert\_creation | Whether a service creates only incidents, or both alerts and incidents. A service must create alerts in order to enable incident merging. | +| alert\_grouping\_parameters\_type | The type of Alert Grouping. | +| incident\_urgency\_rule\_type | The type of incident urgency: whether it's constant, or it's dependent on the support hours. | +| incident\_urgency\_rule\_during\_support\_hours\_type | The type of incident urgency: whether it's constant, or it's dependent on the support hours. | +| incident\_urgency\_rule\_during\_support\_hours\_urgency | The incidents' urgency, if type is constant. | +| incident\_urgency\_rule\_outside\_support\_hours\_type | The type of incident urgency: whether it's constant, or it's dependent on the support hours. | +| incident\_urgency\_rule\_outside\_support\_hours\_urgency | The incidents' urgency, if type is constant. | +| support\_hours\_type | The type of support hours | +| support\_hours\_time\_zone | The time zone for the support hours | +| support\_hours\_start\_time | The support hours' starting time of day (date portion is ignored) | +| support\_hours\_end\_time | support\_hours\_end\_time | +| support\_hours\_days\_of\_week | (no description) | + +#### Relationships + +- A PagerDutyService has PagerDutyIntegrations + + ``` + (PagerDutyService)-[HAS\_INTEGRATION]->(PagerDutyIntegration) + ``` + +### PagerDutyIntegration + +Representation of a [PagerDuty Integration](https://developer.pagerduty.com/api-reference/c2NoOjI3NDgwMzA-integration) + +| Field | Description | +|-------|--------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| id | The ID of the integration | +| html\_url | the API show URL at which the object is accessible | +| type | The type of this pagerduty object (integration) | +| summary | A short-form, server-generated string that provides succinct, important information about an object suitable for primary labeling of an entity in a client. In many cases, this will be identical to name, though it is not intended to be an identifier. | +| name | The name of this integration | +| created\_at | The date/time when this integration was created. | + +#### Relationships + +- A PagerDutyIntegration has PagerDutyVendors + + ``` + (PagerDutyIntegration)-[HAS\_VENDOR]->(PagerDutyVendor) + ``` + +### PagerDutyTeam + +Representation of a [PagerDuty Team](https://developer.pagerduty.com/api-reference/c2NoOjI3NDgwMTc-team) + +| Field | Description | +|-------|--------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| id | The ID of the team | +| html\_url | the API show URL at which the object is accessible | +| type | The type of this pagerduty object (team) | +| summary | A short-form, server-generated string that provides succinct, important information about an object suitable for primary labeling of an entity in a client. In many cases, this will be identical to name, though it is not intended to be an identifier. | +| name | The name of the team | +| description | The description of the team | +| default\_role | (no description, but returned by API) | + +#### Relationships + +- A PagerDutyTeam is associated with PagerDutyServices + + ``` + (PagerDutyTeam)-[ASSOCIATED\_WITH]->(PagerDutyServices) + ``` + +### PagerDutyUser + +Representation of a [PagerDuty User](https://developer.pagerduty.com/api-reference/c2NoOjI3NDgwMTU-user) + +| Field | Description | +|-------|--------------| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| id | The ID of the user | +| html\_url | the API show URL at which the object is accessible | +| type | The type of this pagerduty object (user) | +| summary | A short-form, server-generated string that provides succinct, important information about an object suitable for primary labeling of an entity in a client. In many cases, this will be identical to name, though it is not intended to be an identifier. | +| name | The name of the user | +| email | The user's email address +| time\_zone | The preferred time zone name. If null, the account's time zone will be used. | +| color | The schedule color | +| role | The user role. Account must have the read\_only\_users ability to set a user as a read\_only\_user or a read\_only\_limited\_user, and must have advanced permissions abilities to set a user as observer or restricted\_access. | +| avatar\_url | The URL of the user's avatar. | +| description | The user's bio. | +| invitation\_sent | If true, the user has an outstanding invitation. | +| job\_title | The user's title | + +#### Relationships + +- A PagerDutyUser is a member of PagerDutySchedules + + ``` + (PagerDutyUser)-[MEMBER\_OF]->(PagerDutySchedule) + ``` + +- A PagerDutyUser is a member of PagerDutyScheduleLayers + + ``` + (PagerDutyUser)-[MEMBER\_OF]->(PagerDutyScheduleLayer) + ``` + +- A PagerDutyUser is a member of PagerDutyTeams + + ``` + (PagerDutyUser)-[MEMBER\_OF]->(PagerDutyTeam) + ``` diff --git a/_sources/modules/semgrep/config.md.txt b/_sources/modules/semgrep/config.md.txt new file mode 100644 index 0000000000..6beb6616c5 --- /dev/null +++ b/_sources/modules/semgrep/config.md.txt @@ -0,0 +1,9 @@ +## Semgrep Configuration + +.. _semgrep_config: + +Follow these steps to ingest Semgrep findings with Cartography. + +1. Create a token with *Agent (CI)* and *Web API scopes* [Creating a SEMGREP_APP_TOKEN](https://semgrep.dev/docs/semgrep-ci/running-semgrep-ci-with-semgrep-cloud-platform/#creating-a-semgrep_app_token). +1. Populate an environment variable with the secrets value of the token +1. Pass the environment variable name to the `--semgrep-app-token-env-var` CLI arg. diff --git a/_sources/modules/semgrep/index.rst.txt b/_sources/modules/semgrep/index.rst.txt new file mode 100644 index 0000000000..54a4d625b9 --- /dev/null +++ b/_sources/modules/semgrep/index.rst.txt @@ -0,0 +1,13 @@ +Semgrep +#### + +The Semgrep module has the following coverage: + +* Deployment +* SCA Findings + +.. toctree:: + :hidden: + :glob: + + * diff --git a/_sources/modules/semgrep/schema.md.txt b/_sources/modules/semgrep/schema.md.txt new file mode 100644 index 0000000000..415e946c2c --- /dev/null +++ b/_sources/modules/semgrep/schema.md.txt @@ -0,0 +1,91 @@ +## Semgrep Schema + +.. _semgrep_schema: + +### SemgrepDeployment + +Represents a Semgrep [Deployment](https://semgrep.dev/api/v1/docs/#tag/Deployment), a unit encapsulating a security organization inside Semgrep Cloud. Works as the parent of all other Semgrep resources. + +| Field | Description | +|-------|--------------| +| firstseen | Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| **id** | Unique integer id representing the deployment | +| **slug** | Lowercase string id representing the deployment to query the API | +| **name** | Name of security organization connected to the deployment | + +#### Relationships + +- A SemgrepDeployment contains SemgrepSCAFinding's + + ``` + (SemgrepDeployment)-[RESOURCE]->(SemgrepSCAFinding) + ``` + +- A SemgrepDeployment contains SemgrepSCALocation's + + + ``` + (SemgrepDeployment)-[RESOURCE]->(SemgrepSCALocation) + ``` + + ``` + +### SemgrepSCAFinding + +Represents a [Semgre Supply Chain](https://semgrep.dev/docs/semgrep-supply-chain/overview/) finding. This is, a vulnerability in a dependency of a project discovered by Semgrep performing software composition analysis (SCA) and code reachability analysis. Before ingesting this node, make sure you have run Semgrep CI and that it's connected to Semgrep Cloud Platform [Running Semgrep CI with Semgrep Cloud Platform](https://semgrep.dev/docs/semgrep-ci/running-semgrep-ci-with-semgrep-cloud-platform/). + +| Field | Description | +|-------|--------------| +| firstseen | Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| **id** | A composed id based using the repository path and the rule that triggered the finding | +| **rule_id** | The rule that triggered the finding | +| **repository** | The repository path where the finding was discovered | +| summary | A short title summarizing of the finding | +| description | Description of the vulnerability. | +| package_manager | The ecosystem of the dependency where the finding was discovered (e.g. pypi, npm, maven) | +| severity | Severity of the finding (e.g. CRITICAL, HIGH, MEDIUM, LOW) | +| cve_id | CVE id of the vulnerability from NVD. Check [cve_schema](../cve/schema.md) | +| reachability_check | Whether the vulnerability reachability is confirmed, not confirmed or needs to be manually confirmed | +| reachability_condition | Description of the reachability condition (e.g. reachable if code is used in X way) | +| reachability | Whether the vulnerability is reachable or not | +| transitivity | Whether the vulnerability is transitive or not (e.g. dependency, transitive) | +| dependency | Dependency where the finding was discovered. Includes dependency name and version | +| dependency_fix | Dependency version that fixes the vulnerability | +| ref_urls | List of reference urls for the finding | +| dependency_file | Path of the file where the finding was discovered (e.g. lock.json, requirements.txt) | +| dependency_file_url | URL of the file where the finding was discovered | +| scan_time | Date and time when the finding was discovered in UTC | + + +#### Relationships + +- An SemgrepSCAFinding connected to a GithubRepository (optional) + + ``` + (SemgrepSCAFinding)-[FOUND_IN]->(GithubRepository) + ``` + +- A SemgrepSCAFinding vulnerable dependency usage at SemgrepSCALocation (optional) + + ``` + (SemgrepSCAFinding)-[USAGE_AT]->(SemgrepSCALocation) + ``` + + +### SemgrepSCALocation + +Represents the location in a repository where a vulnerable dependency is used in a way that can trigger the vulnerability. + +| Field | Description | +|-------|--------------| +| firstseen | Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| **id** | Unique id identifying the location of the finding | +| path | Path of the file where the usage was discovered | +| start_line | Line where the usage starts | +| start_col | Column where the usage starts | +| end_line | Line where the usage ends | +| end_col | Column where the usage ends | +| url | URL of the file where the usage was discovered | diff --git a/_sources/ops.md.txt b/_sources/ops.md.txt new file mode 100644 index 0000000000..9a6e54878d --- /dev/null +++ b/_sources/ops.md.txt @@ -0,0 +1,49 @@ +# Cartography operations guide + +This document contains tips for running Cartography in production. + +## Maintaining a up-to-date picture of your infrastructure + +Running `cartography` ensures that your Neo4j instance contains the most recent snapshot of your infrastructure. Here's +how that process works. + +### Update tags + +Each sync run has an `update_tag` associated with it, +which is the [Unix timestamp of when the sync started](https://github.com/lyft/cartography/blob/8d60311a10156cd8aa16de7e1fe3e109cc3eca0f/cartography/sync.py#L131-L134). +See our [docs for more details](../dev/writing-intel-modules.md#handling-cartographys-update_tag). + +### Cleanup jobs + +Each node and relationship created or updated during the sync will have their `lastupdated` field set to the +`update_tag`. At the end of a sync run, nodes and relationships with out-of-date `lastupdated` fields are considered +stale and will be deleted via a [cleanup job](../dev/writing-intel-modules.md#cleanup). + +### Sync frequency + +To keep data updated, you can run `cartography` as part of a periodic script (cronjobs in Linux, scheduled tasks in +Windows). Determine your needs for data freshness and adjust accordingly. + +## Observability + +### statsd + +Cartography can be configured to send metrics to a [statsd](https://github.com/statsd/statsd) server. Specify the +`--statsd-enabled` flag when running `cartography` for sync execution times to be recorded and sent to +`127.0.0.1:8125` by default (these options are also configurable with the `--statsd-host` and `--statsd-port` options). +You can also provide your own `--statsd-prefix` to make these metrics easier to find in your own environment. + +## Docker image + +A production-ready docker image is available in [GitHub Container Registry](https://github.com/lyft/cartography/pkgs/container/cartography). We recommend that you avoid using the `:latest` tag and instead +use the tag or digest associated with your desired release version, e.g. + +```bash +docker pull ghcr.io/lyft/cartography:0.61.0 +``` + +This image can then be ran with any of your desired command line flags: + +```bash +docker run --rm ghcr.io/lyft/cartography:0.61.0 --help +``` diff --git a/_sources/usage/drift-detect.md.txt b/_sources/usage/drift-detect.md.txt new file mode 100644 index 0000000000..f0ebe83f8b --- /dev/null +++ b/_sources/usage/drift-detect.md.txt @@ -0,0 +1,166 @@ +# How to use Drift-Detection +Drift-Detection is a Cartography module that allows you to track changes of query results over time. + +## A Quick Example: Tracking internet-exposed EC2 instances +The quickest way to get started using drift-detection is through an example. We showed you [how we mark EC2 instances as internet-exposed with Cartography analysis jobs](../dev/writing-analysis-jobs.md#example-job-which-of-my-ec2-instances-is-accessible-to-any-host-on-the-internet), and now we can use drift-detection to monitor when these instances are added or removed from our accounts over time! + +### Setup +1. **Specify a** `${DRIFT_DETECTION_DIRECTORY}` on the machine that runs `cartography`. This can be any folder where you have read and write access to. + +2. **Set up a folder structure** that looks like this: + + ``` + ${DRIFT_DETECTION_DIRECTORY}/ + | + |----internet-exposure-query/ + | + |----another-query-youre-interested-in/ + | + |----yet-another-query-to-track-over-time/ + ``` + + As shown here, your `${DRIFT_DETECTION_DIRECTORY}` contains one or more `${QUERY_DIRECTORY}s`. + +3. **Create a template file** + + Save the below contents as `${DRIFT_DETECTION_DIRECTORY}/internet-exposure-query/template.json`: + + ``` + { + "name": "Internet Exposed EC2 Instances", + "validation_query": "match (n:EC2Instance) where n.exposed_internet = True return n.instancetype, n.privateipaddress, n.publicdnsname, n.exposed_internet_type" + "properties": [], + "results": [] + } + ``` + + - `name` is a helpful name describing the query. + - `validation_query` is the neo4j Cypher query to track over time. In this case, we have simply asked Neo4j to return `instancetype`, `privateipaddress`, `publicdnsname`, and `exposed_internet_type` from EC2Instances that Cartography has identified as accessible from the internet. When writing your own queries, note that drift-detection only supports `MATCH` queries (i.e. read operations). `MERGE` queries (write operations) are not supported. + - `properties`: Leave this as an empty array. This field is a placeholder that will be filled. + - `results`: Leave this as an empty array. This field is a placeholder that will be filled. + +4. **Create a shortcut file** + + Save the below contents as `${DRIFT_DETECTION_DIRECTORY}/internet-exposure-query/shortcut.json`: + + ``` + { + "name": "Internet Exposed EC2 Instances", + "shortcuts": {} + } + ``` + + `name` should match the `name` you specified in `template.json`. + +All set 👍 + +### Running drift-detection + +1. **Run `get-state` to save results of a query to json** + + Run `cartography-detectdrift get-state --neo4j-uri --drift-detection-directory ${DRIFT_DETECTION_DIRECTORY}` + + The internet exposure query might return results that look like this: + + ``` + | n.instancetype | n.privateipaddress | n.publicdnsname | n.exposed_internet_type | + |---------------- |-------------------- |----------------------------- |------------------------- | + | c4.large | 10.255.255.251 | ec2.1.compute.amazonaws.com | [direct] | + | t2.micro | 10.255.255.252 | ec2.2.compute.amazonaws.com | [direct] | + | c4.large | 10.255.255.253 | ec2.3.compute.amazonaws.com | [direct, elb] | + | t2.micro | 10.255.255.254 | ec2.4.compute.amazonaws.com | [direct, elb] | + + ``` + and we should now see a new JSON file `.json` saved with information in this format: + + ``` + { + "name": "Internet Exposed EC2 Instances", + "validation_query": "match (n:EC2Instance) where n.exposed_internet = True return n.instancetype, n.privateipaddress, n.publicdnsname, n.exposed_internet_type" + "properties": ["n.instancetype", "n.privateipaddress", "n.publicdnsname", "n.exposed_internet_type"], + "results": [ + ["c4.large", "10.255.255.251", "ec2.1.compute.amazonaws.com", "direct"], + ["t2.micro", "10.255.255.252", "ec2.2.compute.amazonaws.com", "direct"], + ["c4.large", "10.255.255.253", "ec2.3.compute.amazonaws.com", "direct|elb"], + ["t2.micro", "10.255.255.254", "ec2.4.compute.amazonaws.com", "direct|elb"] + ] + } + ``` + + You can continually run `get-state` to save the results of a query to json. Each json state file will be named with the Unix timestamp of the time drift-detection was run. + +2. **Comparing state files** + + Now let's say a couple days go by and some new EC2 Instances were added to our AWS account. We run the `get-state` command once more and get another file `.json` which looks like this: + + ``` + { + "name": "Internet Exposed EC2 Instances", + "validation_query": "match (n:EC2Instance) where n.exposed_internet = True return n.instancetype, n.privateipaddress, n.publicdnsname, n.exposed_internet_type"" + "properties": ["n.instancetype", "n.privateipaddress", "n.publicdnsname", "n.exposed_internet_type"], + "results": [ + ["t2.micro", "10.255.255.250", "ec2.0.compute.amazonaws.com", "direct"], + ["c4.large", "10.255.255.251", "ec2.1.compute.amazonaws.com", "direct"], + ["t2.micro", "10.255.255.252", "ec2.2.compute.amazonaws.com", "direct"], + ["c4.large", "10.255.255.253", "ec2.3.compute.amazonaws.com", "direct|elb"], + ["c4.large", "10.255.255.255", "ec2.5.compute.amazonaws.com", "direct|elb"] + ] + } + ``` + + It looks like our results list has slightly changed. We can use `drift-detection` to quickly diff the two files: + + + `cartography-detectdrift get-drift --query-directory ${DRIFT_DETECTION_DIRECTORY}/internet-exposure-query --start-state .json --end-state .json` + + Finally, we should see the following messages pop up: + + ``` + Query Name: Internet Exposed EC2 Instances + Query Properties: ["n.instancetype", "n.privateipaddress", "n.publicdnsname", "n.exposed_internet_type"] + + New Query Results: + + n.instancetype: t2.micro + n.privateipaddress: 10.255.255.250 + n.publicdnsname: ec2.0.compute.amazonaws.com + n.exposed_internet_type: ['direct'] + + n.instancetype: c4.large + n.privateipaddress: 10.255.255.255 + n.publicdnsname: ec2.5.compute.amazonaws.com + n.exposed_internet_type: ['direct', 'elb'] + + Missing Query Results: + + n.instancetype: t2.micro + n.privateipaddress: 10.255.255.253 + n.publicdnsname: ec2.4.compute.amazonaws.com + n.exposed_internet_type: ['direct', 'elb'] + ``` + + This gives us a quick way to view infrastructure changes! + +### Using shortcuts instead of filenames to diff files + +It can be cumbersome to always type Unix timestamp filenames. To make this easier we can add `shortcuts` to diff two files without specifying the filename. This lets us bookmark certain states with whatever name we want. + +1. **Adding shortcuts** + + Let's try adding shortcuts. We will name the first state "first-run" and the second state "second-run" with + + `cartography-detectdrift add-shortcut --shortcut first-run --file .json` + + `cartography-detectdrift add-shortcut --shortcut second-run --file .json` + + We can even use aliases instead of filenames when adding shortcuts! + + `cartography-detectdrift add-shortcut --shortcut baseline --file most-recent` + +2. **Comparing state files with shortcuts** + + Now that we have shortcuts, we can now simply run + + `cartography-detectdrift get-drift --query-directory ${DRIFT_DETECTION_DIRECTORY}/internet-exposure-query --start-state first-run --end-state second-run` + +Important note: Each execution of `get-state` will automatically generate a shortcut in each query directory, `most-recent`, which will refer to the last state file successfully created in that directory. diff --git a/_sources/usage/index.rst.txt b/_sources/usage/index.rst.txt new file mode 100644 index 0000000000..f200d6f75d --- /dev/null +++ b/_sources/usage/index.rst.txt @@ -0,0 +1,7 @@ +.. toctree:: + + tutorial + schema + drift-detect + permissions-mapping + samplequeries diff --git a/_sources/usage/samplequeries.md.txt b/_sources/usage/samplequeries.md.txt new file mode 100644 index 0000000000..32ac8c6b37 --- /dev/null +++ b/_sources/usage/samplequeries.md.txt @@ -0,0 +1,105 @@ +## Sample queries + +### What [RDS](https://aws.amazon.com/rds/) instances are installed in my [AWS](https://aws.amazon.com/) accounts? +``` +MATCH (aws:AWSAccount)-[r:RESOURCE]->(rds:RDSInstance) +return * +``` + +### Which RDS instances have [encryption](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.Encryption.html) turned off? +``` +MATCH (a:AWSAccount)-[:RESOURCE]->(rds:RDSInstance{storage_encrypted:false}) +return a.name, rds.id +``` + +### Which [EC2](https://aws.amazon.com/ec2/) instances are exposed (directly or indirectly) to the internet? +``` +MATCH (instance:EC2Instance{exposed_internet: true}) +RETURN instance.instanceid, instance.publicdnsname +``` + +### Which [ELB](https://aws.amazon.com/elasticloadbalancing/) LoadBalancers are internet accessible? +``` +MATCH (elb:LoadBalancer{exposed_internet: true})—->(listener:ELBListener) +RETURN elb.dnsname, listener.port +ORDER by elb.dnsname, listener.port +``` + +### Which [ELBv2](https://aws.amazon.com/elasticloadbalancing/) LoadBalancerV2s (Application Load Balancers) are internet accessible? +``` +MATCH (elbv2:LoadBalancerV2{exposed_internet: true})—->(listener:ELBV2Listener) +RETURN elbv2.dnsname, listener.port +ORDER by elbv2.dnsname, listener.port +``` + +### Which [S3](https://aws.amazon.com/s3/) buckets have a policy granting any level of anonymous access to the bucket? +``` +MATCH (s:S3Bucket) +WHERE s.anonymous_access = true +RETURN s +``` + +### How many unencrypted RDS instances do I have in all my AWS accounts? + +``` +MATCH (a:AWSAccount)-[:RESOURCE]->(rds:RDSInstance) +WHERE rds.storage_encrypted = false +return a.name as AWSAccount, count(rds) as UnencryptedInstances +``` + +### What users have the TotallyFake Chrome extension installed? +``` +MATCH (u:GSuiteUser)-[r:INSTALLS]->(ext:ChromeExtension) +WHERE ext.name CONTAINS 'TotallyFake' +return ext.name, ext.version, u.email +``` + +### What users have installed extensions that are risky based on [CRXcavator scoring](https://crxcavator.io/docs#/risk_breakdown)? +Risk > 200 is evidence of 3 or more critical risks or many high risks in the extension. +``` +MATCH (u:GSuiteUser)-[r:INSTALLS]->(ext:ChromeExtension) +WHERE ext.risk_total > 200 +return ext.name, ext.version, u.email +``` + +### What languages are used in a given GitHub repository? +``` +MATCH (:GitHubRepository{name:"myrepo"})-[:LANGUAGE]->(lang:ProgrammingLanguage) +RETURN lang.name +``` + +### What are the dependencies used in a given GitHub repository? +``` +MATCH (:GitHubRepository{name:"myrepo"})-[edge:REQUIRES]->(dep:Dependency) +RETURN dep.name, edge.specifier, dep.version +``` + +If you want to filter to just e.g. Python libraries: +``` +MATCH (:GitHubRepository{name:"myrepo"})-[edge:REQUIRES]->(dep:Dependency:PythonLibrary) +RETURN dep.name, edge.specifier, dep.version +``` + +### Given a dependency, which GitHub repos depend on it? +Using boto3 as an example dependency: +``` +MATCH (dep:Dependency:PythonLibrary{name:"boto3"})<-[req:REQUIRES]-(repo:GitHubRepository) +RETURN repo.name, req.specifier, dep.version +``` + +### What are all the dependencies used across all GitHub repos? +Just the list of dependencies and their versions: +``` +MATCH (dep:Dependency) +RETURN DISTINCT dep.name AS name, dep.version AS version +ORDER BY dep.name +``` + +With info about which repos are using them: +``` +MATCH (repo:GitHubRepository)-[edge:REQUIRES]->(dep:Dependency) +RETURN repo.name, dep.name, edge.specifier, dep.version +``` +Lyft ingests this information into our internal data stack, +which has enabled us to throw BI tooling on top for easy reporting - +this is highly recommended! diff --git a/_sources/usage/schema.md.txt b/_sources/usage/schema.md.txt new file mode 100644 index 0000000000..a5f1d101d4 --- /dev/null +++ b/_sources/usage/schema.md.txt @@ -0,0 +1,36 @@ +# Cartography Schema + +## ℹ️ Quick notes on notation +- **Bolded words** in the schema tables indicate that this field is indexed, so your queries will run faster if you use these fields. + +- This isn't proper Neo4j syntax, but for the purpose of this document we will use this notation: + + ``` + (NodeTypeA)-[RELATIONSHIP_R]->(NodeTypeB, NodeTypeC, NodeTypeD, NodeTypeE) + ``` + + to mean a shortened version of this: + + ``` + (NodeTypeA)-[RELATIONSHIP_R]->(NodeTypeB) + (NodeTypeA)-[RELATIONSHIP_R]->(NodeTypeC) + (NodeTypeA)-[RELATIONSHIP_R]->(NodeTypeD) + (NodeTypeA)-[RELATIONSHIP_R]->(NodeTypeE) + ``` + + In words, this means that `NodeTypeA` has `RELATIONSHIP_R` pointing to `NodeTypeB`, and `NodeTypeA` has `RELATIONSHIP_R` pointing to `NodeTypeC`. + +- In these docs, more specific nodes will be decorated with `GenericNode::SpecificNode` notation. For example, if we have a `Car` node and a `RaceCar` node, we will refer to the `RaceCar` as `Car::RaceCar`. + +.. mdinclude:: ../modules/_cartography-metadata/schema.md +.. mdinclude:: ../modules/aws/schema.md +.. mdinclude:: ../modules/azure/schema.md +.. mdinclude:: ../modules/crxcavator/schema.md +.. mdinclude:: ../modules/digitalocean/schema.md +.. mdinclude:: ../modules/gcp/schema.md +.. mdinclude:: ../modules/github/schema.md +.. mdinclude:: ../modules/gsuite/schema.md +.. mdinclude:: ../modules/jamf/schema.md +.. mdinclude:: ../modules/kubernetes/schema.md +.. mdinclude:: ../modules/okta/schema.md +.. mdinclude:: ../modules/pagerduty/schema.md diff --git a/_sources/usage/tutorial.md.txt b/_sources/usage/tutorial.md.txt new file mode 100644 index 0000000000..f0cb52fa9b --- /dev/null +++ b/_sources/usage/tutorial.md.txt @@ -0,0 +1,190 @@ +## Usage Tutorial + +Once everything has been installed and synced, you can view the Neo4j web interface at http://localhost:7474. You can view the reference on this [here](https://neo4j.com/developer/guide-neo4j-browser/#_installing_and_starting_neo4j_browser). + +If you already know Neo4j and just need to know what are the nodes, attributes, and graph relationships for our representation of infrastructure assets, you can view our [sample queries](samplequeries.html). More sample queries are available at https://github.com/marco-lancini/cartography-queries. + +Otherwise, read on for this handhold-y tutorial filled with examples. Suppose we wanted to find out: + +### What [RDS](https://aws.amazon.com/rds/) instances are installed in my AWS accounts? +```cypher +MATCH (aws:AWSAccount)-[r:RESOURCE]->(rds:RDSInstance) +return * +``` + +![Visualization of RDS nodes and AWS nodes](../images/accountsandrds.png) + +In this query we asked Neo4j to find all `[:RESOURCE]` relationships from AWSAccounts to RDSInstances, and return the nodes and the `:RESOURCE` relationships. + +We will do more interesting things with this result next. + +#### ℹ️ Protip - customizing your view +You can adjust the node colors, sizes, and captions by clicking on the node type at the top of the query. For example, to change the color of an AWSAccount node, first click the "AWSAccount" icon at the top of the view to select the node type +![selecting an AWSAccount node](../images/selectnode.png) + +and then pick options on the menu that shows up at the bottom of the view like this: +![customizations](../images/customizeview.png) + + +### Which RDS instances have [encryption](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.Encryption.html) turned off? +```cypher +MATCH (a:AWSAccount)-[:RESOURCE]->(rds:RDSInstance{storage_encrypted:false}) +RETURN a.name, rds.id +``` + +![Unencrypted RDS instances](../images/unencryptedinstances.png) + +The results show up in a table because we specified attributes like `a.name` and `rds.id` in our return statement (as opposed to having it `return *`). We used the "{}" notation to have the query only return RDSInstances where `storage_encrypted` is set to `False`. + +If you want to go back to viewing the graph and not a table, simply make sure you don't have any attributes in your return statement -- use `return *` to return all nodes decorated with a variable label in your `MATCH` statement, or just return the specific nodes and relationships that you want. + +Let's look at some other AWS assets now. + +### Which [EC2](https://aws.amazon.com/ec2/) instances are directly exposed to the internet? +```cypher +MATCH (instance:EC2Instance{exposed_internet: true}) +RETURN instance.instanceid, instance.publicdnsname +``` +![EC2 instances open to the internet](../images/ec2-inet-open.png) + +These instances are open to the internet either through permissive inbound IP permissions defined on their EC2SecurityGroups or their NetworkInterfaces. + +If you know a lot about AWS, you may have noticed that EC2 instances [don't actually have an exposed_internet field](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_Instance.html). We're able to query for this because Cartography performs some [data enrichment](#data-enrichment) to add this field to EC2Instance nodes. + +### Which [S3](https://aws.amazon.com/s3/) buckets have a policy granting any level of anonymous access to the bucket? +```cypher +MATCH (s:S3Bucket) +WHERE s.anonymous_access = true +RETURN s +``` + +![S3 buckets that allow anon access](../images/anonbuckets.png) + +These S3 buckets allow for any user to read data from them anonymously. Similar to the EC2 instance example above, S3 buckets returned by the S3 API [don't actually have an anonymous_access field](https://docs.aws.amazon.com/AmazonS3/latest/API/API_Bucket.html) and this field is added by one of Cartography's [data augmentation steps](#data-augmentation). + +A couple of other things to notice: instead of using the "{}" notation to filter for anonymous buckets, we can use SQL-style `WHERE` clauses. Also, we used the SQL-style `AS` operator to relabel our output header rows. + +### How many unencrypted RDS instances do I have in all my AWS accounts? + +Let's go back to analyzing RDS instances. In an earlier example we queried for RDS instances that have encryption turned off. We can aggregate this data by AWSAccount with a small change: + +```cypher +MATCH (a:AWSAccount)-[:RESOURCE]->(rds:RDSInstance) +WHERE rds.storage_encrypted = false +RETURN a.name as AWSAccount, count(rds) as UnencryptedInstances +``` +![Table of unencrypted RDS instances by AWS account](../images/unencryptedcounts.png) + + +### Given a node label, what other node labels can be connected to it? + +Suppose we wanted to know what other assets can be connected to a DNSRecord. We would ask the graph like this: + +```cypher +match (d:DNSRecord)--(n) +return distinct labels(n); +``` + +This says "what are the possible labels for all nodes connected to all DNSRecord nodes `d` in my graph?" Your answer might look like this: + +``` +["AWSDNSRecord", "DNSRecord"] +["AWSDNSZone", "DNSZone"] +["LoadBalancerV2"] +["NameServer"] +["ESDomain"] +["LoadBalancer"] +["EC2Instance", "Instance"] +``` + +You can then make the path more specific like this: + +```cypher +match (d:DNSRecord)--(:EC2Instance)--(n) +return distinct labels(n); +``` + +And then you can continue building your query. + +We also include [full schema docs](schema.html), but this way of building a query can be faster and more interactive. + + +### Given a node label, what are the possible property names defined on it? + +We can find what properties are available on an S3Bucket like this: + +```cypher +match (n:S3Bucket) return properties(n) limit 1; +``` + +The result will look like this: + +``` +{ + "bucket_key_enabled": false, + "creationdate": "2022-05-10 00:22:52+00:00", + "ignore_public_acls": true, + "anonymous_access": false, + "firstseen": 1652400141863, + "block_public_policy": true, + "versioning_status": "Enabled", + "block_public_acls": true, + "anonymous_actions": [], + "name": "my-fake-bucket-123", + "lastupdated": 1688605272, + "encryption_algorithm": "AES256", + "default_encryption": true, + "id": "my-fake-bucket-123", + "arn": "arn:aws:s3:::my-fake-bucket-123", + "restrict_public_buckets": false +} +``` + +Our [full schema docs](schema.html) describe all possible fields, but listing out properties this way lets you avoid switching between browser tabs. + + +### Learning more +If you want to learn more in depth about Neo4j and Cypher queries you can look at [this tutorial](https://neo4j.com/developer/cypher-query-language/) and see this [reference card](https://neo4j.com/docs/cypher-refcard/current/). + +### Data Enrichment + +.. _data-augmentation: + +Cartography adds custom attributes to nodes and relationships to point out security-related items of interest. Unless mentioned otherwise these data augmentation jobs are stored in `cartography/data/jobs/analysis`. Here is a summary of all of Cartography's custom attributes. + +- `exposed_internet` indicates whether the asset is accessible to the public internet. + + - **Elastic Load Balancers**: The `exposed_internet` flag is set to `True` when the load balancer's `scheme` field is set to `internet-facing`, and the load balancer has an attached source security group with rules allowing `0.0.0.0/0` ingress on ports or port ranges matching listeners on the load balancer. This scheme indicates that the load balancer has a public DNS name that resolves to a public IP address. + + - **Application Load Balancers**: The `exposed_internet` flag is set to `True` when the load balancer's `scheme` field is set to `internet-facing`, and the load balancer has an attached security group with rules allowing `0.0.0.0/0` ingress on ports or port ranges matching listeners on the load balancer. This scheme indicates that the load balancer has a public DNS name that resolves to a public IP address. + + - **EC2 instances**: The `exposed_internet` flag on an EC2 instance is set to `True` when any of following apply: + + - The instance is part of an EC2 security group or is connected to a network interface connected to an EC2 security group that allows connectivity from the 0.0.0.0/0 subnet. + + - The instance is connected to an Elastic Load Balancer that has its own `exposed_internet` flag set to `True`. + + - The instance is connected to a TargetGroup which is attached to a Listener on an Application Load Balancer (elbv2) that has its own `exposed_internet` flag set to `True`. + + - **ElasticSearch domain**: `exposed_internet` is set to `True` if the ElasticSearch domain has a policy applied to it that makes it internet-accessible. This policy determination is made by using the [policyuniverse](https://github.com/Netflix-Skunkworks/policyuniverse) library. The code for this augmentation is implemented at `cartography.intel.aws.elasticsearch._process_access_policy()`. + +- `anonymous_access` indicates whether the asset allows access without needing to specify an identity. + + - **S3 buckets**: `anonymous_access` is set to `True` on an S3 bucket if this bucket has an S3Acl with a policy applied to it that allows the [predefined AWS "Authenticated Users" or "All Users" groups](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#specifying-grantee-predefined-groups) to access it. These determinations are made by using the [policyuniverse](https://github.com/Netflix-Skunkworks/policyuniverse) library. + +### Extending Cartography with Analysis Jobs +You can add your own custom attributes and relationships without writing Python code! Here's [how](../dev/writing-analysis-jobs.html). + +### Mapping AWS Access Permissions +Cartography can map permissions between IAM Principals and resources in the graph. Here's [how](../modules/aws/permissions-mapping.html). + + +### Permalinking Bookmarklet + +You can set up a bookmarklet that lets you quickly get a permalink to a Cartography query. To do so, add a bookmark with the following contents as the URL - make sure to replace `neo4j.contoso.com:7474` with your instance of Neo4j: + +```javascript +javascript:(() => { const query = document.querySelectorAll('article label span')[0].innerText; if (query === ':server connect') { console.log('no query has been run!'); return; } const searchParams = new URLSearchParams(); searchParams.append('connectURL', 'bolt://neo4j:neo4j@neo4j.contoso.net:7687'); searchParams.append('cmd', 'edit'); searchParams.append('arg', query.replaceAll(/\r /g, '\r')); newURL = `http://neo4j.contoso.net:7474/browser/?${searchParams}`; window.open(newURL, '_blank', 'noopener'); })() +``` + +Then, any time you are in the web interface, you can click the bookmarklet to open a new tab with a permalink to your most recently executed query in the URL bar. diff --git a/_static/basic.css b/_static/basic.css new file mode 100644 index 0000000000..603f6a8798 --- /dev/null +++ b/_static/basic.css @@ -0,0 +1,905 @@ +/* + * basic.css + * ~~~~~~~~~ + * + * Sphinx stylesheet -- basic theme. + * + * :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/* -- main layout ----------------------------------------------------------- */ + +div.clearer { + clear: both; +} + +div.section::after { + display: block; + content: ''; + clear: left; +} + +/* -- relbar ---------------------------------------------------------------- */ + +div.related { + width: 100%; + font-size: 90%; +} + +div.related h3 { + display: none; +} + +div.related ul { + margin: 0; + padding: 0 0 0 10px; + list-style: none; +} + +div.related li { + display: inline; +} + +div.related li.right { + float: right; + margin-right: 5px; +} + +/* -- sidebar --------------------------------------------------------------- */ + +div.sphinxsidebarwrapper { + padding: 10px 5px 0 10px; +} + +div.sphinxsidebar { + float: left; + width: 230px; + margin-left: -100%; + font-size: 90%; + word-wrap: break-word; + overflow-wrap : break-word; +} + +div.sphinxsidebar ul { + list-style: none; +} + +div.sphinxsidebar ul ul, +div.sphinxsidebar ul.want-points { + margin-left: 20px; + list-style: square; +} + +div.sphinxsidebar ul ul { + margin-top: 0; + margin-bottom: 0; +} + +div.sphinxsidebar form { + margin-top: 10px; +} + +div.sphinxsidebar input { + border: 1px solid #98dbcc; + font-family: sans-serif; + font-size: 1em; +} + +div.sphinxsidebar #searchbox form.search { + overflow: hidden; +} + +div.sphinxsidebar #searchbox input[type="text"] { + float: left; + width: 80%; + padding: 0.25em; + box-sizing: border-box; +} + +div.sphinxsidebar #searchbox input[type="submit"] { + float: left; + width: 20%; + border-left: none; + padding: 0.25em; + box-sizing: border-box; +} + + +img { + border: 0; + max-width: 100%; +} + +/* -- search page ----------------------------------------------------------- */ + +ul.search { + margin: 10px 0 0 20px; + padding: 0; +} + +ul.search li { + padding: 5px 0 5px 20px; + background-image: url(file.png); + background-repeat: no-repeat; + background-position: 0 7px; +} + +ul.search li a { + font-weight: bold; +} + +ul.search li p.context { + color: #888; + margin: 2px 0 0 30px; + text-align: left; +} + +ul.keywordmatches li.goodmatch a { + font-weight: bold; +} + +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + width: 90%; + margin-left: auto; + margin-right: auto; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 1.3em; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; + font-size: 90%; +} + +/* -- general index --------------------------------------------------------- */ + +table.indextable { + width: 100%; +} + +table.indextable td { + text-align: left; + vertical-align: top; +} + +table.indextable ul { + margin-top: 0; + margin-bottom: 0; + list-style-type: none; +} + +table.indextable > tbody > tr > td > ul { + padding-left: 0em; +} + +table.indextable tr.pcap { + height: 10px; +} + +table.indextable tr.cap { + margin-top: 10px; + background-color: #f2f2f2; +} + +img.toggler { + margin-right: 3px; + margin-top: 3px; + cursor: pointer; +} + +div.modindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +div.genindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +/* -- domain module index --------------------------------------------------- */ + +table.modindextable td { + padding: 2px; + border-collapse: collapse; +} + +/* -- general body styles --------------------------------------------------- */ + +div.body { + min-width: 450px; + max-width: 800px; +} + +div.body p, div.body dd, div.body li, div.body blockquote { + -moz-hyphens: auto; + -ms-hyphens: auto; + -webkit-hyphens: auto; + hyphens: auto; +} + +a.headerlink { + visibility: hidden; +} + +a.brackets:before, +span.brackets > a:before{ + content: "["; +} + +a.brackets:after, +span.brackets > a:after { + content: "]"; +} + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink, +caption:hover > a.headerlink, +p.caption:hover > a.headerlink, +div.code-block-caption:hover > a.headerlink { + visibility: visible; +} + +div.body p.caption { + text-align: inherit; +} + +div.body td { + text-align: left; +} + +.first { + margin-top: 0 !important; +} + +p.rubric { + margin-top: 30px; + font-weight: bold; +} + +img.align-left, figure.align-left, .figure.align-left, object.align-left { + clear: left; + float: left; + margin-right: 1em; +} + +img.align-right, figure.align-right, .figure.align-right, object.align-right { + clear: right; + float: right; + margin-left: 1em; +} + +img.align-center, figure.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +img.align-default, figure.align-default, .figure.align-default { + display: block; + margin-left: auto; + margin-right: auto; +} + +.align-left { + text-align: left; +} + +.align-center { + text-align: center; +} + +.align-default { + text-align: center; +} + +.align-right { + text-align: right; +} + +/* -- sidebars -------------------------------------------------------------- */ + +div.sidebar, +aside.sidebar { + margin: 0 0 0.5em 1em; + border: 1px solid #ddb; + padding: 7px; + background-color: #ffe; + width: 40%; + float: right; + clear: right; + overflow-x: auto; +} + +p.sidebar-title { + font-weight: bold; +} + +div.admonition, div.topic, blockquote { + clear: left; +} + +/* -- topics ---------------------------------------------------------------- */ + +div.topic { + border: 1px solid #ccc; + padding: 7px; + margin: 10px 0 10px 0; +} + +p.topic-title { + font-size: 1.1em; + font-weight: bold; + margin-top: 10px; +} + +/* -- admonitions ----------------------------------------------------------- */ + +div.admonition { + margin-top: 10px; + margin-bottom: 10px; + padding: 7px; +} + +div.admonition dt { + font-weight: bold; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; +} + +div.body p.centered { + text-align: center; + margin-top: 25px; +} + +/* -- content of sidebars/topics/admonitions -------------------------------- */ + +div.sidebar > :last-child, +aside.sidebar > :last-child, +div.topic > :last-child, +div.admonition > :last-child { + margin-bottom: 0; +} + +div.sidebar::after, +aside.sidebar::after, +div.topic::after, +div.admonition::after, +blockquote::after { + display: block; + content: ''; + clear: both; +} + +/* -- tables ---------------------------------------------------------------- */ + +table.docutils { + margin-top: 10px; + margin-bottom: 10px; + border: 0; + border-collapse: collapse; +} + +table.align-center { + margin-left: auto; + margin-right: auto; +} + +table.align-default { + margin-left: auto; + margin-right: auto; +} + +table caption span.caption-number { + font-style: italic; +} + +table caption span.caption-text { +} + +table.docutils td, table.docutils th { + padding: 1px 8px 1px 5px; + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #aaa; +} + +table.footnote td, table.footnote th { + border: 0 !important; +} + +th { + text-align: left; + padding-right: 5px; +} + +table.citation { + border-left: solid 1px gray; + margin-left: 1px; +} + +table.citation td { + border-bottom: none; +} + +th > :first-child, +td > :first-child { + margin-top: 0px; +} + +th > :last-child, +td > :last-child { + margin-bottom: 0px; +} + +/* -- figures --------------------------------------------------------------- */ + +div.figure, figure { + margin: 0.5em; + padding: 0.5em; +} + +div.figure p.caption, figcaption { + padding: 0.3em; +} + +div.figure p.caption span.caption-number, +figcaption span.caption-number { + font-style: italic; +} + +div.figure p.caption span.caption-text, +figcaption span.caption-text { +} + +/* -- field list styles ----------------------------------------------------- */ + +table.field-list td, table.field-list th { + border: 0 !important; +} + +.field-list ul { + margin: 0; + padding-left: 1em; +} + +.field-list p { + margin: 0; +} + +.field-name { + -moz-hyphens: manual; + -ms-hyphens: manual; + -webkit-hyphens: manual; + hyphens: manual; +} + +/* -- hlist styles ---------------------------------------------------------- */ + +table.hlist { + margin: 1em 0; +} + +table.hlist td { + vertical-align: top; +} + +/* -- object description styles --------------------------------------------- */ + +.sig { + font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; +} + +.sig-name, code.descname { + background-color: transparent; + font-weight: bold; +} + +.sig-name { + font-size: 1.1em; +} + +code.descname { + font-size: 1.2em; +} + +.sig-prename, code.descclassname { + background-color: transparent; +} + +.optional { + font-size: 1.3em; +} + +.sig-paren { + font-size: larger; +} + +.sig-param.n { + font-style: italic; +} + +/* C++ specific styling */ + +.sig-inline.c-texpr, +.sig-inline.cpp-texpr { + font-family: unset; +} + +.sig.c .k, .sig.c .kt, +.sig.cpp .k, .sig.cpp .kt { + color: #0033B3; +} + +.sig.c .m, +.sig.cpp .m { + color: #1750EB; +} + +.sig.c .s, .sig.c .sc, +.sig.cpp .s, .sig.cpp .sc { + color: #067D17; +} + + +/* -- other body styles ----------------------------------------------------- */ + +ol.arabic { + list-style: decimal; +} + +ol.loweralpha { + list-style: lower-alpha; +} + +ol.upperalpha { + list-style: upper-alpha; +} + +ol.lowerroman { + list-style: lower-roman; +} + +ol.upperroman { + list-style: upper-roman; +} + +:not(li) > ol > li:first-child > :first-child, +:not(li) > ul > li:first-child > :first-child { + margin-top: 0px; +} + +:not(li) > ol > li:last-child > :last-child, +:not(li) > ul > li:last-child > :last-child { + margin-bottom: 0px; +} + +ol.simple ol p, +ol.simple ul p, +ul.simple ol p, +ul.simple ul p { + margin-top: 0; +} + +ol.simple > li:not(:first-child) > p, +ul.simple > li:not(:first-child) > p { + margin-top: 0; +} + +ol.simple p, +ul.simple p { + margin-bottom: 0; +} + +dl.footnote > dt, +dl.citation > dt { + float: left; + margin-right: 0.5em; +} + +dl.footnote > dd, +dl.citation > dd { + margin-bottom: 0em; +} + +dl.footnote > dd:after, +dl.citation > dd:after { + content: ""; + clear: both; +} + +dl.field-list { + display: grid; + grid-template-columns: fit-content(30%) auto; +} + +dl.field-list > dt { + font-weight: bold; + word-break: break-word; + padding-left: 0.5em; + padding-right: 5px; +} + +dl.field-list > dt:after { + content: ":"; +} + +dl.field-list > dd { + padding-left: 0.5em; + margin-top: 0em; + margin-left: 0em; + margin-bottom: 0em; +} + +dl { + margin-bottom: 15px; +} + +dd > :first-child { + margin-top: 0px; +} + +dd ul, dd table { + margin-bottom: 10px; +} + +dd { + margin-top: 3px; + margin-bottom: 10px; + margin-left: 30px; +} + +dl > dd:last-child, +dl > dd:last-child > :last-child { + margin-bottom: 0; +} + +dt:target, span.highlighted { + background-color: #fbe54e; +} + +rect.highlighted { + fill: #fbe54e; +} + +dl.glossary dt { + font-weight: bold; + font-size: 1.1em; +} + +.versionmodified { + font-style: italic; +} + +.system-message { + background-color: #fda; + padding: 5px; + border: 3px solid red; +} + +.footnote:target { + background-color: #ffa; +} + +.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; +} + +.line-block .line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; +} + +.guilabel, .menuselection { + font-family: sans-serif; +} + +.accelerator { + text-decoration: underline; +} + +.classifier { + font-style: oblique; +} + +.classifier:before { + font-style: normal; + margin: 0 0.5em; + content: ":"; + display: inline-block; +} + +abbr, acronym { + border-bottom: dotted 1px; + cursor: help; +} + +/* -- code displays --------------------------------------------------------- */ + +pre { + overflow: auto; + overflow-y: hidden; /* fixes display issues on Chrome browsers */ +} + +pre, div[class*="highlight-"] { + clear: both; +} + +span.pre { + -moz-hyphens: none; + -ms-hyphens: none; + -webkit-hyphens: none; + hyphens: none; +} + +div[class*="highlight-"] { + margin: 1em 0; +} + +td.linenos pre { + border: 0; + background-color: transparent; + color: #aaa; +} + +table.highlighttable { + display: block; +} + +table.highlighttable tbody { + display: block; +} + +table.highlighttable tr { + display: flex; +} + +table.highlighttable td { + margin: 0; + padding: 0; +} + +table.highlighttable td.linenos { + padding-right: 0.5em; +} + +table.highlighttable td.code { + flex: 1; + overflow: hidden; +} + +.highlight .hll { + display: block; +} + +div.highlight pre, +table.highlighttable pre { + margin: 0; +} + +div.code-block-caption + div { + margin-top: 0; +} + +div.code-block-caption { + margin-top: 1em; + padding: 2px 5px; + font-size: small; +} + +div.code-block-caption code { + background-color: transparent; +} + +table.highlighttable td.linenos, +span.linenos, +div.highlight span.gp { /* gp: Generic.Prompt */ + user-select: none; + -webkit-user-select: text; /* Safari fallback only */ + -webkit-user-select: none; /* Chrome/Safari */ + -moz-user-select: none; /* Firefox */ + -ms-user-select: none; /* IE10+ */ +} + +div.code-block-caption span.caption-number { + padding: 0.1em 0.3em; + font-style: italic; +} + +div.code-block-caption span.caption-text { +} + +div.literal-block-wrapper { + margin: 1em 0; +} + +code.xref, a code { + background-color: transparent; + font-weight: bold; +} + +h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { + background-color: transparent; +} + +.viewcode-link { + float: right; +} + +.viewcode-back { + float: right; + font-family: sans-serif; +} + +div.viewcode-block:target { + margin: -1px -10px; + padding: 0 10px; +} + +/* -- math display ---------------------------------------------------------- */ + +img.math { + vertical-align: middle; +} + +div.body div.math p { + text-align: center; +} + +span.eqno { + float: right; +} + +span.eqno a.headerlink { + position: absolute; + z-index: 1; +} + +div.math:hover a.headerlink { + visibility: visible; +} + +/* -- printout stylesheet --------------------------------------------------- */ + +@media print { + div.document, + div.documentwrapper, + div.bodywrapper { + margin: 0 !important; + width: 100%; + } + + div.sphinxsidebar, + div.related, + div.footer, + #top-link { + display: none; + } +} \ No newline at end of file diff --git a/_static/doctools.js b/_static/doctools.js new file mode 100644 index 0000000000..8cbf1b161a --- /dev/null +++ b/_static/doctools.js @@ -0,0 +1,323 @@ +/* + * doctools.js + * ~~~~~~~~~~~ + * + * Sphinx JavaScript utilities for all documentation. + * + * :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/** + * select a different prefix for underscore + */ +$u = _.noConflict(); + +/** + * make the code below compatible with browsers without + * an installed firebug like debugger +if (!window.console || !console.firebug) { + var names = ["log", "debug", "info", "warn", "error", "assert", "dir", + "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace", + "profile", "profileEnd"]; + window.console = {}; + for (var i = 0; i < names.length; ++i) + window.console[names[i]] = function() {}; +} + */ + +/** + * small helper function to urldecode strings + * + * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent#Decoding_query_parameters_from_a_URL + */ +jQuery.urldecode = function(x) { + if (!x) { + return x + } + return decodeURIComponent(x.replace(/\+/g, ' ')); +}; + +/** + * small helper function to urlencode strings + */ +jQuery.urlencode = encodeURIComponent; + +/** + * This function returns the parsed url parameters of the + * current request. Multiple values per key are supported, + * it will always return arrays of strings for the value parts. + */ +jQuery.getQueryParameters = function(s) { + if (typeof s === 'undefined') + s = document.location.search; + var parts = s.substr(s.indexOf('?') + 1).split('&'); + var result = {}; + for (var i = 0; i < parts.length; i++) { + var tmp = parts[i].split('=', 2); + var key = jQuery.urldecode(tmp[0]); + var value = jQuery.urldecode(tmp[1]); + if (key in result) + result[key].push(value); + else + result[key] = [value]; + } + return result; +}; + +/** + * highlight a given string on a jquery object by wrapping it in + * span elements with the given class name. + */ +jQuery.fn.highlightText = function(text, className) { + function highlight(node, addItems) { + if (node.nodeType === 3) { + var val = node.nodeValue; + var pos = val.toLowerCase().indexOf(text); + if (pos >= 0 && + !jQuery(node.parentNode).hasClass(className) && + !jQuery(node.parentNode).hasClass("nohighlight")) { + var span; + var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg"); + if (isInSVG) { + span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); + } else { + span = document.createElement("span"); + span.className = className; + } + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + node.parentNode.insertBefore(span, node.parentNode.insertBefore( + document.createTextNode(val.substr(pos + text.length)), + node.nextSibling)); + node.nodeValue = val.substr(0, pos); + if (isInSVG) { + var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect"); + var bbox = node.parentElement.getBBox(); + rect.x.baseVal.value = bbox.x; + rect.y.baseVal.value = bbox.y; + rect.width.baseVal.value = bbox.width; + rect.height.baseVal.value = bbox.height; + rect.setAttribute('class', className); + addItems.push({ + "parent": node.parentNode, + "target": rect}); + } + } + } + else if (!jQuery(node).is("button, select, textarea")) { + jQuery.each(node.childNodes, function() { + highlight(this, addItems); + }); + } + } + var addItems = []; + var result = this.each(function() { + highlight(this, addItems); + }); + for (var i = 0; i < addItems.length; ++i) { + jQuery(addItems[i].parent).before(addItems[i].target); + } + return result; +}; + +/* + * backward compatibility for jQuery.browser + * This will be supported until firefox bug is fixed. + */ +if (!jQuery.browser) { + jQuery.uaMatch = function(ua) { + ua = ua.toLowerCase(); + + var match = /(chrome)[ \/]([\w.]+)/.exec(ua) || + /(webkit)[ \/]([\w.]+)/.exec(ua) || + /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) || + /(msie) ([\w.]+)/.exec(ua) || + ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) || + []; + + return { + browser: match[ 1 ] || "", + version: match[ 2 ] || "0" + }; + }; + jQuery.browser = {}; + jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true; +} + +/** + * Small JavaScript module for the documentation. + */ +var Documentation = { + + init : function() { + this.fixFirefoxAnchorBug(); + this.highlightSearchWords(); + this.initIndexTable(); + if (DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) { + this.initOnKeyListeners(); + } + }, + + /** + * i18n support + */ + TRANSLATIONS : {}, + PLURAL_EXPR : function(n) { return n === 1 ? 0 : 1; }, + LOCALE : 'unknown', + + // gettext and ngettext don't access this so that the functions + // can safely bound to a different name (_ = Documentation.gettext) + gettext : function(string) { + var translated = Documentation.TRANSLATIONS[string]; + if (typeof translated === 'undefined') + return string; + return (typeof translated === 'string') ? translated : translated[0]; + }, + + ngettext : function(singular, plural, n) { + var translated = Documentation.TRANSLATIONS[singular]; + if (typeof translated === 'undefined') + return (n == 1) ? singular : plural; + return translated[Documentation.PLURALEXPR(n)]; + }, + + addTranslations : function(catalog) { + for (var key in catalog.messages) + this.TRANSLATIONS[key] = catalog.messages[key]; + this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')'); + this.LOCALE = catalog.locale; + }, + + /** + * add context elements like header anchor links + */ + addContextElements : function() { + $('div[id] > :header:first').each(function() { + $('\u00B6'). + attr('href', '#' + this.id). + attr('title', _('Permalink to this headline')). + appendTo(this); + }); + $('dt[id]').each(function() { + $('\u00B6'). + attr('href', '#' + this.id). + attr('title', _('Permalink to this definition')). + appendTo(this); + }); + }, + + /** + * workaround a firefox stupidity + * see: https://bugzilla.mozilla.org/show_bug.cgi?id=645075 + */ + fixFirefoxAnchorBug : function() { + if (document.location.hash && $.browser.mozilla) + window.setTimeout(function() { + document.location.href += ''; + }, 10); + }, + + /** + * highlight the search words provided in the url in the text + */ + highlightSearchWords : function() { + var params = $.getQueryParameters(); + var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : []; + if (terms.length) { + var body = $('div.body'); + if (!body.length) { + body = $('body'); + } + window.setTimeout(function() { + $.each(terms, function() { + body.highlightText(this.toLowerCase(), 'highlighted'); + }); + }, 10); + $('

') + .appendTo($('#searchbox')); + } + }, + + /** + * init the domain index toggle buttons + */ + initIndexTable : function() { + var togglers = $('img.toggler').click(function() { + var src = $(this).attr('src'); + var idnum = $(this).attr('id').substr(7); + $('tr.cg-' + idnum).toggle(); + if (src.substr(-9) === 'minus.png') + $(this).attr('src', src.substr(0, src.length-9) + 'plus.png'); + else + $(this).attr('src', src.substr(0, src.length-8) + 'minus.png'); + }).css('display', ''); + if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) { + togglers.click(); + } + }, + + /** + * helper function to hide the search marks again + */ + hideSearchWords : function() { + $('#searchbox .highlight-link').fadeOut(300); + $('span.highlighted').removeClass('highlighted'); + }, + + /** + * make the url absolute + */ + makeURL : function(relativeURL) { + return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL; + }, + + /** + * get the current relative url + */ + getCurrentURL : function() { + var path = document.location.pathname; + var parts = path.split(/\//); + $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() { + if (this === '..') + parts.pop(); + }); + var url = parts.join('/'); + return path.substring(url.lastIndexOf('/') + 1, path.length - 1); + }, + + initOnKeyListeners: function() { + $(document).keydown(function(event) { + var activeElementType = document.activeElement.tagName; + // don't navigate when in search box, textarea, dropdown or button + if (activeElementType !== 'TEXTAREA' && activeElementType !== 'INPUT' && activeElementType !== 'SELECT' + && activeElementType !== 'BUTTON' && !event.altKey && !event.ctrlKey && !event.metaKey + && !event.shiftKey) { + switch (event.keyCode) { + case 37: // left + var prevHref = $('link[rel="prev"]').prop('href'); + if (prevHref) { + window.location.href = prevHref; + return false; + } + break; + case 39: // right + var nextHref = $('link[rel="next"]').prop('href'); + if (nextHref) { + window.location.href = nextHref; + return false; + } + break; + } + } + }); + } +}; + +// quick alias for translations +_ = Documentation.gettext; + +$(document).ready(function() { + Documentation.init(); +}); diff --git a/_static/documentation_options.js b/_static/documentation_options.js new file mode 100644 index 0000000000..4daa6b50bd --- /dev/null +++ b/_static/documentation_options.js @@ -0,0 +1,12 @@ +var DOCUMENTATION_OPTIONS = { + URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), + VERSION: '', + LANGUAGE: 'en', + COLLAPSE_INDEX: false, + BUILDER: 'html', + FILE_SUFFIX: '.html', + LINK_SUFFIX: '.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt', + NAVIGATION_WITH_KEYS: false +}; \ No newline at end of file diff --git a/_static/file.png b/_static/file.png new file mode 100644 index 0000000000000000000000000000000000000000..a858a410e4faa62ce324d814e4b816fff83a6fb3 GIT binary patch literal 286 zcmV+(0pb3MP)s`hMrGg#P~ix$^RISR_I47Y|r1 z_CyJOe}D1){SET-^Amu_i71Lt6eYfZjRyw@I6OQAIXXHDfiX^GbOlHe=Ae4>0m)d(f|Me07*qoM6N<$f}vM^LjV8( literal 0 HcmV?d00001 diff --git a/_static/fonts/font-awesome.css b/_static/fonts/font-awesome.css new file mode 100644 index 0000000000..b476b53e33 --- /dev/null +++ b/_static/fonts/font-awesome.css @@ -0,0 +1,4 @@ +/*! + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:FontAwesome;font-style:normal;font-weight:400;src:url("specimen/FontAwesome.woff2") format("woff2"),url("specimen/FontAwesome.woff") format("woff"),url("specimen/FontAwesome.ttf") format("truetype")}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1,1);-ms-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1,-1);-ms-transform:scale(1,-1);transform:scale(1,-1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-signing:before,.fa-sign-language:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-pied-piper:before{content:"\f2ae"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.fa-handshake-o:before{content:"\f2b5"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-o:before{content:"\f2b7"}.fa-linode:before{content:"\f2b8"}.fa-address-book:before{content:"\f2b9"}.fa-address-book-o:before{content:"\f2ba"}.fa-vcard:before,.fa-address-card:before{content:"\f2bb"}.fa-vcard-o:before,.fa-address-card-o:before{content:"\f2bc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-circle-o:before{content:"\f2be"}.fa-user-o:before{content:"\f2c0"}.fa-id-badge:before{content:"\f2c1"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:"\f2c3"}.fa-quora:before{content:"\f2c4"}.fa-free-code-camp:before{content:"\f2c5"}.fa-telegram:before{content:"\f2c6"}.fa-thermometer-4:before,.fa-thermometer:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-shower:before{content:"\f2cc"}.fa-bathtub:before,.fa-s15:before,.fa-bath:before{content:"\f2cd"}.fa-podcast:before{content:"\f2ce"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-times-rectangle:before,.fa-window-close:before{content:"\f2d3"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:"\f2d4"}.fa-bandcamp:before{content:"\f2d5"}.fa-grav:before{content:"\f2d6"}.fa-etsy:before{content:"\f2d7"}.fa-imdb:before{content:"\f2d8"}.fa-ravelry:before{content:"\f2d9"}.fa-eercast:before{content:"\f2da"}.fa-microchip:before{content:"\f2db"}.fa-snowflake-o:before{content:"\f2dc"}.fa-superpowers:before{content:"\f2dd"}.fa-wpexplorer:before{content:"\f2de"}.fa-meetup:before{content:"\f2e0"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto} \ No newline at end of file diff --git a/_static/fonts/material-icons.css b/_static/fonts/material-icons.css new file mode 100644 index 0000000000..63130b0120 --- /dev/null +++ b/_static/fonts/material-icons.css @@ -0,0 +1,13 @@ +/*! + * 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. + */@font-face{font-display:swap;font-family:"Material Icons";font-style:normal;font-weight:400;src:local("Material Icons"),local("MaterialIcons-Regular"),url("specimen/MaterialIcons-Regular.woff2") format("woff2"),url("specimen/MaterialIcons-Regular.woff") format("woff"),url("specimen/MaterialIcons-Regular.ttf") format("truetype")} \ No newline at end of file diff --git a/_static/fonts/specimen/FontAwesome.ttf b/_static/fonts/specimen/FontAwesome.ttf new file mode 100644 index 0000000000000000000000000000000000000000..35acda2fa1196aad98c2adf4378a7611dd713aa3 GIT binary patch literal 165548 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 z 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 d0mRO}xo^G_%I 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 SdSQM28?+M|D(2r_;{O0|uQ74} literal 0 HcmV?d00001 diff --git a/_static/fonts/specimen/FontAwesome.woff2 b/_static/fonts/specimen/FontAwesome.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..4d13fc60404b91e398a37200c4a77b645cfd9586 GIT binary patch literal 77160 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 literal 0 HcmV?d00001 diff --git a/_static/fonts/specimen/MaterialIcons-Regular.ttf b/_static/fonts/specimen/MaterialIcons-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..7015564ad166a3e9d88c82f17829f0cc01ebe29a GIT binary patch literal 128180 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 ohyj3!`#ee%L;DTjx@8!5k5~VH0QmdE^#A|> literal 0 HcmV?d00001 diff --git a/_static/fonts/specimen/MaterialIcons-Regular.woff b/_static/fonts/specimen/MaterialIcons-Regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..b648a3eea2d16b6ce783906d6b7d5f251b9eb56c GIT binary patch literal 57620 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

wF7DI|Kx|V1sBQ9FYs>m5C)C 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 BJ$(QG literal 0 HcmV?d00001 diff --git a/_static/fonts/specimen/MaterialIcons-Regular.woff2 b/_static/fonts/specimen/MaterialIcons-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..9fa211252080046a23b2449dbdced6abc2b0bb34 GIT binary patch literal 44300 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 QW8}wPUeo^@jR61v08@RD2LJ#7 literal 0 HcmV?d00001 diff --git a/_static/images/favicon.png b/_static/images/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..76d17f57ad903c3ea2f1b564cafb95bf9af84ee3 GIT binary patch literal 521 zcmV+k0`~ohP)kdg0005dNkl2WptjAn6@db&Pvy?U$ zv>P|<&rCZfZF0jmq0opf8)91(A<*iIVPPJJT((+JiF~>9KAA3%heFdnI;SaK+~|aU zQ~!x`%y{jX1<~SK2RxN7Db8`yWBbf6p7&07{VXfaam*cUs&eu*Zu(xaIL8rP){;a< zS~$}^Td32Rw+W1TqTd|L{#~jJet4!qwKsb5hq%YXiiUV!yH=ltu0>s|FLsT+Iy7K~ z!6*Z0a@vQ;AiZo!=s{{fqR+ct6YQPzbk+j}*qe7vtu39I7 zrOtZqU}=NnLchJxsU9iY+}3TYDl|BvPsX%E@dlyLgdV%q$UP|Y?DfcGb`}K&$;drd z+hL;zy7UTccUYU+h`ONIU|d=%`(0$=KW4%tVWXj~AE \ No newline at end of file diff --git a/_static/images/icons/bitbucket.svg b/_static/images/icons/bitbucket.svg new file mode 100644 index 0000000000..cf58c14fbc --- /dev/null +++ b/_static/images/icons/bitbucket.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/_static/images/icons/github.f0b8504a.svg b/_static/images/icons/github.f0b8504a.svg new file mode 100644 index 0000000000..3d13b19751 --- /dev/null +++ b/_static/images/icons/github.f0b8504a.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/_static/images/icons/github.svg b/_static/images/icons/github.svg new file mode 100644 index 0000000000..3d13b19751 --- /dev/null +++ b/_static/images/icons/github.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/_static/images/icons/gitlab.6dd19c00.svg b/_static/images/icons/gitlab.6dd19c00.svg new file mode 100644 index 0000000000..1d9fffa74f --- /dev/null +++ b/_static/images/icons/gitlab.6dd19c00.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/_static/images/icons/gitlab.svg b/_static/images/icons/gitlab.svg new file mode 100644 index 0000000000..1d9fffa74f --- /dev/null +++ b/_static/images/icons/gitlab.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/_static/javascripts/application.js b/_static/javascripts/application.js new file mode 100644 index 0000000000..7c724d2e4f --- /dev/null +++ b/_static/javascripts/application.js @@ -0,0 +1,2540 @@ +! function(e, t) { + for (var n in t) e[n] = t[n] +}(window, function(n) { + var r = {}; + + function i(e) { + if (r[e]) return r[e].exports; + var t = r[e] = { + i: e, + l: !1, + exports: {} + }; + return n[e].call(t.exports, t, t.exports, i), t.l = !0, t.exports + } + return i.m = n, i.c = r, i.d = function(e, t, n) { + i.o(e, t) || Object.defineProperty(e, t, { + enumerable: !0, + get: n + }) + }, i.r = function(e) { + "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, { + value: "Module" + }), Object.defineProperty(e, "__esModule", { + value: !0 + }) + }, i.t = function(t, e) { + if (1 & e && (t = i(t)), 8 & e) return t; + if (4 & e && "object" == typeof t && t && t.__esModule) return t; + var n = Object.create(null); + if (i.r(n), Object.defineProperty(n, "default", { + enumerable: !0, + value: t + }), 2 & e && "string" != typeof t) + for (var r in t) i.d(n, r, function(e) { + return t[e] + }.bind(null, r)); + return n + }, i.n = function(e) { + var t = e && e.__esModule ? function() { + return e.default + } : function() { + return e + }; + return i.d(t, "a", t), t + }, i.o = function(e, t) { + return Object.prototype.hasOwnProperty.call(e, t) + }, i.p = "", i(i.s = 13) +}([function(e, t, n) { + "use strict"; + var r = { + Listener: function() { + function e(e, t, n) { + var r = this; + this.els_ = Array.prototype.slice.call("string" == typeof e ? document.querySelectorAll(e) : [].concat(e)), this.handler_ = "function" == typeof n ? { + update: n + } : n, this.events_ = [].concat(t), this.update_ = function(e) { + return r.handler_.update(e) + } + } + var t = e.prototype; + return t.listen = function() { + var n = this; + this.els_.forEach(function(t) { + n.events_.forEach(function(e) { + t.addEventListener(e, n.update_, !1) + }) + }), "function" == typeof this.handler_.setup && this.handler_.setup() + }, t.unlisten = function() { + var n = this; + this.els_.forEach(function(t) { + n.events_.forEach(function(e) { + t.removeEventListener(e, n.update_) + }) + }), "function" == typeof this.handler_.reset && this.handler_.reset() + }, e + }(), + MatchMedia: function(e, t) { + this.handler_ = function(e) { + e.matches ? t.listen() : t.unlisten() + }; + var n = window.matchMedia(e); + n.addListener(this.handler_), this.handler_(n) + } + }, + i = { + Shadow: function() { + function e(e, t) { + var n = "string" == typeof e ? document.querySelector(e) : e; + if (!(n instanceof HTMLElement && n.parentNode instanceof HTMLElement)) throw new ReferenceError; + if (this.el_ = n.parentNode, !((n = "string" == typeof t ? document.querySelector(t) : t) instanceof HTMLElement)) throw new ReferenceError; + this.header_ = n, this.height_ = 0, this.active_ = !1 + } + var t = e.prototype; + return t.setup = function() { + for (var e = this.el_; e = e.previousElementSibling;) { + if (!(e instanceof HTMLElement)) throw new ReferenceError; + this.height_ += e.offsetHeight + } + this.update() + }, t.update = function(e) { + if (!e || "resize" !== e.type && "orientationchange" !== e.type) { + var t = window.pageYOffset >= this.height_; + t !== this.active_ && (this.header_.dataset.mdState = (this.active_ = t) ? "shadow" : "") + } else this.height_ = 0, this.setup() + }, t.reset = function() { + this.header_.dataset.mdState = "", this.height_ = 0, this.active_ = !1 + }, e + }(), + Title: function() { + function e(e, t) { + var n = "string" == typeof e ? document.querySelector(e) : e; + if (!(n instanceof HTMLElement)) throw new ReferenceError; + if (this.el_ = n, !((n = "string" == typeof t ? document.querySelector(t) : t) instanceof HTMLHeadingElement)) throw new ReferenceError; + this.header_ = n, this.active_ = !1 + } + var t = e.prototype; + return t.setup = function() { + var t = this; + Array.prototype.forEach.call(this.el_.children, function(e) { + e.style.width = t.el_.offsetWidth - 20 + "px" + }) + }, t.update = function(e) { + var t = this, + n = window.pageYOffset >= this.header_.offsetTop; + n !== this.active_ && (this.el_.dataset.mdState = (this.active_ = n) ? "active" : ""), "resize" !== e.type && "orientationchange" !== e.type || Array.prototype.forEach.call(this.el_.children, function(e) { + e.style.width = t.el_.offsetWidth - 20 + "px" + }) + }, t.reset = function() { + this.el_.dataset.mdState = "", this.el_.style.width = "", this.active_ = !1 + }, e + }() + }, + o = { + Blur: function() { + function e(e) { + this.els_ = "string" == typeof e ? document.querySelectorAll(e) : e, this.index_ = 0, this.offset_ = window.pageYOffset, this.dir_ = !1, this.anchors_ = [].reduce.call(this.els_, function(e, t) { + var n = decodeURIComponent(t.hash); + return e.concat(document.getElementById(n.substring(1)) || []) + }, []) + } + var t = e.prototype; + return t.setup = function() { + this.update() + }, t.update = function() { + var e = window.pageYOffset, + t = this.offset_ - e < 0; + if (this.dir_ !== t && (this.index_ = this.index_ = t ? 0 : this.els_.length - 1), 0 !== this.anchors_.length) { + if (this.offset_ <= e) + for (var n = this.index_ + 1; n < this.els_.length && this.anchors_[n].offsetTop - 80 <= e; n++) 0 < n && (this.els_[n - 1].dataset.mdState = "blur"), this.index_ = n; + else + for (var r = this.index_; 0 <= r; r--) { + if (!(this.anchors_[r].offsetTop - 80 > e)) { + this.index_ = r; + break + } + 0 < r && (this.els_[r - 1].dataset.mdState = "") + } + this.offset_ = e, this.dir_ = t + } + }, t.reset = function() { + Array.prototype.forEach.call(this.els_, function(e) { + e.dataset.mdState = "" + }), this.index_ = 0, this.offset_ = window.pageYOffset + }, e + }(), + Collapse: function() { + function e(e) { + var t = "string" == typeof e ? document.querySelector(e) : e; + if (!(t instanceof HTMLElement)) throw new ReferenceError; + this.el_ = t + } + var t = e.prototype; + return t.setup = function() { + var e = this.el_.getBoundingClientRect().height; + this.el_.style.display = e ? "block" : "none", this.el_.style.overflow = e ? "visible" : "hidden" + }, t.update = function() { + var e = this, + t = this.el_.getBoundingClientRect().height; + this.el_.style.display = "block", this.el_.style.overflow = ""; + var r = this.el_.previousElementSibling.previousElementSibling.checked; + if (r) this.el_.style.maxHeight = t + "px", requestAnimationFrame(function() { + e.el_.setAttribute("data-md-state", "animate"), e.el_.style.maxHeight = "0px" + }); + else { + this.el_.setAttribute("data-md-state", "expand"), this.el_.style.maxHeight = ""; + var n = this.el_.getBoundingClientRect().height; + this.el_.removeAttribute("data-md-state"), this.el_.style.maxHeight = "0px", requestAnimationFrame(function() { + e.el_.setAttribute("data-md-state", "animate"), e.el_.style.maxHeight = n + "px" + }) + } + this.el_.addEventListener("transitionend", function e(t) { + var n = t.target; + if (!(n instanceof HTMLElement)) throw new ReferenceError; + n.removeAttribute("data-md-state"), n.style.maxHeight = "", n.style.display = r ? "none" : "block", n.style.overflow = r ? "hidden" : "visible", n.removeEventListener("transitionend", e) + }, !1) + }, t.reset = function() { + this.el_.dataset.mdState = "", this.el_.style.maxHeight = "", this.el_.style.display = "", this.el_.style.overflow = "" + }, e + }(), + Scrolling: function() { + function e(e) { + var t = "string" == typeof e ? document.querySelector(e) : e; + if (!(t instanceof HTMLElement)) throw new ReferenceError; + this.el_ = t + } + var t = e.prototype; + return t.setup = function() { + this.el_.children[this.el_.children.length - 1].style.webkitOverflowScrolling = "touch"; + var e = this.el_.querySelectorAll("[data-md-toggle]"); + Array.prototype.forEach.call(e, function(e) { + if (!(e instanceof HTMLInputElement)) throw new ReferenceError; + if (e.checked) { + var t = e.nextElementSibling; + if (!(t instanceof HTMLElement)) throw new ReferenceError; + for (; + "NAV" !== t.tagName && t.nextElementSibling;) t = t.nextElementSibling; + if (!(e.parentNode instanceof HTMLElement && e.parentNode.parentNode instanceof HTMLElement)) throw new ReferenceError; + var n = e.parentNode.parentNode, + r = t.children[t.children.length - 1]; + n.style.webkitOverflowScrolling = "", r.style.webkitOverflowScrolling = "touch" + } + }) + }, t.update = function(e) { + var t = e.target; + if (!(t instanceof HTMLElement)) throw new ReferenceError; + var n = t.nextElementSibling; + if (!(n instanceof HTMLElement)) throw new ReferenceError; + for (; + "NAV" !== n.tagName && n.nextElementSibling;) n = n.nextElementSibling; + if (!(t.parentNode instanceof HTMLElement && t.parentNode.parentNode instanceof HTMLElement)) throw new ReferenceError; + var r = t.parentNode.parentNode, + i = n.children[n.children.length - 1]; + if (r.style.webkitOverflowScrolling = "", i.style.webkitOverflowScrolling = "", !t.checked) { + n.addEventListener("transitionend", function e() { + n instanceof HTMLElement && (r.style.webkitOverflowScrolling = "touch", n.removeEventListener("transitionend", e)) + }, !1) + } + if (t.checked) { + n.addEventListener("transitionend", function e() { + n instanceof HTMLElement && (i.style.webkitOverflowScrolling = "touch", n.removeEventListener("transitionend", e)) + }, !1) + } + }, t.reset = function() { + this.el_.children[1].style.webkitOverflowScrolling = ""; + var e = this.el_.querySelectorAll("[data-md-toggle]"); + Array.prototype.forEach.call(e, function(e) { + if (!(e instanceof HTMLInputElement)) throw new ReferenceError; + if (e.checked) { + var t = e.nextElementSibling; + if (!(t instanceof HTMLElement)) throw new ReferenceError; + for (; + "NAV" !== t.tagName && t.nextElementSibling;) t = t.nextElementSibling; + if (!(e.parentNode instanceof HTMLElement && e.parentNode.parentNode instanceof HTMLElement)) throw new ReferenceError; + var n = e.parentNode.parentNode, + r = t.children[t.children.length - 1]; + n.style.webkitOverflowScrolling = "", r.style.webkitOverflowScrolling = "" + } + }) + }, e + }() + }, + a = { + Lock: function() { + function e(e) { + var t = "string" == typeof e ? document.querySelector(e) : e; + if (!(t instanceof HTMLInputElement)) throw new ReferenceError; + if (this.el_ = t, !document.body) throw new ReferenceError; + this.lock_ = document.body + } + var t = e.prototype; + return t.setup = function() { + this.update() + }, t.update = function() { + var e = this; + this.el_.checked ? (this.offset_ = window.pageYOffset, setTimeout(function() { + window.scrollTo(0, 0), e.el_.checked && (e.lock_.dataset.mdState = "lock") + }, 400)) : (this.lock_.dataset.mdState = "", setTimeout(function() { + void 0 !== e.offset_ && window.scrollTo(0, e.offset_) + }, 100)) + }, t.reset = function() { + "lock" === this.lock_.dataset.mdState && window.scrollTo(0, this.offset_), this.lock_.dataset.mdState = "" + }, e + }(), + Result: n(9).a + }, + s = { + Position: function() { + function e(e, t) { + var n = "string" == typeof e ? document.querySelector(e) : e; + if (!(n instanceof HTMLElement && n.parentNode instanceof HTMLElement)) throw new ReferenceError; + if (this.el_ = n, this.parent_ = n.parentNode, !((n = "string" == typeof t ? document.querySelector(t) : t) instanceof HTMLElement)) throw new ReferenceError; + this.header_ = n, this.height_ = 0, this.pad_ = "fixed" === window.getComputedStyle(this.header_).position + } + var t = e.prototype; + return t.setup = function() { + var e = Array.prototype.reduce.call(this.parent_.children, function(e, t) { + return Math.max(e, t.offsetTop) + }, 0); + this.offset_ = e - (this.pad_ ? this.header_.offsetHeight : 0), this.update() + }, t.update = function(e) { + var t = window.pageYOffset, + n = window.innerHeight; + e && "resize" === e.type && this.setup(); + var r = this.pad_ ? this.header_.offsetHeight : 0, + i = this.parent_.offsetTop + this.parent_.offsetHeight, + o = n - r - Math.max(0, this.offset_ - t) - Math.max(0, t + n - i); + o !== this.height_ && (this.el_.style.height = (this.height_ = o) + "px"), t >= this.offset_ ? "lock" !== this.el_.dataset.mdState && (this.el_.dataset.mdState = "lock") : "lock" === this.el_.dataset.mdState && (this.el_.dataset.mdState = "") + }, t.reset = function() { + this.el_.dataset.mdState = "", this.el_.style.height = "", this.height_ = 0 + }, e + }() + }, + c = n(6), + l = n.n(c); + var u = { + Adapter: { + GitHub: function(o) { + var e, t; + + function n(e) { + var t; + t = o.call(this, e) || this; + var n = /^.+github\.com\/([^/]+)\/?([^/]+)?.*$/.exec(t.base_); + if (n && 3 === n.length) { + var r = n[1], + i = n[2]; + t.base_ = "https://api.github.com/users/" + r + "/repos", t.name_ = i + } + return t + } + return t = o, (e = n).prototype = Object.create(t.prototype), (e.prototype.constructor = e).__proto__ = t, n.prototype.fetch_ = function() { + var i = this; + return function n(r) { + return void 0 === r && (r = 0), fetch(i.base_ + "?per_page=30&page=" + r).then(function(e) { + return e.json() + }).then(function(e) { + if (!(e instanceof Array)) throw new TypeError; + if (i.name_) { + var t = e.find(function(e) { + return e.name === i.name_ + }); + return t || 30 !== e.length ? t ? [i.format_(t.stargazers_count) + " Stars", i.format_(t.forks_count) + " Forks"] : [] : n(r + 1) + } + return [e.length + " Repositories"] + }) + }() + }, n + }(function() { + function e(e) { + var t = "string" == typeof e ? document.querySelector(e) : e; + if (!(t instanceof HTMLAnchorElement)) throw new ReferenceError; + this.el_ = t, this.base_ = this.el_.href, this.salt_ = this.hash_(this.base_) + } + var t = e.prototype; + return t.fetch = function() { + var n = this; + return new Promise(function(t) { + var e = l.a.getJSON(n.salt_ + ".cache-source"); + void 0 !== e ? t(e) : n.fetch_().then(function(e) { + l.a.set(n.salt_ + ".cache-source", e, { + expires: 1 / 96 + }), t(e) + }) + }) + }, t.fetch_ = function() { + throw new Error("fetch_(): Not implemented") + }, t.format_ = function(e) { + return 1e4 < e ? (e / 1e3).toFixed(0) + "k" : 1e3 < e ? (e / 1e3).toFixed(1) + "k" : "" + e + }, t.hash_ = function(e) { + var t = 0; + if (0 === e.length) return t; + for (var n = 0, r = e.length; n < r; n++) t = (t << 5) - t + e.charCodeAt(n), t |= 0; + return t + }, e + }()) + }, + Repository: n(10).a + }, + f = { + Toggle: function() { + function e(e) { + var t = "string" == typeof e ? document.querySelector(e) : e; + if (!(t instanceof Node)) throw new ReferenceError; + this.el_ = t; + var n = document.querySelector("[data-md-component=header]"); + this.height_ = n.offsetHeight, this.active_ = !1 + } + var t = e.prototype; + return t.update = function() { + var e = window.pageYOffset >= this.el_.children[0].offsetTop + (5 - this.height_); + e !== this.active_ && (this.el_.dataset.mdState = (this.active_ = e) ? "hidden" : "") + }, t.reset = function() { + this.el_.dataset.mdState = "", this.active_ = !1 + }, e + }() + }; + t.a = { + Event: r, + Header: i, + Nav: o, + Search: a, + Sidebar: s, + Source: u, + Tabs: f + } +}, function(t, e, n) { + (function(e) { + t.exports = e.lunr = n(24) + }).call(this, n(4)) +}, function(e, f, d) { + "use strict"; + (function(t) { + var e = d(8), + n = setTimeout; + + function r() {} + + function o(e) { + if (!(this instanceof o)) throw new TypeError("Promises must be constructed via new"); + if ("function" != typeof e) throw new TypeError("not a function"); + this._state = 0, this._handled = !1, this._value = void 0, this._deferreds = [], u(e, this) + } + + function i(n, r) { + for (; 3 === n._state;) n = n._value; + 0 !== n._state ? (n._handled = !0, o._immediateFn(function() { + var e = 1 === n._state ? r.onFulfilled : r.onRejected; + if (null !== e) { + var t; + try { + t = e(n._value) + } catch (e) { + return void s(r.promise, e) + } + a(r.promise, t) + } else(1 === n._state ? a : s)(r.promise, n._value) + })) : n._deferreds.push(r) + } + + function a(t, e) { + try { + if (e === t) throw new TypeError("A promise cannot be resolved with itself."); + if (e && ("object" == typeof e || "function" == typeof e)) { + var n = e.then; + if (e instanceof o) return t._state = 3, t._value = e, void c(t); + if ("function" == typeof n) return void u((r = n, i = e, function() { + r.apply(i, arguments) + }), t) + } + t._state = 1, t._value = e, c(t) + } catch (e) { + s(t, e) + } + var r, i + } + + function s(e, t) { + e._state = 2, e._value = t, c(e) + } + + function c(e) { + 2 === e._state && 0 === e._deferreds.length && o._immediateFn(function() { + e._handled || o._unhandledRejectionFn(e._value) + }); + for (var t = 0, n = e._deferreds.length; t < n; t++) i(e, e._deferreds[t]); + e._deferreds = null + } + + function l(e, t, n) { + this.onFulfilled = "function" == typeof e ? e : null, this.onRejected = "function" == typeof t ? t : null, this.promise = n + } + + function u(e, t) { + var n = !1; + try { + e(function(e) { + n || (n = !0, a(t, e)) + }, function(e) { + n || (n = !0, s(t, e)) + }) + } catch (e) { + if (n) return; + n = !0, s(t, e) + } + } + o.prototype.catch = function(e) { + return this.then(null, e) + }, o.prototype.then = function(e, t) { + var n = new this.constructor(r); + return i(this, new l(e, t, n)), n + }, o.prototype.finally = e.a, o.all = function(t) { + return new o(function(r, i) { + if (!t || void 0 === t.length) throw new TypeError("Promise.all accepts an array"); + var o = Array.prototype.slice.call(t); + if (0 === o.length) return r([]); + var a = o.length; + + function s(t, e) { + try { + if (e && ("object" == typeof e || "function" == typeof e)) { + var n = e.then; + if ("function" == typeof n) return void n.call(e, function(e) { + s(t, e) + }, i) + } + o[t] = e, 0 == --a && r(o) + } catch (e) { + i(e) + } + } + for (var e = 0; e < o.length; e++) s(e, o[e]) + }) + }, o.resolve = function(t) { + return t && "object" == typeof t && t.constructor === o ? t : new o(function(e) { + e(t) + }) + }, o.reject = function(n) { + return new o(function(e, t) { + t(n) + }) + }, o.race = function(i) { + return new o(function(e, t) { + for (var n = 0, r = i.length; n < r; n++) i[n].then(e, t) + }) + }, o._immediateFn = "function" == typeof t && function(e) { + t(e) + } || function(e) { + n(e, 0) + }, o._unhandledRejectionFn = function(e) { + "undefined" != typeof console && console && console.warn("Possible Unhandled Promise Rejection:", e) + }, f.a = o + }).call(this, d(21).setImmediate) +}, function(e, t, n) { + "use strict"; + + function r(e, t) { + var n = document.createElement(e); + t && Array.prototype.forEach.call(Object.keys(t), function(e) { + n.setAttribute(e, t[e]) + }); + for (var r = arguments.length, i = new Array(2 < r ? r - 2 : 0), o = 2; o < r; o++) i[o - 2] = arguments[o]; + return function t(e) { + Array.prototype.forEach.call(e, function(e) { + "string" == typeof e || "number" == typeof e ? n.textContent += e : Array.isArray(e) ? t(e) : void 0 !== e.__html ? n.innerHTML += e.__html : e instanceof Node && n.appendChild(e) + }) + }(i), n + } + n.r(t), n.d(t, "createElement", function() { + return r + }) +}, function(e, t) { + var n; + n = function() { + return this + }(); + try { + n = n || new Function("return this")() + } catch (e) { + "object" == typeof window && (n = window) + } + e.exports = n +}, function(e, t, n) { + var r; + r = function() { + return function(n) { + var r = {}; + + function i(e) { + if (r[e]) return r[e].exports; + var t = r[e] = { + i: e, + l: !1, + exports: {} + }; + return n[e].call(t.exports, t, t.exports, i), t.l = !0, t.exports + } + return i.m = n, i.c = r, i.d = function(e, t, n) { + i.o(e, t) || Object.defineProperty(e, t, { + enumerable: !0, + get: n + }) + }, i.r = function(e) { + "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, { + value: "Module" + }), Object.defineProperty(e, "__esModule", { + value: !0 + }) + }, i.t = function(t, e) { + if (1 & e && (t = i(t)), 8 & e) return t; + if (4 & e && "object" == typeof t && t && t.__esModule) return t; + var n = Object.create(null); + if (i.r(n), Object.defineProperty(n, "default", { + enumerable: !0, + value: t + }), 2 & e && "string" != typeof t) + for (var r in t) i.d(n, r, function(e) { + return t[e] + }.bind(null, r)); + return n + }, i.n = function(e) { + var t = e && e.__esModule ? function() { + return e.default + } : function() { + return e + }; + return i.d(t, "a", t), t + }, i.o = function(e, t) { + return Object.prototype.hasOwnProperty.call(e, t) + }, i.p = "", i(i.s = 0) + }([function(e, t, n) { + "use strict"; + var i = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) { + return typeof e + } : function(e) { + return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e + }, + o = function() { + function r(e, t) { + for (var n = 0; n < t.length; n++) { + var r = t[n]; + r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r) + } + } + return function(e, t, n) { + return t && r(e.prototype, t), n && r(e, n), e + } + }(), + a = r(n(1)), + s = r(n(3)), + c = r(n(4)); + + function r(e) { + return e && e.__esModule ? e : { + default: e + } + } + var l = function(e) { + function r(e, t) { + ! function(e, t) { + if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") + }(this, r); + var n = function(e, t) { + if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return !t || "object" != typeof t && "function" != typeof t ? e : t + }(this, (r.__proto__ || Object.getPrototypeOf(r)).call(this)); + return n.resolveOptions(t), n.listenClick(e), n + } + return function(e, t) { + if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t); + e.prototype = Object.create(t && t.prototype, { + constructor: { + value: e, + enumerable: !1, + writable: !0, + configurable: !0 + } + }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) + }(r, s.default), o(r, [{ + key: "resolveOptions", + value: function() { + var e = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : {}; + this.action = "function" == typeof e.action ? e.action : this.defaultAction, this.target = "function" == typeof e.target ? e.target : this.defaultTarget, this.text = "function" == typeof e.text ? e.text : this.defaultText, this.container = "object" === i(e.container) ? e.container : document.body + } + }, { + key: "listenClick", + value: function(e) { + var t = this; + this.listener = (0, c.default)(e, "click", function(e) { + return t.onClick(e) + }) + } + }, { + key: "onClick", + value: function(e) { + var t = e.delegateTarget || e.currentTarget; + this.clipboardAction && (this.clipboardAction = null), this.clipboardAction = new a.default({ + action: this.action(t), + target: this.target(t), + text: this.text(t), + container: this.container, + trigger: t, + emitter: this + }) + } + }, { + key: "defaultAction", + value: function(e) { + return u("action", e) + } + }, { + key: "defaultTarget", + value: function(e) { + var t = u("target", e); + if (t) return document.querySelector(t) + } + }, { + key: "defaultText", + value: function(e) { + return u("text", e) + } + }, { + key: "destroy", + value: function() { + this.listener.destroy(), this.clipboardAction && (this.clipboardAction.destroy(), this.clipboardAction = null) + } + }], [{ + key: "isSupported", + value: function() { + var e = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : ["copy", "cut"], + t = "string" == typeof e ? [e] : e, + n = !!document.queryCommandSupported; + return t.forEach(function(e) { + n = n && !!document.queryCommandSupported(e) + }), n + } + }]), r + }(); + + function u(e, t) { + var n = "data-clipboard-" + e; + if (t.hasAttribute(n)) return t.getAttribute(n) + } + e.exports = l + }, function(e, t, n) { + "use strict"; + var r, i = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) { + return typeof e + } : function(e) { + return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e + }, + o = function() { + function r(e, t) { + for (var n = 0; n < t.length; n++) { + var r = t[n]; + r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r) + } + } + return function(e, t, n) { + return t && r(e.prototype, t), n && r(e, n), e + } + }(), + a = n(2), + s = (r = a) && r.__esModule ? r : { + default: r + }; + var c = function() { + function t(e) { + ! function(e, t) { + if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") + }(this, t), this.resolveOptions(e), this.initSelection() + } + return o(t, [{ + key: "resolveOptions", + value: function() { + var e = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : {}; + this.action = e.action, this.container = e.container, this.emitter = e.emitter, this.target = e.target, this.text = e.text, this.trigger = e.trigger, this.selectedText = "" + } + }, { + key: "initSelection", + value: function() { + this.text ? this.selectFake() : this.target && this.selectTarget() + } + }, { + key: "selectFake", + value: function() { + var e = this, + t = "rtl" == document.documentElement.getAttribute("dir"); + this.removeFake(), this.fakeHandlerCallback = function() { + return e.removeFake() + }, this.fakeHandler = this.container.addEventListener("click", this.fakeHandlerCallback) || !0, this.fakeElem = document.createElement("textarea"), this.fakeElem.style.fontSize = "12pt", this.fakeElem.style.border = "0", this.fakeElem.style.padding = "0", this.fakeElem.style.margin = "0", this.fakeElem.style.position = "absolute", this.fakeElem.style[t ? "right" : "left"] = "-9999px"; + var n = window.pageYOffset || document.documentElement.scrollTop; + this.fakeElem.style.top = n + "px", this.fakeElem.setAttribute("readonly", ""), this.fakeElem.value = this.text, this.container.appendChild(this.fakeElem), this.selectedText = (0, s.default)(this.fakeElem), this.copyText() + } + }, { + key: "removeFake", + value: function() { + this.fakeHandler && (this.container.removeEventListener("click", this.fakeHandlerCallback), this.fakeHandler = null, this.fakeHandlerCallback = null), this.fakeElem && (this.container.removeChild(this.fakeElem), this.fakeElem = null) + } + }, { + key: "selectTarget", + value: function() { + this.selectedText = (0, s.default)(this.target), this.copyText() + } + }, { + key: "copyText", + value: function() { + var t = void 0; + try { + t = document.execCommand(this.action) + } catch (e) { + t = !1 + } + this.handleResult(t) + } + }, { + key: "handleResult", + value: function(e) { + this.emitter.emit(e ? "success" : "error", { + action: this.action, + text: this.selectedText, + trigger: this.trigger, + clearSelection: this.clearSelection.bind(this) + }) + } + }, { + key: "clearSelection", + value: function() { + this.trigger && this.trigger.focus(), window.getSelection().removeAllRanges() + } + }, { + key: "destroy", + value: function() { + this.removeFake() + } + }, { + key: "action", + set: function() { + var e = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : "copy"; + if (this._action = e, "copy" !== this._action && "cut" !== this._action) throw new Error('Invalid "action" value, use either "copy" or "cut"') + }, + get: function() { + return this._action + } + }, { + key: "target", + set: function(e) { + if (void 0 !== e) { + if (!e || "object" !== (void 0 === e ? "undefined" : i(e)) || 1 !== e.nodeType) throw new Error('Invalid "target" value, use a valid Element'); + if ("copy" === this.action && e.hasAttribute("disabled")) throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute'); + if ("cut" === this.action && (e.hasAttribute("readonly") || e.hasAttribute("disabled"))) throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes'); + this._target = e + } + }, + get: function() { + return this._target + } + }]), t + }(); + e.exports = c + }, function(e, t) { + e.exports = function(e) { + var t; + if ("SELECT" === e.nodeName) e.focus(), t = e.value; + else if ("INPUT" === e.nodeName || "TEXTAREA" === e.nodeName) { + var n = e.hasAttribute("readonly"); + n || e.setAttribute("readonly", ""), e.select(), e.setSelectionRange(0, e.value.length), n || e.removeAttribute("readonly"), t = e.value + } else { + e.hasAttribute("contenteditable") && e.focus(); + var r = window.getSelection(), + i = document.createRange(); + i.selectNodeContents(e), r.removeAllRanges(), r.addRange(i), t = r.toString() + } + return t + } + }, function(e, t) { + function n() {} + n.prototype = { + on: function(e, t, n) { + var r = this.e || (this.e = {}); + return (r[e] || (r[e] = [])).push({ + fn: t, + ctx: n + }), this + }, + once: function(e, t, n) { + var r = this; + + function i() { + r.off(e, i), t.apply(n, arguments) + } + return i._ = t, this.on(e, i, n) + }, + emit: function(e) { + for (var t = [].slice.call(arguments, 1), n = ((this.e || (this.e = {}))[e] || []).slice(), r = 0, i = n.length; r < i; r++) n[r].fn.apply(n[r].ctx, t); + return this + }, + off: function(e, t) { + var n = this.e || (this.e = {}), + r = n[e], + i = []; + if (r && t) + for (var o = 0, a = r.length; o < a; o++) r[o].fn !== t && r[o].fn._ !== t && i.push(r[o]); + return i.length ? n[e] = i : delete n[e], this + } + }, e.exports = n + }, function(e, t, n) { + var d = n(5), + h = n(6); + e.exports = function(e, t, n) { + if (!e && !t && !n) throw new Error("Missing required arguments"); + if (!d.string(t)) throw new TypeError("Second argument must be a String"); + if (!d.fn(n)) throw new TypeError("Third argument must be a Function"); + if (d.node(e)) return u = t, f = n, (l = e).addEventListener(u, f), { + destroy: function() { + l.removeEventListener(u, f) + } + }; + if (d.nodeList(e)) return a = e, s = t, c = n, Array.prototype.forEach.call(a, function(e) { + e.addEventListener(s, c) + }), { + destroy: function() { + Array.prototype.forEach.call(a, function(e) { + e.removeEventListener(s, c) + }) + } + }; + if (d.string(e)) return r = e, i = t, o = n, h(document.body, r, i, o); + throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList"); + var r, i, o, a, s, c, l, u, f + } + }, function(e, n) { + n.node = function(e) { + return void 0 !== e && e instanceof HTMLElement && 1 === e.nodeType + }, n.nodeList = function(e) { + var t = Object.prototype.toString.call(e); + return void 0 !== e && ("[object NodeList]" === t || "[object HTMLCollection]" === t) && "length" in e && (0 === e.length || n.node(e[0])) + }, n.string = function(e) { + return "string" == typeof e || e instanceof String + }, n.fn = function(e) { + return "[object Function]" === Object.prototype.toString.call(e) + } + }, function(e, t, n) { + var a = n(7); + + function o(e, t, n, r, i) { + var o = function(t, n, e, r) { + return function(e) { + e.delegateTarget = a(e.target, n), e.delegateTarget && r.call(t, e) + } + }.apply(this, arguments); + return e.addEventListener(n, o, i), { + destroy: function() { + e.removeEventListener(n, o, i) + } + } + } + e.exports = function(e, t, n, r, i) { + return "function" == typeof e.addEventListener ? o.apply(null, arguments) : "function" == typeof n ? o.bind(null, document).apply(null, arguments) : ("string" == typeof e && (e = document.querySelectorAll(e)), Array.prototype.map.call(e, function(e) { + return o(e, t, n, r, i) + })) + } + }, function(e, t) { + if ("undefined" != typeof Element && !Element.prototype.matches) { + var n = Element.prototype; + n.matches = n.matchesSelector || n.mozMatchesSelector || n.msMatchesSelector || n.oMatchesSelector || n.webkitMatchesSelector + } + e.exports = function(e, t) { + for (; e && 9 !== e.nodeType;) { + if ("function" == typeof e.matches && e.matches(t)) return e; + e = e.parentNode + } + } + }]) + }, e.exports = r() +}, function(r, i, o) { + var a, s; + ! function(e) { + if (void 0 === (s = "function" == typeof(a = e) ? a.call(i, o, i, r) : a) || (r.exports = s), !0, r.exports = e(), !!0) { + var t = window.Cookies, + n = window.Cookies = e(); + n.noConflict = function() { + return window.Cookies = t, n + } + } + }(function() { + function m() { + for (var e = 0, t = {}; e < arguments.length; e++) { + var n = arguments[e]; + for (var r in n) t[r] = n[r] + } + return t + } + return function e(h) { + function p(e, t, n) { + var r; + if ("undefined" != typeof document) { + if (1 < arguments.length) { + if ("number" == typeof(n = m({ + path: "/" + }, p.defaults, n)).expires) { + var i = new Date; + i.setMilliseconds(i.getMilliseconds() + 864e5 * n.expires), n.expires = i + } + n.expires = n.expires ? n.expires.toUTCString() : ""; + try { + r = JSON.stringify(t), /^[\{\[]/.test(r) && (t = r) + } catch (e) {} + t = h.write ? h.write(t, e) : encodeURIComponent(String(t)).replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent), e = (e = (e = encodeURIComponent(String(e))).replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent)).replace(/[\(\)]/g, escape); + var o = ""; + for (var a in n) n[a] && (o += "; " + a, !0 !== n[a] && (o += "=" + n[a])); + return document.cookie = e + "=" + t + o + } + e || (r = {}); + for (var s = document.cookie ? document.cookie.split("; ") : [], c = /(%[0-9A-Z]{2})+/g, l = 0; l < s.length; l++) { + var u = s[l].split("="), + f = u.slice(1).join("="); + this.json || '"' !== f.charAt(0) || (f = f.slice(1, -1)); + try { + var d = u[0].replace(c, decodeURIComponent); + if (f = h.read ? h.read(f, d) : h(f, d) || f.replace(c, decodeURIComponent), this.json) try { + f = JSON.parse(f) + } catch (e) {} + if (e === d) { + r = f; + break + } + e || (r[d] = f) + } catch (e) {} + } + return r + } + } + return (p.set = p).get = function(e) { + return p.call(p, e) + }, p.getJSON = function() { + return p.apply({ + json: !0 + }, [].slice.call(arguments)) + }, p.defaults = {}, p.remove = function(e, t) { + p(e, "", m(t, { + expires: -1 + })) + }, p.withConverter = e, p + }(function() {}) + }) +}, function(e, t, n) { + "use strict"; + n.r(t); + var r = "function" == typeof fetch ? fetch.bind() : function(i, o) { + return o = o || {}, new Promise(function(e, t) { + var n = new XMLHttpRequest; + for (var r in n.open(o.method || "get", i, !0), o.headers) n.setRequestHeader(r, o.headers[r]); + + function s() { + var r, i = [], + o = [], + a = {}; + return n.getAllResponseHeaders().replace(/^(.*?):[^\S\n]*([\s\S]*?)$/gm, function(e, t, n) { + i.push(t = t.toLowerCase()), o.push([t, n]), r = a[t], a[t] = r ? r + "," + n : n + }), { + ok: 2 == (n.status / 100 | 0), + status: n.status, + statusText: n.statusText, + url: n.responseURL, + clone: s, + text: function() { + return Promise.resolve(n.responseText) + }, + json: function() { + return Promise.resolve(n.responseText).then(JSON.parse) + }, + blob: function() { + return Promise.resolve(new Blob([n.response])) + }, + headers: { + keys: function() { + return i + }, + entries: function() { + return o + }, + get: function(e) { + return a[e.toLowerCase()] + }, + has: function(e) { + return e.toLowerCase() in a + } + } + } + } + n.withCredentials = "include" == o.credentials, n.onload = function() { + e(s()) + }, n.onerror = t, n.send(o.body || null) + }) + }; + t.default = r +}, function(e, t, n) { + "use strict"; + t.a = function(t) { + var n = this.constructor; + return this.then(function(e) { + return n.resolve(t()).then(function() { + return e + }) + }, function(e) { + return n.resolve(t()).then(function() { + return n.reject(e) + }) + }) + } +}, function(e, n, r) { + "use strict"; + (function(f) { + r.d(n, "a", function() { + return t + }); + var e = r(1), + d = r.n(e), + h = function(e) { + var t = document.getElementsByName("lang:" + e)[0]; + if (!(t instanceof HTMLMetaElement)) throw new ReferenceError; + return t.content + }, + t = function() { + function e(e, t) { + var n = "string" == typeof e ? document.querySelector(e) : e; + if (!(n instanceof HTMLElement)) throw new ReferenceError; + this.el_ = n; + var r = Array.prototype.slice.call(this.el_.children), + i = r[0], + o = r[1]; + this.data_ = t, this.meta_ = i, this.list_ = o, this.message_ = { + placeholder: this.meta_.textContent, + none: h("search.result.none"), + one: h("search.result.one"), + other: h("search.result.other") + }; + var a = h("search.tokenizer"); + a.length && (d.a.tokenizer.separator = a), this.lang_ = h("search.language").split(",").filter(Boolean).map(function(e) { + return e.trim() + }) + } + return e.prototype.update = function(e) { + var t, a = this; + if ("focus" !== e.type || this.index_) { + if ("focus" === e.type || "keyup" === e.type) { + var n = e.target; + if (!(n instanceof HTMLInputElement)) throw new ReferenceError; + if (!this.index_ || n.value === this.value_) return; + for (; this.list_.firstChild;) this.list_.removeChild(this.list_.firstChild); + if (this.value_ = n.value, 0 === this.value_.length) return void(this.meta_.textContent = this.message_.placeholder); + var r = this.index_.query(function(t) { + a.value_.toLowerCase().split(" ").filter(Boolean).forEach(function(e) { + t.term(e, { + wildcard: d.a.Query.wildcard.TRAILING + }) + }) + }).reduce(function(e, t) { + var n = a.docs_.get(t.ref); + if (n.parent) { + var r = n.parent.location; + e.set(r, (e.get(r) || []).concat(t)) + } else { + var i = n.location; + e.set(i, e.get(i) || []) + } + return e + }, new Map), + i = (t = this.value_.trim(), t.replace(/[|\\{}()[\]^$+*?.-]/g, "\\$&")).replace(new RegExp(d.a.tokenizer.separator, "img"), "|"), + s = new RegExp("(^|" + d.a.tokenizer.separator + ")(" + i + ")", "img"), + c = function(e, t, n) { + return t + "" + n + "" + }; + this.stack_ = [], r.forEach(function(e, t) { + var n, r = a.docs_.get(t), + i = f.createElement("li", { + class: "md-search-result__item" + }, f.createElement("a", { + href: r.location, + title: r.title, + class: "md-search-result__link", + tabindex: "-1" + }, f.createElement("article", { + class: "md-search-result__article md-search-result__article--document" + }, f.createElement("h1", { + class: "md-search-result__title" + }, { + __html: r.title.replace(s, c) + }), r.text.length ? f.createElement("p", { + class: "md-search-result__teaser" + }, { + __html: r.text.replace(s, c) + }) : {}))), + o = e.map(function(t) { + return function() { + var e = a.docs_.get(t.ref); + i.appendChild(f.createElement("a", { + href: e.location, + title: e.title, + class: "md-search-result__link", + "data-md-rel": "anchor", + tabindex: "-1" + }, f.createElement("article", { + class: "md-search-result__article" + }, f.createElement("h1", { + class: "md-search-result__title" + }, { + __html: e.title.replace(s, c) + }), e.text.length ? f.createElement("p", { + class: "md-search-result__teaser" + }, { + __html: function(e, t) { + var n = t; + if (e.length > n) { + for (; + " " !== e[n] && 0 < --n;); + return e.substring(0, n) + "..." + } + return e + }(e.text.replace(s, c), 400) + }) : {}))) + } + }); + (n = a.stack_).push.apply(n, [function() { + return a.list_.appendChild(i) + }].concat(o)) + }); + var o = this.el_.parentNode; + if (!(o instanceof HTMLElement)) throw new ReferenceError; + for (; this.stack_.length && o.offsetHeight >= o.scrollHeight - 16;) this.stack_.shift()(); + var l = this.list_.querySelectorAll("[data-md-rel=anchor]"); + switch (Array.prototype.forEach.call(l, function(r) { + ["click", "keydown"].forEach(function(n) { + r.addEventListener(n, function(e) { + if ("keydown" !== n || 13 === e.keyCode) { + var t = document.querySelector("[data-md-toggle=search]"); + if (!(t instanceof HTMLInputElement)) throw new ReferenceError; + t.checked && (t.checked = !1, t.dispatchEvent(new CustomEvent("change"))), e.preventDefault(), setTimeout(function() { + document.location.href = r.href + }, 100) + } + }) + }) + }), r.size) { + case 0: + this.meta_.textContent = this.message_.none; + break; + case 1: + this.meta_.textContent = this.message_.one; + break; + default: + this.meta_.textContent = this.message_.other.replace("#", r.size) + } + } + } else { + var u = function(e) { + a.docs_ = e.reduce(function(e, t) { + var n, r, i, o = t.location.split("#"), + a = o[0], + s = o[1]; + return t.text = (n = t.text, r = document.createTextNode(n), (i = document.createElement("p")).appendChild(r), i.innerHTML), s && (t.parent = e.get(a), t.parent && !t.parent.done && (t.parent.title = t.title, t.parent.text = t.text, t.parent.done = !0)), t.text = t.text.replace(/\n/g, " ").replace(/\s+/g, " ").replace(/\s+([,.:;!?])/g, function(e, t) { + return t + }), t.parent && t.parent.title === t.title || e.set(t.location, t), e + }, new Map); + var i = a.docs_, + o = a.lang_; + a.stack_ = [], a.index_ = d()(function() { + var e, t = this, + n = { + "search.pipeline.trimmer": d.a.trimmer, + "search.pipeline.stopwords": d.a.stopWordFilter + }, + r = Object.keys(n).reduce(function(e, t) { + return h(t).match(/^false$/i) || e.push(n[t]), e + }, []); + this.pipeline.reset(), r && (e = this.pipeline).add.apply(e, r), 1 === o.length && "en" !== o[0] && d.a[o[0]] ? this.use(d.a[o[0]]) : 1 < o.length && this.use(d.a.multiLanguage.apply(d.a, o)), this.field("title", { + boost: 10 + }), this.field("text"), this.ref("location"), i.forEach(function(e) { + return t.add(e) + }) + }); + var t = a.el_.parentNode; + if (!(t instanceof HTMLElement)) throw new ReferenceError; + t.addEventListener("scroll", function() { + for (; a.stack_.length && t.scrollTop + t.offsetHeight >= t.scrollHeight - 16;) a.stack_.splice(0, 10).forEach(function(e) { + return e() + }) + }) + }; + setTimeout(function() { + return "function" == typeof a.data_ ? a.data_().then(u) : u(a.data_) + }, 250) + } + }, e + }() + }).call(this, r(3)) +}, function(e, n, r) { + "use strict"; + (function(t) { + r.d(n, "a", function() { + return e + }); + var e = function() { + function e(e) { + var t = "string" == typeof e ? document.querySelector(e) : e; + if (!(t instanceof HTMLElement)) throw new ReferenceError; + this.el_ = t + } + return e.prototype.initialize = function(e) { + e.length && this.el_.children.length && this.el_.children[this.el_.children.length - 1].appendChild(t.createElement("ul", { + class: "md-source__facts" + }, e.map(function(e) { + return t.createElement("li", { + class: "md-source__fact" + }, e) + }))), this.el_.dataset.mdState = "done" + }, e + }() + }).call(this, r(3)) +}, , , function(e, n, c) { + "use strict"; + c.r(n), + function(o) { + c.d(n, "app", function() { + return t + }); + c(14), c(15), c(16), c(17), c(18), c(19), c(20); + var r = c(2), + e = c(5), + a = c.n(e), + i = c(0); + window.Promise = window.Promise || r.a; + var s = function(e) { + var t = document.getElementsByName("lang:" + e)[0]; + if (!(t instanceof HTMLMetaElement)) throw new ReferenceError; + return t.content + }; + var t = { + initialize: function(t) { + new i.a.Event.Listener(document, "DOMContentLoaded", function() { + if (!(document.body instanceof HTMLElement)) throw new ReferenceError; + Modernizr.addTest("ios", function() { + return !!navigator.userAgent.match(/(iPad|iPhone|iPod)/g) + }); + var e = document.querySelectorAll("table:not([class])"); + if (Array.prototype.forEach.call(e, function(e) { + var t = o.createElement("div", { + class: "md-typeset__scrollwrap" + }, o.createElement("div", { + class: "md-typeset__table" + })); + e.nextSibling ? e.parentNode.insertBefore(t, e.nextSibling) : e.parentNode.appendChild(t), t.children[0].appendChild(e) + }), a.a.isSupported()) { + var t = document.querySelectorAll(".codehilite > pre, pre > code"); + Array.prototype.forEach.call(t, function(e, t) { + var n = "__code_" + t, + r = o.createElement("button", { + class: "md-clipboard", + title: s("clipboard.copy"), + "data-clipboard-target": "#" + n + " pre, #" + n + " code" + }, o.createElement("span", { + class: "md-clipboard__message" + })), + i = e.parentNode; + i.id = n, i.insertBefore(r, e) + }), new a.a(".md-clipboard").on("success", function(e) { + var t = e.trigger.querySelector(".md-clipboard__message"); + if (!(t instanceof HTMLElement)) throw new ReferenceError; + e.clearSelection(), t.dataset.mdTimer && clearTimeout(parseInt(t.dataset.mdTimer, 10)), t.classList.add("md-clipboard__message--active"), t.innerHTML = s("clipboard.copied"), t.dataset.mdTimer = setTimeout(function() { + t.classList.remove("md-clipboard__message--active"), t.dataset.mdTimer = "" + }, 2e3).toString() + }) + } + if (!Modernizr.details) { + var n = document.querySelectorAll("details > summary"); + Array.prototype.forEach.call(n, function(e) { + e.addEventListener("click", function(e) { + var t = e.target.parentNode; + t.hasAttribute("open") ? t.removeAttribute("open") : t.setAttribute("open", "") + }) + }) + } + var r = function() { + if (document.location.hash) { + var e = document.getElementById(document.location.hash.substring(1)); + if (!e) return; + for (var t = e.parentNode; t && !(t instanceof HTMLDetailsElement);) t = t.parentNode; + if (t && !t.open) { + t.open = !0; + var n = location.hash; + location.hash = " ", location.hash = n + } + } + }; + if (window.addEventListener("hashchange", r), r(), Modernizr.ios) { + var i = document.querySelectorAll("[data-md-scrollfix]"); + Array.prototype.forEach.call(i, function(t) { + t.addEventListener("touchstart", function() { + var e = t.scrollTop; + 0 === e ? t.scrollTop = 1 : e + t.offsetHeight === t.scrollHeight && (t.scrollTop = e - 1) + }) + }) + } + }).listen(), new i.a.Event.Listener(window, ["scroll", "resize", "orientationchange"], new i.a.Header.Shadow("[data-md-component=container]", "[data-md-component=header]")).listen(), new i.a.Event.Listener(window, ["scroll", "resize", "orientationchange"], new i.a.Header.Title("[data-md-component=title]", ".md-typeset h1")).listen(), document.querySelector("[data-md-component=hero]") && new i.a.Event.Listener(window, ["scroll", "resize", "orientationchange"], new i.a.Tabs.Toggle("[data-md-component=hero]")).listen(), document.querySelector("[data-md-component=tabs]") && new i.a.Event.Listener(window, ["scroll", "resize", "orientationchange"], new i.a.Tabs.Toggle("[data-md-component=tabs]")).listen(), new i.a.Event.MatchMedia("(min-width: 1220px)", new i.a.Event.Listener(window, ["scroll", "resize", "orientationchange"], new i.a.Sidebar.Position("[data-md-component=navigation]", "[data-md-component=header]"))), document.querySelector("[data-md-component=toc]") && new i.a.Event.MatchMedia("(min-width: 960px)", new i.a.Event.Listener(window, ["scroll", "resize", "orientationchange"], new i.a.Sidebar.Position("[data-md-component=toc]", "[data-md-component=header]"))), new i.a.Event.MatchMedia("(min-width: 960px)", new i.a.Event.Listener(window, "scroll", new i.a.Nav.Blur("[data-md-component=toc] .md-nav__link"))); + var e = document.querySelectorAll("[data-md-component=collapsible]"); + Array.prototype.forEach.call(e, function(e) { + new i.a.Event.MatchMedia("(min-width: 1220px)", new i.a.Event.Listener(e.previousElementSibling, "click", new i.a.Nav.Collapse(e))) + }), new i.a.Event.MatchMedia("(max-width: 1219px)", new i.a.Event.Listener("[data-md-component=navigation] [data-md-toggle]", "change", new i.a.Nav.Scrolling("[data-md-component=navigation] nav"))), document.querySelector("[data-md-component=search]") && (new i.a.Event.MatchMedia("(max-width: 959px)", new i.a.Event.Listener("[data-md-toggle=search]", "change", new i.a.Search.Lock("[data-md-toggle=search]")))), + new i.a.Event.Listener(document.body, "keydown", function(e) { + if (9 === e.keyCode) { + var t = document.querySelectorAll("[data-md-component=navigation] .md-nav__link[for]:not([tabindex])"); + Array.prototype.forEach.call(t, function(e) { + e.offsetHeight && (e.tabIndex = 0) + }) + } + }).listen(), new i.a.Event.Listener(document.body, "mousedown", function() { + var e = document.querySelectorAll("[data-md-component=navigation] .md-nav__link[tabindex]"); + Array.prototype.forEach.call(e, function(e) { + e.removeAttribute("tabIndex") + }) + }).listen(), document.body.addEventListener("click", function() { + "tabbing" === document.body.dataset.mdState && (document.body.dataset.mdState = "") + }), new i.a.Event.MatchMedia("(max-width: 959px)", new i.a.Event.Listener("[data-md-component=navigation] [href^='#']", "click", function() { + var e = document.querySelector("[data-md-toggle=drawer]"); + if (!(e instanceof HTMLInputElement)) throw new ReferenceError; + e.checked && (e.checked = !1, e.dispatchEvent(new CustomEvent("change"))) + })), + function() { + var e = document.querySelector("[data-md-source]"); + if (!e) return r.a.resolve([]); + if (!(e instanceof HTMLAnchorElement)) throw new ReferenceError; + switch (e.dataset.mdSource) { + case "github": + return new i.a.Source.Adapter.GitHub(e).fetch(); + default: + return r.a.resolve([]) + } + }().then(function(t) { + var e = document.querySelectorAll("[data-md-source]"); + Array.prototype.forEach.call(e, function(e) { + new i.a.Source.Repository(e).initialize(t) + }) + }); + var n = function() { + var e = document.querySelectorAll("details"); + Array.prototype.forEach.call(e, function(e) { + e.setAttribute("open", "") + }) + }; + new i.a.Event.MatchMedia("print", { + listen: n, + unlisten: function() {} + }), window.onbeforeprint = n + } + } + }.call(this, c(3)) +}, function(e, t, n) { + e.exports = n.p + "assets/images/icons/bitbucket.1b09e088.svg" +}, function(e, t, n) { + e.exports = n.p + "assets/images/icons/github.f0b8504a.svg" +}, function(e, t, n) { + e.exports = n.p + "assets/images/icons/gitlab.6dd19c00.svg" +}, function(e, t) { + e.exports = "/Users/squidfunk/Desktop/General/Sources/mkdocs-material/material/application.4031d38b.css" +}, function(e, t) { + e.exports = "/Users/squidfunk/Desktop/General/Sources/mkdocs-material/material/application-palette.224b79ff.css" +}, function(e, t) { + ! function() { + if ("undefined" != typeof window) try { + var e = new window.CustomEvent("test", { + cancelable: !0 + }); + if (e.preventDefault(), !0 !== e.defaultPrevented) throw new Error("Could not prevent default") + } catch (e) { + var t = function(e, t) { + var n, r; + return (t = t || {}).bubbles = !!t.bubbles, t.cancelable = !!t.cancelable, (n = document.createEvent("CustomEvent")).initCustomEvent(e, t.bubbles, t.cancelable, t.detail), r = n.preventDefault, n.preventDefault = function() { + r.call(this); + try { + Object.defineProperty(this, "defaultPrevented", { + get: function() { + return !0 + } + }) + } catch (e) { + this.defaultPrevented = !0 + } + }, n + }; + t.prototype = window.Event.prototype, window.CustomEvent = t + } + }() +}, function(e, t, n) { + window.fetch || (window.fetch = n(7).default || n(7)) +}, function(e, i, o) { + (function(e) { + var t = void 0 !== e && e || "undefined" != typeof self && self || window, + n = Function.prototype.apply; + + function r(e, t) { + this._id = e, this._clearFn = t + } + i.setTimeout = function() { + return new r(n.call(setTimeout, t, arguments), clearTimeout) + }, i.setInterval = function() { + return new r(n.call(setInterval, t, arguments), clearInterval) + }, i.clearTimeout = i.clearInterval = function(e) { + e && e.close() + }, r.prototype.unref = r.prototype.ref = function() {}, r.prototype.close = function() { + this._clearFn.call(t, this._id) + }, i.enroll = function(e, t) { + clearTimeout(e._idleTimeoutId), e._idleTimeout = t + }, i.unenroll = function(e) { + clearTimeout(e._idleTimeoutId), e._idleTimeout = -1 + }, i._unrefActive = i.active = function(e) { + clearTimeout(e._idleTimeoutId); + var t = e._idleTimeout; + 0 <= t && (e._idleTimeoutId = setTimeout(function() { + e._onTimeout && e._onTimeout() + }, t)) + }, o(22), i.setImmediate = "undefined" != typeof self && self.setImmediate || void 0 !== e && e.setImmediate || this && this.setImmediate, i.clearImmediate = "undefined" != typeof self && self.clearImmediate || void 0 !== e && e.clearImmediate || this && this.clearImmediate + }).call(this, o(4)) +}, function(e, t, n) { + (function(e, p) { + ! function(n, r) { + "use strict"; + if (!n.setImmediate) { + var i, o, t, a, e, s = 1, + c = {}, + l = !1, + u = n.document, + f = Object.getPrototypeOf && Object.getPrototypeOf(n); + f = f && f.setTimeout ? f : n, i = "[object process]" === {}.toString.call(n.process) ? function(e) { + p.nextTick(function() { + h(e) + }) + } : function() { + if (n.postMessage && !n.importScripts) { + var e = !0, + t = n.onmessage; + return n.onmessage = function() { + e = !1 + }, n.postMessage("", "*"), n.onmessage = t, e + } + }() ? (a = "setImmediate$" + Math.random() + "$", e = function(e) { + e.source === n && "string" == typeof e.data && 0 === e.data.indexOf(a) && h(+e.data.slice(a.length)) + }, n.addEventListener ? n.addEventListener("message", e, !1) : n.attachEvent("onmessage", e), function(e) { + n.postMessage(a + e, "*") + }) : n.MessageChannel ? ((t = new MessageChannel).port1.onmessage = function(e) { + h(e.data) + }, function(e) { + t.port2.postMessage(e) + }) : u && "onreadystatechange" in u.createElement("script") ? (o = u.documentElement, function(e) { + var t = u.createElement("script"); + t.onreadystatechange = function() { + h(e), t.onreadystatechange = null, o.removeChild(t), t = null + }, o.appendChild(t) + }) : function(e) { + setTimeout(h, 0, e) + }, f.setImmediate = function(e) { + "function" != typeof e && (e = new Function("" + e)); + for (var t = new Array(arguments.length - 1), n = 0; n < t.length; n++) t[n] = arguments[n + 1]; + var r = { + callback: e, + args: t + }; + return c[s] = r, i(s), s++ + }, f.clearImmediate = d + } + + function d(e) { + delete c[e] + } + + function h(e) { + if (l) setTimeout(h, 0, e); + else { + var t = c[e]; + if (t) { + l = !0; + try { + ! function(e) { + var t = e.callback, + n = e.args; + switch (n.length) { + case 0: + t(); + break; + case 1: + t(n[0]); + break; + case 2: + t(n[0], n[1]); + break; + case 3: + t(n[0], n[1], n[2]); + break; + default: + t.apply(r, n) + } + }(t) + } finally { + d(e), l = !1 + } + } + } + } + }("undefined" == typeof self ? void 0 === e ? this : e : self) + }).call(this, n(4), n(23)) +}, function(e, t) { + var n, r, i = e.exports = {}; + + function o() { + throw new Error("setTimeout has not been defined") + } + + function a() { + throw new Error("clearTimeout has not been defined") + } + + function s(t) { + if (n === setTimeout) return setTimeout(t, 0); + if ((n === o || !n) && setTimeout) return n = setTimeout, setTimeout(t, 0); + try { + return n(t, 0) + } catch (e) { + try { + return n.call(null, t, 0) + } catch (e) { + return n.call(this, t, 0) + } + } + }! function() { + try { + n = "function" == typeof setTimeout ? setTimeout : o + } catch (e) { + n = o + } + try { + r = "function" == typeof clearTimeout ? clearTimeout : a + } catch (e) { + r = a + } + }(); + var c, l = [], + u = !1, + f = -1; + + function d() { + u && c && (u = !1, c.length ? l = c.concat(l) : f = -1, l.length && h()) + } + + function h() { + if (!u) { + var e = s(d); + u = !0; + for (var t = l.length; t;) { + for (c = l, l = []; ++f < t;) c && c[f].run(); + f = -1, t = l.length + } + c = null, u = !1, + function(t) { + if (r === clearTimeout) return clearTimeout(t); + if ((r === a || !r) && clearTimeout) return r = clearTimeout, clearTimeout(t); + try { + r(t) + } catch (e) { + try { + return r.call(null, t) + } catch (e) { + return r.call(this, t) + } + } + }(e) + } + } + + function p(e, t) { + this.fun = e, this.array = t + } + + function m() {} + i.nextTick = function(e) { + var t = new Array(arguments.length - 1); + if (1 < arguments.length) + for (var n = 1; n < arguments.length; n++) t[n - 1] = arguments[n]; + l.push(new p(e, t)), 1 !== l.length || u || s(h) + }, p.prototype.run = function() { + this.fun.apply(null, this.array) + }, i.title = "browser", i.browser = !0, i.env = {}, i.argv = [], i.version = "", i.versions = {}, i.on = m, i.addListener = m, i.once = m, i.off = m, i.removeListener = m, i.removeAllListeners = m, i.emit = m, i.prependListener = m, i.prependOnceListener = m, i.listeners = function(e) { + return [] + }, i.binding = function(e) { + throw new Error("process.binding is not supported") + }, i.cwd = function() { + return "/" + }, i.chdir = function(e) { + throw new Error("process.chdir is not supported") + }, i.umask = function() { + return 0 + } +}, function(i, o, a) { + var s, c; + /** + * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.6 + * Copyright (C) 2019 Oliver Nightingale + * @license MIT + */ + ! function() { + var t, l, u, e, n, f, d, h, p, m, y, v, g, w, _, E, x, b, k, S, T, L, R, O, C, r, D = function(e) { + var t = new D.Builder; + return t.pipeline.add(D.trimmer, D.stopWordFilter, D.stemmer), t.searchPipeline.add(D.stemmer), e.call(t, t), t.build() + }; + D.version = "2.3.6", D.utils = {}, D.utils.warn = (t = this, function(e) { + t.console && console.warn && console.warn(e) + }), D.utils.asString = function(e) { + return null == e ? "" : e.toString() + }, D.utils.clone = function(e) { + if (null == e) return e; + for (var t = Object.create(null), n = Object.keys(e), r = 0; r < n.length; r++) { + var i = n[r], + o = e[i]; + if (Array.isArray(o)) t[i] = o.slice(); + else { + if ("string" != typeof o && "number" != typeof o && "boolean" != typeof o) throw new TypeError("clone is not deep and does not support nested objects"); + t[i] = o + } + } + return t + }, D.FieldRef = function(e, t, n) { + this.docRef = e, this.fieldName = t, this._stringValue = n + }, D.FieldRef.joiner = "/", D.FieldRef.fromString = function(e) { + var t = e.indexOf(D.FieldRef.joiner); + if (-1 === t) throw "malformed field ref string"; + var n = e.slice(0, t), + r = e.slice(t + 1); + return new D.FieldRef(r, n, e) + }, D.FieldRef.prototype.toString = function() { + return null == this._stringValue && (this._stringValue = this.fieldName + D.FieldRef.joiner + this.docRef), this._stringValue + }, D.Set = function(e) { + if (this.elements = Object.create(null), e) { + this.length = e.length; + for (var t = 0; t < this.length; t++) this.elements[e[t]] = !0 + } else this.length = 0 + }, D.Set.complete = { + intersect: function(e) { + return e + }, + union: function(e) { + return e + }, + contains: function() { + return !0 + } + }, D.Set.empty = { + intersect: function() { + return this + }, + union: function(e) { + return e + }, + contains: function() { + return !1 + } + }, D.Set.prototype.contains = function(e) { + return !!this.elements[e] + }, D.Set.prototype.intersect = function(e) { + var t, n, r, i = []; + if (e === D.Set.complete) return this; + if (e === D.Set.empty) return e; + n = this.length < e.length ? (t = this, e) : (t = e, this), r = Object.keys(t.elements); + for (var o = 0; o < r.length; o++) { + var a = r[o]; + a in n.elements && i.push(a) + } + return new D.Set(i) + }, D.Set.prototype.union = function(e) { + return e === D.Set.complete ? D.Set.complete : e === D.Set.empty ? this : new D.Set(Object.keys(this.elements).concat(Object.keys(e.elements))) + }, D.idf = function(e, t) { + var n = 0; + for (var r in e) "_index" != r && (n += Object.keys(e[r]).length); + var i = (t - n + .5) / (n + .5); + return Math.log(1 + Math.abs(i)) + }, D.Token = function(e, t) { + this.str = e || "", this.metadata = t || {} + }, D.Token.prototype.toString = function() { + return this.str + }, D.Token.prototype.update = function(e) { + return this.str = e(this.str, this.metadata), this + }, D.Token.prototype.clone = function(e) { + return e = e || function(e) { + return e + }, new D.Token(e(this.str, this.metadata), this.metadata) + }, D.tokenizer = function(e, t) { + if (null == e || null == e) return []; + if (Array.isArray(e)) return e.map(function(e) { + return new D.Token(D.utils.asString(e).toLowerCase(), D.utils.clone(t)) + }); + for (var n = e.toString().trim().toLowerCase(), r = n.length, i = [], o = 0, a = 0; o <= r; o++) { + var s = o - a; + if (n.charAt(o).match(D.tokenizer.separator) || o == r) { + if (0 < s) { + var c = D.utils.clone(t) || {}; + c.position = [a, s], c.index = i.length, i.push(new D.Token(n.slice(a, o), c)) + } + a = o + 1 + } + } + return i + }, D.tokenizer.separator = /[\s\-]+/, D.Pipeline = function() { + this._stack = [] + }, D.Pipeline.registeredFunctions = Object.create(null), D.Pipeline.registerFunction = function(e, t) { + t in this.registeredFunctions && D.utils.warn("Overwriting existing registered function: " + t), e.label = t, D.Pipeline.registeredFunctions[e.label] = e + }, D.Pipeline.warnIfFunctionNotRegistered = function(e) { + e.label && e.label in this.registeredFunctions || D.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n", e) + }, D.Pipeline.load = function(e) { + var n = new D.Pipeline; + return e.forEach(function(e) { + var t = D.Pipeline.registeredFunctions[e]; + if (!t) throw new Error("Cannot load unregistered function: " + e); + n.add(t) + }), n + }, D.Pipeline.prototype.add = function() { + Array.prototype.slice.call(arguments).forEach(function(e) { + D.Pipeline.warnIfFunctionNotRegistered(e), this._stack.push(e) + }, this) + }, D.Pipeline.prototype.after = function(e, t) { + D.Pipeline.warnIfFunctionNotRegistered(t); + var n = this._stack.indexOf(e); + if (-1 == n) throw new Error("Cannot find existingFn"); + n += 1, this._stack.splice(n, 0, t) + }, D.Pipeline.prototype.before = function(e, t) { + D.Pipeline.warnIfFunctionNotRegistered(t); + var n = this._stack.indexOf(e); + if (-1 == n) throw new Error("Cannot find existingFn"); + this._stack.splice(n, 0, t) + }, D.Pipeline.prototype.remove = function(e) { + var t = this._stack.indexOf(e); - 1 != t && this._stack.splice(t, 1) + }, D.Pipeline.prototype.run = function(e) { + for (var t = this._stack.length, n = 0; n < t; n++) { + for (var r = this._stack[n], i = [], o = 0; o < e.length; o++) { + var a = r(e[o], o, e); + if (void 0 !== a && "" !== a) + if (Array.isArray(a)) + for (var s = 0; s < a.length; s++) i.push(a[s]); + else i.push(a) + } + e = i + } + return e + }, D.Pipeline.prototype.runString = function(e, t) { + var n = new D.Token(e, t); + return this.run([n]).map(function(e) { + return e.toString() + }) + }, D.Pipeline.prototype.reset = function() { + this._stack = [] + }, D.Pipeline.prototype.toJSON = function() { + return this._stack.map(function(e) { + return D.Pipeline.warnIfFunctionNotRegistered(e), e.label + }) + }, D.Vector = function(e) { + this._magnitude = 0, this.elements = e || [] + }, D.Vector.prototype.positionForIndex = function(e) { + if (0 == this.elements.length) return 0; + for (var t = 0, n = this.elements.length / 2, r = n - t, i = Math.floor(r / 2), o = this.elements[2 * i]; 1 < r && (o < e && (t = i), e < o && (n = i), o != e);) r = n - t, i = t + Math.floor(r / 2), o = this.elements[2 * i]; + return o == e ? 2 * i : e < o ? 2 * i : o < e ? 2 * (i + 1) : void 0 + }, D.Vector.prototype.insert = function(e, t) { + this.upsert(e, t, function() { + throw "duplicate index" + }) + }, D.Vector.prototype.upsert = function(e, t, n) { + this._magnitude = 0; + var r = this.positionForIndex(e); + this.elements[r] == e ? this.elements[r + 1] = n(this.elements[r + 1], t) : this.elements.splice(r, 0, e, t) + }, D.Vector.prototype.magnitude = function() { + if (this._magnitude) return this._magnitude; + for (var e = 0, t = this.elements.length, n = 1; n < t; n += 2) { + var r = this.elements[n]; + e += r * r + } + return this._magnitude = Math.sqrt(e) + }, D.Vector.prototype.dot = function(e) { + for (var t = 0, n = this.elements, r = e.elements, i = n.length, o = r.length, a = 0, s = 0, c = 0, l = 0; c < i && l < o;)(a = n[c]) < (s = r[l]) ? c += 2 : s < a ? l += 2 : a == s && (t += n[c + 1] * r[l + 1], c += 2, l += 2); + return t + }, D.Vector.prototype.similarity = function(e) { + return this.dot(e) / this.magnitude() || 0 + }, D.Vector.prototype.toArray = function() { + for (var e = new Array(this.elements.length / 2), t = 1, n = 0; t < this.elements.length; t += 2, n++) e[n] = this.elements[t]; + return e + }, D.Vector.prototype.toJSON = function() { + return this.elements + }, D.stemmer = (l = { + ational: "ate", + tional: "tion", + enci: "ence", + anci: "ance", + izer: "ize", + bli: "ble", + alli: "al", + entli: "ent", + eli: "e", + ousli: "ous", + ization: "ize", + ation: "ate", + ator: "ate", + alism: "al", + iveness: "ive", + fulness: "ful", + ousness: "ous", + aliti: "al", + iviti: "ive", + biliti: "ble", + logi: "log" + }, u = { + icate: "ic", + ative: "", + alize: "al", + iciti: "ic", + ical: "ic", + ful: "", + ness: "" + }, e = "[aeiouy]", n = "[^aeiou][^aeiouy]*", f = new RegExp("^([^aeiou][^aeiouy]*)?[aeiouy][aeiou]*[^aeiou][^aeiouy]*"), d = new RegExp("^([^aeiou][^aeiouy]*)?[aeiouy][aeiou]*[^aeiou][^aeiouy]*[aeiouy][aeiou]*[^aeiou][^aeiouy]*"), h = new RegExp("^([^aeiou][^aeiouy]*)?[aeiouy][aeiou]*[^aeiou][^aeiouy]*([aeiouy][aeiou]*)?$"), p = new RegExp("^([^aeiou][^aeiouy]*)?[aeiouy]"), m = /^(.+?)(ss|i)es$/, y = /^(.+?)([^s])s$/, v = /^(.+?)eed$/, g = /^(.+?)(ed|ing)$/, w = /.$/, _ = /(at|bl|iz)$/, E = new RegExp("([^aeiouylsz])\\1$"), x = new RegExp("^" + n + e + "[^aeiouwxy]$"), b = /^(.+?[^aeiou])y$/, k = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/, S = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/, T = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/, L = /^(.+?)(s|t)(ion)$/, R = /^(.+?)e$/, O = /ll$/, C = new RegExp("^" + n + e + "[^aeiouwxy]$"), r = function(e) { + var t, n, r, i, o, a, s; + if (e.length < 3) return e; + if ("y" == (r = e.substr(0, 1)) && (e = r.toUpperCase() + e.substr(1)), o = y, (i = m).test(e) ? e = e.replace(i, "$1$2") : o.test(e) && (e = e.replace(o, "$1$2")), o = g, (i = v).test(e)) { + var c = i.exec(e); + (i = f).test(c[1]) && (i = w, e = e.replace(i, "")) + } else if (o.test(e)) { + t = (c = o.exec(e))[1], (o = p).test(t) && (a = E, s = x, (o = _).test(e = t) ? e += "e" : a.test(e) ? (i = w, e = e.replace(i, "")) : s.test(e) && (e += "e")) + }(i = b).test(e) && (e = (t = (c = i.exec(e))[1]) + "i"); + (i = k).test(e) && (t = (c = i.exec(e))[1], n = c[2], (i = f).test(t) && (e = t + l[n])); + (i = S).test(e) && (t = (c = i.exec(e))[1], n = c[2], (i = f).test(t) && (e = t + u[n])); + if (o = L, (i = T).test(e)) t = (c = i.exec(e))[1], (i = d).test(t) && (e = t); + else if (o.test(e)) { + t = (c = o.exec(e))[1] + c[2], (o = d).test(t) && (e = t) + }(i = R).test(e) && (t = (c = i.exec(e))[1], o = h, a = C, ((i = d).test(t) || o.test(t) && !a.test(t)) && (e = t)); + return o = d, (i = O).test(e) && o.test(e) && (i = w, e = e.replace(i, "")), "y" == r && (e = r.toLowerCase() + e.substr(1)), e + }, function(e) { + return e.update(r) + }), D.Pipeline.registerFunction(D.stemmer, "stemmer"), D.generateStopWordFilter = function(e) { + var t = e.reduce(function(e, t) { + return e[t] = t, e + }, {}); + return function(e) { + if (e && t[e.toString()] !== e.toString()) return e + } + }, D.stopWordFilter = D.generateStopWordFilter(["a", "able", "about", "across", "after", "all", "almost", "also", "am", "among", "an", "and", "any", "are", "as", "at", "be", "because", "been", "but", "by", "can", "cannot", "could", "dear", "did", "do", "does", "either", "else", "ever", "every", "for", "from", "get", "got", "had", "has", "have", "he", "her", "hers", "him", "his", "how", "however", "i", "if", "in", "into", "is", "it", "its", "just", "least", "let", "like", "likely", "may", "me", "might", "most", "must", "my", "neither", "no", "nor", "not", "of", "off", "often", "on", "only", "or", "other", "our", "own", "rather", "said", "say", "says", "she", "should", "since", "so", "some", "than", "that", "the", "their", "them", "then", "there", "these", "they", "this", "tis", "to", "too", "twas", "us", "wants", "was", "we", "were", "what", "when", "where", "which", "while", "who", "whom", "why", "will", "with", "would", "yet", "you", "your"]), D.Pipeline.registerFunction(D.stopWordFilter, "stopWordFilter"), D.trimmer = function(e) { + return e.update(function(e) { + return e.replace(/^\W+/, "").replace(/\W+$/, "") + }) + }, D.Pipeline.registerFunction(D.trimmer, "trimmer"), D.TokenSet = function() { + this.final = !1, this.edges = {}, this.id = D.TokenSet._nextId, D.TokenSet._nextId += 1 + }, D.TokenSet._nextId = 1, D.TokenSet.fromArray = function(e) { + for (var t = new D.TokenSet.Builder, n = 0, r = e.length; n < r; n++) t.insert(e[n]); + return t.finish(), t.root + }, D.TokenSet.fromClause = function(e) { + return "editDistance" in e ? D.TokenSet.fromFuzzyString(e.term, e.editDistance) : D.TokenSet.fromString(e.term) + }, D.TokenSet.fromFuzzyString = function(e, t) { + for (var n = new D.TokenSet, r = [{ + node: n, + editsRemaining: t, + str: e + }]; r.length;) { + var i = r.pop(); + if (0 < i.str.length) { + var o, a = i.str.charAt(0); + a in i.node.edges ? o = i.node.edges[a] : (o = new D.TokenSet, i.node.edges[a] = o), 1 == i.str.length && (o.final = !0), r.push({ + node: o, + editsRemaining: i.editsRemaining, + str: i.str.slice(1) + }) + } + if (0 != i.editsRemaining) { + if ("*" in i.node.edges) var s = i.node.edges["*"]; + else { + s = new D.TokenSet; + i.node.edges["*"] = s + } + if (0 == i.str.length && (s.final = !0), r.push({ + node: s, + editsRemaining: i.editsRemaining - 1, + str: i.str + }), 1 < i.str.length && r.push({ + node: i.node, + editsRemaining: i.editsRemaining - 1, + str: i.str.slice(1) + }), 1 == i.str.length && (i.node.final = !0), 1 <= i.str.length) { + if ("*" in i.node.edges) var c = i.node.edges["*"]; + else { + c = new D.TokenSet; + i.node.edges["*"] = c + } + 1 == i.str.length && (c.final = !0), r.push({ + node: c, + editsRemaining: i.editsRemaining - 1, + str: i.str.slice(1) + }) + } + if (1 < i.str.length) { + var l, u = i.str.charAt(0), + f = i.str.charAt(1); + f in i.node.edges ? l = i.node.edges[f] : (l = new D.TokenSet, i.node.edges[f] = l), 1 == i.str.length && (l.final = !0), r.push({ + node: l, + editsRemaining: i.editsRemaining - 1, + str: u + i.str.slice(2) + }) + } + } + } + return n + }, D.TokenSet.fromString = function(e) { + for (var t = new D.TokenSet, n = t, r = 0, i = e.length; r < i; r++) { + var o = e[r], + a = r == i - 1; + if ("*" == o)(t.edges[o] = t).final = a; + else { + var s = new D.TokenSet; + s.final = a, t.edges[o] = s, t = s + } + } + return n + }, D.TokenSet.prototype.toArray = function() { + for (var e = [], t = [{ + prefix: "", + node: this + }]; t.length;) { + var n = t.pop(), + r = Object.keys(n.node.edges), + i = r.length; + n.node.final && (n.prefix.charAt(0), e.push(n.prefix)); + for (var o = 0; o < i; o++) { + var a = r[o]; + t.push({ + prefix: n.prefix.concat(a), + node: n.node.edges[a] + }) + } + } + return e + }, D.TokenSet.prototype.toString = function() { + if (this._str) return this._str; + for (var e = this.final ? "1" : "0", t = Object.keys(this.edges).sort(), n = t.length, r = 0; r < n; r++) { + var i = t[r]; + e = e + i + this.edges[i].id + } + return e + }, D.TokenSet.prototype.intersect = function(e) { + for (var t = new D.TokenSet, n = void 0, r = [{ + qNode: e, + output: t, + node: this + }]; r.length;) { + n = r.pop(); + for (var i = Object.keys(n.qNode.edges), o = i.length, a = Object.keys(n.node.edges), s = a.length, c = 0; c < o; c++) + for (var l = i[c], u = 0; u < s; u++) { + var f = a[u]; + if (f == l || "*" == l) { + var d = n.node.edges[f], + h = n.qNode.edges[l], + p = d.final && h.final, + m = void 0; + f in n.output.edges ? (m = n.output.edges[f]).final = m.final || p : ((m = new D.TokenSet).final = p, n.output.edges[f] = m), r.push({ + qNode: h, + output: m, + node: d + }) + } + } + } + return t + }, D.TokenSet.Builder = function() { + this.previousWord = "", this.root = new D.TokenSet, this.uncheckedNodes = [], this.minimizedNodes = {} + }, D.TokenSet.Builder.prototype.insert = function(e) { + var t, n = 0; + if (e < this.previousWord) throw new Error("Out of order word insertion"); + for (var r = 0; r < e.length && r < this.previousWord.length && e[r] == this.previousWord[r]; r++) n++; + this.minimize(n), t = 0 == this.uncheckedNodes.length ? this.root : this.uncheckedNodes[this.uncheckedNodes.length - 1].child; + for (r = n; r < e.length; r++) { + var i = new D.TokenSet, + o = e[r]; + t.edges[o] = i, this.uncheckedNodes.push({ + parent: t, + char: o, + child: i + }), t = i + } + t.final = !0, this.previousWord = e + }, D.TokenSet.Builder.prototype.finish = function() { + this.minimize(0) + }, D.TokenSet.Builder.prototype.minimize = function(e) { + for (var t = this.uncheckedNodes.length - 1; e <= t; t--) { + var n = this.uncheckedNodes[t], + r = n.child.toString(); + r in this.minimizedNodes ? n.parent.edges[n.char] = this.minimizedNodes[r] : (n.child._str = r, this.minimizedNodes[r] = n.child), this.uncheckedNodes.pop() + } + }, D.Index = function(e) { + this.invertedIndex = e.invertedIndex, this.fieldVectors = e.fieldVectors, this.tokenSet = e.tokenSet, this.fields = e.fields, this.pipeline = e.pipeline + }, D.Index.prototype.search = function(t) { + return this.query(function(e) { + new D.QueryParser(t, e).parse() + }) + }, D.Index.prototype.query = function(e) { + for (var t = new D.Query(this.fields), n = Object.create(null), r = Object.create(null), i = Object.create(null), o = Object.create(null), a = Object.create(null), s = 0; s < this.fields.length; s++) r[this.fields[s]] = new D.Vector; + e.call(t, t); + for (s = 0; s < t.clauses.length; s++) { + var c = t.clauses[s], + l = null, + u = D.Set.complete; + l = c.usePipeline ? this.pipeline.runString(c.term, { + fields: c.fields + }) : [c.term]; + for (var f = 0; f < l.length; f++) { + var d = l[f]; + c.term = d; + var h = D.TokenSet.fromClause(c), + p = this.tokenSet.intersect(h).toArray(); + if (0 === p.length && c.presence === D.Query.presence.REQUIRED) { + for (var m = 0; m < c.fields.length; m++) { + o[Q = c.fields[m]] = D.Set.empty + } + break + } + for (var y = 0; y < p.length; y++) { + var v = p[y], + g = this.invertedIndex[v], + w = g._index; + for (m = 0; m < c.fields.length; m++) { + var _ = g[Q = c.fields[m]], + E = Object.keys(_), + x = v + "/" + Q, + b = new D.Set(E); + if (c.presence == D.Query.presence.REQUIRED && (u = u.union(b), void 0 === o[Q] && (o[Q] = D.Set.complete)), c.presence != D.Query.presence.PROHIBITED) { + if (r[Q].upsert(w, c.boost, function(e, t) { + return e + t + }), !i[x]) { + for (var k = 0; k < E.length; k++) { + var S, T = E[k], + L = new D.FieldRef(T, Q), + R = _[T]; + void 0 === (S = n[L]) ? n[L] = new D.MatchData(v, Q, R) : S.add(v, Q, R) + } + i[x] = !0 + } + } else void 0 === a[Q] && (a[Q] = D.Set.empty), a[Q] = a[Q].union(b) + } + } + } + if (c.presence === D.Query.presence.REQUIRED) + for (m = 0; m < c.fields.length; m++) { + o[Q = c.fields[m]] = o[Q].intersect(u) + } + } + var O = D.Set.complete, + C = D.Set.empty; + for (s = 0; s < this.fields.length; s++) { + var Q; + o[Q = this.fields[s]] && (O = O.intersect(o[Q])), a[Q] && (C = C.union(a[Q])) + } + var P = Object.keys(n), + A = [], + I = Object.create(null); + if (t.isNegated()) { + P = Object.keys(this.fieldVectors); + for (s = 0; s < P.length; s++) { + L = P[s]; + var M = D.FieldRef.fromString(L); + n[L] = new D.MatchData + } + } + for (s = 0; s < P.length; s++) { + var N = (M = D.FieldRef.fromString(P[s])).docRef; + if (O.contains(N) && !C.contains(N)) { + var j, F = this.fieldVectors[M], + H = r[M.fieldName].similarity(F); + if (void 0 !== (j = I[N])) j.score += H, j.matchData.combine(n[M]); + else { + var q = { + ref: N, + score: H, + matchData: n[M] + }; + I[N] = q, A.push(q) + } + } + } + return A.sort(function(e, t) { + return t.score - e.score + }) + }, D.Index.prototype.toJSON = function() { + var e = Object.keys(this.invertedIndex).sort().map(function(e) { + return [e, this.invertedIndex[e]] + }, this), + t = Object.keys(this.fieldVectors).map(function(e) { + return [e, this.fieldVectors[e].toJSON()] + }, this); + return { + version: D.version, + fields: this.fields, + fieldVectors: t, + invertedIndex: e, + pipeline: this.pipeline.toJSON() + } + }, D.Index.load = function(e) { + var t = {}, + n = {}, + r = e.fieldVectors, + i = Object.create(null), + o = e.invertedIndex, + a = new D.TokenSet.Builder, + s = D.Pipeline.load(e.pipeline); + e.version != D.version && D.utils.warn("Version mismatch when loading serialised index. Current version of lunr '" + D.version + "' does not match serialized index '" + e.version + "'"); + for (var c = 0; c < r.length; c++) { + var l = (f = r[c])[0], + u = f[1]; + n[l] = new D.Vector(u) + } + for (c = 0; c < o.length; c++) { + var f, d = (f = o[c])[0], + h = f[1]; + a.insert(d), i[d] = h + } + return a.finish(), t.fields = e.fields, t.fieldVectors = n, t.invertedIndex = i, t.tokenSet = a.root, t.pipeline = s, new D.Index(t) + }, D.Builder = function() { + this._ref = "id", this._fields = Object.create(null), this._documents = Object.create(null), this.invertedIndex = Object.create(null), this.fieldTermFrequencies = {}, this.fieldLengths = {}, this.tokenizer = D.tokenizer, this.pipeline = new D.Pipeline, this.searchPipeline = new D.Pipeline, this.documentCount = 0, this._b = .75, this._k1 = 1.2, this.termIndex = 0, this.metadataWhitelist = [] + }, D.Builder.prototype.ref = function(e) { + this._ref = e + }, D.Builder.prototype.field = function(e, t) { + if (/\//.test(e)) throw new RangeError("Field '" + e + "' contains illegal character '/'"); + this._fields[e] = t || {} + }, D.Builder.prototype.b = function(e) { + this._b = e < 0 ? 0 : 1 < e ? 1 : e + }, D.Builder.prototype.k1 = function(e) { + this._k1 = e + }, D.Builder.prototype.add = function(e, t) { + var n = e[this._ref], + r = Object.keys(this._fields); + this._documents[n] = t || {}, this.documentCount += 1; + for (var i = 0; i < r.length; i++) { + var o = r[i], + a = this._fields[o].extractor, + s = a ? a(e) : e[o], + c = this.tokenizer(s, { + fields: [o] + }), + l = this.pipeline.run(c), + u = new D.FieldRef(n, o), + f = Object.create(null); + this.fieldTermFrequencies[u] = f, this.fieldLengths[u] = 0, this.fieldLengths[u] += l.length; + for (var d = 0; d < l.length; d++) { + var h = l[d]; + if (null == f[h] && (f[h] = 0), f[h] += 1, null == this.invertedIndex[h]) { + var p = Object.create(null); + p._index = this.termIndex, this.termIndex += 1; + for (var m = 0; m < r.length; m++) p[r[m]] = Object.create(null); + this.invertedIndex[h] = p + } + null == this.invertedIndex[h][o][n] && (this.invertedIndex[h][o][n] = Object.create(null)); + for (var y = 0; y < this.metadataWhitelist.length; y++) { + var v = this.metadataWhitelist[y], + g = h.metadata[v]; + null == this.invertedIndex[h][o][n][v] && (this.invertedIndex[h][o][n][v] = []), this.invertedIndex[h][o][n][v].push(g) + } + } + } + }, D.Builder.prototype.calculateAverageFieldLengths = function() { + for (var e = Object.keys(this.fieldLengths), t = e.length, n = {}, r = {}, i = 0; i < t; i++) { + var o = D.FieldRef.fromString(e[i]), + a = o.fieldName; + r[a] || (r[a] = 0), r[a] += 1, n[a] || (n[a] = 0), n[a] += this.fieldLengths[o] + } + var s = Object.keys(this._fields); + for (i = 0; i < s.length; i++) { + var c = s[i]; + n[c] = n[c] / r[c] + } + this.averageFieldLength = n + }, D.Builder.prototype.createFieldVectors = function() { + for (var e = {}, t = Object.keys(this.fieldTermFrequencies), n = t.length, r = Object.create(null), i = 0; i < n; i++) { + for (var o = D.FieldRef.fromString(t[i]), a = o.fieldName, s = this.fieldLengths[o], c = new D.Vector, l = this.fieldTermFrequencies[o], u = Object.keys(l), f = u.length, d = this._fields[a].boost || 1, h = this._documents[o.docRef].boost || 1, p = 0; p < f; p++) { + var m, y, v, g = u[p], + w = l[g], + _ = this.invertedIndex[g]._index; + void 0 === r[g] ? (m = D.idf(this.invertedIndex[g], this.documentCount), r[g] = m) : m = r[g], y = m * ((this._k1 + 1) * w) / (this._k1 * (1 - this._b + this._b * (s / this.averageFieldLength[a])) + w), y *= d, y *= h, v = Math.round(1e3 * y) / 1e3, c.insert(_, v) + } + e[o] = c + } + this.fieldVectors = e + }, D.Builder.prototype.createTokenSet = function() { + this.tokenSet = D.TokenSet.fromArray(Object.keys(this.invertedIndex).sort()) + }, D.Builder.prototype.build = function() { + return this.calculateAverageFieldLengths(), this.createFieldVectors(), this.createTokenSet(), new D.Index({ + invertedIndex: this.invertedIndex, + fieldVectors: this.fieldVectors, + tokenSet: this.tokenSet, + fields: Object.keys(this._fields), + pipeline: this.searchPipeline + }) + }, D.Builder.prototype.use = function(e) { + var t = Array.prototype.slice.call(arguments, 1); + t.unshift(this), e.apply(this, t) + }, D.MatchData = function(e, t, n) { + for (var r = Object.create(null), i = Object.keys(n || {}), o = 0; o < i.length; o++) { + var a = i[o]; + r[a] = n[a].slice() + } + this.metadata = Object.create(null), void 0 !== e && (this.metadata[e] = Object.create(null), this.metadata[e][t] = r) + }, D.MatchData.prototype.combine = function(e) { + for (var t = Object.keys(e.metadata), n = 0; n < t.length; n++) { + var r = t[n], + i = Object.keys(e.metadata[r]); + null == this.metadata[r] && (this.metadata[r] = Object.create(null)); + for (var o = 0; o < i.length; o++) { + var a = i[o], + s = Object.keys(e.metadata[r][a]); + null == this.metadata[r][a] && (this.metadata[r][a] = Object.create(null)); + for (var c = 0; c < s.length; c++) { + var l = s[c]; + null == this.metadata[r][a][l] ? this.metadata[r][a][l] = e.metadata[r][a][l] : this.metadata[r][a][l] = this.metadata[r][a][l].concat(e.metadata[r][a][l]) + } + } + } + }, D.MatchData.prototype.add = function(e, t, n) { + if (!(e in this.metadata)) return this.metadata[e] = Object.create(null), void(this.metadata[e][t] = n); + if (t in this.metadata[e]) + for (var r = Object.keys(n), i = 0; i < r.length; i++) { + var o = r[i]; + o in this.metadata[e][t] ? this.metadata[e][t][o] = this.metadata[e][t][o].concat(n[o]) : this.metadata[e][t][o] = n[o] + } else this.metadata[e][t] = n + }, D.Query = function(e) { + this.clauses = [], this.allFields = e + }, D.Query.wildcard = new String("*"), D.Query.wildcard.NONE = 0, D.Query.wildcard.LEADING = 1, D.Query.wildcard.TRAILING = 2, D.Query.presence = { + OPTIONAL: 1, + REQUIRED: 2, + PROHIBITED: 3 + }, D.Query.prototype.clause = function(e) { + return "fields" in e || (e.fields = this.allFields), "boost" in e || (e.boost = 1), "usePipeline" in e || (e.usePipeline = !0), "wildcard" in e || (e.wildcard = D.Query.wildcard.NONE), e.wildcard & D.Query.wildcard.LEADING && e.term.charAt(0) != D.Query.wildcard && (e.term = "*" + e.term), e.wildcard & D.Query.wildcard.TRAILING && e.term.slice(-1) != D.Query.wildcard && (e.term = e.term + "*"), "presence" in e || (e.presence = D.Query.presence.OPTIONAL), this.clauses.push(e), this + }, D.Query.prototype.isNegated = function() { + for (var e = 0; e < this.clauses.length; e++) + if (this.clauses[e].presence != D.Query.presence.PROHIBITED) return !1; + return !0 + }, D.Query.prototype.term = function(e, t) { + if (Array.isArray(e)) return e.forEach(function(e) { + this.term(e, D.utils.clone(t)) + }, this), this; + var n = t || {}; + return n.term = e.toString(), this.clause(n), this + }, D.QueryParseError = function(e, t, n) { + this.name = "QueryParseError", this.message = e, this.start = t, this.end = n + }, D.QueryParseError.prototype = new Error, D.QueryLexer = function(e) { + this.lexemes = [], this.str = e, this.length = e.length, this.pos = 0, this.start = 0, this.escapeCharPositions = [] + }, D.QueryLexer.prototype.run = function() { + for (var e = D.QueryLexer.lexText; e;) e = e(this) + }, D.QueryLexer.prototype.sliceString = function() { + for (var e = [], t = this.start, n = this.pos, r = 0; r < this.escapeCharPositions.length; r++) n = this.escapeCharPositions[r], e.push(this.str.slice(t, n)), t = n + 1; + return e.push(this.str.slice(t, this.pos)), this.escapeCharPositions.length = 0, e.join("") + }, D.QueryLexer.prototype.emit = function(e) { + this.lexemes.push({ + type: e, + str: this.sliceString(), + start: this.start, + end: this.pos + }), this.start = this.pos + }, D.QueryLexer.prototype.escapeCharacter = function() { + this.escapeCharPositions.push(this.pos - 1), this.pos += 1 + }, D.QueryLexer.prototype.next = function() { + if (this.pos >= this.length) return D.QueryLexer.EOS; + var e = this.str.charAt(this.pos); + return this.pos += 1, e + }, D.QueryLexer.prototype.width = function() { + return this.pos - this.start + }, D.QueryLexer.prototype.ignore = function() { + this.start == this.pos && (this.pos += 1), this.start = this.pos + }, D.QueryLexer.prototype.backup = function() { + this.pos -= 1 + }, D.QueryLexer.prototype.acceptDigitRun = function() { + for (var e, t; 47 < (t = (e = this.next()).charCodeAt(0)) && t < 58;); + e != D.QueryLexer.EOS && this.backup() + }, D.QueryLexer.prototype.more = function() { + return this.pos < this.length + }, D.QueryLexer.EOS = "EOS", D.QueryLexer.FIELD = "FIELD", D.QueryLexer.TERM = "TERM", D.QueryLexer.EDIT_DISTANCE = "EDIT_DISTANCE", D.QueryLexer.BOOST = "BOOST", D.QueryLexer.PRESENCE = "PRESENCE", D.QueryLexer.lexField = function(e) { + return e.backup(), e.emit(D.QueryLexer.FIELD), e.ignore(), D.QueryLexer.lexText + }, D.QueryLexer.lexTerm = function(e) { + if (1 < e.width() && (e.backup(), e.emit(D.QueryLexer.TERM)), e.ignore(), e.more()) return D.QueryLexer.lexText + }, D.QueryLexer.lexEditDistance = function(e) { + return e.ignore(), e.acceptDigitRun(), e.emit(D.QueryLexer.EDIT_DISTANCE), D.QueryLexer.lexText + }, D.QueryLexer.lexBoost = function(e) { + return e.ignore(), e.acceptDigitRun(), e.emit(D.QueryLexer.BOOST), D.QueryLexer.lexText + }, D.QueryLexer.lexEOS = function(e) { + 0 < e.width() && e.emit(D.QueryLexer.TERM) + }, D.QueryLexer.termSeparator = D.tokenizer.separator, D.QueryLexer.lexText = function(e) { + for (;;) { + var t = e.next(); + if (t == D.QueryLexer.EOS) return D.QueryLexer.lexEOS; + if (92 != t.charCodeAt(0)) { + if (":" == t) return D.QueryLexer.lexField; + if ("~" == t) return e.backup(), 0 < e.width() && e.emit(D.QueryLexer.TERM), D.QueryLexer.lexEditDistance; + if ("^" == t) return e.backup(), 0 < e.width() && e.emit(D.QueryLexer.TERM), D.QueryLexer.lexBoost; + if ("+" == t && 1 === e.width()) return e.emit(D.QueryLexer.PRESENCE), D.QueryLexer.lexText; + if ("-" == t && 1 === e.width()) return e.emit(D.QueryLexer.PRESENCE), D.QueryLexer.lexText; + if (t.match(D.QueryLexer.termSeparator)) return D.QueryLexer.lexTerm + } else e.escapeCharacter() + } + }, D.QueryParser = function(e, t) { + this.lexer = new D.QueryLexer(e), this.query = t, this.currentClause = {}, this.lexemeIdx = 0 + }, D.QueryParser.prototype.parse = function() { + this.lexer.run(), this.lexemes = this.lexer.lexemes; + for (var e = D.QueryParser.parseClause; e;) e = e(this); + return this.query + }, D.QueryParser.prototype.peekLexeme = function() { + return this.lexemes[this.lexemeIdx] + }, D.QueryParser.prototype.consumeLexeme = function() { + var e = this.peekLexeme(); + return this.lexemeIdx += 1, e + }, D.QueryParser.prototype.nextClause = function() { + var e = this.currentClause; + this.query.clause(e), this.currentClause = {} + }, D.QueryParser.parseClause = function(e) { + var t = e.peekLexeme(); + if (null != t) switch (t.type) { + case D.QueryLexer.PRESENCE: + return D.QueryParser.parsePresence; + case D.QueryLexer.FIELD: + return D.QueryParser.parseField; + case D.QueryLexer.TERM: + return D.QueryParser.parseTerm; + default: + var n = "expected either a field or a term, found " + t.type; + throw 1 <= t.str.length && (n += " with value '" + t.str + "'"), new D.QueryParseError(n, t.start, t.end) + } + }, D.QueryParser.parsePresence = function(e) { + var t = e.consumeLexeme(); + if (null != t) { + switch (t.str) { + case "-": + e.currentClause.presence = D.Query.presence.PROHIBITED; + break; + case "+": + e.currentClause.presence = D.Query.presence.REQUIRED; + break; + default: + var n = "unrecognised presence operator'" + t.str + "'"; + throw new D.QueryParseError(n, t.start, t.end) + } + var r = e.peekLexeme(); + if (null == r) { + n = "expecting term or field, found nothing"; + throw new D.QueryParseError(n, t.start, t.end) + } + switch (r.type) { + case D.QueryLexer.FIELD: + return D.QueryParser.parseField; + case D.QueryLexer.TERM: + return D.QueryParser.parseTerm; + default: + n = "expecting term or field, found '" + r.type + "'"; + throw new D.QueryParseError(n, r.start, r.end) + } + } + }, D.QueryParser.parseField = function(e) { + var t = e.consumeLexeme(); + if (null != t) { + if (-1 == e.query.allFields.indexOf(t.str)) { + var n = e.query.allFields.map(function(e) { + return "'" + e + "'" + }).join(", "), + r = "unrecognised field '" + t.str + "', possible fields: " + n; + throw new D.QueryParseError(r, t.start, t.end) + } + e.currentClause.fields = [t.str]; + var i = e.peekLexeme(); + if (null == i) { + r = "expecting term, found nothing"; + throw new D.QueryParseError(r, t.start, t.end) + } + switch (i.type) { + case D.QueryLexer.TERM: + return D.QueryParser.parseTerm; + default: + r = "expecting term, found '" + i.type + "'"; + throw new D.QueryParseError(r, i.start, i.end) + } + } + }, D.QueryParser.parseTerm = function(e) { + var t = e.consumeLexeme(); + if (null != t) { + e.currentClause.term = t.str.toLowerCase(), -1 != t.str.indexOf("*") && (e.currentClause.usePipeline = !1); + var n = e.peekLexeme(); + if (null != n) switch (n.type) { + case D.QueryLexer.TERM: + return e.nextClause(), D.QueryParser.parseTerm; + case D.QueryLexer.FIELD: + return e.nextClause(), D.QueryParser.parseField; + case D.QueryLexer.EDIT_DISTANCE: + return D.QueryParser.parseEditDistance; + case D.QueryLexer.BOOST: + return D.QueryParser.parseBoost; + case D.QueryLexer.PRESENCE: + return e.nextClause(), D.QueryParser.parsePresence; + default: + var r = "Unexpected lexeme type '" + n.type + "'"; + throw new D.QueryParseError(r, n.start, n.end) + } else e.nextClause() + } + }, D.QueryParser.parseEditDistance = function(e) { + var t = e.consumeLexeme(); + if (null != t) { + var n = parseInt(t.str, 10); + if (isNaN(n)) { + var r = "edit distance must be numeric"; + throw new D.QueryParseError(r, t.start, t.end) + } + e.currentClause.editDistance = n; + var i = e.peekLexeme(); + if (null != i) switch (i.type) { + case D.QueryLexer.TERM: + return e.nextClause(), D.QueryParser.parseTerm; + case D.QueryLexer.FIELD: + return e.nextClause(), D.QueryParser.parseField; + case D.QueryLexer.EDIT_DISTANCE: + return D.QueryParser.parseEditDistance; + case D.QueryLexer.BOOST: + return D.QueryParser.parseBoost; + case D.QueryLexer.PRESENCE: + return e.nextClause(), D.QueryParser.parsePresence; + default: + r = "Unexpected lexeme type '" + i.type + "'"; + throw new D.QueryParseError(r, i.start, i.end) + } else e.nextClause() + } + }, D.QueryParser.parseBoost = function(e) { + var t = e.consumeLexeme(); + if (null != t) { + var n = parseInt(t.str, 10); + if (isNaN(n)) { + var r = "boost must be numeric"; + throw new D.QueryParseError(r, t.start, t.end) + } + e.currentClause.boost = n; + var i = e.peekLexeme(); + if (null != i) switch (i.type) { + case D.QueryLexer.TERM: + return e.nextClause(), D.QueryParser.parseTerm; + case D.QueryLexer.FIELD: + return e.nextClause(), D.QueryParser.parseField; + case D.QueryLexer.EDIT_DISTANCE: + return D.QueryParser.parseEditDistance; + case D.QueryLexer.BOOST: + return D.QueryParser.parseBoost; + case D.QueryLexer.PRESENCE: + return e.nextClause(), D.QueryParser.parsePresence; + default: + r = "Unexpected lexeme type '" + i.type + "'"; + throw new D.QueryParseError(r, i.start, i.end) + } else e.nextClause() + } + }, void 0 === (c = "function" == typeof(s = function() { + return D + }) ? s.call(o, a, o, i) : s) || (i.exports = c) + }() +}])); \ No newline at end of file diff --git a/_static/javascripts/lunr/lunr.da.js b/_static/javascripts/lunr/lunr.da.js new file mode 100644 index 0000000000..34910dfe5f --- /dev/null +++ b/_static/javascripts/lunr/lunr.da.js @@ -0,0 +1 @@ +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var r,m,i;e.da=function(){this.pipeline.reset(),this.pipeline.add(e.da.trimmer,e.da.stopWordFilter,e.da.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.da.stemmer))},e.da.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.da.trimmer=e.trimmerSupport.generateTrimmer(e.da.wordCharacters),e.Pipeline.registerFunction(e.da.trimmer,"trimmer-da"),e.da.stemmer=(r=e.stemmerSupport.Among,m=e.stemmerSupport.SnowballProgram,i=new function(){var i,t,n,s=[new r("hed",-1,1),new r("ethed",0,1),new r("ered",-1,1),new r("e",-1,1),new r("erede",3,1),new r("ende",3,1),new r("erende",5,1),new r("ene",3,1),new r("erne",3,1),new r("ere",3,1),new r("en",-1,1),new r("heden",10,1),new r("eren",10,1),new r("er",-1,1),new r("heder",13,1),new r("erer",13,1),new r("s",-1,2),new r("heds",16,1),new r("es",16,1),new r("endes",18,1),new r("erendes",19,1),new r("enes",18,1),new r("ernes",18,1),new r("eres",18,1),new r("ens",16,1),new r("hedens",24,1),new r("erens",24,1),new r("ers",16,1),new r("ets",16,1),new r("erets",28,1),new r("et",-1,1),new r("eret",30,1)],o=[new r("gd",-1,-1),new r("dt",-1,-1),new r("gt",-1,-1),new r("kt",-1,-1)],a=[new r("ig",-1,1),new r("lig",0,1),new r("elig",1,1),new r("els",-1,1),new r("løst",-1,2)],d=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,48,0,128],u=[239,254,42,3,0,0,0,0,0,0,0,0,0,0,0,0,16],c=new m;function l(){var e,r=c.limit-c.cursor;c.cursor>=t&&(e=c.limit_backward,c.limit_backward=t,c.ket=c.cursor,c.find_among_b(o,4)?(c.bra=c.cursor,c.limit_backward=e,c.cursor=c.limit-r,c.cursor>c.limit_backward&&(c.cursor--,c.bra=c.cursor,c.slice_del())):c.limit_backward=e)}this.setCurrent=function(e){c.setCurrent(e)},this.getCurrent=function(){return c.getCurrent()},this.stem=function(){var e,r=c.cursor;return function(){var e,r=c.cursor+3;if(t=c.limit,0<=r&&r<=c.limit){for(i=r;;){if(e=c.cursor,c.in_grouping(d,97,248)){c.cursor=e;break}if((c.cursor=e)>=c.limit)return;c.cursor++}for(;!c.out_grouping(d,97,248);){if(c.cursor>=c.limit)return;c.cursor++}(t=c.cursor)=t&&(r=c.limit_backward,c.limit_backward=t,c.ket=c.cursor,e=c.find_among_b(s,32),c.limit_backward=r,e))switch(c.bra=c.cursor,e){case 1:c.slice_del();break;case 2:c.in_grouping_b(u,97,229)&&c.slice_del()}}(),c.cursor=c.limit,l(),c.cursor=c.limit,function(){var e,r,i,n=c.limit-c.cursor;if(c.ket=c.cursor,c.eq_s_b(2,"st")&&(c.bra=c.cursor,c.eq_s_b(2,"ig")&&c.slice_del()),c.cursor=c.limit-n,c.cursor>=t&&(r=c.limit_backward,c.limit_backward=t,c.ket=c.cursor,e=c.find_among_b(a,5),c.limit_backward=r,e))switch(c.bra=c.cursor,e){case 1:c.slice_del(),i=c.limit-c.cursor,l(),c.cursor=c.limit-i;break;case 2:c.slice_from("løs")}}(),c.cursor=c.limit,c.cursor>=t&&(e=c.limit_backward,c.limit_backward=t,c.ket=c.cursor,c.out_grouping_b(d,97,248)?(c.bra=c.cursor,n=c.slice_to(n),c.limit_backward=e,c.eq_v_b(n)&&c.slice_del()):c.limit_backward=e),!0}},function(e){return"function"==typeof e.update?e.update(function(e){return i.setCurrent(e),i.stem(),i.getCurrent()}):(i.setCurrent(e),i.stem(),i.getCurrent())}),e.Pipeline.registerFunction(e.da.stemmer,"stemmer-da"),e.da.stopWordFilter=e.generateStopWordFilter("ad af alle alt anden at blev blive bliver da de dem den denne der deres det dette dig din disse dog du efter eller en end er et for fra ham han hans har havde have hende hendes her hos hun hvad hvis hvor i ikke ind jeg jer jo kunne man mange med meget men mig min mine mit mod ned noget nogle nu når og også om op os over på selv sig sin sine sit skal skulle som sådan thi til ud under var vi vil ville vor være været".split(" ")),e.Pipeline.registerFunction(e.da.stopWordFilter,"stopWordFilter-da")}}); \ No newline at end of file diff --git a/_static/javascripts/lunr/lunr.de.js b/_static/javascripts/lunr/lunr.de.js new file mode 100644 index 0000000000..1529892c82 --- /dev/null +++ b/_static/javascripts/lunr/lunr.de.js @@ -0,0 +1 @@ +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var _,p,r;e.de=function(){this.pipeline.reset(),this.pipeline.add(e.de.trimmer,e.de.stopWordFilter,e.de.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.de.stemmer))},e.de.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.de.trimmer=e.trimmerSupport.generateTrimmer(e.de.wordCharacters),e.Pipeline.registerFunction(e.de.trimmer,"trimmer-de"),e.de.stemmer=(_=e.stemmerSupport.Among,p=e.stemmerSupport.SnowballProgram,r=new function(){var r,n,i,s=[new _("",-1,6),new _("U",0,2),new _("Y",0,1),new _("ä",0,3),new _("ö",0,4),new _("ü",0,5)],o=[new _("e",-1,2),new _("em",-1,1),new _("en",-1,2),new _("ern",-1,1),new _("er",-1,1),new _("s",-1,3),new _("es",5,2)],c=[new _("en",-1,1),new _("er",-1,1),new _("st",-1,2),new _("est",2,1)],u=[new _("ig",-1,1),new _("lich",-1,1)],a=[new _("end",-1,1),new _("ig",-1,2),new _("ung",-1,1),new _("lich",-1,3),new _("isch",-1,2),new _("ik",-1,2),new _("heit",-1,3),new _("keit",-1,4)],t=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,8,0,32,8],d=[117,30,5],l=[117,30,4],m=new p;function h(e,r,n){return!(!m.eq_s(1,e)||(m.ket=m.cursor,!m.in_grouping(t,97,252)))&&(m.slice_from(r),m.cursor=n,!0)}function w(){for(;!m.in_grouping(t,97,252);){if(m.cursor>=m.limit)return!0;m.cursor++}for(;!m.out_grouping(t,97,252);){if(m.cursor>=m.limit)return!0;m.cursor++}return!1}function f(){return i<=m.cursor}function b(){return n<=m.cursor}this.setCurrent=function(e){m.setCurrent(e)},this.getCurrent=function(){return m.getCurrent()},this.stem=function(){var e=m.cursor;return function(){for(var e,r,n,i,s=m.cursor;;)if(e=m.cursor,m.bra=e,m.eq_s(1,"ß"))m.ket=m.cursor,m.slice_from("ss");else{if(e>=m.limit)break;m.cursor=e+1}for(m.cursor=s;;)for(r=m.cursor;;){if(n=m.cursor,m.in_grouping(t,97,252)){if(i=m.cursor,m.bra=i,h("u","U",n))break;if(m.cursor=i,h("y","Y",n))break}if(n>=m.limit)return m.cursor=r;m.cursor=n+1}}(),m.cursor=e,function(){i=m.limit,n=i;var e=m.cursor+3;0<=e&&e<=m.limit&&(r=e,w()||((i=m.cursor)=m.limit)return;m.cursor++}}}(),!0}},function(e){return"function"==typeof e.update?e.update(function(e){return r.setCurrent(e),r.stem(),r.getCurrent()}):(r.setCurrent(e),r.stem(),r.getCurrent())}),e.Pipeline.registerFunction(e.de.stemmer,"stemmer-de"),e.de.stopWordFilter=e.generateStopWordFilter("aber alle allem allen aller alles als also am an ander andere anderem anderen anderer anderes anderm andern anderr anders auch auf aus bei bin bis bist da damit dann das dasselbe dazu daß dein deine deinem deinen deiner deines dem demselben den denn denselben der derer derselbe derselben des desselben dessen dich die dies diese dieselbe dieselben diesem diesen dieser dieses dir doch dort du durch ein eine einem einen einer eines einig einige einigem einigen einiger einiges einmal er es etwas euch euer eure eurem euren eurer eures für gegen gewesen hab habe haben hat hatte hatten hier hin hinter ich ihm ihn ihnen ihr ihre ihrem ihren ihrer ihres im in indem ins ist jede jedem jeden jeder jedes jene jenem jenen jener jenes jetzt kann kein keine keinem keinen keiner keines können könnte machen man manche manchem manchen mancher manches mein meine meinem meinen meiner meines mich mir mit muss musste nach nicht nichts noch nun nur ob oder ohne sehr sein seine seinem seinen seiner seines selbst sich sie sind so solche solchem solchen solcher solches soll sollte sondern sonst um und uns unse unsem unsen unser unses unter viel vom von vor war waren warst was weg weil weiter welche welchem welchen welcher welches wenn werde werden wie wieder will wir wird wirst wo wollen wollte während würde würden zu zum zur zwar zwischen über".split(" ")),e.Pipeline.registerFunction(e.de.stopWordFilter,"stopWordFilter-de")}}); \ No newline at end of file diff --git a/_static/javascripts/lunr/lunr.du.js b/_static/javascripts/lunr/lunr.du.js new file mode 100644 index 0000000000..52632004a2 --- /dev/null +++ b/_static/javascripts/lunr/lunr.du.js @@ -0,0 +1 @@ +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var v,q,r;console.warn('[Lunr Languages] Please use the "nl" instead of the "du". The "nl" code is the standard code for Dutch language, and "du" will be removed in the next major versions.'),e.du=function(){this.pipeline.reset(),this.pipeline.add(e.du.trimmer,e.du.stopWordFilter,e.du.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.du.stemmer))},e.du.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.du.trimmer=e.trimmerSupport.generateTrimmer(e.du.wordCharacters),e.Pipeline.registerFunction(e.du.trimmer,"trimmer-du"),e.du.stemmer=(v=e.stemmerSupport.Among,q=e.stemmerSupport.SnowballProgram,r=new function(){var r,i,u,o=[new v("",-1,6),new v("á",0,1),new v("ä",0,1),new v("é",0,2),new v("ë",0,2),new v("í",0,3),new v("ï",0,3),new v("ó",0,4),new v("ö",0,4),new v("ú",0,5),new v("ü",0,5)],n=[new v("",-1,3),new v("I",0,2),new v("Y",0,1)],t=[new v("dd",-1,-1),new v("kk",-1,-1),new v("tt",-1,-1)],c=[new v("ene",-1,2),new v("se",-1,3),new v("en",-1,2),new v("heden",2,1),new v("s",-1,3)],a=[new v("end",-1,1),new v("ig",-1,2),new v("ing",-1,1),new v("lijk",-1,3),new v("baar",-1,4),new v("bar",-1,5)],l=[new v("aa",-1,-1),new v("ee",-1,-1),new v("oo",-1,-1),new v("uu",-1,-1)],m=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,128],d=[1,0,0,17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,128],f=[17,67,16,1,0,0,0,0,0,0,0,0,0,0,0,0,128],_=new q;function s(e){return(_.cursor=e)>=_.limit||(_.cursor++,!1)}function w(){for(;!_.in_grouping(m,97,232);){if(_.cursor>=_.limit)return!0;_.cursor++}for(;!_.out_grouping(m,97,232);){if(_.cursor>=_.limit)return!0;_.cursor++}return!1}function b(){return i<=_.cursor}function p(){return r<=_.cursor}function g(){var e=_.limit-_.cursor;_.find_among_b(t,3)&&(_.cursor=_.limit-e,_.ket=_.cursor,_.cursor>_.limit_backward&&(_.cursor--,_.bra=_.cursor,_.slice_del()))}function h(){var e;u=!1,_.ket=_.cursor,_.eq_s_b(1,"e")&&(_.bra=_.cursor,b()&&(e=_.limit-_.cursor,_.out_grouping_b(m,97,232)&&(_.cursor=_.limit-e,_.slice_del(),u=!0,g())))}function k(){var e;b()&&(e=_.limit-_.cursor,_.out_grouping_b(m,97,232)&&(_.cursor=_.limit-e,_.eq_s_b(3,"gem")||(_.cursor=_.limit-e,_.slice_del(),g())))}this.setCurrent=function(e){_.setCurrent(e)},this.getCurrent=function(){return _.getCurrent()},this.stem=function(){var e=_.cursor;return function(){for(var e,r,i,n=_.cursor;;){if(_.bra=_.cursor,e=_.find_among(o,11))switch(_.ket=_.cursor,e){case 1:_.slice_from("a");continue;case 2:_.slice_from("e");continue;case 3:_.slice_from("i");continue;case 4:_.slice_from("o");continue;case 5:_.slice_from("u");continue;case 6:if(_.cursor>=_.limit)break;_.cursor++;continue}break}for(_.cursor=n,_.bra=n,_.eq_s(1,"y")?(_.ket=_.cursor,_.slice_from("Y")):_.cursor=n;;)if(r=_.cursor,_.in_grouping(m,97,232)){if(i=_.cursor,_.bra=i,_.eq_s(1,"i"))_.ket=_.cursor,_.in_grouping(m,97,232)&&(_.slice_from("I"),_.cursor=r);else if(_.cursor=i,_.eq_s(1,"y"))_.ket=_.cursor,_.slice_from("Y"),_.cursor=r;else if(s(r))break}else if(s(r))break}(),_.cursor=e,i=_.limit,r=i,w()||((i=_.cursor)<3&&(i=3),w()||(r=_.cursor)),_.limit_backward=e,_.cursor=_.limit,function(){var e,r,i,n,o,t,s=_.limit-_.cursor;if(_.ket=_.cursor,e=_.find_among_b(c,5))switch(_.bra=_.cursor,e){case 1:b()&&_.slice_from("heid");break;case 2:k();break;case 3:b()&&_.out_grouping_b(f,97,232)&&_.slice_del()}if(_.cursor=_.limit-s,h(),_.cursor=_.limit-s,_.ket=_.cursor,_.eq_s_b(4,"heid")&&(_.bra=_.cursor,p()&&(r=_.limit-_.cursor,_.eq_s_b(1,"c")||(_.cursor=_.limit-r,_.slice_del(),_.ket=_.cursor,_.eq_s_b(2,"en")&&(_.bra=_.cursor,k())))),_.cursor=_.limit-s,_.ket=_.cursor,e=_.find_among_b(a,6))switch(_.bra=_.cursor,e){case 1:if(p()){if(_.slice_del(),i=_.limit-_.cursor,_.ket=_.cursor,_.eq_s_b(2,"ig")&&(_.bra=_.cursor,p()&&(n=_.limit-_.cursor,!_.eq_s_b(1,"e")))){_.cursor=_.limit-n,_.slice_del();break}_.cursor=_.limit-i,g()}break;case 2:p()&&(o=_.limit-_.cursor,_.eq_s_b(1,"e")||(_.cursor=_.limit-o,_.slice_del()));break;case 3:p()&&(_.slice_del(),h());break;case 4:p()&&_.slice_del();break;case 5:p()&&u&&_.slice_del()}_.cursor=_.limit-s,_.out_grouping_b(d,73,232)&&(t=_.limit-_.cursor,_.find_among_b(l,4)&&_.out_grouping_b(m,97,232)&&(_.cursor=_.limit-t,_.ket=_.cursor,_.cursor>_.limit_backward&&(_.cursor--,_.bra=_.cursor,_.slice_del())))}(),_.cursor=_.limit_backward,function(){for(var e;;)if(_.bra=_.cursor,e=_.find_among(n,3))switch(_.ket=_.cursor,e){case 1:_.slice_from("y");break;case 2:_.slice_from("i");break;case 3:if(_.cursor>=_.limit)return;_.cursor++}}(),!0}},function(e){return"function"==typeof e.update?e.update(function(e){return r.setCurrent(e),r.stem(),r.getCurrent()}):(r.setCurrent(e),r.stem(),r.getCurrent())}),e.Pipeline.registerFunction(e.du.stemmer,"stemmer-du"),e.du.stopWordFilter=e.generateStopWordFilter(" aan al alles als altijd andere ben bij daar dan dat de der deze die dit doch doen door dus een eens en er ge geen geweest haar had heb hebben heeft hem het hier hij hoe hun iemand iets ik in is ja je kan kon kunnen maar me meer men met mij mijn moet na naar niet niets nog nu of om omdat onder ons ook op over reeds te tegen toch toen tot u uit uw van veel voor want waren was wat werd wezen wie wil worden wordt zal ze zelf zich zij zijn zo zonder zou".split(" ")),e.Pipeline.registerFunction(e.du.stopWordFilter,"stopWordFilter-du")}}); \ No newline at end of file diff --git a/_static/javascripts/lunr/lunr.es.js b/_static/javascripts/lunr/lunr.es.js new file mode 100644 index 0000000000..9de6c09cb4 --- /dev/null +++ b/_static/javascripts/lunr/lunr.es.js @@ -0,0 +1 @@ +!function(e,s){"function"==typeof define&&define.amd?define(s):"object"==typeof exports?module.exports=s():s()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var C,P,s;e.es=function(){this.pipeline.reset(),this.pipeline.add(e.es.trimmer,e.es.stopWordFilter,e.es.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.es.stemmer))},e.es.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.es.trimmer=e.trimmerSupport.generateTrimmer(e.es.wordCharacters),e.Pipeline.registerFunction(e.es.trimmer,"trimmer-es"),e.es.stemmer=(C=e.stemmerSupport.Among,P=e.stemmerSupport.SnowballProgram,s=new function(){var r,n,i,a=[new C("",-1,6),new C("á",0,1),new C("é",0,2),new C("í",0,3),new C("ó",0,4),new C("ú",0,5)],t=[new C("la",-1,-1),new C("sela",0,-1),new C("le",-1,-1),new C("me",-1,-1),new C("se",-1,-1),new C("lo",-1,-1),new C("selo",5,-1),new C("las",-1,-1),new C("selas",7,-1),new C("les",-1,-1),new C("los",-1,-1),new C("selos",10,-1),new C("nos",-1,-1)],o=[new C("ando",-1,6),new C("iendo",-1,6),new C("yendo",-1,7),new C("ándo",-1,2),new C("iéndo",-1,1),new C("ar",-1,6),new C("er",-1,6),new C("ir",-1,6),new C("ár",-1,3),new C("ér",-1,4),new C("ír",-1,5)],s=[new C("ic",-1,-1),new C("ad",-1,-1),new C("os",-1,-1),new C("iv",-1,1)],u=[new C("able",-1,1),new C("ible",-1,1),new C("ante",-1,1)],w=[new C("ic",-1,1),new C("abil",-1,1),new C("iv",-1,1)],c=[new C("ica",-1,1),new C("ancia",-1,2),new C("encia",-1,5),new C("adora",-1,2),new C("osa",-1,1),new C("ista",-1,1),new C("iva",-1,9),new C("anza",-1,1),new C("logía",-1,3),new C("idad",-1,8),new C("able",-1,1),new C("ible",-1,1),new C("ante",-1,2),new C("mente",-1,7),new C("amente",13,6),new C("ación",-1,2),new C("ución",-1,4),new C("ico",-1,1),new C("ismo",-1,1),new C("oso",-1,1),new C("amiento",-1,1),new C("imiento",-1,1),new C("ivo",-1,9),new C("ador",-1,2),new C("icas",-1,1),new C("ancias",-1,2),new C("encias",-1,5),new C("adoras",-1,2),new C("osas",-1,1),new C("istas",-1,1),new C("ivas",-1,9),new C("anzas",-1,1),new C("logías",-1,3),new C("idades",-1,8),new C("ables",-1,1),new C("ibles",-1,1),new C("aciones",-1,2),new C("uciones",-1,4),new C("adores",-1,2),new C("antes",-1,2),new C("icos",-1,1),new C("ismos",-1,1),new C("osos",-1,1),new C("amientos",-1,1),new C("imientos",-1,1),new C("ivos",-1,9)],m=[new C("ya",-1,1),new C("ye",-1,1),new C("yan",-1,1),new C("yen",-1,1),new C("yeron",-1,1),new C("yendo",-1,1),new C("yo",-1,1),new C("yas",-1,1),new C("yes",-1,1),new C("yais",-1,1),new C("yamos",-1,1),new C("yó",-1,1)],l=[new C("aba",-1,2),new C("ada",-1,2),new C("ida",-1,2),new C("ara",-1,2),new C("iera",-1,2),new C("ía",-1,2),new C("aría",5,2),new C("ería",5,2),new C("iría",5,2),new C("ad",-1,2),new C("ed",-1,2),new C("id",-1,2),new C("ase",-1,2),new C("iese",-1,2),new C("aste",-1,2),new C("iste",-1,2),new C("an",-1,2),new C("aban",16,2),new C("aran",16,2),new C("ieran",16,2),new C("ían",16,2),new C("arían",20,2),new C("erían",20,2),new C("irían",20,2),new C("en",-1,1),new C("asen",24,2),new C("iesen",24,2),new C("aron",-1,2),new C("ieron",-1,2),new C("arán",-1,2),new C("erán",-1,2),new C("irán",-1,2),new C("ado",-1,2),new C("ido",-1,2),new C("ando",-1,2),new C("iendo",-1,2),new C("ar",-1,2),new C("er",-1,2),new C("ir",-1,2),new C("as",-1,2),new C("abas",39,2),new C("adas",39,2),new C("idas",39,2),new C("aras",39,2),new C("ieras",39,2),new C("ías",39,2),new C("arías",45,2),new C("erías",45,2),new C("irías",45,2),new C("es",-1,1),new C("ases",49,2),new C("ieses",49,2),new C("abais",-1,2),new C("arais",-1,2),new C("ierais",-1,2),new C("íais",-1,2),new C("aríais",55,2),new C("eríais",55,2),new C("iríais",55,2),new C("aseis",-1,2),new C("ieseis",-1,2),new C("asteis",-1,2),new C("isteis",-1,2),new C("áis",-1,2),new C("éis",-1,1),new C("aréis",64,2),new C("eréis",64,2),new C("iréis",64,2),new C("ados",-1,2),new C("idos",-1,2),new C("amos",-1,2),new C("ábamos",70,2),new C("áramos",70,2),new C("iéramos",70,2),new C("íamos",70,2),new C("aríamos",74,2),new C("eríamos",74,2),new C("iríamos",74,2),new C("emos",-1,1),new C("aremos",78,2),new C("eremos",78,2),new C("iremos",78,2),new C("ásemos",78,2),new C("iésemos",78,2),new C("imos",-1,2),new C("arás",-1,2),new C("erás",-1,2),new C("irás",-1,2),new C("ís",-1,2),new C("ará",-1,2),new C("erá",-1,2),new C("irá",-1,2),new C("aré",-1,2),new C("eré",-1,2),new C("iré",-1,2),new C("ió",-1,2)],d=[new C("a",-1,1),new C("e",-1,2),new C("o",-1,1),new C("os",-1,1),new C("á",-1,1),new C("é",-1,2),new C("í",-1,1),new C("ó",-1,1)],b=[17,65,16,0,0,0,0,0,0,0,0,0,0,0,0,0,1,17,4,10],f=new P;function _(){if(f.out_grouping(b,97,252)){for(;!f.in_grouping(b,97,252);){if(f.cursor>=f.limit)return!0;f.cursor++}return!1}return!0}function h(){var e,s=f.cursor;if(function(){if(f.in_grouping(b,97,252)){var e=f.cursor;if(_()){if(f.cursor=e,!f.in_grouping(b,97,252))return!0;for(;!f.out_grouping(b,97,252);){if(f.cursor>=f.limit)return!0;f.cursor++}}return!1}return!0}()){if(f.cursor=s,!f.out_grouping(b,97,252))return;if(e=f.cursor,_()){if(f.cursor=e,!f.in_grouping(b,97,252)||f.cursor>=f.limit)return;f.cursor++}}i=f.cursor}function v(){for(;!f.in_grouping(b,97,252);){if(f.cursor>=f.limit)return!1;f.cursor++}for(;!f.out_grouping(b,97,252);){if(f.cursor>=f.limit)return!1;f.cursor++}return!0}function p(){return i<=f.cursor}function g(){return r<=f.cursor}function k(e,s){if(!g())return!0;f.slice_del(),f.ket=f.cursor;var r=f.find_among_b(e,s);return r&&(f.bra=f.cursor,1==r&&g()&&f.slice_del()),!1}function y(e){return!g()||(f.slice_del(),f.ket=f.cursor,f.eq_s_b(2,e)&&(f.bra=f.cursor,g()&&f.slice_del()),!1)}function q(){var e;if(f.ket=f.cursor,e=f.find_among_b(c,46)){switch(f.bra=f.cursor,e){case 1:if(!g())return!1;f.slice_del();break;case 2:if(y("ic"))return!1;break;case 3:if(!g())return!1;f.slice_from("log");break;case 4:if(!g())return!1;f.slice_from("u");break;case 5:if(!g())return!1;f.slice_from("ente");break;case 6:if(!(n<=f.cursor))return!1;f.slice_del(),f.ket=f.cursor,(e=f.find_among_b(s,4))&&(f.bra=f.cursor,g()&&(f.slice_del(),1==e&&(f.ket=f.cursor,f.eq_s_b(2,"at")&&(f.bra=f.cursor,g()&&f.slice_del()))));break;case 7:if(k(u,3))return!1;break;case 8:if(k(w,3))return!1;break;case 9:if(y("at"))return!1}return!0}return!1}this.setCurrent=function(e){f.setCurrent(e)},this.getCurrent=function(){return f.getCurrent()},this.stem=function(){var e,s=f.cursor;return e=f.cursor,i=f.limit,r=n=i,h(),f.cursor=e,v()&&(n=f.cursor,v()&&(r=f.cursor)),f.limit_backward=s,f.cursor=f.limit,function(){var e;if(f.ket=f.cursor,f.find_among_b(t,13)&&(f.bra=f.cursor,(e=f.find_among_b(o,11))&&p()))switch(e){case 1:f.bra=f.cursor,f.slice_from("iendo");break;case 2:f.bra=f.cursor,f.slice_from("ando");break;case 3:f.bra=f.cursor,f.slice_from("ar");break;case 4:f.bra=f.cursor,f.slice_from("er");break;case 5:f.bra=f.cursor,f.slice_from("ir");break;case 6:f.slice_del();break;case 7:f.eq_s_b(1,"u")&&f.slice_del()}}(),f.cursor=f.limit,q()||(f.cursor=f.limit,function(){var e,s;if(f.cursor>=i&&(s=f.limit_backward,f.limit_backward=i,f.ket=f.cursor,e=f.find_among_b(m,12),f.limit_backward=s,e)){if(f.bra=f.cursor,1==e){if(!f.eq_s_b(1,"u"))return!1;f.slice_del()}return!0}return!1}()||(f.cursor=f.limit,function(){var e,s,r,n;if(f.cursor>=i&&(s=f.limit_backward,f.limit_backward=i,f.ket=f.cursor,e=f.find_among_b(l,96),f.limit_backward=s,e))switch(f.bra=f.cursor,e){case 1:r=f.limit-f.cursor,f.eq_s_b(1,"u")?(n=f.limit-f.cursor,f.eq_s_b(1,"g")?f.cursor=f.limit-n:f.cursor=f.limit-r):f.cursor=f.limit-r,f.bra=f.cursor;case 2:f.slice_del()}}())),f.cursor=f.limit,function(){var e,s;if(f.ket=f.cursor,e=f.find_among_b(d,8))switch(f.bra=f.cursor,e){case 1:p()&&f.slice_del();break;case 2:p()&&(f.slice_del(),f.ket=f.cursor,f.eq_s_b(1,"u")&&(f.bra=f.cursor,s=f.limit-f.cursor,f.eq_s_b(1,"g")&&(f.cursor=f.limit-s,p()&&f.slice_del())))}}(),f.cursor=f.limit_backward,function(){for(var e;;){if(f.bra=f.cursor,e=f.find_among(a,6))switch(f.ket=f.cursor,e){case 1:f.slice_from("a");continue;case 2:f.slice_from("e");continue;case 3:f.slice_from("i");continue;case 4:f.slice_from("o");continue;case 5:f.slice_from("u");continue;case 6:if(f.cursor>=f.limit)break;f.cursor++;continue}break}}(),!0}},function(e){return"function"==typeof e.update?e.update(function(e){return s.setCurrent(e),s.stem(),s.getCurrent()}):(s.setCurrent(e),s.stem(),s.getCurrent())}),e.Pipeline.registerFunction(e.es.stemmer,"stemmer-es"),e.es.stopWordFilter=e.generateStopWordFilter("a al algo algunas algunos ante antes como con contra cual cuando de del desde donde durante e el ella ellas ellos en entre era erais eran eras eres es esa esas ese eso esos esta estaba estabais estaban estabas estad estada estadas estado estados estamos estando estar estaremos estará estarán estarás estaré estaréis estaría estaríais estaríamos estarían estarías estas este estemos esto estos estoy estuve estuviera estuvierais estuvieran estuvieras estuvieron estuviese estuvieseis estuviesen estuvieses estuvimos estuviste estuvisteis estuviéramos estuviésemos estuvo está estábamos estáis están estás esté estéis estén estés fue fuera fuerais fueran fueras fueron fuese fueseis fuesen fueses fui fuimos fuiste fuisteis fuéramos fuésemos ha habida habidas habido habidos habiendo habremos habrá habrán habrás habré habréis habría habríais habríamos habrían habrías habéis había habíais habíamos habían habías han has hasta hay haya hayamos hayan hayas hayáis he hemos hube hubiera hubierais hubieran hubieras hubieron hubiese hubieseis hubiesen hubieses hubimos hubiste hubisteis hubiéramos hubiésemos hubo la las le les lo los me mi mis mucho muchos muy más mí mía mías mío míos nada ni no nos nosotras nosotros nuestra nuestras nuestro nuestros o os otra otras otro otros para pero poco por porque que quien quienes qué se sea seamos sean seas seremos será serán serás seré seréis sería seríais seríamos serían serías seáis sido siendo sin sobre sois somos son soy su sus suya suyas suyo suyos sí también tanto te tendremos tendrá tendrán tendrás tendré tendréis tendría tendríais tendríamos tendrían tendrías tened tenemos tenga tengamos tengan tengas tengo tengáis tenida tenidas tenido tenidos teniendo tenéis tenía teníais teníamos tenían tenías ti tiene tienen tienes todo todos tu tus tuve tuviera tuvierais tuvieran tuvieras tuvieron tuviese tuvieseis tuviesen tuvieses tuvimos tuviste tuvisteis tuviéramos tuviésemos tuvo tuya tuyas tuyo tuyos tú un una uno unos vosotras vosotros vuestra vuestras vuestro vuestros y ya yo él éramos".split(" ")),e.Pipeline.registerFunction(e.es.stopWordFilter,"stopWordFilter-es")}}); \ No newline at end of file diff --git a/_static/javascripts/lunr/lunr.fi.js b/_static/javascripts/lunr/lunr.fi.js new file mode 100644 index 0000000000..2f9bf5aebd --- /dev/null +++ b/_static/javascripts/lunr/lunr.fi.js @@ -0,0 +1 @@ +!function(i,e){"function"==typeof define&&define.amd?define(e):"object"==typeof exports?module.exports=e():e()(i.lunr)}(this,function(){return function(i){if(void 0===i)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===i.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var v,C,e;i.fi=function(){this.pipeline.reset(),this.pipeline.add(i.fi.trimmer,i.fi.stopWordFilter,i.fi.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(i.fi.stemmer))},i.fi.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",i.fi.trimmer=i.trimmerSupport.generateTrimmer(i.fi.wordCharacters),i.Pipeline.registerFunction(i.fi.trimmer,"trimmer-fi"),i.fi.stemmer=(v=i.stemmerSupport.Among,C=i.stemmerSupport.SnowballProgram,e=new function(){var n,t,l,o,r=[new v("pa",-1,1),new v("sti",-1,2),new v("kaan",-1,1),new v("han",-1,1),new v("kin",-1,1),new v("hän",-1,1),new v("kään",-1,1),new v("ko",-1,1),new v("pä",-1,1),new v("kö",-1,1)],s=[new v("lla",-1,-1),new v("na",-1,-1),new v("ssa",-1,-1),new v("ta",-1,-1),new v("lta",3,-1),new v("sta",3,-1)],a=[new v("llä",-1,-1),new v("nä",-1,-1),new v("ssä",-1,-1),new v("tä",-1,-1),new v("ltä",3,-1),new v("stä",3,-1)],u=[new v("lle",-1,-1),new v("ine",-1,-1)],c=[new v("nsa",-1,3),new v("mme",-1,3),new v("nne",-1,3),new v("ni",-1,2),new v("si",-1,1),new v("an",-1,4),new v("en",-1,6),new v("än",-1,5),new v("nsä",-1,3)],i=[new v("aa",-1,-1),new v("ee",-1,-1),new v("ii",-1,-1),new v("oo",-1,-1),new v("uu",-1,-1),new v("ää",-1,-1),new v("öö",-1,-1)],m=[new v("a",-1,8),new v("lla",0,-1),new v("na",0,-1),new v("ssa",0,-1),new v("ta",0,-1),new v("lta",4,-1),new v("sta",4,-1),new v("tta",4,9),new v("lle",-1,-1),new v("ine",-1,-1),new v("ksi",-1,-1),new v("n",-1,7),new v("han",11,1),new v("den",11,-1,q),new v("seen",11,-1,j),new v("hen",11,2),new v("tten",11,-1,q),new v("hin",11,3),new v("siin",11,-1,q),new v("hon",11,4),new v("hän",11,5),new v("hön",11,6),new v("ä",-1,8),new v("llä",22,-1),new v("nä",22,-1),new v("ssä",22,-1),new v("tä",22,-1),new v("ltä",26,-1),new v("stä",26,-1),new v("ttä",26,9)],w=[new v("eja",-1,-1),new v("mma",-1,1),new v("imma",1,-1),new v("mpa",-1,1),new v("impa",3,-1),new v("mmi",-1,1),new v("immi",5,-1),new v("mpi",-1,1),new v("impi",7,-1),new v("ejä",-1,-1),new v("mmä",-1,1),new v("immä",10,-1),new v("mpä",-1,1),new v("impä",12,-1)],_=[new v("i",-1,-1),new v("j",-1,-1)],k=[new v("mma",-1,1),new v("imma",0,-1)],b=[17,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8],d=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,8,0,32],e=[17,65,16,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,32],f=[17,97,24,1,0,0,0,0,0,0,0,0,0,0,0,0,8,0,32],h=new C;function p(){for(var i;i=h.cursor,!h.in_grouping(d,97,246);){if((h.cursor=i)>=h.limit)return!0;h.cursor++}for(h.cursor=i;!h.out_grouping(d,97,246);){if(h.cursor>=h.limit)return!0;h.cursor++}return!1}function g(){var i,e;if(h.cursor>=o)if(e=h.limit_backward,h.limit_backward=o,h.ket=h.cursor,i=h.find_among_b(r,10)){switch(h.bra=h.cursor,h.limit_backward=e,i){case 1:if(!h.in_grouping_b(f,97,246))return;break;case 2:if(!(l<=h.cursor))return}h.slice_del()}else h.limit_backward=e}function j(){return h.find_among_b(i,7)}function q(){return h.eq_s_b(1,"i")&&h.in_grouping_b(e,97,246)}this.setCurrent=function(i){h.setCurrent(i)},this.getCurrent=function(){return h.getCurrent()},this.stem=function(){var i,e=h.cursor;return o=h.limit,l=o,p()||(o=h.cursor,p()||(l=h.cursor)),n=!1,h.limit_backward=e,h.cursor=h.limit,g(),h.cursor=h.limit,function(){var i,e,r;if(h.cursor>=o)if(e=h.limit_backward,h.limit_backward=o,h.ket=h.cursor,i=h.find_among_b(c,9))switch(h.bra=h.cursor,h.limit_backward=e,i){case 1:r=h.limit-h.cursor,h.eq_s_b(1,"k")||(h.cursor=h.limit-r,h.slice_del());break;case 2:h.slice_del(),h.ket=h.cursor,h.eq_s_b(3,"kse")&&(h.bra=h.cursor,h.slice_from("ksi"));break;case 3:h.slice_del();break;case 4:h.find_among_b(s,6)&&h.slice_del();break;case 5:h.find_among_b(a,6)&&h.slice_del();break;case 6:h.find_among_b(u,2)&&h.slice_del()}else h.limit_backward=e}(),h.cursor=h.limit,function(){var i,e,r;if(h.cursor>=o)if(e=h.limit_backward,h.limit_backward=o,h.ket=h.cursor,i=h.find_among_b(m,30)){switch(h.bra=h.cursor,h.limit_backward=e,i){case 1:if(!h.eq_s_b(1,"a"))return;break;case 2:case 9:if(!h.eq_s_b(1,"e"))return;break;case 3:if(!h.eq_s_b(1,"i"))return;break;case 4:if(!h.eq_s_b(1,"o"))return;break;case 5:if(!h.eq_s_b(1,"ä"))return;break;case 6:if(!h.eq_s_b(1,"ö"))return;break;case 7:if(r=h.limit-h.cursor,!j()&&(h.cursor=h.limit-r,!h.eq_s_b(2,"ie"))){h.cursor=h.limit-r;break}if(h.cursor=h.limit-r,h.cursor<=h.limit_backward){h.cursor=h.limit-r;break}h.cursor--,h.bra=h.cursor;break;case 8:if(!h.in_grouping_b(d,97,246)||!h.out_grouping_b(d,97,246))return}h.slice_del(),n=!0}else h.limit_backward=e}(),h.cursor=h.limit,function(){var i,e,r;if(h.cursor>=l)if(e=h.limit_backward,h.limit_backward=l,h.ket=h.cursor,i=h.find_among_b(w,14)){if(h.bra=h.cursor,h.limit_backward=e,1==i){if(r=h.limit-h.cursor,h.eq_s_b(2,"po"))return;h.cursor=h.limit-r}h.slice_del()}else h.limit_backward=e}(),h.cursor=h.limit,h.cursor=(n?h.cursor>=o&&(i=h.limit_backward,h.limit_backward=o,h.ket=h.cursor,h.find_among_b(_,2)?(h.bra=h.cursor,h.limit_backward=i,h.slice_del()):h.limit_backward=i):(h.cursor=h.limit,function(){var i,e,r,n,t,s;if(h.cursor>=o){if(e=h.limit_backward,h.limit_backward=o,h.ket=h.cursor,h.eq_s_b(1,"t")&&(h.bra=h.cursor,r=h.limit-h.cursor,h.in_grouping_b(d,97,246)&&(h.cursor=h.limit-r,h.slice_del(),h.limit_backward=e,n=h.limit-h.cursor,h.cursor>=l&&(h.cursor=l,t=h.limit_backward,h.limit_backward=h.cursor,h.cursor=h.limit-n,h.ket=h.cursor,i=h.find_among_b(k,2))))){if(h.bra=h.cursor,h.limit_backward=t,1==i){if(s=h.limit-h.cursor,h.eq_s_b(2,"po"))return;h.cursor=h.limit-s}return h.slice_del()}h.limit_backward=e}}()),h.limit),function(){var i,e,r,n;if(h.cursor>=o){for(i=h.limit_backward,h.limit_backward=o,e=h.limit-h.cursor,j()&&(h.cursor=h.limit-e,h.ket=h.cursor,h.cursor>h.limit_backward&&(h.cursor--,h.bra=h.cursor,h.slice_del())),h.cursor=h.limit-e,h.ket=h.cursor,h.in_grouping_b(b,97,228)&&(h.bra=h.cursor,h.out_grouping_b(d,97,246)&&h.slice_del()),h.cursor=h.limit-e,h.ket=h.cursor,h.eq_s_b(1,"j")&&(h.bra=h.cursor,r=h.limit-h.cursor,h.eq_s_b(1,"o")?h.slice_del():(h.cursor=h.limit-r,h.eq_s_b(1,"u")&&h.slice_del())),h.cursor=h.limit-e,h.ket=h.cursor,h.eq_s_b(1,"o")&&(h.bra=h.cursor,h.eq_s_b(1,"j")&&h.slice_del()),h.cursor=h.limit-e,h.limit_backward=i;;){if(n=h.limit-h.cursor,h.out_grouping_b(d,97,246)){h.cursor=h.limit-n;break}if(h.cursor=h.limit-n,h.cursor<=h.limit_backward)return;h.cursor--}h.ket=h.cursor,h.cursor>h.limit_backward&&(h.cursor--,h.bra=h.cursor,t=h.slice_to(),h.eq_v_b(t)&&h.slice_del())}}(),!0}},function(i){return"function"==typeof i.update?i.update(function(i){return e.setCurrent(i),e.stem(),e.getCurrent()}):(e.setCurrent(i),e.stem(),e.getCurrent())}),i.Pipeline.registerFunction(i.fi.stemmer,"stemmer-fi"),i.fi.stopWordFilter=i.generateStopWordFilter("ei eivät emme en et ette että he heidän heidät heihin heille heillä heiltä heissä heistä heitä hän häneen hänelle hänellä häneltä hänen hänessä hänestä hänet häntä itse ja johon joiden joihin joiksi joilla joille joilta joina joissa joista joita joka joksi jolla jolle jolta jona jonka jos jossa josta jota jotka kanssa keiden keihin keiksi keille keillä keiltä keinä keissä keistä keitä keneen keneksi kenelle kenellä keneltä kenen kenenä kenessä kenestä kenet ketkä ketkä ketä koska kuin kuka kun me meidän meidät meihin meille meillä meiltä meissä meistä meitä mihin miksi mikä mille millä miltä minkä minkä minua minulla minulle minulta minun minussa minusta minut minuun minä minä missä mistä mitkä mitä mukaan mutta ne niiden niihin niiksi niille niillä niiltä niin niin niinä niissä niistä niitä noiden noihin noiksi noilla noille noilta noin noina noissa noista noita nuo nyt näiden näihin näiksi näille näillä näiltä näinä näissä näistä näitä nämä ole olemme olen olet olette oli olimme olin olisi olisimme olisin olisit olisitte olisivat olit olitte olivat olla olleet ollut on ovat poikki se sekä sen siihen siinä siitä siksi sille sillä sillä siltä sinua sinulla sinulle sinulta sinun sinussa sinusta sinut sinuun sinä sinä sitä tai te teidän teidät teihin teille teillä teiltä teissä teistä teitä tuo tuohon tuoksi tuolla tuolle tuolta tuon tuona tuossa tuosta tuota tähän täksi tälle tällä tältä tämä tämän tänä tässä tästä tätä vaan vai vaikka yli".split(" ")),i.Pipeline.registerFunction(i.fi.stopWordFilter,"stopWordFilter-fi")}}); \ No newline at end of file diff --git a/_static/javascripts/lunr/lunr.fr.js b/_static/javascripts/lunr/lunr.fr.js new file mode 100644 index 0000000000..078d0cab70 --- /dev/null +++ b/_static/javascripts/lunr/lunr.fr.js @@ -0,0 +1 @@ +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var r,y,s;e.fr=function(){this.pipeline.reset(),this.pipeline.add(e.fr.trimmer,e.fr.stopWordFilter,e.fr.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.fr.stemmer))},e.fr.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.fr.trimmer=e.trimmerSupport.generateTrimmer(e.fr.wordCharacters),e.Pipeline.registerFunction(e.fr.trimmer,"trimmer-fr"),e.fr.stemmer=(r=e.stemmerSupport.Among,y=e.stemmerSupport.SnowballProgram,s=new function(){var s,i,t,n=[new r("col",-1,-1),new r("par",-1,-1),new r("tap",-1,-1)],u=[new r("",-1,4),new r("I",0,1),new r("U",0,2),new r("Y",0,3)],o=[new r("iqU",-1,3),new r("abl",-1,3),new r("Ièr",-1,4),new r("ièr",-1,4),new r("eus",-1,2),new r("iv",-1,1)],c=[new r("ic",-1,2),new r("abil",-1,1),new r("iv",-1,3)],a=[new r("iqUe",-1,1),new r("atrice",-1,2),new r("ance",-1,1),new r("ence",-1,5),new r("logie",-1,3),new r("able",-1,1),new r("isme",-1,1),new r("euse",-1,11),new r("iste",-1,1),new r("ive",-1,8),new r("if",-1,8),new r("usion",-1,4),new r("ation",-1,2),new r("ution",-1,4),new r("ateur",-1,2),new r("iqUes",-1,1),new r("atrices",-1,2),new r("ances",-1,1),new r("ences",-1,5),new r("logies",-1,3),new r("ables",-1,1),new r("ismes",-1,1),new r("euses",-1,11),new r("istes",-1,1),new r("ives",-1,8),new r("ifs",-1,8),new r("usions",-1,4),new r("ations",-1,2),new r("utions",-1,4),new r("ateurs",-1,2),new r("ments",-1,15),new r("ements",30,6),new r("issements",31,12),new r("ités",-1,7),new r("ment",-1,15),new r("ement",34,6),new r("issement",35,12),new r("amment",34,13),new r("emment",34,14),new r("aux",-1,10),new r("eaux",39,9),new r("eux",-1,1),new r("ité",-1,7)],l=[new r("ira",-1,1),new r("ie",-1,1),new r("isse",-1,1),new r("issante",-1,1),new r("i",-1,1),new r("irai",4,1),new r("ir",-1,1),new r("iras",-1,1),new r("ies",-1,1),new r("îmes",-1,1),new r("isses",-1,1),new r("issantes",-1,1),new r("îtes",-1,1),new r("is",-1,1),new r("irais",13,1),new r("issais",13,1),new r("irions",-1,1),new r("issions",-1,1),new r("irons",-1,1),new r("issons",-1,1),new r("issants",-1,1),new r("it",-1,1),new r("irait",21,1),new r("issait",21,1),new r("issant",-1,1),new r("iraIent",-1,1),new r("issaIent",-1,1),new r("irent",-1,1),new r("issent",-1,1),new r("iront",-1,1),new r("ît",-1,1),new r("iriez",-1,1),new r("issiez",-1,1),new r("irez",-1,1),new r("issez",-1,1)],w=[new r("a",-1,3),new r("era",0,2),new r("asse",-1,3),new r("ante",-1,3),new r("ée",-1,2),new r("ai",-1,3),new r("erai",5,2),new r("er",-1,2),new r("as",-1,3),new r("eras",8,2),new r("âmes",-1,3),new r("asses",-1,3),new r("antes",-1,3),new r("âtes",-1,3),new r("ées",-1,2),new r("ais",-1,3),new r("erais",15,2),new r("ions",-1,1),new r("erions",17,2),new r("assions",17,3),new r("erons",-1,2),new r("ants",-1,3),new r("és",-1,2),new r("ait",-1,3),new r("erait",23,2),new r("ant",-1,3),new r("aIent",-1,3),new r("eraIent",26,2),new r("èrent",-1,2),new r("assent",-1,3),new r("eront",-1,2),new r("ât",-1,3),new r("ez",-1,2),new r("iez",32,2),new r("eriez",33,2),new r("assiez",33,3),new r("erez",32,2),new r("é",-1,2)],f=[new r("e",-1,3),new r("Ière",0,2),new r("ière",0,2),new r("ion",-1,1),new r("Ier",-1,2),new r("ier",-1,2),new r("ë",-1,4)],m=[new r("ell",-1,-1),new r("eill",-1,-1),new r("enn",-1,-1),new r("onn",-1,-1),new r("ett",-1,-1)],_=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,128,130,103,8,5],b=[1,65,20,0,0,0,0,0,0,0,0,0,0,0,0,0,128],d=new y;function k(e,r,s){return!(!d.eq_s(1,e)||(d.ket=d.cursor,!d.in_grouping(_,97,251)))&&(d.slice_from(r),d.cursor=s,!0)}function p(e,r,s){return!!d.eq_s(1,e)&&(d.ket=d.cursor,d.slice_from(r),d.cursor=s,!0)}function g(){for(;!d.in_grouping(_,97,251);){if(d.cursor>=d.limit)return!0;d.cursor++}for(;!d.out_grouping(_,97,251);){if(d.cursor>=d.limit)return!0;d.cursor++}return!1}function q(){return t<=d.cursor}function v(){return i<=d.cursor}function h(){return s<=d.cursor}function z(){if(!function(){var e,r;if(d.ket=d.cursor,e=d.find_among_b(a,43)){switch(d.bra=d.cursor,e){case 1:if(!h())return!1;d.slice_del();break;case 2:if(!h())return!1;d.slice_del(),d.ket=d.cursor,d.eq_s_b(2,"ic")&&(d.bra=d.cursor,h()?d.slice_del():d.slice_from("iqU"));break;case 3:if(!h())return!1;d.slice_from("log");break;case 4:if(!h())return!1;d.slice_from("u");break;case 5:if(!h())return!1;d.slice_from("ent");break;case 6:if(!q())return!1;if(d.slice_del(),d.ket=d.cursor,e=d.find_among_b(o,6))switch(d.bra=d.cursor,e){case 1:h()&&(d.slice_del(),d.ket=d.cursor,d.eq_s_b(2,"at")&&(d.bra=d.cursor,h()&&d.slice_del()));break;case 2:h()?d.slice_del():v()&&d.slice_from("eux");break;case 3:h()&&d.slice_del();break;case 4:q()&&d.slice_from("i")}break;case 7:if(!h())return!1;if(d.slice_del(),d.ket=d.cursor,e=d.find_among_b(c,3))switch(d.bra=d.cursor,e){case 1:h()?d.slice_del():d.slice_from("abl");break;case 2:h()?d.slice_del():d.slice_from("iqU");break;case 3:h()&&d.slice_del()}break;case 8:if(!h())return!1;if(d.slice_del(),d.ket=d.cursor,d.eq_s_b(2,"at")&&(d.bra=d.cursor,h()&&(d.slice_del(),d.ket=d.cursor,d.eq_s_b(2,"ic")))){d.bra=d.cursor,h()?d.slice_del():d.slice_from("iqU");break}break;case 9:d.slice_from("eau");break;case 10:if(!v())return!1;d.slice_from("al");break;case 11:if(h())d.slice_del();else{if(!v())return!1;d.slice_from("eux")}break;case 12:if(!v()||!d.out_grouping_b(_,97,251))return!1;d.slice_del();break;case 13:return q()&&d.slice_from("ant"),!1;case 14:return q()&&d.slice_from("ent"),!1;case 15:return r=d.limit-d.cursor,d.in_grouping_b(_,97,251)&&q()&&(d.cursor=d.limit-r,d.slice_del()),!1}return!0}return!1}()&&(d.cursor=d.limit,!function(){var e,r;if(d.cursor=t){if(s=d.limit_backward,d.limit_backward=t,d.ket=d.cursor,e=d.find_among_b(f,7))switch(d.bra=d.cursor,e){case 1:if(h()){if(i=d.limit-d.cursor,!d.eq_s_b(1,"s")&&(d.cursor=d.limit-i,!d.eq_s_b(1,"t")))break;d.slice_del()}break;case 2:d.slice_from("i");break;case 3:d.slice_del();break;case 4:d.eq_s_b(2,"gu")&&d.slice_del()}d.limit_backward=s}}();d.cursor=d.limit,d.ket=d.cursor,d.eq_s_b(1,"Y")?(d.bra=d.cursor,d.slice_from("i")):(d.cursor=d.limit,d.eq_s_b(1,"ç")&&(d.bra=d.cursor,d.slice_from("c")))}this.setCurrent=function(e){d.setCurrent(e)},this.getCurrent=function(){return d.getCurrent()},this.stem=function(){var e,r=d.cursor;return function(){for(var e,r;;){if(e=d.cursor,d.in_grouping(_,97,251)){if(d.bra=d.cursor,r=d.cursor,k("u","U",e))continue;if(d.cursor=r,k("i","I",e))continue;if(d.cursor=r,p("y","Y",e))continue}if(d.cursor=e,!k("y","Y",d.bra=e)){if(d.cursor=e,d.eq_s(1,"q")&&(d.bra=d.cursor,p("u","U",e)))continue;if((d.cursor=e)>=d.limit)return;d.cursor++}}}(),d.cursor=r,function(){var e=d.cursor;if(t=d.limit,s=i=t,d.in_grouping(_,97,251)&&d.in_grouping(_,97,251)&&d.cursor=d.limit){d.cursor=t;break}d.cursor++}while(!d.in_grouping(_,97,251))}t=d.cursor,d.cursor=e,g()||(i=d.cursor,g()||(s=d.cursor))}(),d.limit_backward=r,d.cursor=d.limit,z(),d.cursor=d.limit,e=d.limit-d.cursor,d.find_among_b(m,5)&&(d.cursor=d.limit-e,d.ket=d.cursor,d.cursor>d.limit_backward&&(d.cursor--,d.bra=d.cursor,d.slice_del())),d.cursor=d.limit,function(){for(var e,r=1;d.out_grouping_b(_,97,251);)r--;if(r<=0){if(d.ket=d.cursor,e=d.limit-d.cursor,!d.eq_s_b(1,"é")&&(d.cursor=d.limit-e,!d.eq_s_b(1,"è")))return;d.bra=d.cursor,d.slice_from("e")}}(),d.cursor=d.limit_backward,function(){for(var e,r;r=d.cursor,d.bra=r,e=d.find_among(u,4);)switch(d.ket=d.cursor,e){case 1:d.slice_from("i");break;case 2:d.slice_from("u");break;case 3:d.slice_from("y");break;case 4:if(d.cursor>=d.limit)return;d.cursor++}}(),!0}},function(e){return"function"==typeof e.update?e.update(function(e){return s.setCurrent(e),s.stem(),s.getCurrent()}):(s.setCurrent(e),s.stem(),s.getCurrent())}),e.Pipeline.registerFunction(e.fr.stemmer,"stemmer-fr"),e.fr.stopWordFilter=e.generateStopWordFilter("ai aie aient aies ait as au aura aurai auraient aurais aurait auras aurez auriez aurions aurons auront aux avaient avais avait avec avez aviez avions avons ayant ayez ayons c ce ceci celà ces cet cette d dans de des du elle en es est et eu eue eues eurent eus eusse eussent eusses eussiez eussions eut eux eûmes eût eûtes furent fus fusse fussent fusses fussiez fussions fut fûmes fût fûtes ici il ils j je l la le les leur leurs lui m ma mais me mes moi mon même n ne nos notre nous on ont ou par pas pour qu que quel quelle quelles quels qui s sa sans se sera serai seraient serais serait seras serez seriez serions serons seront ses soi soient sois soit sommes son sont soyez soyons suis sur t ta te tes toi ton tu un une vos votre vous y à étaient étais était étant étiez étions été étée étées étés êtes".split(" ")),e.Pipeline.registerFunction(e.fr.stopWordFilter,"stopWordFilter-fr")}}); \ No newline at end of file diff --git a/_static/javascripts/lunr/lunr.hu.js b/_static/javascripts/lunr/lunr.hu.js new file mode 100644 index 0000000000..56a4b0dc19 --- /dev/null +++ b/_static/javascripts/lunr/lunr.hu.js @@ -0,0 +1 @@ +!function(e,n){"function"==typeof define&&define.amd?define(n):"object"==typeof exports?module.exports=n():n()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var p,_,n;e.hu=function(){this.pipeline.reset(),this.pipeline.add(e.hu.trimmer,e.hu.stopWordFilter,e.hu.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.hu.stemmer))},e.hu.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.hu.trimmer=e.trimmerSupport.generateTrimmer(e.hu.wordCharacters),e.Pipeline.registerFunction(e.hu.trimmer,"trimmer-hu"),e.hu.stemmer=(p=e.stemmerSupport.Among,_=e.stemmerSupport.SnowballProgram,n=new function(){var r,i=[new p("cs",-1,-1),new p("dzs",-1,-1),new p("gy",-1,-1),new p("ly",-1,-1),new p("ny",-1,-1),new p("sz",-1,-1),new p("ty",-1,-1),new p("zs",-1,-1)],n=[new p("á",-1,1),new p("é",-1,2)],a=[new p("bb",-1,-1),new p("cc",-1,-1),new p("dd",-1,-1),new p("ff",-1,-1),new p("gg",-1,-1),new p("jj",-1,-1),new p("kk",-1,-1),new p("ll",-1,-1),new p("mm",-1,-1),new p("nn",-1,-1),new p("pp",-1,-1),new p("rr",-1,-1),new p("ccs",-1,-1),new p("ss",-1,-1),new p("zzs",-1,-1),new p("tt",-1,-1),new p("vv",-1,-1),new p("ggy",-1,-1),new p("lly",-1,-1),new p("nny",-1,-1),new p("tty",-1,-1),new p("ssz",-1,-1),new p("zz",-1,-1)],t=[new p("al",-1,1),new p("el",-1,2)],e=[new p("ba",-1,-1),new p("ra",-1,-1),new p("be",-1,-1),new p("re",-1,-1),new p("ig",-1,-1),new p("nak",-1,-1),new p("nek",-1,-1),new p("val",-1,-1),new p("vel",-1,-1),new p("ul",-1,-1),new p("nál",-1,-1),new p("nél",-1,-1),new p("ból",-1,-1),new p("ról",-1,-1),new p("tól",-1,-1),new p("bõl",-1,-1),new p("rõl",-1,-1),new p("tõl",-1,-1),new p("ül",-1,-1),new p("n",-1,-1),new p("an",19,-1),new p("ban",20,-1),new p("en",19,-1),new p("ben",22,-1),new p("képpen",22,-1),new p("on",19,-1),new p("ön",19,-1),new p("képp",-1,-1),new p("kor",-1,-1),new p("t",-1,-1),new p("at",29,-1),new p("et",29,-1),new p("ként",29,-1),new p("anként",32,-1),new p("enként",32,-1),new p("onként",32,-1),new p("ot",29,-1),new p("ért",29,-1),new p("öt",29,-1),new p("hez",-1,-1),new p("hoz",-1,-1),new p("höz",-1,-1),new p("vá",-1,-1),new p("vé",-1,-1)],s=[new p("án",-1,2),new p("én",-1,1),new p("ánként",-1,3)],c=[new p("stul",-1,2),new p("astul",0,1),new p("ástul",0,3),new p("stül",-1,2),new p("estül",3,1),new p("éstül",3,4)],w=[new p("á",-1,1),new p("é",-1,2)],o=[new p("k",-1,7),new p("ak",0,4),new p("ek",0,6),new p("ok",0,5),new p("ák",0,1),new p("ék",0,2),new p("ök",0,3)],l=[new p("éi",-1,7),new p("áéi",0,6),new p("ééi",0,5),new p("é",-1,9),new p("ké",3,4),new p("aké",4,1),new p("eké",4,1),new p("oké",4,1),new p("áké",4,3),new p("éké",4,2),new p("öké",4,1),new p("éé",3,8)],u=[new p("a",-1,18),new p("ja",0,17),new p("d",-1,16),new p("ad",2,13),new p("ed",2,13),new p("od",2,13),new p("ád",2,14),new p("éd",2,15),new p("öd",2,13),new p("e",-1,18),new p("je",9,17),new p("nk",-1,4),new p("unk",11,1),new p("ánk",11,2),new p("énk",11,3),new p("ünk",11,1),new p("uk",-1,8),new p("juk",16,7),new p("ájuk",17,5),new p("ük",-1,8),new p("jük",19,7),new p("éjük",20,6),new p("m",-1,12),new p("am",22,9),new p("em",22,9),new p("om",22,9),new p("ám",22,10),new p("ém",22,11),new p("o",-1,18),new p("á",-1,19),new p("é",-1,20)],m=[new p("id",-1,10),new p("aid",0,9),new p("jaid",1,6),new p("eid",0,9),new p("jeid",3,6),new p("áid",0,7),new p("éid",0,8),new p("i",-1,15),new p("ai",7,14),new p("jai",8,11),new p("ei",7,14),new p("jei",10,11),new p("ái",7,12),new p("éi",7,13),new p("itek",-1,24),new p("eitek",14,21),new p("jeitek",15,20),new p("éitek",14,23),new p("ik",-1,29),new p("aik",18,26),new p("jaik",19,25),new p("eik",18,26),new p("jeik",21,25),new p("áik",18,27),new p("éik",18,28),new p("ink",-1,20),new p("aink",25,17),new p("jaink",26,16),new p("eink",25,17),new p("jeink",28,16),new p("áink",25,18),new p("éink",25,19),new p("aitok",-1,21),new p("jaitok",32,20),new p("áitok",-1,22),new p("im",-1,5),new p("aim",35,4),new p("jaim",36,1),new p("eim",35,4),new p("jeim",38,1),new p("áim",35,2),new p("éim",35,3)],k=[17,65,16,0,0,0,0,0,0,0,0,0,0,0,0,0,1,17,52,14],f=new _;function b(){return r<=f.cursor}function d(){var e=f.limit-f.cursor;return!!f.find_among_b(a,23)&&(f.cursor=f.limit-e,!0)}function g(){if(f.cursor>f.limit_backward){f.cursor--,f.ket=f.cursor;var e=f.cursor-1;f.limit_backward<=e&&e<=f.limit&&(f.cursor=e,f.bra=e,f.slice_del())}}function h(){f.ket=f.cursor,f.find_among_b(e,44)&&(f.bra=f.cursor,b()&&(f.slice_del(),function(){var e;if(f.ket=f.cursor,(e=f.find_among_b(n,2))&&(f.bra=f.cursor,b()))switch(e){case 1:f.slice_from("a");break;case 2:f.slice_from("e")}}()))}this.setCurrent=function(e){f.setCurrent(e)},this.getCurrent=function(){return f.getCurrent()},this.stem=function(){var e=f.cursor;return function(){var e,n=f.cursor;if(r=f.limit,f.in_grouping(k,97,252))for(;;){if(e=f.cursor,f.out_grouping(k,97,252))return f.cursor=e,f.find_among(i,8)||(f.cursor=e)=f.limit)return r=e;f.cursor++}if(f.cursor=n,f.out_grouping(k,97,252)){for(;!f.in_grouping(k,97,252);){if(f.cursor>=f.limit)return;f.cursor++}r=f.cursor}}(),f.limit_backward=e,f.cursor=f.limit,function(){var e;if(f.ket=f.cursor,(e=f.find_among_b(t,2))&&(f.bra=f.cursor,b())){if((1==e||2==e)&&!d())return;f.slice_del(),g()}}(),f.cursor=f.limit,h(),f.cursor=f.limit,function(){var e;if(f.ket=f.cursor,(e=f.find_among_b(s,3))&&(f.bra=f.cursor,b()))switch(e){case 1:f.slice_from("e");break;case 2:case 3:f.slice_from("a")}}(),f.cursor=f.limit,function(){var e;if(f.ket=f.cursor,(e=f.find_among_b(c,6))&&(f.bra=f.cursor,b()))switch(e){case 1:case 2:f.slice_del();break;case 3:f.slice_from("a");break;case 4:f.slice_from("e")}}(),f.cursor=f.limit,function(){var e;if(f.ket=f.cursor,(e=f.find_among_b(w,2))&&(f.bra=f.cursor,b())){if((1==e||2==e)&&!d())return;f.slice_del(),g()}}(),f.cursor=f.limit,function(){var e;if(f.ket=f.cursor,(e=f.find_among_b(l,12))&&(f.bra=f.cursor,b()))switch(e){case 1:case 4:case 7:case 9:f.slice_del();break;case 2:case 5:case 8:f.slice_from("e");break;case 3:case 6:f.slice_from("a")}}(),f.cursor=f.limit,function(){var e;if(f.ket=f.cursor,(e=f.find_among_b(u,31))&&(f.bra=f.cursor,b()))switch(e){case 1:case 4:case 7:case 8:case 9:case 12:case 13:case 16:case 17:case 18:f.slice_del();break;case 2:case 5:case 10:case 14:case 19:f.slice_from("a");break;case 3:case 6:case 11:case 15:case 20:f.slice_from("e")}}(),f.cursor=f.limit,function(){var e;if(f.ket=f.cursor,(e=f.find_among_b(m,42))&&(f.bra=f.cursor,b()))switch(e){case 1:case 4:case 5:case 6:case 9:case 10:case 11:case 14:case 15:case 16:case 17:case 20:case 21:case 24:case 25:case 26:case 29:f.slice_del();break;case 2:case 7:case 12:case 18:case 22:case 27:f.slice_from("a");break;case 3:case 8:case 13:case 19:case 23:case 28:f.slice_from("e")}}(),f.cursor=f.limit,function(){var e;if(f.ket=f.cursor,(e=f.find_among_b(o,7))&&(f.bra=f.cursor,b()))switch(e){case 1:f.slice_from("a");break;case 2:f.slice_from("e");break;case 3:case 4:case 5:case 6:case 7:f.slice_del()}}(),!0}},function(e){return"function"==typeof e.update?e.update(function(e){return n.setCurrent(e),n.stem(),n.getCurrent()}):(n.setCurrent(e),n.stem(),n.getCurrent())}),e.Pipeline.registerFunction(e.hu.stemmer,"stemmer-hu"),e.hu.stopWordFilter=e.generateStopWordFilter("a abban ahhoz ahogy ahol aki akik akkor alatt amely amelyek amelyekben amelyeket amelyet amelynek ami amikor amit amolyan amíg annak arra arról az azok azon azonban azt aztán azután azzal azért be belül benne bár cikk cikkek cikkeket csak de e ebben eddig egy egyes egyetlen egyik egyre egyéb egész ehhez ekkor el ellen elsõ elég elõ elõször elõtt emilyen ennek erre ez ezek ezen ezt ezzel ezért fel felé hanem hiszen hogy hogyan igen ill ill. illetve ilyen ilyenkor ismét ison itt jobban jó jól kell kellett keressünk keresztül ki kívül között közül legalább legyen lehet lehetett lenne lenni lesz lett maga magát majd majd meg mellett mely melyek mert mi mikor milyen minden mindenki mindent mindig mint mintha mit mivel miért most már más másik még míg nagy nagyobb nagyon ne nekem neki nem nincs néha néhány nélkül olyan ott pedig persze rá s saját sem semmi sok sokat sokkal szemben szerint szinte számára talán tehát teljes tovább továbbá több ugyanis utolsó után utána vagy vagyis vagyok valaki valami valamint való van vannak vele vissza viszont volna volt voltak voltam voltunk által általában át én éppen és így õ õk õket össze úgy új újabb újra".split(" ")),e.Pipeline.registerFunction(e.hu.stopWordFilter,"stopWordFilter-hu")}}); \ No newline at end of file diff --git a/_static/javascripts/lunr/lunr.it.js b/_static/javascripts/lunr/lunr.it.js new file mode 100644 index 0000000000..50dddaa04b --- /dev/null +++ b/_static/javascripts/lunr/lunr.it.js @@ -0,0 +1 @@ +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var z,P,r;e.it=function(){this.pipeline.reset(),this.pipeline.add(e.it.trimmer,e.it.stopWordFilter,e.it.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.it.stemmer))},e.it.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.it.trimmer=e.trimmerSupport.generateTrimmer(e.it.wordCharacters),e.Pipeline.registerFunction(e.it.trimmer,"trimmer-it"),e.it.stemmer=(z=e.stemmerSupport.Among,P=e.stemmerSupport.SnowballProgram,r=new function(){var o,t,s,a=[new z("",-1,7),new z("qu",0,6),new z("á",0,1),new z("é",0,2),new z("í",0,3),new z("ó",0,4),new z("ú",0,5)],u=[new z("",-1,3),new z("I",0,1),new z("U",0,2)],c=[new z("la",-1,-1),new z("cela",0,-1),new z("gliela",0,-1),new z("mela",0,-1),new z("tela",0,-1),new z("vela",0,-1),new z("le",-1,-1),new z("cele",6,-1),new z("gliele",6,-1),new z("mele",6,-1),new z("tele",6,-1),new z("vele",6,-1),new z("ne",-1,-1),new z("cene",12,-1),new z("gliene",12,-1),new z("mene",12,-1),new z("sene",12,-1),new z("tene",12,-1),new z("vene",12,-1),new z("ci",-1,-1),new z("li",-1,-1),new z("celi",20,-1),new z("glieli",20,-1),new z("meli",20,-1),new z("teli",20,-1),new z("veli",20,-1),new z("gli",20,-1),new z("mi",-1,-1),new z("si",-1,-1),new z("ti",-1,-1),new z("vi",-1,-1),new z("lo",-1,-1),new z("celo",31,-1),new z("glielo",31,-1),new z("melo",31,-1),new z("telo",31,-1),new z("velo",31,-1)],w=[new z("ando",-1,1),new z("endo",-1,1),new z("ar",-1,2),new z("er",-1,2),new z("ir",-1,2)],r=[new z("ic",-1,-1),new z("abil",-1,-1),new z("os",-1,-1),new z("iv",-1,1)],n=[new z("ic",-1,1),new z("abil",-1,1),new z("iv",-1,1)],i=[new z("ica",-1,1),new z("logia",-1,3),new z("osa",-1,1),new z("ista",-1,1),new z("iva",-1,9),new z("anza",-1,1),new z("enza",-1,5),new z("ice",-1,1),new z("atrice",7,1),new z("iche",-1,1),new z("logie",-1,3),new z("abile",-1,1),new z("ibile",-1,1),new z("usione",-1,4),new z("azione",-1,2),new z("uzione",-1,4),new z("atore",-1,2),new z("ose",-1,1),new z("ante",-1,1),new z("mente",-1,1),new z("amente",19,7),new z("iste",-1,1),new z("ive",-1,9),new z("anze",-1,1),new z("enze",-1,5),new z("ici",-1,1),new z("atrici",25,1),new z("ichi",-1,1),new z("abili",-1,1),new z("ibili",-1,1),new z("ismi",-1,1),new z("usioni",-1,4),new z("azioni",-1,2),new z("uzioni",-1,4),new z("atori",-1,2),new z("osi",-1,1),new z("anti",-1,1),new z("amenti",-1,6),new z("imenti",-1,6),new z("isti",-1,1),new z("ivi",-1,9),new z("ico",-1,1),new z("ismo",-1,1),new z("oso",-1,1),new z("amento",-1,6),new z("imento",-1,6),new z("ivo",-1,9),new z("ità",-1,8),new z("istà",-1,1),new z("istè",-1,1),new z("istì",-1,1)],l=[new z("isca",-1,1),new z("enda",-1,1),new z("ata",-1,1),new z("ita",-1,1),new z("uta",-1,1),new z("ava",-1,1),new z("eva",-1,1),new z("iva",-1,1),new z("erebbe",-1,1),new z("irebbe",-1,1),new z("isce",-1,1),new z("ende",-1,1),new z("are",-1,1),new z("ere",-1,1),new z("ire",-1,1),new z("asse",-1,1),new z("ate",-1,1),new z("avate",16,1),new z("evate",16,1),new z("ivate",16,1),new z("ete",-1,1),new z("erete",20,1),new z("irete",20,1),new z("ite",-1,1),new z("ereste",-1,1),new z("ireste",-1,1),new z("ute",-1,1),new z("erai",-1,1),new z("irai",-1,1),new z("isci",-1,1),new z("endi",-1,1),new z("erei",-1,1),new z("irei",-1,1),new z("assi",-1,1),new z("ati",-1,1),new z("iti",-1,1),new z("eresti",-1,1),new z("iresti",-1,1),new z("uti",-1,1),new z("avi",-1,1),new z("evi",-1,1),new z("ivi",-1,1),new z("isco",-1,1),new z("ando",-1,1),new z("endo",-1,1),new z("Yamo",-1,1),new z("iamo",-1,1),new z("avamo",-1,1),new z("evamo",-1,1),new z("ivamo",-1,1),new z("eremo",-1,1),new z("iremo",-1,1),new z("assimo",-1,1),new z("ammo",-1,1),new z("emmo",-1,1),new z("eremmo",54,1),new z("iremmo",54,1),new z("immo",-1,1),new z("ano",-1,1),new z("iscano",58,1),new z("avano",58,1),new z("evano",58,1),new z("ivano",58,1),new z("eranno",-1,1),new z("iranno",-1,1),new z("ono",-1,1),new z("iscono",65,1),new z("arono",65,1),new z("erono",65,1),new z("irono",65,1),new z("erebbero",-1,1),new z("irebbero",-1,1),new z("assero",-1,1),new z("essero",-1,1),new z("issero",-1,1),new z("ato",-1,1),new z("ito",-1,1),new z("uto",-1,1),new z("avo",-1,1),new z("evo",-1,1),new z("ivo",-1,1),new z("ar",-1,1),new z("ir",-1,1),new z("erà",-1,1),new z("irà",-1,1),new z("erò",-1,1),new z("irò",-1,1)],m=[17,65,16,0,0,0,0,0,0,0,0,0,0,0,0,128,128,8,2,1],f=[17,65,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,8,2],v=[17],b=new P;function d(e,r,n){return!(!b.eq_s(1,e)||(b.ket=b.cursor,!b.in_grouping(m,97,249)))&&(b.slice_from(r),b.cursor=n,!0)}function _(e){if(b.cursor=e,!b.in_grouping(m,97,249))return!1;for(;!b.out_grouping(m,97,249);){if(b.cursor>=b.limit)return!1;b.cursor++}return!0}function g(){var e,r=b.cursor;if(!function(){if(b.in_grouping(m,97,249)){var e=b.cursor;if(b.out_grouping(m,97,249)){for(;!b.in_grouping(m,97,249);){if(b.cursor>=b.limit)return _(e);b.cursor++}return!0}return _(e)}return!1}()){if(b.cursor=r,!b.out_grouping(m,97,249))return;if(e=b.cursor,b.out_grouping(m,97,249)){for(;!b.in_grouping(m,97,249);){if(b.cursor>=b.limit)return b.cursor=e,void(b.in_grouping(m,97,249)&&b.cursor=b.limit)return;b.cursor++}s=b.cursor}function p(){for(;!b.in_grouping(m,97,249);){if(b.cursor>=b.limit)return!1;b.cursor++}for(;!b.out_grouping(m,97,249);){if(b.cursor>=b.limit)return!1;b.cursor++}return!0}function k(){return s<=b.cursor}function h(){return o<=b.cursor}function q(){var e;if(b.ket=b.cursor,!(e=b.find_among_b(i,51)))return!1;switch(b.bra=b.cursor,e){case 1:if(!h())return!1;b.slice_del();break;case 2:if(!h())return!1;b.slice_del(),b.ket=b.cursor,b.eq_s_b(2,"ic")&&(b.bra=b.cursor,h()&&b.slice_del());break;case 3:if(!h())return!1;b.slice_from("log");break;case 4:if(!h())return!1;b.slice_from("u");break;case 5:if(!h())return!1;b.slice_from("ente");break;case 6:if(!k())return!1;b.slice_del();break;case 7:if(!(t<=b.cursor))return!1;b.slice_del(),b.ket=b.cursor,(e=b.find_among_b(r,4))&&(b.bra=b.cursor,h()&&(b.slice_del(),1==e&&(b.ket=b.cursor,b.eq_s_b(2,"at")&&(b.bra=b.cursor,h()&&b.slice_del()))));break;case 8:if(!h())return!1;b.slice_del(),b.ket=b.cursor,(e=b.find_among_b(n,3))&&(b.bra=b.cursor,1==e&&h()&&b.slice_del());break;case 9:if(!h())return!1;b.slice_del(),b.ket=b.cursor,b.eq_s_b(2,"at")&&(b.bra=b.cursor,h()&&(b.slice_del(),b.ket=b.cursor,b.eq_s_b(2,"ic")&&(b.bra=b.cursor,h()&&b.slice_del())))}return!0}function C(){var e;e=b.limit-b.cursor,b.ket=b.cursor,b.in_grouping_b(f,97,242)&&(b.bra=b.cursor,k()&&(b.slice_del(),b.ket=b.cursor,b.eq_s_b(1,"i")&&(b.bra=b.cursor,k())))?b.slice_del():b.cursor=b.limit-e,b.ket=b.cursor,b.eq_s_b(1,"h")&&(b.bra=b.cursor,b.in_grouping_b(v,99,103)&&k()&&b.slice_del())}this.setCurrent=function(e){b.setCurrent(e)},this.getCurrent=function(){return b.getCurrent()},this.stem=function(){var e,r,n,i=b.cursor;return function(){for(var e,r,n,i,o=b.cursor;;){if(b.bra=b.cursor,e=b.find_among(a,7))switch(b.ket=b.cursor,e){case 1:b.slice_from("à");continue;case 2:b.slice_from("è");continue;case 3:b.slice_from("ì");continue;case 4:b.slice_from("ò");continue;case 5:b.slice_from("ù");continue;case 6:b.slice_from("qU");continue;case 7:if(b.cursor>=b.limit)break;b.cursor++;continue}break}for(b.cursor=o;;)for(r=b.cursor;;){if(n=b.cursor,b.in_grouping(m,97,249)){if(b.bra=b.cursor,i=b.cursor,d("u","U",n))break;if(b.cursor=i,d("i","I",n))break}if(b.cursor=n,b.cursor>=b.limit)return b.cursor=r;b.cursor++}}(),b.cursor=i,e=b.cursor,s=b.limit,o=t=s,g(),b.cursor=e,p()&&(t=b.cursor,p()&&(o=b.cursor)),b.limit_backward=i,b.cursor=b.limit,function(){var e;if(b.ket=b.cursor,b.find_among_b(c,37)&&(b.bra=b.cursor,(e=b.find_among_b(w,5))&&k()))switch(e){case 1:b.slice_del();break;case 2:b.slice_from("e")}}(),b.cursor=b.limit,q()||(b.cursor=b.limit,b.cursor>=s&&(n=b.limit_backward,b.limit_backward=s,b.ket=b.cursor,(r=b.find_among_b(l,87))&&(b.bra=b.cursor,1==r&&b.slice_del()),b.limit_backward=n)),b.cursor=b.limit,C(),b.cursor=b.limit_backward,function(){for(var e;b.bra=b.cursor,e=b.find_among(u,3);)switch(b.ket=b.cursor,e){case 1:b.slice_from("i");break;case 2:b.slice_from("u");break;case 3:if(b.cursor>=b.limit)return;b.cursor++}}(),!0}},function(e){return"function"==typeof e.update?e.update(function(e){return r.setCurrent(e),r.stem(),r.getCurrent()}):(r.setCurrent(e),r.stem(),r.getCurrent())}),e.Pipeline.registerFunction(e.it.stemmer,"stemmer-it"),e.it.stopWordFilter=e.generateStopWordFilter("a abbia abbiamo abbiano abbiate ad agl agli ai al all alla alle allo anche avemmo avendo avesse avessero avessi avessimo aveste avesti avete aveva avevamo avevano avevate avevi avevo avrai avranno avrebbe avrebbero avrei avremmo avremo avreste avresti avrete avrà avrò avuta avute avuti avuto c che chi ci coi col come con contro cui da dagl dagli dai dal dall dalla dalle dallo degl degli dei del dell della delle dello di dov dove e ebbe ebbero ebbi ed era erano eravamo eravate eri ero essendo faccia facciamo facciano facciate faccio facemmo facendo facesse facessero facessi facessimo faceste facesti faceva facevamo facevano facevate facevi facevo fai fanno farai faranno farebbe farebbero farei faremmo faremo fareste faresti farete farà farò fece fecero feci fosse fossero fossi fossimo foste fosti fu fui fummo furono gli ha hai hanno ho i il in io l la le lei li lo loro lui ma mi mia mie miei mio ne negl negli nei nel nell nella nelle nello noi non nostra nostre nostri nostro o per perché più quale quanta quante quanti quanto quella quelle quelli quello questa queste questi questo sarai saranno sarebbe sarebbero sarei saremmo saremo sareste saresti sarete sarà sarò se sei si sia siamo siano siate siete sono sta stai stando stanno starai staranno starebbe starebbero starei staremmo staremo stareste staresti starete starà starò stava stavamo stavano stavate stavi stavo stemmo stesse stessero stessi stessimo steste stesti stette stettero stetti stia stiamo stiano stiate sto su sua sue sugl sugli sui sul sull sulla sulle sullo suo suoi ti tra tu tua tue tuo tuoi tutti tutto un una uno vi voi vostra vostre vostri vostro è".split(" ")),e.Pipeline.registerFunction(e.it.stopWordFilter,"stopWordFilter-it")}}); \ No newline at end of file diff --git a/_static/javascripts/lunr/lunr.ja.js b/_static/javascripts/lunr/lunr.ja.js new file mode 100644 index 0000000000..69f620250d --- /dev/null +++ b/_static/javascripts/lunr/lunr.ja.js @@ -0,0 +1 @@ +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(m){if(void 0===m)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===m.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var l="2"==m.version[0];m.ja=function(){this.pipeline.reset(),this.pipeline.add(m.ja.trimmer,m.ja.stopWordFilter,m.ja.stemmer),l?this.tokenizer=m.ja.tokenizer:(m.tokenizer&&(m.tokenizer=m.ja.tokenizer),this.tokenizerFn&&(this.tokenizerFn=m.ja.tokenizer))};var j=new m.TinySegmenter;m.ja.tokenizer=function(e){var r,t,i,n,o,s,p,a,u;if(!arguments.length||null==e||null==e)return[];if(Array.isArray(e))return e.map(function(e){return l?new m.Token(e.toLowerCase()):e.toLowerCase()});for(r=(t=e.toString().toLowerCase().replace(/^\s+/,"")).length-1;0<=r;r--)if(/\S/.test(t.charAt(r))){t=t.substring(0,r+1);break}for(o=[],i=t.length,p=a=0;a<=i;a++)if(s=a-p,t.charAt(a).match(/\s/)||a==i){if(0=_.limit||(_.cursor++,!1)}function w(){for(;!_.in_grouping(m,97,232);){if(_.cursor>=_.limit)return!0;_.cursor++}for(;!_.out_grouping(m,97,232);){if(_.cursor>=_.limit)return!0;_.cursor++}return!1}function b(){return i<=_.cursor}function p(){return e<=_.cursor}function g(){var r=_.limit-_.cursor;_.find_among_b(t,3)&&(_.cursor=_.limit-r,_.ket=_.cursor,_.cursor>_.limit_backward&&(_.cursor--,_.bra=_.cursor,_.slice_del()))}function h(){var r;u=!1,_.ket=_.cursor,_.eq_s_b(1,"e")&&(_.bra=_.cursor,b()&&(r=_.limit-_.cursor,_.out_grouping_b(m,97,232)&&(_.cursor=_.limit-r,_.slice_del(),u=!0,g())))}function k(){var r;b()&&(r=_.limit-_.cursor,_.out_grouping_b(m,97,232)&&(_.cursor=_.limit-r,_.eq_s_b(3,"gem")||(_.cursor=_.limit-r,_.slice_del(),g())))}this.setCurrent=function(r){_.setCurrent(r)},this.getCurrent=function(){return _.getCurrent()},this.stem=function(){var r=_.cursor;return function(){for(var r,e,i,n=_.cursor;;){if(_.bra=_.cursor,r=_.find_among(o,11))switch(_.ket=_.cursor,r){case 1:_.slice_from("a");continue;case 2:_.slice_from("e");continue;case 3:_.slice_from("i");continue;case 4:_.slice_from("o");continue;case 5:_.slice_from("u");continue;case 6:if(_.cursor>=_.limit)break;_.cursor++;continue}break}for(_.cursor=n,_.bra=n,_.eq_s(1,"y")?(_.ket=_.cursor,_.slice_from("Y")):_.cursor=n;;)if(e=_.cursor,_.in_grouping(m,97,232)){if(i=_.cursor,_.bra=i,_.eq_s(1,"i"))_.ket=_.cursor,_.in_grouping(m,97,232)&&(_.slice_from("I"),_.cursor=e);else if(_.cursor=i,_.eq_s(1,"y"))_.ket=_.cursor,_.slice_from("Y"),_.cursor=e;else if(s(e))break}else if(s(e))break}(),_.cursor=r,i=_.limit,e=i,w()||((i=_.cursor)<3&&(i=3),w()||(e=_.cursor)),_.limit_backward=r,_.cursor=_.limit,function(){var r,e,i,n,o,t,s=_.limit-_.cursor;if(_.ket=_.cursor,r=_.find_among_b(c,5))switch(_.bra=_.cursor,r){case 1:b()&&_.slice_from("heid");break;case 2:k();break;case 3:b()&&_.out_grouping_b(f,97,232)&&_.slice_del()}if(_.cursor=_.limit-s,h(),_.cursor=_.limit-s,_.ket=_.cursor,_.eq_s_b(4,"heid")&&(_.bra=_.cursor,p()&&(e=_.limit-_.cursor,_.eq_s_b(1,"c")||(_.cursor=_.limit-e,_.slice_del(),_.ket=_.cursor,_.eq_s_b(2,"en")&&(_.bra=_.cursor,k())))),_.cursor=_.limit-s,_.ket=_.cursor,r=_.find_among_b(a,6))switch(_.bra=_.cursor,r){case 1:if(p()){if(_.slice_del(),i=_.limit-_.cursor,_.ket=_.cursor,_.eq_s_b(2,"ig")&&(_.bra=_.cursor,p()&&(n=_.limit-_.cursor,!_.eq_s_b(1,"e")))){_.cursor=_.limit-n,_.slice_del();break}_.cursor=_.limit-i,g()}break;case 2:p()&&(o=_.limit-_.cursor,_.eq_s_b(1,"e")||(_.cursor=_.limit-o,_.slice_del()));break;case 3:p()&&(_.slice_del(),h());break;case 4:p()&&_.slice_del();break;case 5:p()&&u&&_.slice_del()}_.cursor=_.limit-s,_.out_grouping_b(d,73,232)&&(t=_.limit-_.cursor,_.find_among_b(l,4)&&_.out_grouping_b(m,97,232)&&(_.cursor=_.limit-t,_.ket=_.cursor,_.cursor>_.limit_backward&&(_.cursor--,_.bra=_.cursor,_.slice_del())))}(),_.cursor=_.limit_backward,function(){for(var r;;)if(_.bra=_.cursor,r=_.find_among(n,3))switch(_.ket=_.cursor,r){case 1:_.slice_from("y");break;case 2:_.slice_from("i");break;case 3:if(_.cursor>=_.limit)return;_.cursor++}}(),!0}},function(r){return"function"==typeof r.update?r.update(function(r){return e.setCurrent(r),e.stem(),e.getCurrent()}):(e.setCurrent(r),e.stem(),e.getCurrent())}),r.Pipeline.registerFunction(r.nl.stemmer,"stemmer-nl"),r.nl.stopWordFilter=r.generateStopWordFilter(" aan al alles als altijd andere ben bij daar dan dat de der deze die dit doch doen door dus een eens en er ge geen geweest haar had heb hebben heeft hem het hier hij hoe hun iemand iets ik in is ja je kan kon kunnen maar me meer men met mij mijn moet na naar niet niets nog nu of om omdat onder ons ook op over reeds te tegen toch toen tot u uit uw van veel voor want waren was wat werd wezen wie wil worden wordt zal ze zelf zich zij zijn zo zonder zou".split(" ")),r.Pipeline.registerFunction(r.nl.stopWordFilter,"stopWordFilter-nl")}}); \ No newline at end of file diff --git a/_static/javascripts/lunr/lunr.no.js b/_static/javascripts/lunr/lunr.no.js new file mode 100644 index 0000000000..3d156b9c19 --- /dev/null +++ b/_static/javascripts/lunr/lunr.no.js @@ -0,0 +1 @@ +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var r,n,i;e.no=function(){this.pipeline.reset(),this.pipeline.add(e.no.trimmer,e.no.stopWordFilter,e.no.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.no.stemmer))},e.no.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.no.trimmer=e.trimmerSupport.generateTrimmer(e.no.wordCharacters),e.Pipeline.registerFunction(e.no.trimmer,"trimmer-no"),e.no.stemmer=(r=e.stemmerSupport.Among,n=e.stemmerSupport.SnowballProgram,i=new function(){var o,s,a=[new r("a",-1,1),new r("e",-1,1),new r("ede",1,1),new r("ande",1,1),new r("ende",1,1),new r("ane",1,1),new r("ene",1,1),new r("hetene",6,1),new r("erte",1,3),new r("en",-1,1),new r("heten",9,1),new r("ar",-1,1),new r("er",-1,1),new r("heter",12,1),new r("s",-1,2),new r("as",14,1),new r("es",14,1),new r("edes",16,1),new r("endes",16,1),new r("enes",16,1),new r("hetenes",19,1),new r("ens",14,1),new r("hetens",21,1),new r("ers",14,1),new r("ets",14,1),new r("et",-1,1),new r("het",25,1),new r("ert",-1,3),new r("ast",-1,1)],m=[new r("dt",-1,-1),new r("vt",-1,-1)],l=[new r("leg",-1,1),new r("eleg",0,1),new r("ig",-1,1),new r("eig",2,1),new r("lig",2,1),new r("elig",4,1),new r("els",-1,1),new r("lov",-1,1),new r("elov",7,1),new r("slov",7,1),new r("hetslov",9,1)],u=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,48,0,128],d=[119,125,149,1],c=new n;this.setCurrent=function(e){c.setCurrent(e)},this.getCurrent=function(){return c.getCurrent()},this.stem=function(){var e,r,n,i,t=c.cursor;return function(){var e,r=c.cursor+3;if(s=c.limit,0<=r||r<=c.limit){for(o=r;;){if(e=c.cursor,c.in_grouping(u,97,248)){c.cursor=e;break}if(e>=c.limit)return;c.cursor=e+1}for(;!c.out_grouping(u,97,248);){if(c.cursor>=c.limit)return;c.cursor++}(s=c.cursor)=s&&(r=c.limit_backward,c.limit_backward=s,c.ket=c.cursor,e=c.find_among_b(a,29),c.limit_backward=r,e))switch(c.bra=c.cursor,e){case 1:c.slice_del();break;case 2:n=c.limit-c.cursor,c.in_grouping_b(d,98,122)?c.slice_del():(c.cursor=c.limit-n,c.eq_s_b(1,"k")&&c.out_grouping_b(u,97,248)&&c.slice_del());break;case 3:c.slice_from("er")}}(),c.cursor=c.limit,r=c.limit-c.cursor,c.cursor>=s&&(e=c.limit_backward,c.limit_backward=s,c.ket=c.cursor,c.find_among_b(m,2)?(c.bra=c.cursor,c.limit_backward=e,c.cursor=c.limit-r,c.cursor>c.limit_backward&&(c.cursor--,c.bra=c.cursor,c.slice_del())):c.limit_backward=e),c.cursor=c.limit,c.cursor>=s&&(i=c.limit_backward,c.limit_backward=s,c.ket=c.cursor,(n=c.find_among_b(l,11))?(c.bra=c.cursor,c.limit_backward=i,1==n&&c.slice_del()):c.limit_backward=i),!0}},function(e){return"function"==typeof e.update?e.update(function(e){return i.setCurrent(e),i.stem(),i.getCurrent()}):(i.setCurrent(e),i.stem(),i.getCurrent())}),e.Pipeline.registerFunction(e.no.stemmer,"stemmer-no"),e.no.stopWordFilter=e.generateStopWordFilter("alle at av bare begge ble blei bli blir blitt både båe da de deg dei deim deira deires dem den denne der dere deres det dette di din disse ditt du dykk dykkar då eg ein eit eitt eller elles en enn er et ett etter for fordi fra før ha hadde han hans har hennar henne hennes her hjå ho hoe honom hoss hossen hun hva hvem hver hvilke hvilken hvis hvor hvordan hvorfor i ikke ikkje ikkje ingen ingi inkje inn inni ja jeg kan kom korleis korso kun kunne kva kvar kvarhelst kven kvi kvifor man mange me med medan meg meget mellom men mi min mine mitt mot mykje ned no noe noen noka noko nokon nokor nokre nå når og også om opp oss over på samme seg selv si si sia sidan siden sin sine sitt sjøl skal skulle slik so som som somme somt så sånn til um upp ut uten var vart varte ved vere verte vi vil ville vore vors vort vår være være vært å".split(" ")),e.Pipeline.registerFunction(e.no.stopWordFilter,"stopWordFilter-no")}}); \ No newline at end of file diff --git a/_static/javascripts/lunr/lunr.pt.js b/_static/javascripts/lunr/lunr.pt.js new file mode 100644 index 0000000000..f50fc9fa6d --- /dev/null +++ b/_static/javascripts/lunr/lunr.pt.js @@ -0,0 +1 @@ +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var j,C,r;e.pt=function(){this.pipeline.reset(),this.pipeline.add(e.pt.trimmer,e.pt.stopWordFilter,e.pt.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.pt.stemmer))},e.pt.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.pt.trimmer=e.trimmerSupport.generateTrimmer(e.pt.wordCharacters),e.Pipeline.registerFunction(e.pt.trimmer,"trimmer-pt"),e.pt.stemmer=(j=e.stemmerSupport.Among,C=e.stemmerSupport.SnowballProgram,r=new function(){var s,n,i,o=[new j("",-1,3),new j("ã",0,1),new j("õ",0,2)],a=[new j("",-1,3),new j("a~",0,1),new j("o~",0,2)],r=[new j("ic",-1,-1),new j("ad",-1,-1),new j("os",-1,-1),new j("iv",-1,1)],t=[new j("ante",-1,1),new j("avel",-1,1),new j("ível",-1,1)],u=[new j("ic",-1,1),new j("abil",-1,1),new j("iv",-1,1)],w=[new j("ica",-1,1),new j("ância",-1,1),new j("ência",-1,4),new j("ira",-1,9),new j("adora",-1,1),new j("osa",-1,1),new j("ista",-1,1),new j("iva",-1,8),new j("eza",-1,1),new j("logía",-1,2),new j("idade",-1,7),new j("ante",-1,1),new j("mente",-1,6),new j("amente",12,5),new j("ável",-1,1),new j("ível",-1,1),new j("ución",-1,3),new j("ico",-1,1),new j("ismo",-1,1),new j("oso",-1,1),new j("amento",-1,1),new j("imento",-1,1),new j("ivo",-1,8),new j("aça~o",-1,1),new j("ador",-1,1),new j("icas",-1,1),new j("ências",-1,4),new j("iras",-1,9),new j("adoras",-1,1),new j("osas",-1,1),new j("istas",-1,1),new j("ivas",-1,8),new j("ezas",-1,1),new j("logías",-1,2),new j("idades",-1,7),new j("uciones",-1,3),new j("adores",-1,1),new j("antes",-1,1),new j("aço~es",-1,1),new j("icos",-1,1),new j("ismos",-1,1),new j("osos",-1,1),new j("amentos",-1,1),new j("imentos",-1,1),new j("ivos",-1,8)],m=[new j("ada",-1,1),new j("ida",-1,1),new j("ia",-1,1),new j("aria",2,1),new j("eria",2,1),new j("iria",2,1),new j("ara",-1,1),new j("era",-1,1),new j("ira",-1,1),new j("ava",-1,1),new j("asse",-1,1),new j("esse",-1,1),new j("isse",-1,1),new j("aste",-1,1),new j("este",-1,1),new j("iste",-1,1),new j("ei",-1,1),new j("arei",16,1),new j("erei",16,1),new j("irei",16,1),new j("am",-1,1),new j("iam",20,1),new j("ariam",21,1),new j("eriam",21,1),new j("iriam",21,1),new j("aram",20,1),new j("eram",20,1),new j("iram",20,1),new j("avam",20,1),new j("em",-1,1),new j("arem",29,1),new j("erem",29,1),new j("irem",29,1),new j("assem",29,1),new j("essem",29,1),new j("issem",29,1),new j("ado",-1,1),new j("ido",-1,1),new j("ando",-1,1),new j("endo",-1,1),new j("indo",-1,1),new j("ara~o",-1,1),new j("era~o",-1,1),new j("ira~o",-1,1),new j("ar",-1,1),new j("er",-1,1),new j("ir",-1,1),new j("as",-1,1),new j("adas",47,1),new j("idas",47,1),new j("ias",47,1),new j("arias",50,1),new j("erias",50,1),new j("irias",50,1),new j("aras",47,1),new j("eras",47,1),new j("iras",47,1),new j("avas",47,1),new j("es",-1,1),new j("ardes",58,1),new j("erdes",58,1),new j("irdes",58,1),new j("ares",58,1),new j("eres",58,1),new j("ires",58,1),new j("asses",58,1),new j("esses",58,1),new j("isses",58,1),new j("astes",58,1),new j("estes",58,1),new j("istes",58,1),new j("is",-1,1),new j("ais",71,1),new j("eis",71,1),new j("areis",73,1),new j("ereis",73,1),new j("ireis",73,1),new j("áreis",73,1),new j("éreis",73,1),new j("íreis",73,1),new j("ásseis",73,1),new j("ésseis",73,1),new j("ísseis",73,1),new j("áveis",73,1),new j("íeis",73,1),new j("aríeis",84,1),new j("eríeis",84,1),new j("iríeis",84,1),new j("ados",-1,1),new j("idos",-1,1),new j("amos",-1,1),new j("áramos",90,1),new j("éramos",90,1),new j("íramos",90,1),new j("ávamos",90,1),new j("íamos",90,1),new j("aríamos",95,1),new j("eríamos",95,1),new j("iríamos",95,1),new j("emos",-1,1),new j("aremos",99,1),new j("eremos",99,1),new j("iremos",99,1),new j("ássemos",99,1),new j("êssemos",99,1),new j("íssemos",99,1),new j("imos",-1,1),new j("armos",-1,1),new j("ermos",-1,1),new j("irmos",-1,1),new j("ámos",-1,1),new j("arás",-1,1),new j("erás",-1,1),new j("irás",-1,1),new j("eu",-1,1),new j("iu",-1,1),new j("ou",-1,1),new j("ará",-1,1),new j("erá",-1,1),new j("irá",-1,1)],c=[new j("a",-1,1),new j("i",-1,1),new j("o",-1,1),new j("os",-1,1),new j("á",-1,1),new j("í",-1,1),new j("ó",-1,1)],l=[new j("e",-1,1),new j("ç",-1,2),new j("é",-1,1),new j("ê",-1,1)],f=[17,65,16,0,0,0,0,0,0,0,0,0,0,0,0,0,3,19,12,2],d=new C;function v(){if(d.out_grouping(f,97,250)){for(;!d.in_grouping(f,97,250);){if(d.cursor>=d.limit)return!0;d.cursor++}return!1}return!0}function p(){var e,r,s=d.cursor;if(d.in_grouping(f,97,250))if(e=d.cursor,v()){if(d.cursor=e,function(){if(d.in_grouping(f,97,250))for(;!d.out_grouping(f,97,250);){if(d.cursor>=d.limit)return!1;d.cursor++}return i=d.cursor,!0}())return}else i=d.cursor;if(d.cursor=s,d.out_grouping(f,97,250)){if(r=d.cursor,v()){if(d.cursor=r,!d.in_grouping(f,97,250)||d.cursor>=d.limit)return;d.cursor++}i=d.cursor}}function _(){for(;!d.in_grouping(f,97,250);){if(d.cursor>=d.limit)return!1;d.cursor++}for(;!d.out_grouping(f,97,250);){if(d.cursor>=d.limit)return!1;d.cursor++}return!0}function h(){return i<=d.cursor}function b(){return s<=d.cursor}function g(){var e;if(d.ket=d.cursor,!(e=d.find_among_b(w,45)))return!1;switch(d.bra=d.cursor,e){case 1:if(!b())return!1;d.slice_del();break;case 2:if(!b())return!1;d.slice_from("log");break;case 3:if(!b())return!1;d.slice_from("u");break;case 4:if(!b())return!1;d.slice_from("ente");break;case 5:if(!(n<=d.cursor))return!1;d.slice_del(),d.ket=d.cursor,(e=d.find_among_b(r,4))&&(d.bra=d.cursor,b()&&(d.slice_del(),1==e&&(d.ket=d.cursor,d.eq_s_b(2,"at")&&(d.bra=d.cursor,b()&&d.slice_del()))));break;case 6:if(!b())return!1;d.slice_del(),d.ket=d.cursor,(e=d.find_among_b(t,3))&&(d.bra=d.cursor,1==e&&b()&&d.slice_del());break;case 7:if(!b())return!1;d.slice_del(),d.ket=d.cursor,(e=d.find_among_b(u,3))&&(d.bra=d.cursor,1==e&&b()&&d.slice_del());break;case 8:if(!b())return!1;d.slice_del(),d.ket=d.cursor,d.eq_s_b(2,"at")&&(d.bra=d.cursor,b()&&d.slice_del());break;case 9:if(!h()||!d.eq_s_b(1,"e"))return!1;d.slice_from("ir")}return!0}function k(e,r){if(d.eq_s_b(1,e)){d.bra=d.cursor;var s=d.limit-d.cursor;if(d.eq_s_b(1,r))return d.cursor=d.limit-s,h()&&d.slice_del(),!1}return!0}function q(){if(!g()&&(d.cursor=d.limit,!function(){var e,r;if(d.cursor>=i){if(r=d.limit_backward,d.limit_backward=i,d.ket=d.cursor,e=d.find_among_b(m,120))return d.bra=d.cursor,1==e&&d.slice_del(),d.limit_backward=r,!0;d.limit_backward=r}return!1}()))return d.cursor=d.limit,d.ket=d.cursor,void((e=d.find_among_b(c,7))&&(d.bra=d.cursor,1==e&&h()&&d.slice_del()));var e;d.cursor=d.limit,d.ket=d.cursor,d.eq_s_b(1,"i")&&(d.bra=d.cursor,d.eq_s_b(1,"c")&&(d.cursor=d.limit,h()&&d.slice_del()))}this.setCurrent=function(e){d.setCurrent(e)},this.getCurrent=function(){return d.getCurrent()},this.stem=function(){var e,r=d.cursor;return function(){for(var e;;){if(d.bra=d.cursor,e=d.find_among(o,3))switch(d.ket=d.cursor,e){case 1:d.slice_from("a~");continue;case 2:d.slice_from("o~");continue;case 3:if(d.cursor>=d.limit)break;d.cursor++;continue}break}}(),d.cursor=r,e=d.cursor,i=d.limit,s=n=i,p(),d.cursor=e,_()&&(n=d.cursor,_()&&(s=d.cursor)),d.limit_backward=r,d.cursor=d.limit,q(),d.cursor=d.limit,function(){var e;if(d.ket=d.cursor,e=d.find_among_b(l,4))switch(d.bra=d.cursor,e){case 1:h()&&(d.slice_del(),d.ket=d.cursor,d.limit,d.cursor,k("u","g")&&k("i","c"));break;case 2:d.slice_from("c")}}(),d.cursor=d.limit_backward,function(){for(var e;;){if(d.bra=d.cursor,e=d.find_among(a,3))switch(d.ket=d.cursor,e){case 1:d.slice_from("ã");continue;case 2:d.slice_from("õ");continue;case 3:if(d.cursor>=d.limit)break;d.cursor++;continue}break}}(),!0}},function(e){return"function"==typeof e.update?e.update(function(e){return r.setCurrent(e),r.stem(),r.getCurrent()}):(r.setCurrent(e),r.stem(),r.getCurrent())}),e.Pipeline.registerFunction(e.pt.stemmer,"stemmer-pt"),e.pt.stopWordFilter=e.generateStopWordFilter("a ao aos aquela aquelas aquele aqueles aquilo as até com como da das de dela delas dele deles depois do dos e ela elas ele eles em entre era eram essa essas esse esses esta estamos estas estava estavam este esteja estejam estejamos estes esteve estive estivemos estiver estivera estiveram estiverem estivermos estivesse estivessem estivéramos estivéssemos estou está estávamos estão eu foi fomos for fora foram forem formos fosse fossem fui fôramos fôssemos haja hajam hajamos havemos hei houve houvemos houver houvera houveram houverei houverem houveremos houveria houveriam houvermos houverá houverão houveríamos houvesse houvessem houvéramos houvéssemos há hão isso isto já lhe lhes mais mas me mesmo meu meus minha minhas muito na nas nem no nos nossa nossas nosso nossos num numa não nós o os ou para pela pelas pelo pelos por qual quando que quem se seja sejam sejamos sem serei seremos seria seriam será serão seríamos seu seus somos sou sua suas são só também te tem temos tenha tenham tenhamos tenho terei teremos teria teriam terá terão teríamos teu teus teve tinha tinham tive tivemos tiver tivera tiveram tiverem tivermos tivesse tivessem tivéramos tivéssemos tu tua tuas tém tínhamos um uma você vocês vos à às éramos".split(" ")),e.Pipeline.registerFunction(e.pt.stopWordFilter,"stopWordFilter-pt")}}); \ No newline at end of file diff --git a/_static/javascripts/lunr/lunr.ro.js b/_static/javascripts/lunr/lunr.ro.js new file mode 100644 index 0000000000..b19627e1b3 --- /dev/null +++ b/_static/javascripts/lunr/lunr.ro.js @@ -0,0 +1 @@ +!function(e,i){"function"==typeof define&&define.amd?define(i):"object"==typeof exports?module.exports=i():i()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var h,z,i;e.ro=function(){this.pipeline.reset(),this.pipeline.add(e.ro.trimmer,e.ro.stopWordFilter,e.ro.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.ro.stemmer))},e.ro.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.ro.trimmer=e.trimmerSupport.generateTrimmer(e.ro.wordCharacters),e.Pipeline.registerFunction(e.ro.trimmer,"trimmer-ro"),e.ro.stemmer=(h=e.stemmerSupport.Among,z=e.stemmerSupport.SnowballProgram,i=new function(){var r,n,t,a,o=[new h("",-1,3),new h("I",0,1),new h("U",0,2)],s=[new h("ea",-1,3),new h("aţia",-1,7),new h("aua",-1,2),new h("iua",-1,4),new h("aţie",-1,7),new h("ele",-1,3),new h("ile",-1,5),new h("iile",6,4),new h("iei",-1,4),new h("atei",-1,6),new h("ii",-1,4),new h("ului",-1,1),new h("ul",-1,1),new h("elor",-1,3),new h("ilor",-1,4),new h("iilor",14,4)],c=[new h("icala",-1,4),new h("iciva",-1,4),new h("ativa",-1,5),new h("itiva",-1,6),new h("icale",-1,4),new h("aţiune",-1,5),new h("iţiune",-1,6),new h("atoare",-1,5),new h("itoare",-1,6),new h("ătoare",-1,5),new h("icitate",-1,4),new h("abilitate",-1,1),new h("ibilitate",-1,2),new h("ivitate",-1,3),new h("icive",-1,4),new h("ative",-1,5),new h("itive",-1,6),new h("icali",-1,4),new h("atori",-1,5),new h("icatori",18,4),new h("itori",-1,6),new h("ători",-1,5),new h("icitati",-1,4),new h("abilitati",-1,1),new h("ivitati",-1,3),new h("icivi",-1,4),new h("ativi",-1,5),new h("itivi",-1,6),new h("icităi",-1,4),new h("abilităi",-1,1),new h("ivităi",-1,3),new h("icităţi",-1,4),new h("abilităţi",-1,1),new h("ivităţi",-1,3),new h("ical",-1,4),new h("ator",-1,5),new h("icator",35,4),new h("itor",-1,6),new h("ător",-1,5),new h("iciv",-1,4),new h("ativ",-1,5),new h("itiv",-1,6),new h("icală",-1,4),new h("icivă",-1,4),new h("ativă",-1,5),new h("itivă",-1,6)],u=[new h("ica",-1,1),new h("abila",-1,1),new h("ibila",-1,1),new h("oasa",-1,1),new h("ata",-1,1),new h("ita",-1,1),new h("anta",-1,1),new h("ista",-1,3),new h("uta",-1,1),new h("iva",-1,1),new h("ic",-1,1),new h("ice",-1,1),new h("abile",-1,1),new h("ibile",-1,1),new h("isme",-1,3),new h("iune",-1,2),new h("oase",-1,1),new h("ate",-1,1),new h("itate",17,1),new h("ite",-1,1),new h("ante",-1,1),new h("iste",-1,3),new h("ute",-1,1),new h("ive",-1,1),new h("ici",-1,1),new h("abili",-1,1),new h("ibili",-1,1),new h("iuni",-1,2),new h("atori",-1,1),new h("osi",-1,1),new h("ati",-1,1),new h("itati",30,1),new h("iti",-1,1),new h("anti",-1,1),new h("isti",-1,3),new h("uti",-1,1),new h("işti",-1,3),new h("ivi",-1,1),new h("ităi",-1,1),new h("oşi",-1,1),new h("ităţi",-1,1),new h("abil",-1,1),new h("ibil",-1,1),new h("ism",-1,3),new h("ator",-1,1),new h("os",-1,1),new h("at",-1,1),new h("it",-1,1),new h("ant",-1,1),new h("ist",-1,3),new h("ut",-1,1),new h("iv",-1,1),new h("ică",-1,1),new h("abilă",-1,1),new h("ibilă",-1,1),new h("oasă",-1,1),new h("ată",-1,1),new h("ită",-1,1),new h("antă",-1,1),new h("istă",-1,3),new h("ută",-1,1),new h("ivă",-1,1)],w=[new h("ea",-1,1),new h("ia",-1,1),new h("esc",-1,1),new h("ăsc",-1,1),new h("ind",-1,1),new h("ând",-1,1),new h("are",-1,1),new h("ere",-1,1),new h("ire",-1,1),new h("âre",-1,1),new h("se",-1,2),new h("ase",10,1),new h("sese",10,2),new h("ise",10,1),new h("use",10,1),new h("âse",10,1),new h("eşte",-1,1),new h("ăşte",-1,1),new h("eze",-1,1),new h("ai",-1,1),new h("eai",19,1),new h("iai",19,1),new h("sei",-1,2),new h("eşti",-1,1),new h("ăşti",-1,1),new h("ui",-1,1),new h("ezi",-1,1),new h("âi",-1,1),new h("aşi",-1,1),new h("seşi",-1,2),new h("aseşi",29,1),new h("seseşi",29,2),new h("iseşi",29,1),new h("useşi",29,1),new h("âseşi",29,1),new h("işi",-1,1),new h("uşi",-1,1),new h("âşi",-1,1),new h("aţi",-1,2),new h("eaţi",38,1),new h("iaţi",38,1),new h("eţi",-1,2),new h("iţi",-1,2),new h("âţi",-1,2),new h("arăţi",-1,1),new h("serăţi",-1,2),new h("aserăţi",45,1),new h("seserăţi",45,2),new h("iserăţi",45,1),new h("userăţi",45,1),new h("âserăţi",45,1),new h("irăţi",-1,1),new h("urăţi",-1,1),new h("ârăţi",-1,1),new h("am",-1,1),new h("eam",54,1),new h("iam",54,1),new h("em",-1,2),new h("asem",57,1),new h("sesem",57,2),new h("isem",57,1),new h("usem",57,1),new h("âsem",57,1),new h("im",-1,2),new h("âm",-1,2),new h("ăm",-1,2),new h("arăm",65,1),new h("serăm",65,2),new h("aserăm",67,1),new h("seserăm",67,2),new h("iserăm",67,1),new h("userăm",67,1),new h("âserăm",67,1),new h("irăm",65,1),new h("urăm",65,1),new h("ârăm",65,1),new h("au",-1,1),new h("eau",76,1),new h("iau",76,1),new h("indu",-1,1),new h("ându",-1,1),new h("ez",-1,1),new h("ească",-1,1),new h("ară",-1,1),new h("seră",-1,2),new h("aseră",84,1),new h("seseră",84,2),new h("iseră",84,1),new h("useră",84,1),new h("âseră",84,1),new h("iră",-1,1),new h("ură",-1,1),new h("âră",-1,1),new h("ează",-1,1)],i=[new h("a",-1,1),new h("e",-1,1),new h("ie",1,1),new h("i",-1,1),new h("ă",-1,1)],m=[17,65,16,0,0,0,0,0,0,0,0,0,0,0,0,0,2,32,0,0,4],l=new z;function f(e,i){l.eq_s(1,e)&&(l.ket=l.cursor,l.in_grouping(m,97,259)&&l.slice_from(i))}function p(){if(l.out_grouping(m,97,259)){for(;!l.in_grouping(m,97,259);){if(l.cursor>=l.limit)return!0;l.cursor++}return!1}return!0}function d(){var e,i,r=l.cursor;if(l.in_grouping(m,97,259)){if(e=l.cursor,!p())return void(a=l.cursor);if(l.cursor=e,!function(){if(l.in_grouping(m,97,259))for(;!l.out_grouping(m,97,259);){if(l.cursor>=l.limit)return!0;l.cursor++}return!1}())return void(a=l.cursor)}l.cursor=r,l.out_grouping(m,97,259)&&(i=l.cursor,p()&&(l.cursor=i,l.in_grouping(m,97,259)&&l.cursor=l.limit)return!1;l.cursor++}for(;!l.out_grouping(m,97,259);){if(l.cursor>=l.limit)return!1;l.cursor++}return!0}function v(){return t<=l.cursor}function _(){var e,i=l.limit-l.cursor;if(l.ket=l.cursor,(e=l.find_among_b(c,46))&&(l.bra=l.cursor,v())){switch(e){case 1:l.slice_from("abil");break;case 2:l.slice_from("ibil");break;case 3:l.slice_from("iv");break;case 4:l.slice_from("ic");break;case 5:l.slice_from("at");break;case 6:l.slice_from("it")}return r=!0,l.cursor=l.limit-i,!0}return!1}function g(){var e,i;for(r=!1;;)if(i=l.limit-l.cursor,!_()){l.cursor=l.limit-i;break}if(l.ket=l.cursor,(e=l.find_among_b(u,62))&&(l.bra=l.cursor,n<=l.cursor)){switch(e){case 1:l.slice_del();break;case 2:l.eq_s_b(1,"ţ")&&(l.bra=l.cursor,l.slice_from("t"));break;case 3:l.slice_from("ist")}r=!0}}function k(){var e;l.ket=l.cursor,(e=l.find_among_b(i,5))&&(l.bra=l.cursor,a<=l.cursor&&1==e&&l.slice_del())}this.setCurrent=function(e){l.setCurrent(e)},this.getCurrent=function(){return l.getCurrent()},this.stem=function(){var e,i=l.cursor;return function(){for(var e,i;e=l.cursor,l.in_grouping(m,97,259)&&(i=l.cursor,l.bra=i,f("u","U"),l.cursor=i,f("i","I")),l.cursor=e,!(l.cursor>=l.limit);)l.cursor++}(),l.cursor=i,e=l.cursor,a=l.limit,n=t=a,d(),l.cursor=e,b()&&(t=l.cursor,b()&&(n=l.cursor)),l.limit_backward=i,l.cursor=l.limit,function(){var e,i;if(l.ket=l.cursor,(e=l.find_among_b(s,16))&&(l.bra=l.cursor,v()))switch(e){case 1:l.slice_del();break;case 2:l.slice_from("a");break;case 3:l.slice_from("e");break;case 4:l.slice_from("i");break;case 5:i=l.limit-l.cursor,l.eq_s_b(2,"ab")||(l.cursor=l.limit-i,l.slice_from("i"));break;case 6:l.slice_from("at");break;case 7:l.slice_from("aţi")}}(),l.cursor=l.limit,g(),l.cursor=l.limit,r||(l.cursor=l.limit,function(){var e,i,r;if(l.cursor>=a){if(i=l.limit_backward,l.limit_backward=a,l.ket=l.cursor,e=l.find_among_b(w,94))switch(l.bra=l.cursor,e){case 1:if(r=l.limit-l.cursor,!l.out_grouping_b(m,97,259)&&(l.cursor=l.limit-r,!l.eq_s_b(1,"u")))break;case 2:l.slice_del()}l.limit_backward=i}}(),l.cursor=l.limit),k(),l.cursor=l.limit_backward,function(){for(var e;;){if(l.bra=l.cursor,e=l.find_among(o,3))switch(l.ket=l.cursor,e){case 1:l.slice_from("i");continue;case 2:l.slice_from("u");continue;case 3:if(l.cursor>=l.limit)break;l.cursor++;continue}break}}(),!0}},function(e){return"function"==typeof e.update?e.update(function(e){return i.setCurrent(e),i.stem(),i.getCurrent()}):(i.setCurrent(e),i.stem(),i.getCurrent())}),e.Pipeline.registerFunction(e.ro.stemmer,"stemmer-ro"),e.ro.stopWordFilter=e.generateStopWordFilter("acea aceasta această aceea acei aceia acel acela acele acelea acest acesta aceste acestea aceşti aceştia acolo acord acum ai aia aibă aici al ale alea altceva altcineva am ar are asemenea asta astea astăzi asupra au avea avem aveţi azi aş aşadar aţi bine bucur bună ca care caut ce cel ceva chiar cinci cine cineva contra cu cum cumva curând curînd când cât câte câtva câţi cînd cît cîte cîtva cîţi că căci cărei căror cărui către da dacă dar datorită dată dau de deci deja deoarece departe deşi din dinaintea dintr- dintre doi doilea două drept după dă ea ei el ele eram este eu eşti face fata fi fie fiecare fii fim fiu fiţi frumos fără graţie halbă iar ieri la le li lor lui lângă lîngă mai mea mei mele mereu meu mi mie mine mult multă mulţi mulţumesc mâine mîine mă ne nevoie nici nicăieri nimeni nimeri nimic nişte noastre noastră noi noroc nostru nouă noştri nu opt ori oricare orice oricine oricum oricând oricât oricînd oricît oriunde patra patru patrulea pe pentru peste pic poate pot prea prima primul prin puţin puţina puţină până pînă rog sa sale sau se spate spre sub sunt suntem sunteţi sută sînt sîntem sînteţi să săi său ta tale te timp tine toate toată tot totuşi toţi trei treia treilea tu tăi tău un una unde undeva unei uneia unele uneori unii unor unora unu unui unuia unul vi voastre voastră voi vostru vouă voştri vreme vreo vreun vă zece zero zi zice îi îl îmi împotriva în înainte înaintea încotro încât încît între întrucât întrucît îţi ăla ălea ăsta ăstea ăştia şapte şase şi ştiu ţi ţie".split(" ")),e.Pipeline.registerFunction(e.ro.stopWordFilter,"stopWordFilter-ro")}}); \ No newline at end of file diff --git a/_static/javascripts/lunr/lunr.ru.js b/_static/javascripts/lunr/lunr.ru.js new file mode 100644 index 0000000000..ac99248044 --- /dev/null +++ b/_static/javascripts/lunr/lunr.ru.js @@ -0,0 +1 @@ +!function(e,n){"function"==typeof define&&define.amd?define(n):"object"==typeof exports?module.exports=n():n()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var h,g,n;e.ru=function(){this.pipeline.reset(),this.pipeline.add(e.ru.trimmer,e.ru.stopWordFilter,e.ru.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.ru.stemmer))},e.ru.wordCharacters="Ѐ-҄҇-ԯᴫᵸⷠ-ⷿꙀ-ꚟ︮︯",e.ru.trimmer=e.trimmerSupport.generateTrimmer(e.ru.wordCharacters),e.Pipeline.registerFunction(e.ru.trimmer,"trimmer-ru"),e.ru.stemmer=(h=e.stemmerSupport.Among,g=e.stemmerSupport.SnowballProgram,n=new function(){var n,e,r=[new h("в",-1,1),new h("ив",0,2),new h("ыв",0,2),new h("вши",-1,1),new h("ивши",3,2),new h("ывши",3,2),new h("вшись",-1,1),new h("ившись",6,2),new h("ывшись",6,2)],t=[new h("ее",-1,1),new h("ие",-1,1),new h("ое",-1,1),new h("ые",-1,1),new h("ими",-1,1),new h("ыми",-1,1),new h("ей",-1,1),new h("ий",-1,1),new h("ой",-1,1),new h("ый",-1,1),new h("ем",-1,1),new h("им",-1,1),new h("ом",-1,1),new h("ым",-1,1),new h("его",-1,1),new h("ого",-1,1),new h("ему",-1,1),new h("ому",-1,1),new h("их",-1,1),new h("ых",-1,1),new h("ею",-1,1),new h("ою",-1,1),new h("ую",-1,1),new h("юю",-1,1),new h("ая",-1,1),new h("яя",-1,1)],w=[new h("ем",-1,1),new h("нн",-1,1),new h("вш",-1,1),new h("ивш",2,2),new h("ывш",2,2),new h("щ",-1,1),new h("ющ",5,1),new h("ующ",6,2)],i=[new h("сь",-1,1),new h("ся",-1,1)],u=[new h("ла",-1,1),new h("ила",0,2),new h("ыла",0,2),new h("на",-1,1),new h("ена",3,2),new h("ете",-1,1),new h("ите",-1,2),new h("йте",-1,1),new h("ейте",7,2),new h("уйте",7,2),new h("ли",-1,1),new h("или",10,2),new h("ыли",10,2),new h("й",-1,1),new h("ей",13,2),new h("уй",13,2),new h("л",-1,1),new h("ил",16,2),new h("ыл",16,2),new h("ем",-1,1),new h("им",-1,2),new h("ым",-1,2),new h("н",-1,1),new h("ен",22,2),new h("ло",-1,1),new h("ило",24,2),new h("ыло",24,2),new h("но",-1,1),new h("ено",27,2),new h("нно",27,1),new h("ет",-1,1),new h("ует",30,2),new h("ит",-1,2),new h("ыт",-1,2),new h("ют",-1,1),new h("уют",34,2),new h("ят",-1,2),new h("ны",-1,1),new h("ены",37,2),new h("ть",-1,1),new h("ить",39,2),new h("ыть",39,2),new h("ешь",-1,1),new h("ишь",-1,2),new h("ю",-1,2),new h("ую",44,2)],s=[new h("а",-1,1),new h("ев",-1,1),new h("ов",-1,1),new h("е",-1,1),new h("ие",3,1),new h("ье",3,1),new h("и",-1,1),new h("еи",6,1),new h("ии",6,1),new h("ами",6,1),new h("ями",6,1),new h("иями",10,1),new h("й",-1,1),new h("ей",12,1),new h("ией",13,1),new h("ий",12,1),new h("ой",12,1),new h("ам",-1,1),new h("ем",-1,1),new h("ием",18,1),new h("ом",-1,1),new h("ям",-1,1),new h("иям",21,1),new h("о",-1,1),new h("у",-1,1),new h("ах",-1,1),new h("ях",-1,1),new h("иях",26,1),new h("ы",-1,1),new h("ь",-1,1),new h("ю",-1,1),new h("ию",30,1),new h("ью",30,1),new h("я",-1,1),new h("ия",33,1),new h("ья",33,1)],o=[new h("ост",-1,1),new h("ость",-1,1)],c=[new h("ейше",-1,1),new h("н",-1,2),new h("ейш",-1,1),new h("ь",-1,3)],m=[33,65,8,232],l=new g;function f(){for(;!l.in_grouping(m,1072,1103);){if(l.cursor>=l.limit)return!1;l.cursor++}return!0}function a(){for(;!l.out_grouping(m,1072,1103);){if(l.cursor>=l.limit)return!1;l.cursor++}return!0}function p(e,n){var r,t;if(l.ket=l.cursor,r=l.find_among_b(e,n)){switch(l.bra=l.cursor,r){case 1:if(t=l.limit-l.cursor,!l.eq_s_b(1,"а")&&(l.cursor=l.limit-t,!l.eq_s_b(1,"я")))return!1;case 2:l.slice_del()}return!0}return!1}function d(e,n){var r;return l.ket=l.cursor,!!(r=l.find_among_b(e,n))&&(l.bra=l.cursor,1==r&&l.slice_del(),!0)}function _(){return!!d(t,26)&&(p(w,8),!0)}function b(){var e;l.ket=l.cursor,(e=l.find_among_b(o,2))&&(l.bra=l.cursor,n<=l.cursor&&1==e&&l.slice_del())}this.setCurrent=function(e){l.setCurrent(e)},this.getCurrent=function(){return l.getCurrent()},this.stem=function(){return e=l.limit,n=e,f()&&(e=l.cursor,a()&&f()&&a()&&(n=l.cursor)),l.cursor=l.limit,!(l.cursor>3]&1<<(7&s))return this.cursor++,!0}return!1},in_grouping_b:function(r,t,i){if(this.cursor>this.limit_backward){var s=b.charCodeAt(this.cursor-1);if(s<=i&&t<=s&&r[(s-=t)>>3]&1<<(7&s))return this.cursor--,!0}return!1},out_grouping:function(r,t,i){if(this.cursor>3]&1<<(7&s)))return this.cursor++,!0}return!1},out_grouping_b:function(r,t,i){if(this.cursor>this.limit_backward){var s=b.charCodeAt(this.cursor-1);if(i>3]&1<<(7&s)))return this.cursor--,!0}return!1},eq_s:function(r,t){if(this.limit-this.cursor>1),a=0,f=u=(l=r[i]).s_size){if(this.cursor=e+l.s_size,!l.method)return l.result;var m=l.method();if(this.cursor=e+l.s_size,m)return l.result}if((i=l.substring_i)<0)return 0}},find_among_b:function(r,t){for(var i=0,s=t,e=this.cursor,n=this.limit_backward,u=0,o=0,h=!1;;){for(var c=i+(s-i>>1),a=0,f=u=(_=r[i]).s_size){if(this.cursor=e-_.s_size,!_.method)return _.result;var m=_.method();if(this.cursor=e-_.s_size,m)return _.result}if((i=_.substring_i)<0)return 0}},replace_s:function(r,t,i){var s=i.length-(t-r);return b=b.substring(0,r)+i+b.substring(t),this.limit+=s,this.cursor>=t?this.cursor+=s:this.cursor>r&&(this.cursor=r),s},slice_check:function(){if(this.bra<0||this.bra>this.ket||this.ket>this.limit||this.limit>b.length)throw"faulty slice operation"},slice_from:function(r){this.slice_check(),this.replace_s(this.bra,this.ket,r)},slice_del:function(){this.slice_from("")},insert:function(r,t,i){var s=this.replace_s(r,t,i);r<=this.bra&&(this.bra+=s),r<=this.ket&&(this.ket+=s)},slice_to:function(){return this.slice_check(),b.substring(this.bra,this.ket)},eq_v_b:function(r){return this.eq_s_b(r.length,r)}}}},r.trimmerSupport={generateTrimmer:function(r){var t=new RegExp("^[^"+r+"]+"),i=new RegExp("[^"+r+"]+$");return function(r){return"function"==typeof r.update?r.update(function(r){return r.replace(t,"").replace(i,"")}):r.replace(t,"").replace(i,"")}}}}}); \ No newline at end of file diff --git a/_static/javascripts/lunr/lunr.sv.js b/_static/javascripts/lunr/lunr.sv.js new file mode 100644 index 0000000000..6daf5f9d80 --- /dev/null +++ b/_static/javascripts/lunr/lunr.sv.js @@ -0,0 +1 @@ +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var r,l,n;e.sv=function(){this.pipeline.reset(),this.pipeline.add(e.sv.trimmer,e.sv.stopWordFilter,e.sv.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.sv.stemmer))},e.sv.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.sv.trimmer=e.trimmerSupport.generateTrimmer(e.sv.wordCharacters),e.Pipeline.registerFunction(e.sv.trimmer,"trimmer-sv"),e.sv.stemmer=(r=e.stemmerSupport.Among,l=e.stemmerSupport.SnowballProgram,n=new function(){var n,t,i=[new r("a",-1,1),new r("arna",0,1),new r("erna",0,1),new r("heterna",2,1),new r("orna",0,1),new r("ad",-1,1),new r("e",-1,1),new r("ade",6,1),new r("ande",6,1),new r("arne",6,1),new r("are",6,1),new r("aste",6,1),new r("en",-1,1),new r("anden",12,1),new r("aren",12,1),new r("heten",12,1),new r("ern",-1,1),new r("ar",-1,1),new r("er",-1,1),new r("heter",18,1),new r("or",-1,1),new r("s",-1,2),new r("as",21,1),new r("arnas",22,1),new r("ernas",22,1),new r("ornas",22,1),new r("es",21,1),new r("ades",26,1),new r("andes",26,1),new r("ens",21,1),new r("arens",29,1),new r("hetens",29,1),new r("erns",21,1),new r("at",-1,1),new r("andet",-1,1),new r("het",-1,1),new r("ast",-1,1)],s=[new r("dd",-1,-1),new r("gd",-1,-1),new r("nn",-1,-1),new r("dt",-1,-1),new r("gt",-1,-1),new r("kt",-1,-1),new r("tt",-1,-1)],a=[new r("ig",-1,1),new r("lig",0,1),new r("els",-1,1),new r("fullt",-1,3),new r("löst",-1,2)],o=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,24,0,32],u=[119,127,149],m=new l;this.setCurrent=function(e){m.setCurrent(e)},this.getCurrent=function(){return m.getCurrent()},this.stem=function(){var e,r=m.cursor;return function(){var e,r=m.cursor+3;if(t=m.limit,0<=r||r<=m.limit){for(n=r;;){if(e=m.cursor,m.in_grouping(o,97,246)){m.cursor=e;break}if(m.cursor=e,m.cursor>=m.limit)return;m.cursor++}for(;!m.out_grouping(o,97,246);){if(m.cursor>=m.limit)return;m.cursor++}(t=m.cursor)=t&&(m.limit_backward=t,m.cursor=m.limit,m.ket=m.cursor,e=m.find_among_b(i,37),m.limit_backward=r,e))switch(m.bra=m.cursor,e){case 1:m.slice_del();break;case 2:m.in_grouping_b(u,98,121)&&m.slice_del()}}(),m.cursor=m.limit,e=m.limit_backward,m.cursor>=t&&(m.limit_backward=t,m.cursor=m.limit,m.find_among_b(s,7)&&(m.cursor=m.limit,m.ket=m.cursor,m.cursor>m.limit_backward&&(m.bra=--m.cursor,m.slice_del())),m.limit_backward=e),m.cursor=m.limit,function(){var e,r;if(m.cursor>=t){if(r=m.limit_backward,m.limit_backward=t,m.cursor=m.limit,m.ket=m.cursor,e=m.find_among_b(a,5))switch(m.bra=m.cursor,e){case 1:m.slice_del();break;case 2:m.slice_from("lös");break;case 3:m.slice_from("full")}m.limit_backward=r}}(),!0}},function(e){return"function"==typeof e.update?e.update(function(e){return n.setCurrent(e),n.stem(),n.getCurrent()}):(n.setCurrent(e),n.stem(),n.getCurrent())}),e.Pipeline.registerFunction(e.sv.stemmer,"stemmer-sv"),e.sv.stopWordFilter=e.generateStopWordFilter("alla allt att av blev bli blir blivit de dem den denna deras dess dessa det detta dig din dina ditt du där då efter ej eller en er era ert ett från för ha hade han hans har henne hennes hon honom hur här i icke ingen inom inte jag ju kan kunde man med mellan men mig min mina mitt mot mycket ni nu när någon något några och om oss på samma sedan sig sin sina sitta själv skulle som så sådan sådana sådant till under upp ut utan vad var vara varför varit varje vars vart vem vi vid vilka vilkas vilken vilket vår våra vårt än är åt över".split(" ")),e.Pipeline.registerFunction(e.sv.stopWordFilter,"stopWordFilter-sv")}}); \ No newline at end of file diff --git a/_static/javascripts/lunr/lunr.th.js b/_static/javascripts/lunr/lunr.th.js new file mode 100644 index 0000000000..ee8ef373a0 --- /dev/null +++ b/_static/javascripts/lunr/lunr.th.js @@ -0,0 +1 @@ +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(t){if(void 0===t)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===t.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var i="2"==t.version[0];t.th=function(){this.pipeline.reset(),this.pipeline.add(t.th.trimmer),i?this.tokenizer=t.th.tokenizer:(t.tokenizer&&(t.tokenizer=t.th.tokenizer),this.tokenizerFn&&(this.tokenizerFn=t.th.tokenizer))},t.th.wordCharacters="[฀-๿]",t.th.trimmer=t.trimmerSupport.generateTrimmer(t.th.wordCharacters),t.Pipeline.registerFunction(t.th.trimmer,"trimmer-th");var n=t.wordcut;n.init(),t.th.tokenizer=function(e){if(!arguments.length||null==e||null==e)return[];if(Array.isArray(e))return e.map(function(e){return i?new t.Token(e):e});var r=e.toString().replace(/^\s+/,"");return n.cut(r).split("|")}}}); \ No newline at end of file diff --git a/_static/javascripts/lunr/lunr.tr.js b/_static/javascripts/lunr/lunr.tr.js new file mode 100644 index 0000000000..e8fb5a7df6 --- /dev/null +++ b/_static/javascripts/lunr/lunr.tr.js @@ -0,0 +1 @@ +!function(r,i){"function"==typeof define&&define.amd?define(i):"object"==typeof exports?module.exports=i():i()(r.lunr)}(this,function(){return function(r){if(void 0===r)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===r.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var mr,dr,i;r.tr=function(){this.pipeline.reset(),this.pipeline.add(r.tr.trimmer,r.tr.stopWordFilter,r.tr.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(r.tr.stemmer))},r.tr.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",r.tr.trimmer=r.trimmerSupport.generateTrimmer(r.tr.wordCharacters),r.Pipeline.registerFunction(r.tr.trimmer,"trimmer-tr"),r.tr.stemmer=(mr=r.stemmerSupport.Among,dr=r.stemmerSupport.SnowballProgram,i=new function(){var t,r=[new mr("m",-1,-1),new mr("n",-1,-1),new mr("miz",-1,-1),new mr("niz",-1,-1),new mr("muz",-1,-1),new mr("nuz",-1,-1),new mr("müz",-1,-1),new mr("nüz",-1,-1),new mr("mız",-1,-1),new mr("nız",-1,-1)],i=[new mr("leri",-1,-1),new mr("ları",-1,-1)],e=[new mr("ni",-1,-1),new mr("nu",-1,-1),new mr("nü",-1,-1),new mr("nı",-1,-1)],n=[new mr("in",-1,-1),new mr("un",-1,-1),new mr("ün",-1,-1),new mr("ın",-1,-1)],u=[new mr("a",-1,-1),new mr("e",-1,-1)],o=[new mr("na",-1,-1),new mr("ne",-1,-1)],s=[new mr("da",-1,-1),new mr("ta",-1,-1),new mr("de",-1,-1),new mr("te",-1,-1)],c=[new mr("nda",-1,-1),new mr("nde",-1,-1)],l=[new mr("dan",-1,-1),new mr("tan",-1,-1),new mr("den",-1,-1),new mr("ten",-1,-1)],a=[new mr("ndan",-1,-1),new mr("nden",-1,-1)],m=[new mr("la",-1,-1),new mr("le",-1,-1)],d=[new mr("ca",-1,-1),new mr("ce",-1,-1)],f=[new mr("im",-1,-1),new mr("um",-1,-1),new mr("üm",-1,-1),new mr("ım",-1,-1)],b=[new mr("sin",-1,-1),new mr("sun",-1,-1),new mr("sün",-1,-1),new mr("sın",-1,-1)],w=[new mr("iz",-1,-1),new mr("uz",-1,-1),new mr("üz",-1,-1),new mr("ız",-1,-1)],_=[new mr("siniz",-1,-1),new mr("sunuz",-1,-1),new mr("sünüz",-1,-1),new mr("sınız",-1,-1)],k=[new mr("lar",-1,-1),new mr("ler",-1,-1)],p=[new mr("niz",-1,-1),new mr("nuz",-1,-1),new mr("nüz",-1,-1),new mr("nız",-1,-1)],g=[new mr("dir",-1,-1),new mr("tir",-1,-1),new mr("dur",-1,-1),new mr("tur",-1,-1),new mr("dür",-1,-1),new mr("tür",-1,-1),new mr("dır",-1,-1),new mr("tır",-1,-1)],y=[new mr("casına",-1,-1),new mr("cesine",-1,-1)],z=[new mr("di",-1,-1),new mr("ti",-1,-1),new mr("dik",-1,-1),new mr("tik",-1,-1),new mr("duk",-1,-1),new mr("tuk",-1,-1),new mr("dük",-1,-1),new mr("tük",-1,-1),new mr("dık",-1,-1),new mr("tık",-1,-1),new mr("dim",-1,-1),new mr("tim",-1,-1),new mr("dum",-1,-1),new mr("tum",-1,-1),new mr("düm",-1,-1),new mr("tüm",-1,-1),new mr("dım",-1,-1),new mr("tım",-1,-1),new mr("din",-1,-1),new mr("tin",-1,-1),new mr("dun",-1,-1),new mr("tun",-1,-1),new mr("dün",-1,-1),new mr("tün",-1,-1),new mr("dın",-1,-1),new mr("tın",-1,-1),new mr("du",-1,-1),new mr("tu",-1,-1),new mr("dü",-1,-1),new mr("tü",-1,-1),new mr("dı",-1,-1),new mr("tı",-1,-1)],h=[new mr("sa",-1,-1),new mr("se",-1,-1),new mr("sak",-1,-1),new mr("sek",-1,-1),new mr("sam",-1,-1),new mr("sem",-1,-1),new mr("san",-1,-1),new mr("sen",-1,-1)],v=[new mr("miş",-1,-1),new mr("muş",-1,-1),new mr("müş",-1,-1),new mr("mış",-1,-1)],q=[new mr("b",-1,1),new mr("c",-1,2),new mr("d",-1,3),new mr("ğ",-1,4)],C=[17,65,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,8,0,0,0,0,0,0,1],P=[1,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,1],F=[65],S=[65],W=[["a",[1,64,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],97,305],["e",[17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130],101,252],["ı",[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],97,305],["i",[17],101,105],["o",F,111,117],["ö",S,246,252],["u",F,111,117]],L=new dr;function x(r,i,e){for(;;){var n=L.limit-L.cursor;if(L.in_grouping_b(r,i,e)){L.cursor=L.limit-n;break}if(L.cursor=L.limit-n,L.cursor<=L.limit_backward)return!1;L.cursor--}return!0}function A(){var r,i;r=L.limit-L.cursor,x(C,97,305);for(var e=0;eL.limit_backward&&(L.cursor--,e=L.limit-L.cursor,i()))?(L.cursor=L.limit-e,!0):(L.cursor=L.limit-n,r()?(L.cursor=L.limit-n,!1):(L.cursor=L.limit-n,!(L.cursor<=L.limit_backward)&&(L.cursor--,!!i()&&(L.cursor=L.limit-n,!0))))}function j(r){return E(r,function(){return L.in_grouping_b(C,97,305)})}function T(){return j(function(){return L.eq_s_b(1,"n")})}function Z(){return j(function(){return L.eq_s_b(1,"y")})}function B(){return L.find_among_b(r,10)&&E(function(){return L.in_grouping_b(P,105,305)},function(){return L.out_grouping_b(C,97,305)})}function D(){return A()&&L.in_grouping_b(P,105,305)&&j(function(){return L.eq_s_b(1,"s")})}function G(){return L.find_among_b(i,2)}function H(){return A()&&L.find_among_b(n,4)&&T()}function I(){return A()&&L.find_among_b(s,4)}function J(){return A()&&L.find_among_b(c,2)}function K(){return A()&&L.find_among_b(f,4)&&Z()}function M(){return A()&&L.find_among_b(b,4)}function N(){return A()&&L.find_among_b(w,4)&&Z()}function O(){return L.find_among_b(_,4)}function Q(){return A()&&L.find_among_b(k,2)}function R(){return A()&&L.find_among_b(g,8)}function U(){return A()&&L.find_among_b(z,32)&&Z()}function V(){return L.find_among_b(h,8)&&Z()}function X(){return A()&&L.find_among_b(v,4)&&Z()}function Y(){var r=L.limit-L.cursor;return!(X()||(L.cursor=L.limit-r,U()||(L.cursor=L.limit-r,V()||(L.cursor=L.limit-r,L.eq_s_b(3,"ken")&&Z()))))}function $(){if(L.find_among_b(y,2)){var r=L.limit-L.cursor;if(O()||(L.cursor=L.limit-r,Q()||(L.cursor=L.limit-r,K()||(L.cursor=L.limit-r,M()||(L.cursor=L.limit-r,N()||(L.cursor=L.limit-r))))),X())return!1}return!0}function rr(){if(!A()||!L.find_among_b(p,4))return!0;var r=L.limit-L.cursor;return!U()&&(L.cursor=L.limit-r,!V())}function ir(){var r,i,e,n=L.limit-L.cursor;if(L.ket=L.cursor,t=!0,Y()&&(L.cursor=L.limit-n,$()&&(L.cursor=L.limit-n,function(){if(Q()){L.bra=L.cursor,L.slice_del();var r=L.limit-L.cursor;return L.ket=L.cursor,R()||(L.cursor=L.limit-r,U()||(L.cursor=L.limit-r,V()||(L.cursor=L.limit-r,X()||(L.cursor=L.limit-r)))),t=!1}return!0}()&&(L.cursor=L.limit-n,rr()&&(L.cursor=L.limit-n,e=L.limit-L.cursor,!(O()||(L.cursor=L.limit-e,N()||(L.cursor=L.limit-e,M()||(L.cursor=L.limit-e,K()))))||(L.bra=L.cursor,L.slice_del(),i=L.limit-L.cursor,L.ket=L.cursor,X()||(L.cursor=L.limit-i),0)))))){if(L.cursor=L.limit-n,!R())return;L.bra=L.cursor,L.slice_del(),L.ket=L.cursor,r=L.limit-L.cursor,O()||(L.cursor=L.limit-r,Q()||(L.cursor=L.limit-r,K()||(L.cursor=L.limit-r,M()||(L.cursor=L.limit-r,N()||(L.cursor=L.limit-r))))),X()||(L.cursor=L.limit-r)}L.bra=L.cursor,L.slice_del()}function er(){var r,i,e,n;if(L.ket=L.cursor,L.eq_s_b(2,"ki")){if(r=L.limit-L.cursor,I())return L.bra=L.cursor,L.slice_del(),i=L.limit-L.cursor,L.ket=L.cursor,Q()?(L.bra=L.cursor,L.slice_del(),er()):(L.cursor=L.limit-i,B()&&(L.bra=L.cursor,L.slice_del(),L.ket=L.cursor,Q()&&(L.bra=L.cursor,L.slice_del(),er()))),!0;if(L.cursor=L.limit-r,H()){if(L.bra=L.cursor,L.slice_del(),L.ket=L.cursor,e=L.limit-L.cursor,G())L.bra=L.cursor,L.slice_del();else{if(L.cursor=L.limit-e,L.ket=L.cursor,!B()&&(L.cursor=L.limit-e,!D()&&(L.cursor=L.limit-e,!er())))return!0;L.bra=L.cursor,L.slice_del(),L.ket=L.cursor,Q()&&(L.bra=L.cursor,L.slice_del(),er())}return!0}if(L.cursor=L.limit-r,J()){if(n=L.limit-L.cursor,G())L.bra=L.cursor,L.slice_del();else if(L.cursor=L.limit-n,D())L.bra=L.cursor,L.slice_del(),L.ket=L.cursor,Q()&&(L.bra=L.cursor,L.slice_del(),er());else if(L.cursor=L.limit-n,!er())return!1;return!0}}return!1}function nr(r){if(L.ket=L.cursor,!J()&&(L.cursor=L.limit-r,!A()||!L.find_among_b(o,2)))return!1;var i=L.limit-L.cursor;if(G())L.bra=L.cursor,L.slice_del();else if(L.cursor=L.limit-i,D())L.bra=L.cursor,L.slice_del(),L.ket=L.cursor,Q()&&(L.bra=L.cursor,L.slice_del(),er());else if(L.cursor=L.limit-i,!er())return!1;return!0}function tr(r){if(L.ket=L.cursor,!(A()&&L.find_among_b(a,2)||(L.cursor=L.limit-r,A()&&L.find_among_b(e,4))))return!1;var i=L.limit-L.cursor;return!(!D()&&(L.cursor=L.limit-i,!G()))&&(L.bra=L.cursor,L.slice_del(),L.ket=L.cursor,Q()&&(L.bra=L.cursor,L.slice_del(),er()),!0)}function ur(){var r,i=L.limit-L.cursor;return L.ket=L.cursor,!!(H()||(L.cursor=L.limit-i,A()&&L.find_among_b(m,2)&&Z()))&&(L.bra=L.cursor,L.slice_del(),r=L.limit-L.cursor,L.ket=L.cursor,!(!Q()||(L.bra=L.cursor,L.slice_del(),!er()))||(L.cursor=L.limit-r,L.ket=L.cursor,(B()||(L.cursor=L.limit-r,D()||(L.cursor=L.limit-r,er())))&&(L.bra=L.cursor,L.slice_del(),L.ket=L.cursor,Q()&&(L.bra=L.cursor,L.slice_del(),er())),!0))}function or(){var r,i,e=L.limit-L.cursor;if(L.ket=L.cursor,!(I()||(L.cursor=L.limit-e,A()&&L.in_grouping_b(P,105,305)&&Z()||(L.cursor=L.limit-e,A()&&L.find_among_b(u,2)&&Z()))))return!1;if(L.bra=L.cursor,L.slice_del(),L.ket=L.cursor,r=L.limit-L.cursor,B())L.bra=L.cursor,L.slice_del(),i=L.limit-L.cursor,L.ket=L.cursor,Q()||(L.cursor=L.limit-i);else if(L.cursor=L.limit-r,!Q())return!0;return L.bra=L.cursor,L.slice_del(),L.ket=L.cursor,er(),!0}function sr(){var r,i,e=L.limit-L.cursor;if(L.ket=L.cursor,Q())return L.bra=L.cursor,L.slice_del(),void er();if(L.cursor=L.limit-e,L.ket=L.cursor,A()&&L.find_among_b(d,2)&&T())if(L.bra=L.cursor,L.slice_del(),r=L.limit-L.cursor,L.ket=L.cursor,G())L.bra=L.cursor,L.slice_del();else{if(L.cursor=L.limit-r,L.ket=L.cursor,!B()&&(L.cursor=L.limit-r,!D())){if(L.cursor=L.limit-r,L.ket=L.cursor,!Q())return;if(L.bra=L.cursor,L.slice_del(),!er())return}L.bra=L.cursor,L.slice_del(),L.ket=L.cursor,Q()&&(L.bra=L.cursor,L.slice_del(),er())}else if(L.cursor=L.limit-e,!nr(e)&&(L.cursor=L.limit-e,!tr(e))){if(L.cursor=L.limit-e,L.ket=L.cursor,A()&&L.find_among_b(l,4))return L.bra=L.cursor,L.slice_del(),L.ket=L.cursor,i=L.limit-L.cursor,void(B()?(L.bra=L.cursor,L.slice_del(),L.ket=L.cursor,Q()&&(L.bra=L.cursor,L.slice_del(),er())):(L.cursor=L.limit-i,Q()?(L.bra=L.cursor,L.slice_del()):L.cursor=L.limit-i,er()));if(L.cursor=L.limit-e,!ur()){if(L.cursor=L.limit-e,G())return L.bra=L.cursor,void L.slice_del();L.cursor=L.limit-e,er()||(L.cursor=L.limit-e,or()||(L.cursor=L.limit-e,L.ket=L.cursor,(B()||(L.cursor=L.limit-e,D()))&&(L.bra=L.cursor,L.slice_del(),L.ket=L.cursor,Q()&&(L.bra=L.cursor,L.slice_del(),er()))))}}}function cr(r,i,e){if(L.cursor=L.limit-r,function(){for(;;){var r=L.limit-L.cursor;if(L.in_grouping_b(C,97,305)){L.cursor=L.limit-r;break}if(L.cursor=L.limit-r,L.cursor<=L.limit_backward)return!1;L.cursor--}return!0}()){var n=L.limit-L.cursor;if(!L.eq_s_b(1,i)&&(L.cursor=L.limit-n,!L.eq_s_b(1,e)))return!0;L.cursor=L.limit-r;var t=L.cursor;return L.insert(L.cursor,L.cursor,e),L.cursor=t,!1}return!0}function lr(r,i,e){for(;!L.eq_s(i,e);){if(L.cursor>=L.limit)return!0;L.cursor++}return i!=L.limit||(L.cursor=r,!1)}function ar(){var r,i,e=L.cursor;return!(!lr(r=L.cursor,2,"ad")||!lr(L.cursor=r,5,"soyad"))&&(L.limit_backward=e,L.cursor=L.limit,i=L.limit-L.cursor,(L.eq_s_b(1,"d")||(L.cursor=L.limit-i,L.eq_s_b(1,"g")))&&cr(i,"a","ı")&&cr(i,"e","i")&&cr(i,"o","u")&&cr(i,"ö","ü"),L.cursor=L.limit,function(){var r;if(L.ket=L.cursor,r=L.find_among_b(q,4))switch(L.bra=L.cursor,r){case 1:L.slice_from("p");break;case 2:L.slice_from("ç");break;case 3:L.slice_from("t");break;case 4:L.slice_from("k")}}(),!0)}this.setCurrent=function(r){L.setCurrent(r)},this.getCurrent=function(){return L.getCurrent()},this.stem=function(){return!!(function(){for(var r,i=L.cursor,e=2;;){for(r=L.cursor;!L.in_grouping(C,97,305);){if(L.cursor>=L.limit)return L.cursor=r,!(0e&&(this._events[n].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[n].length),"function"==typeof console.trace&&console.trace()));return this},r.prototype.once=function(n,t){if(!a(t))throw TypeError("listener must be a function");var e=!1;function r(){this.removeListener(n,r),e||(e=!0,t.apply(this,arguments))}return r.listener=t,this.on(n,r),this},r.prototype.removeListener=function(n,t){var e,r,i,o;if(!a(t))throw TypeError("listener must be a function");if(!this._events||!this._events[n])return this;if(i=(e=this._events[n]).length,r=-1,e===t||a(e.listener)&&e.listener===t)delete this._events[n],this._events.removeListener&&this.emit("removeListener",n,t);else if(c(e)){for(o=i;0this.maxLength)return i();if(!this.stat&&p(this.cache,o)){var t=this.cache[o];if(Array.isArray(t)&&(t="DIR"),!n||"DIR"===t)return i(null,t);if(n&&"FILE"===t)return i()}var e=this.statCache[o];if(void 0!==e){if(!1===e)return i(null,e);var s=e.isDirectory()?"DIR":"FILE";return n&&"FILE"===s?i():i(null,s,e)}var a=this,c=d("stat\0"+o,function(n,e){{if(e&&e.isSymbolicLink())return u.stat(o,function(n,t){n?a._stat2(r,o,null,e,i):a._stat2(r,o,n,t,i)});a._stat2(r,o,n,e,i)}});c&&u.lstat(o,c)},b.prototype._stat2=function(n,t,e,r,i){if(e)return this.statCache[t]=!1,i();var o="/"===n.slice(-1);if(this.statCache[t]=r,"/"===t.slice(-1)&&!r.isDirectory())return i(null,!1,r);var s=r.isDirectory()?"DIR":"FILE";return this.cache[t]=this.cache[t]||s,o&&"DIR"!==s?i():i(null,s,r)}}).call(this,_("_process"))},{"./common.js":15,"./sync.js":17,_process:24,assert:9,events:14,fs:12,inflight:18,inherits:19,minimatch:20,once:21,path:22,"path-is-absolute":23,util:28}],17:[function(e,r,n){(function(i){(r.exports=n).GlobSync=h;var s=e("fs"),c=e("minimatch"),g=(c.Minimatch,e("./glob.js").Glob,e("util"),e("path")),u=e("assert"),l=e("path-is-absolute"),t=e("./common.js"),o=(t.alphasort,t.alphasorti,t.setopts),a=t.ownProp,f=t.childrenIgnored;function n(n,t){if("function"==typeof t||3===arguments.length)throw new TypeError("callback provided to sync glob\nSee: https://github.com/isaacs/node-glob/issues/167");return new h(n,t).found}function h(n,t){if(!n)throw new Error("must provide pattern");if("function"==typeof t||3===arguments.length)throw new TypeError("callback provided to sync glob\nSee: https://github.com/isaacs/node-glob/issues/167");if(!(this instanceof h))return new h(n,t);if(o(this,n,t),this.noprocess)return this;var e=this.minimatch.set.length;this.matches=new Array(e);for(var r=0;rthis.maxLength)return!1;if(!this.stat&&a(this.cache,t)){var r=this.cache[t];if(Array.isArray(r)&&(r="DIR"),!e||"DIR"===r)return r;if(e&&"FILE"===r)return!1}var i=this.statCache[t];if(!i){var o;try{o=s.lstatSync(t)}catch(n){return!1}if(o.isSymbolicLink())try{i=s.statSync(t)}catch(n){i=o}else i=o}r=(this.statCache[t]=i).isDirectory()?"DIR":"FILE";return this.cache[t]=this.cache[t]||r,(!e||"DIR"===r)&&r},h.prototype._mark=function(n){return t.mark(this,n)},h.prototype._makeAbs=function(n){return t.makeAbs(this,n)}}).call(this,e("_process"))},{"./common.js":15,"./glob.js":16,_process:24,assert:9,fs:12,minimatch:20,path:22,"path-is-absolute":23,util:28}],18:[function(t,r,n){(function(s){var n=t("wrappy"),a=Object.create(null),e=t("once");r.exports=n(function(n,t){return a[n]?(a[n].push(t),null):(a[n]=[t],o=n,e(function n(){var t=a[o],e=t.length,r=function(n){for(var t=n.length,e=[],r=0;re?(t.splice(0,e),s.nextTick(function(){n.apply(null,r)})):delete a[o]}}));var o})}).call(this,t("_process"))},{_process:24,once:21,wrappy:29}],19:[function(n,t,e){"function"==typeof Object.create?t.exports=function(n,t){n.super_=t,n.prototype=Object.create(t.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}})}:t.exports=function(n,t){n.super_=t;var e=function(){};e.prototype=t.prototype,n.prototype=new e,n.prototype.constructor=n}},{}],20:[function(n,t,e){(t.exports=s).Minimatch=i;var u={sep:"/"};try{u=n("path")}catch(n){}var M=s.GLOBSTAR=i.GLOBSTAR={},r=n("brace-expansion"),C={"!":{open:"(?:(?!(?:",close:"))[^/]*?)"},"?":{open:"(?:",close:")?"},"+":{open:"(?:",close:")+"},"*":{open:"(?:",close:")*"},"@":{open:"(?:",close:")"}},P="[^/]",z=P+"*?",B="().*{}+?[]^$\\!".split("").reduce(function(n,t){return n[t]=!0,n},{});var l=/\/+/;function o(t,e){t=t||{},e=e||{};var r={};return Object.keys(e).forEach(function(n){r[n]=e[n]}),Object.keys(t).forEach(function(n){r[n]=t[n]}),r}function s(n,t,e){if("string"!=typeof t)throw new TypeError("glob pattern string required");return e||(e={}),!(!e.nocomment&&"#"===t.charAt(0))&&(""===t.trim()?""===n:new i(t,e).match(n))}function i(n,t){if(!(this instanceof i))return new i(n,t);if("string"!=typeof n)throw new TypeError("glob pattern string required");t||(t={}),n=n.trim(),"/"!==u.sep&&(n=n.split(u.sep).join("/")),this.options=t,this.set=[],this.pattern=n,this.regexp=null,this.negate=!1,this.comment=!1,this.empty=!1,this.make()}function a(n,t){if(t||(t=this instanceof i?this.options:{}),void 0===(n=void 0===n?this.pattern:n))throw new TypeError("undefined pattern");return t.nobrace||!n.match(/\{.*\}/)?[n]:r(n)}s.filter=function(r,i){return i=i||{},function(n,t,e){return s(n,r,i)}},s.defaults=function(r){if(!r||!Object.keys(r).length)return s;var i=s,n=function(n,t,e){return i.minimatch(n,t,o(r,e))};return n.Minimatch=function(n,t){return new i.Minimatch(n,o(r,t))},n},i.defaults=function(n){return n&&Object.keys(n).length?s.defaults(n).Minimatch:i},i.prototype.debug=function(){},i.prototype.make=function(){if(this._made)return;var n=this.pattern,t=this.options;if(!t.nocomment&&"#"===n.charAt(0))return void(this.comment=!0);if(!n)return void(this.empty=!0);this.parseNegate();var e=this.globSet=this.braceExpand();t.debug&&(this.debug=console.error);this.debug(this.pattern,e),e=this.globParts=e.map(function(n){return n.split(l)}),this.debug(this.pattern,e),e=e.map(function(n,t,e){return n.map(this.parse,this)},this),this.debug(this.pattern,e),e=e.filter(function(n){return-1===n.indexOf(!1)}),this.debug(this.pattern,e),this.set=e},i.prototype.parseNegate=function(){var n=this.pattern,t=!1,e=this.options,r=0;if(e.nonegate)return;for(var i=0,o=n.length;i>> no match, partial?",n,f,t,h),f!==s))}if("string"==typeof u?(c=r.nocase?l.toLowerCase()===u.toLowerCase():l===u,this.debug("string match",u,l,c)):(c=l.match(u),this.debug("pattern match",u,l,c)),!c)return!1}if(i===s&&o===a)return!0;if(i===s)return e;if(o===a)return i===s-1&&""===n[i];throw new Error("wtf?")}},{"brace-expansion":11,path:22}],21:[function(n,t,e){var r=n("wrappy");function i(n){var t=function(){return t.called?t.value:(t.called=!0,t.value=n.apply(this,arguments))};return t.called=!1,t}function o(n){var t=function(){if(t.called)throw new Error(t.onceError);return t.called=!0,t.value=n.apply(this,arguments)},e=n.name||"Function wrapped with `once`";return t.onceError=e+" shouldn't be called more than once",t.called=!1,t}t.exports=r(i),t.exports.strict=r(o),i.proto=i(function(){Object.defineProperty(Function.prototype,"once",{value:function(){return i(this)},configurable:!0}),Object.defineProperty(Function.prototype,"onceStrict",{value:function(){return o(this)},configurable:!0})})},{wrappy:29}],22:[function(n,t,u){(function(i){function o(n,t){for(var e=0,r=n.length-1;0<=r;r--){var i=n[r];"."===i?n.splice(r,1):".."===i?(n.splice(r,1),e++):e&&(n.splice(r,1),e--)}if(t)for(;e--;e)n.unshift("..");return n}var t=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/,s=function(n){return t.exec(n).slice(1)};function a(n,t){if(n.filter)return n.filter(t);for(var e=[],r=0;r":">",'"':""","'":"'","`":"`"},D=d.invert(N),F=function(t){var e=function(n){return t[n]},n="(?:"+d.keys(t).join("|")+")",r=RegExp(n),i=RegExp(n,"g");return function(n){return n=null==n?"":""+n,r.test(n)?n.replace(i,e):n}};d.escape=F(N),d.unescape=F(D),d.result=function(n,t,e){var r=null==n?void 0:n[t];return void 0===r&&(r=e),d.isFunction(r)?r.call(n):r};var M=0;d.uniqueId=function(n){var t=++M+"";return n?n+t:t},d.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var C=/(.)^/,P={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},z=/\\|'|\r|\n|\u2028|\u2029/g,B=function(n){return"\\"+P[n]};d.template=function(o,n,t){!n&&t&&(n=t),n=d.defaults({},n,d.templateSettings);var e=RegExp([(n.escape||C).source,(n.interpolate||C).source,(n.evaluate||C).source].join("|")+"|$","g"),s=0,a="__p+='";o.replace(e,function(n,t,e,r,i){return a+=o.slice(s,i).replace(z,B),s=i+n.length,t?a+="'+\n((__t=("+t+"))==null?'':_.escape(__t))+\n'":e?a+="'+\n((__t=("+e+"))==null?'':__t)+\n'":r&&(a+="';\n"+r+"\n__p+='"),n}),a+="';\n",n.variable||(a="with(obj||{}){\n"+a+"}\n"),a="var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n"+a+"return __p;\n";try{var r=new Function(n.variable||"obj","_",a)}catch(n){throw n.source=a,n}var i=function(n){return r.call(this,n,d)},c=n.variable||"obj";return i.source="function("+c+"){\n"+a+"}",i},d.chain=function(n){var t=d(n);return t._chain=!0,t};var U=function(n,t){return n._chain?d(t).chain():t};d.mixin=function(e){d.each(d.functions(e),function(n){var t=d[n]=e[n];d.prototype[n]=function(){var n=[this._wrapped];return i.apply(n,arguments),U(this,t.apply(d,n))}})},d.mixin(d),d.each(["pop","push","reverse","shift","sort","splice","unshift"],function(t){var e=r[t];d.prototype[t]=function(){var n=this._wrapped;return e.apply(n,arguments),"shift"!==t&&"splice"!==t||0!==n.length||delete n[0],U(this,n)}}),d.each(["concat","join","slice"],function(n){var t=r[n];d.prototype[n]=function(){return U(this,t.apply(this._wrapped,arguments))}}),d.prototype.value=function(){return this._wrapped},d.prototype.valueOf=d.prototype.toJSON=d.prototype.value,d.prototype.toString=function(){return""+this._wrapped}}).call(this)},{}],26:[function(n,t,e){arguments[4][19][0].apply(e,arguments)},{dup:19}],27:[function(n,t,e){t.exports=function(n){return n&&"object"==typeof n&&"function"==typeof n.copy&&"function"==typeof n.fill&&"function"==typeof n.readUInt8}},{}],28:[function(h,n,k){(function(r,i){var a=/%[sdj%]/g;k.format=function(n){if(!_(n)){for(var t=[],e=0;e elements + // (i.e., `typeof document.createElement( "object" ) === "function"`). + // We don't want to classify *any* DOM node as a function. + return typeof obj === "function" && typeof obj.nodeType !== "number"; + }; + + +var isWindow = function isWindow( obj ) { + return obj != null && obj === obj.window; + }; + + +var document = window.document; + + + + var preservedScriptAttributes = { + type: true, + src: true, + nonce: true, + noModule: true + }; + + function DOMEval( code, node, doc ) { + doc = doc || document; + + var i, val, + script = doc.createElement( "script" ); + + script.text = code; + if ( node ) { + for ( i in preservedScriptAttributes ) { + + // Support: Firefox 64+, Edge 18+ + // Some browsers don't support the "nonce" property on scripts. + // On the other hand, just using `getAttribute` is not enough as + // the `nonce` attribute is reset to an empty string whenever it + // becomes browsing-context connected. + // See https://github.com/whatwg/html/issues/2369 + // See https://html.spec.whatwg.org/#nonce-attributes + // The `node.getAttribute` check was added for the sake of + // `jQuery.globalEval` so that it can fake a nonce-containing node + // via an object. + val = node[ i ] || node.getAttribute && node.getAttribute( i ); + if ( val ) { + script.setAttribute( i, val ); + } + } + } + doc.head.appendChild( script ).parentNode.removeChild( script ); + } + + +function toType( obj ) { + if ( obj == null ) { + return obj + ""; + } + + // Support: Android <=2.3 only (functionish RegExp) + return typeof obj === "object" || typeof obj === "function" ? + class2type[ toString.call( obj ) ] || "object" : + typeof obj; +} +/* global Symbol */ +// Defining this global in .eslintrc.json would create a danger of using the global +// unguarded in another place, it seems safer to define global only for this module + + + +var + version = "3.5.1", + + // Define a local copy of jQuery + jQuery = function( selector, context ) { + + // The jQuery object is actually just the init constructor 'enhanced' + // Need init if jQuery is called (just allow error to be thrown if not included) + return new jQuery.fn.init( selector, context ); + }; + +jQuery.fn = jQuery.prototype = { + + // The current version of jQuery being used + jquery: version, + + constructor: jQuery, + + // The default length of a jQuery object is 0 + length: 0, + + toArray: function() { + return slice.call( this ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + + // Return all the elements in a clean array + if ( num == null ) { + return slice.call( this ); + } + + // Return just the one element from the set + return num < 0 ? this[ num + this.length ] : this[ num ]; + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems ) { + + // Build a new jQuery matched element set + var ret = jQuery.merge( this.constructor(), elems ); + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + each: function( callback ) { + return jQuery.each( this, callback ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map( this, function( elem, i ) { + return callback.call( elem, i, elem ); + } ) ); + }, + + slice: function() { + return this.pushStack( slice.apply( this, arguments ) ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + even: function() { + return this.pushStack( jQuery.grep( this, function( _elem, i ) { + return ( i + 1 ) % 2; + } ) ); + }, + + odd: function() { + return this.pushStack( jQuery.grep( this, function( _elem, i ) { + return i % 2; + } ) ); + }, + + eq: function( i ) { + var len = this.length, + j = +i + ( i < 0 ? len : 0 ); + return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); + }, + + end: function() { + return this.prevObject || this.constructor(); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: push, + sort: arr.sort, + splice: arr.splice +}; + +jQuery.extend = jQuery.fn.extend = function() { + var options, name, src, copy, copyIsArray, clone, + target = arguments[ 0 ] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + + // Skip the boolean and the target + target = arguments[ i ] || {}; + i++; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !isFunction( target ) ) { + target = {}; + } + + // Extend jQuery itself if only one argument is passed + if ( i === length ) { + target = this; + i--; + } + + for ( ; i < length; i++ ) { + + // Only deal with non-null/undefined values + if ( ( options = arguments[ i ] ) != null ) { + + // Extend the base object + for ( name in options ) { + copy = options[ name ]; + + // Prevent Object.prototype pollution + // Prevent never-ending loop + if ( name === "__proto__" || target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject( copy ) || + ( copyIsArray = Array.isArray( copy ) ) ) ) { + src = target[ name ]; + + // Ensure proper type for the source value + if ( copyIsArray && !Array.isArray( src ) ) { + clone = []; + } else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) { + clone = {}; + } else { + clone = src; + } + copyIsArray = false; + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend( { + + // Unique for each copy of jQuery on the page + expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), + + // Assume jQuery is ready without the ready module + isReady: true, + + error: function( msg ) { + throw new Error( msg ); + }, + + noop: function() {}, + + isPlainObject: function( obj ) { + var proto, Ctor; + + // Detect obvious negatives + // Use toString instead of jQuery.type to catch host objects + if ( !obj || toString.call( obj ) !== "[object Object]" ) { + return false; + } + + proto = getProto( obj ); + + // Objects with no prototype (e.g., `Object.create( null )`) are plain + if ( !proto ) { + return true; + } + + // Objects with prototype are plain iff they were constructed by a global Object function + Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor; + return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString; + }, + + isEmptyObject: function( obj ) { + var name; + + for ( name in obj ) { + return false; + } + return true; + }, + + // Evaluates a script in a provided context; falls back to the global one + // if not specified. + globalEval: function( code, options, doc ) { + DOMEval( code, { nonce: options && options.nonce }, doc ); + }, + + each: function( obj, callback ) { + var length, i = 0; + + if ( isArrayLike( obj ) ) { + length = obj.length; + for ( ; i < length; i++ ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } else { + for ( i in obj ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } + + return obj; + }, + + // results is for internal usage only + makeArray: function( arr, results ) { + var ret = results || []; + + if ( arr != null ) { + if ( isArrayLike( Object( arr ) ) ) { + jQuery.merge( ret, + typeof arr === "string" ? + [ arr ] : arr + ); + } else { + push.call( ret, arr ); + } + } + + return ret; + }, + + inArray: function( elem, arr, i ) { + return arr == null ? -1 : indexOf.call( arr, elem, i ); + }, + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + merge: function( first, second ) { + var len = +second.length, + j = 0, + i = first.length; + + for ( ; j < len; j++ ) { + first[ i++ ] = second[ j ]; + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, invert ) { + var callbackInverse, + matches = [], + i = 0, + length = elems.length, + callbackExpect = !invert; + + // Go through the array, only saving the items + // that pass the validator function + for ( ; i < length; i++ ) { + callbackInverse = !callback( elems[ i ], i ); + if ( callbackInverse !== callbackExpect ) { + matches.push( elems[ i ] ); + } + } + + return matches; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var length, value, + i = 0, + ret = []; + + // Go through the array, translating each of the items to their new values + if ( isArrayLike( elems ) ) { + length = elems.length; + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + + // Go through every key on the object, + } else { + for ( i in elems ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + } + + // Flatten any nested arrays + return flat( ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // jQuery.support is not used in Core but other projects attach their + // properties to it so it needs to exist. + support: support +} ); + +if ( typeof Symbol === "function" ) { + jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; +} + +// Populate the class2type map +jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), +function( _i, name ) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +} ); + +function isArrayLike( obj ) { + + // Support: real iOS 8.2 only (not reproducible in simulator) + // `in` check used to prevent JIT error (gh-2145) + // hasOwn isn't used here due to false negatives + // regarding Nodelist length in IE + var length = !!obj && "length" in obj && obj.length, + type = toType( obj ); + + if ( isFunction( obj ) || isWindow( obj ) ) { + return false; + } + + return type === "array" || length === 0 || + typeof length === "number" && length > 0 && ( length - 1 ) in obj; +} +var Sizzle = +/*! + * Sizzle CSS Selector Engine v2.3.5 + * https://sizzlejs.com/ + * + * Copyright JS Foundation and other contributors + * Released under the MIT license + * https://js.foundation/ + * + * Date: 2020-03-14 + */ +( function( window ) { +var i, + support, + Expr, + getText, + isXML, + tokenize, + compile, + select, + outermostContext, + sortInput, + hasDuplicate, + + // Local document vars + setDocument, + document, + docElem, + documentIsHTML, + rbuggyQSA, + rbuggyMatches, + matches, + contains, + + // Instance-specific data + expando = "sizzle" + 1 * new Date(), + preferredDoc = window.document, + dirruns = 0, + done = 0, + classCache = createCache(), + tokenCache = createCache(), + compilerCache = createCache(), + nonnativeSelectorCache = createCache(), + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + } + return 0; + }, + + // Instance methods + hasOwn = ( {} ).hasOwnProperty, + arr = [], + pop = arr.pop, + pushNative = arr.push, + push = arr.push, + slice = arr.slice, + + // Use a stripped-down indexOf as it's faster than native + // https://jsperf.com/thor-indexof-vs-for/5 + indexOf = function( list, elem ) { + var i = 0, + len = list.length; + for ( ; i < len; i++ ) { + if ( list[ i ] === elem ) { + return i; + } + } + return -1; + }, + + booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|" + + "ismap|loop|multiple|open|readonly|required|scoped", + + // Regular expressions + + // http://www.w3.org/TR/css3-selectors/#whitespace + whitespace = "[\\x20\\t\\r\\n\\f]", + + // https://www.w3.org/TR/css-syntax-3/#ident-token-diagram + identifier = "(?:\\\\[\\da-fA-F]{1,6}" + whitespace + + "?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+", + + // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors + attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + + + // Operator (capture 2) + "*([*^$|!~]?=)" + whitespace + + + // "Attribute values must be CSS identifiers [capture 5] + // or strings [capture 3 or capture 4]" + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + + whitespace + "*\\]", + + pseudos = ":(" + identifier + ")(?:\\((" + + + // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: + // 1. quoted (capture 3; capture 4 or capture 5) + "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + + + // 2. simple (capture 6) + "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + + + // 3. anything else (capture 2) + ".*" + + ")\\)|)", + + // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter + rwhitespace = new RegExp( whitespace + "+", "g" ), + rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + + whitespace + "+$", "g" ), + + rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), + rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + + "*" ), + rdescend = new RegExp( whitespace + "|>" ), + + rpseudo = new RegExp( pseudos ), + ridentifier = new RegExp( "^" + identifier + "$" ), + + matchExpr = { + "ID": new RegExp( "^#(" + identifier + ")" ), + "CLASS": new RegExp( "^\\.(" + identifier + ")" ), + "TAG": new RegExp( "^(" + identifier + "|[*])" ), + "ATTR": new RegExp( "^" + attributes ), + "PSEUDO": new RegExp( "^" + pseudos ), + "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + + whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + + whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), + "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), + + // For use in libraries implementing .is() + // We use this for POS matching in `select` + "needsContext": new RegExp( "^" + whitespace + + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace + + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) + }, + + rhtml = /HTML$/i, + rinputs = /^(?:input|select|textarea|button)$/i, + rheader = /^h\d$/i, + + rnative = /^[^{]+\{\s*\[native \w/, + + // Easily-parseable/retrievable ID or TAG or CLASS selectors + rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, + + rsibling = /[+~]/, + + // CSS escapes + // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters + runescape = new RegExp( "\\\\[\\da-fA-F]{1,6}" + whitespace + "?|\\\\([^\\r\\n\\f])", "g" ), + funescape = function( escape, nonHex ) { + var high = "0x" + escape.slice( 1 ) - 0x10000; + + return nonHex ? + + // Strip the backslash prefix from a non-hex escape sequence + nonHex : + + // Replace a hexadecimal escape sequence with the encoded Unicode code point + // Support: IE <=11+ + // For values outside the Basic Multilingual Plane (BMP), manually construct a + // surrogate pair + high < 0 ? + String.fromCharCode( high + 0x10000 ) : + String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); + }, + + // CSS string/identifier serialization + // https://drafts.csswg.org/cssom/#common-serializing-idioms + rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g, + fcssescape = function( ch, asCodePoint ) { + if ( asCodePoint ) { + + // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER + if ( ch === "\0" ) { + return "\uFFFD"; + } + + // Control characters and (dependent upon position) numbers get escaped as code points + return ch.slice( 0, -1 ) + "\\" + + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; + } + + // Other potentially-special ASCII characters get backslash-escaped + return "\\" + ch; + }, + + // Used for iframes + // See setDocument() + // Removing the function wrapper causes a "Permission Denied" + // error in IE + unloadHandler = function() { + setDocument(); + }, + + inDisabledFieldset = addCombinator( + function( elem ) { + return elem.disabled === true && elem.nodeName.toLowerCase() === "fieldset"; + }, + { dir: "parentNode", next: "legend" } + ); + +// Optimize for push.apply( _, NodeList ) +try { + push.apply( + ( arr = slice.call( preferredDoc.childNodes ) ), + preferredDoc.childNodes + ); + + // Support: Android<4.0 + // Detect silently failing push.apply + // eslint-disable-next-line no-unused-expressions + arr[ preferredDoc.childNodes.length ].nodeType; +} catch ( e ) { + push = { apply: arr.length ? + + // Leverage slice if possible + function( target, els ) { + pushNative.apply( target, slice.call( els ) ); + } : + + // Support: IE<9 + // Otherwise append directly + function( target, els ) { + var j = target.length, + i = 0; + + // Can't trust NodeList.length + while ( ( target[ j++ ] = els[ i++ ] ) ) {} + target.length = j - 1; + } + }; +} + +function Sizzle( selector, context, results, seed ) { + var m, i, elem, nid, match, groups, newSelector, + newContext = context && context.ownerDocument, + + // nodeType defaults to 9, since context defaults to document + nodeType = context ? context.nodeType : 9; + + results = results || []; + + // Return early from calls with invalid selector or context + if ( typeof selector !== "string" || !selector || + nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { + + return results; + } + + // Try to shortcut find operations (as opposed to filters) in HTML documents + if ( !seed ) { + setDocument( context ); + context = context || document; + + if ( documentIsHTML ) { + + // If the selector is sufficiently simple, try using a "get*By*" DOM method + // (excepting DocumentFragment context, where the methods don't exist) + if ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) { + + // ID selector + if ( ( m = match[ 1 ] ) ) { + + // Document context + if ( nodeType === 9 ) { + if ( ( elem = context.getElementById( m ) ) ) { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( elem.id === m ) { + results.push( elem ); + return results; + } + } else { + return results; + } + + // Element context + } else { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( newContext && ( elem = newContext.getElementById( m ) ) && + contains( context, elem ) && + elem.id === m ) { + + results.push( elem ); + return results; + } + } + + // Type selector + } else if ( match[ 2 ] ) { + push.apply( results, context.getElementsByTagName( selector ) ); + return results; + + // Class selector + } else if ( ( m = match[ 3 ] ) && support.getElementsByClassName && + context.getElementsByClassName ) { + + push.apply( results, context.getElementsByClassName( m ) ); + return results; + } + } + + // Take advantage of querySelectorAll + if ( support.qsa && + !nonnativeSelectorCache[ selector + " " ] && + ( !rbuggyQSA || !rbuggyQSA.test( selector ) ) && + + // Support: IE 8 only + // Exclude object elements + ( nodeType !== 1 || context.nodeName.toLowerCase() !== "object" ) ) { + + newSelector = selector; + newContext = context; + + // qSA considers elements outside a scoping root when evaluating child or + // descendant combinators, which is not what we want. + // In such cases, we work around the behavior by prefixing every selector in the + // list with an ID selector referencing the scope context. + // The technique has to be used as well when a leading combinator is used + // as such selectors are not recognized by querySelectorAll. + // Thanks to Andrew Dupont for this technique. + if ( nodeType === 1 && + ( rdescend.test( selector ) || rcombinators.test( selector ) ) ) { + + // Expand context for sibling selectors + newContext = rsibling.test( selector ) && testContext( context.parentNode ) || + context; + + // We can use :scope instead of the ID hack if the browser + // supports it & if we're not changing the context. + if ( newContext !== context || !support.scope ) { + + // Capture the context ID, setting it first if necessary + if ( ( nid = context.getAttribute( "id" ) ) ) { + nid = nid.replace( rcssescape, fcssescape ); + } else { + context.setAttribute( "id", ( nid = expando ) ); + } + } + + // Prefix every selector in the list + groups = tokenize( selector ); + i = groups.length; + while ( i-- ) { + groups[ i ] = ( nid ? "#" + nid : ":scope" ) + " " + + toSelector( groups[ i ] ); + } + newSelector = groups.join( "," ); + } + + try { + push.apply( results, + newContext.querySelectorAll( newSelector ) + ); + return results; + } catch ( qsaError ) { + nonnativeSelectorCache( selector, true ); + } finally { + if ( nid === expando ) { + context.removeAttribute( "id" ); + } + } + } + } + } + + // All others + return select( selector.replace( rtrim, "$1" ), context, results, seed ); +} + +/** + * Create key-value caches of limited size + * @returns {function(string, object)} Returns the Object data after storing it on itself with + * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) + * deleting the oldest entry + */ +function createCache() { + var keys = []; + + function cache( key, value ) { + + // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) + if ( keys.push( key + " " ) > Expr.cacheLength ) { + + // Only keep the most recent entries + delete cache[ keys.shift() ]; + } + return ( cache[ key + " " ] = value ); + } + return cache; +} + +/** + * Mark a function for special use by Sizzle + * @param {Function} fn The function to mark + */ +function markFunction( fn ) { + fn[ expando ] = true; + return fn; +} + +/** + * Support testing using an element + * @param {Function} fn Passed the created element and returns a boolean result + */ +function assert( fn ) { + var el = document.createElement( "fieldset" ); + + try { + return !!fn( el ); + } catch ( e ) { + return false; + } finally { + + // Remove from its parent by default + if ( el.parentNode ) { + el.parentNode.removeChild( el ); + } + + // release memory in IE + el = null; + } +} + +/** + * Adds the same handler for all of the specified attrs + * @param {String} attrs Pipe-separated list of attributes + * @param {Function} handler The method that will be applied + */ +function addHandle( attrs, handler ) { + var arr = attrs.split( "|" ), + i = arr.length; + + while ( i-- ) { + Expr.attrHandle[ arr[ i ] ] = handler; + } +} + +/** + * Checks document order of two siblings + * @param {Element} a + * @param {Element} b + * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b + */ +function siblingCheck( a, b ) { + var cur = b && a, + diff = cur && a.nodeType === 1 && b.nodeType === 1 && + a.sourceIndex - b.sourceIndex; + + // Use IE sourceIndex if available on both nodes + if ( diff ) { + return diff; + } + + // Check if b follows a + if ( cur ) { + while ( ( cur = cur.nextSibling ) ) { + if ( cur === b ) { + return -1; + } + } + } + + return a ? 1 : -1; +} + +/** + * Returns a function to use in pseudos for input types + * @param {String} type + */ +function createInputPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for buttons + * @param {String} type + */ +function createButtonPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return ( name === "input" || name === "button" ) && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for :enabled/:disabled + * @param {Boolean} disabled true for :disabled; false for :enabled + */ +function createDisabledPseudo( disabled ) { + + // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable + return function( elem ) { + + // Only certain elements can match :enabled or :disabled + // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled + // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled + if ( "form" in elem ) { + + // Check for inherited disabledness on relevant non-disabled elements: + // * listed form-associated elements in a disabled fieldset + // https://html.spec.whatwg.org/multipage/forms.html#category-listed + // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled + // * option elements in a disabled optgroup + // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled + // All such elements have a "form" property. + if ( elem.parentNode && elem.disabled === false ) { + + // Option elements defer to a parent optgroup if present + if ( "label" in elem ) { + if ( "label" in elem.parentNode ) { + return elem.parentNode.disabled === disabled; + } else { + return elem.disabled === disabled; + } + } + + // Support: IE 6 - 11 + // Use the isDisabled shortcut property to check for disabled fieldset ancestors + return elem.isDisabled === disabled || + + // Where there is no isDisabled, check manually + /* jshint -W018 */ + elem.isDisabled !== !disabled && + inDisabledFieldset( elem ) === disabled; + } + + return elem.disabled === disabled; + + // Try to winnow out elements that can't be disabled before trusting the disabled property. + // Some victims get caught in our net (label, legend, menu, track), but it shouldn't + // even exist on them, let alone have a boolean value. + } else if ( "label" in elem ) { + return elem.disabled === disabled; + } + + // Remaining elements are neither :enabled nor :disabled + return false; + }; +} + +/** + * Returns a function to use in pseudos for positionals + * @param {Function} fn + */ +function createPositionalPseudo( fn ) { + return markFunction( function( argument ) { + argument = +argument; + return markFunction( function( seed, matches ) { + var j, + matchIndexes = fn( [], seed.length, argument ), + i = matchIndexes.length; + + // Match elements found at the specified indexes + while ( i-- ) { + if ( seed[ ( j = matchIndexes[ i ] ) ] ) { + seed[ j ] = !( matches[ j ] = seed[ j ] ); + } + } + } ); + } ); +} + +/** + * Checks a node for validity as a Sizzle context + * @param {Element|Object=} context + * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value + */ +function testContext( context ) { + return context && typeof context.getElementsByTagName !== "undefined" && context; +} + +// Expose support vars for convenience +support = Sizzle.support = {}; + +/** + * Detects XML nodes + * @param {Element|Object} elem An element or a document + * @returns {Boolean} True iff elem is a non-HTML XML node + */ +isXML = Sizzle.isXML = function( elem ) { + var namespace = elem.namespaceURI, + docElem = ( elem.ownerDocument || elem ).documentElement; + + // Support: IE <=8 + // Assume HTML when documentElement doesn't yet exist, such as inside loading iframes + // https://bugs.jquery.com/ticket/4833 + return !rhtml.test( namespace || docElem && docElem.nodeName || "HTML" ); +}; + +/** + * Sets document-related variables once based on the current document + * @param {Element|Object} [doc] An element or document object to use to set the document + * @returns {Object} Returns the current document + */ +setDocument = Sizzle.setDocument = function( node ) { + var hasCompare, subWindow, + doc = node ? node.ownerDocument || node : preferredDoc; + + // Return early if doc is invalid or already selected + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) { + return document; + } + + // Update global variables + document = doc; + docElem = document.documentElement; + documentIsHTML = !isXML( document ); + + // Support: IE 9 - 11+, Edge 12 - 18+ + // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( preferredDoc != document && + ( subWindow = document.defaultView ) && subWindow.top !== subWindow ) { + + // Support: IE 11, Edge + if ( subWindow.addEventListener ) { + subWindow.addEventListener( "unload", unloadHandler, false ); + + // Support: IE 9 - 10 only + } else if ( subWindow.attachEvent ) { + subWindow.attachEvent( "onunload", unloadHandler ); + } + } + + // Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only, + // Safari 4 - 5 only, Opera <=11.6 - 12.x only + // IE/Edge & older browsers don't support the :scope pseudo-class. + // Support: Safari 6.0 only + // Safari 6.0 supports :scope but it's an alias of :root there. + support.scope = assert( function( el ) { + docElem.appendChild( el ).appendChild( document.createElement( "div" ) ); + return typeof el.querySelectorAll !== "undefined" && + !el.querySelectorAll( ":scope fieldset div" ).length; + } ); + + /* Attributes + ---------------------------------------------------------------------- */ + + // Support: IE<8 + // Verify that getAttribute really returns attributes and not properties + // (excepting IE8 booleans) + support.attributes = assert( function( el ) { + el.className = "i"; + return !el.getAttribute( "className" ); + } ); + + /* getElement(s)By* + ---------------------------------------------------------------------- */ + + // Check if getElementsByTagName("*") returns only elements + support.getElementsByTagName = assert( function( el ) { + el.appendChild( document.createComment( "" ) ); + return !el.getElementsByTagName( "*" ).length; + } ); + + // Support: IE<9 + support.getElementsByClassName = rnative.test( document.getElementsByClassName ); + + // Support: IE<10 + // Check if getElementById returns elements by name + // The broken getElementById methods don't pick up programmatically-set names, + // so use a roundabout getElementsByName test + support.getById = assert( function( el ) { + docElem.appendChild( el ).id = expando; + return !document.getElementsByName || !document.getElementsByName( expando ).length; + } ); + + // ID filter and find + if ( support.getById ) { + Expr.filter[ "ID" ] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + return elem.getAttribute( "id" ) === attrId; + }; + }; + Expr.find[ "ID" ] = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var elem = context.getElementById( id ); + return elem ? [ elem ] : []; + } + }; + } else { + Expr.filter[ "ID" ] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + var node = typeof elem.getAttributeNode !== "undefined" && + elem.getAttributeNode( "id" ); + return node && node.value === attrId; + }; + }; + + // Support: IE 6 - 7 only + // getElementById is not reliable as a find shortcut + Expr.find[ "ID" ] = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var node, i, elems, + elem = context.getElementById( id ); + + if ( elem ) { + + // Verify the id attribute + node = elem.getAttributeNode( "id" ); + if ( node && node.value === id ) { + return [ elem ]; + } + + // Fall back on getElementsByName + elems = context.getElementsByName( id ); + i = 0; + while ( ( elem = elems[ i++ ] ) ) { + node = elem.getAttributeNode( "id" ); + if ( node && node.value === id ) { + return [ elem ]; + } + } + } + + return []; + } + }; + } + + // Tag + Expr.find[ "TAG" ] = support.getElementsByTagName ? + function( tag, context ) { + if ( typeof context.getElementsByTagName !== "undefined" ) { + return context.getElementsByTagName( tag ); + + // DocumentFragment nodes don't have gEBTN + } else if ( support.qsa ) { + return context.querySelectorAll( tag ); + } + } : + + function( tag, context ) { + var elem, + tmp = [], + i = 0, + + // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too + results = context.getElementsByTagName( tag ); + + // Filter out possible comments + if ( tag === "*" ) { + while ( ( elem = results[ i++ ] ) ) { + if ( elem.nodeType === 1 ) { + tmp.push( elem ); + } + } + + return tmp; + } + return results; + }; + + // Class + Expr.find[ "CLASS" ] = support.getElementsByClassName && function( className, context ) { + if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { + return context.getElementsByClassName( className ); + } + }; + + /* QSA/matchesSelector + ---------------------------------------------------------------------- */ + + // QSA and matchesSelector support + + // matchesSelector(:active) reports false when true (IE9/Opera 11.5) + rbuggyMatches = []; + + // qSa(:focus) reports false when true (Chrome 21) + // We allow this because of a bug in IE8/9 that throws an error + // whenever `document.activeElement` is accessed on an iframe + // So, we allow :focus to pass through QSA all the time to avoid the IE error + // See https://bugs.jquery.com/ticket/13378 + rbuggyQSA = []; + + if ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) { + + // Build QSA regex + // Regex strategy adopted from Diego Perini + assert( function( el ) { + + var input; + + // Select is set to empty string on purpose + // This is to test IE's treatment of not explicitly + // setting a boolean content attribute, + // since its presence should be enough + // https://bugs.jquery.com/ticket/12359 + docElem.appendChild( el ).innerHTML = "" + + ""; + + // Support: IE8, Opera 11-12.16 + // Nothing should be selected when empty strings follow ^= or $= or *= + // The test attribute must be unknown in Opera but "safe" for WinRT + // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section + if ( el.querySelectorAll( "[msallowcapture^='']" ).length ) { + rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); + } + + // Support: IE8 + // Boolean attributes and "value" are not treated correctly + if ( !el.querySelectorAll( "[selected]" ).length ) { + rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); + } + + // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ + if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) { + rbuggyQSA.push( "~=" ); + } + + // Support: IE 11+, Edge 15 - 18+ + // IE 11/Edge don't find elements on a `[name='']` query in some cases. + // Adding a temporary attribute to the document before the selection works + // around the issue. + // Interestingly, IE 10 & older don't seem to have the issue. + input = document.createElement( "input" ); + input.setAttribute( "name", "" ); + el.appendChild( input ); + if ( !el.querySelectorAll( "[name='']" ).length ) { + rbuggyQSA.push( "\\[" + whitespace + "*name" + whitespace + "*=" + + whitespace + "*(?:''|\"\")" ); + } + + // Webkit/Opera - :checked should return selected option elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + // IE8 throws error here and will not see later tests + if ( !el.querySelectorAll( ":checked" ).length ) { + rbuggyQSA.push( ":checked" ); + } + + // Support: Safari 8+, iOS 8+ + // https://bugs.webkit.org/show_bug.cgi?id=136851 + // In-page `selector#id sibling-combinator selector` fails + if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) { + rbuggyQSA.push( ".#.+[+~]" ); + } + + // Support: Firefox <=3.6 - 5 only + // Old Firefox doesn't throw on a badly-escaped identifier. + el.querySelectorAll( "\\\f" ); + rbuggyQSA.push( "[\\r\\n\\f]" ); + } ); + + assert( function( el ) { + el.innerHTML = "" + + ""; + + // Support: Windows 8 Native Apps + // The type and name attributes are restricted during .innerHTML assignment + var input = document.createElement( "input" ); + input.setAttribute( "type", "hidden" ); + el.appendChild( input ).setAttribute( "name", "D" ); + + // Support: IE8 + // Enforce case-sensitivity of name attribute + if ( el.querySelectorAll( "[name=d]" ).length ) { + rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); + } + + // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) + // IE8 throws error here and will not see later tests + if ( el.querySelectorAll( ":enabled" ).length !== 2 ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Support: IE9-11+ + // IE's :disabled selector does not pick up the children of disabled fieldsets + docElem.appendChild( el ).disabled = true; + if ( el.querySelectorAll( ":disabled" ).length !== 2 ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Support: Opera 10 - 11 only + // Opera 10-11 does not throw on post-comma invalid pseudos + el.querySelectorAll( "*,:x" ); + rbuggyQSA.push( ",.*:" ); + } ); + } + + if ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches || + docElem.webkitMatchesSelector || + docElem.mozMatchesSelector || + docElem.oMatchesSelector || + docElem.msMatchesSelector ) ) ) ) { + + assert( function( el ) { + + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9) + support.disconnectedMatch = matches.call( el, "*" ); + + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( el, "[s!='']:x" ); + rbuggyMatches.push( "!=", pseudos ); + } ); + } + + rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( "|" ) ); + rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( "|" ) ); + + /* Contains + ---------------------------------------------------------------------- */ + hasCompare = rnative.test( docElem.compareDocumentPosition ); + + // Element contains another + // Purposefully self-exclusive + // As in, an element does not contain itself + contains = hasCompare || rnative.test( docElem.contains ) ? + function( a, b ) { + var adown = a.nodeType === 9 ? a.documentElement : a, + bup = b && b.parentNode; + return a === bup || !!( bup && bup.nodeType === 1 && ( + adown.contains ? + adown.contains( bup ) : + a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 + ) ); + } : + function( a, b ) { + if ( b ) { + while ( ( b = b.parentNode ) ) { + if ( b === a ) { + return true; + } + } + } + return false; + }; + + /* Sorting + ---------------------------------------------------------------------- */ + + // Document order sorting + sortOrder = hasCompare ? + function( a, b ) { + + // Flag for duplicate removal + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + // Sort on method existence if only one input has compareDocumentPosition + var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; + if ( compare ) { + return compare; + } + + // Calculate position if both inputs belong to the same document + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + compare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ? + a.compareDocumentPosition( b ) : + + // Otherwise we know they are disconnected + 1; + + // Disconnected nodes + if ( compare & 1 || + ( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) { + + // Choose the first element that is related to our preferred document + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( a == document || a.ownerDocument == preferredDoc && + contains( preferredDoc, a ) ) { + return -1; + } + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( b == document || b.ownerDocument == preferredDoc && + contains( preferredDoc, b ) ) { + return 1; + } + + // Maintain original order + return sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + } + + return compare & 4 ? -1 : 1; + } : + function( a, b ) { + + // Exit early if the nodes are identical + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + var cur, + i = 0, + aup = a.parentNode, + bup = b.parentNode, + ap = [ a ], + bp = [ b ]; + + // Parentless nodes are either documents or disconnected + if ( !aup || !bup ) { + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + /* eslint-disable eqeqeq */ + return a == document ? -1 : + b == document ? 1 : + /* eslint-enable eqeqeq */ + aup ? -1 : + bup ? 1 : + sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + + // If the nodes are siblings, we can do a quick check + } else if ( aup === bup ) { + return siblingCheck( a, b ); + } + + // Otherwise we need full lists of their ancestors for comparison + cur = a; + while ( ( cur = cur.parentNode ) ) { + ap.unshift( cur ); + } + cur = b; + while ( ( cur = cur.parentNode ) ) { + bp.unshift( cur ); + } + + // Walk down the tree looking for a discrepancy + while ( ap[ i ] === bp[ i ] ) { + i++; + } + + return i ? + + // Do a sibling check if the nodes have a common ancestor + siblingCheck( ap[ i ], bp[ i ] ) : + + // Otherwise nodes in our document sort first + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + /* eslint-disable eqeqeq */ + ap[ i ] == preferredDoc ? -1 : + bp[ i ] == preferredDoc ? 1 : + /* eslint-enable eqeqeq */ + 0; + }; + + return document; +}; + +Sizzle.matches = function( expr, elements ) { + return Sizzle( expr, null, null, elements ); +}; + +Sizzle.matchesSelector = function( elem, expr ) { + setDocument( elem ); + + if ( support.matchesSelector && documentIsHTML && + !nonnativeSelectorCache[ expr + " " ] && + ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && + ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { + + try { + var ret = matches.call( elem, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || support.disconnectedMatch || + + // As well, disconnected nodes are said to be in a document + // fragment in IE 9 + elem.document && elem.document.nodeType !== 11 ) { + return ret; + } + } catch ( e ) { + nonnativeSelectorCache( expr, true ); + } + } + + return Sizzle( expr, document, null, [ elem ] ).length > 0; +}; + +Sizzle.contains = function( context, elem ) { + + // Set document vars if needed + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( ( context.ownerDocument || context ) != document ) { + setDocument( context ); + } + return contains( context, elem ); +}; + +Sizzle.attr = function( elem, name ) { + + // Set document vars if needed + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( ( elem.ownerDocument || elem ) != document ) { + setDocument( elem ); + } + + var fn = Expr.attrHandle[ name.toLowerCase() ], + + // Don't get fooled by Object.prototype properties (jQuery #13807) + val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? + fn( elem, name, !documentIsHTML ) : + undefined; + + return val !== undefined ? + val : + support.attributes || !documentIsHTML ? + elem.getAttribute( name ) : + ( val = elem.getAttributeNode( name ) ) && val.specified ? + val.value : + null; +}; + +Sizzle.escape = function( sel ) { + return ( sel + "" ).replace( rcssescape, fcssescape ); +}; + +Sizzle.error = function( msg ) { + throw new Error( "Syntax error, unrecognized expression: " + msg ); +}; + +/** + * Document sorting and removing duplicates + * @param {ArrayLike} results + */ +Sizzle.uniqueSort = function( results ) { + var elem, + duplicates = [], + j = 0, + i = 0; + + // Unless we *know* we can detect duplicates, assume their presence + hasDuplicate = !support.detectDuplicates; + sortInput = !support.sortStable && results.slice( 0 ); + results.sort( sortOrder ); + + if ( hasDuplicate ) { + while ( ( elem = results[ i++ ] ) ) { + if ( elem === results[ i ] ) { + j = duplicates.push( i ); + } + } + while ( j-- ) { + results.splice( duplicates[ j ], 1 ); + } + } + + // Clear input after sorting to release objects + // See https://github.com/jquery/sizzle/pull/225 + sortInput = null; + + return results; +}; + +/** + * Utility function for retrieving the text value of an array of DOM nodes + * @param {Array|Element} elem + */ +getText = Sizzle.getText = function( elem ) { + var node, + ret = "", + i = 0, + nodeType = elem.nodeType; + + if ( !nodeType ) { + + // If no nodeType, this is expected to be an array + while ( ( node = elem[ i++ ] ) ) { + + // Do not traverse comment nodes + ret += getText( node ); + } + } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { + + // Use textContent for elements + // innerText usage removed for consistency of new lines (jQuery #11153) + if ( typeof elem.textContent === "string" ) { + return elem.textContent; + } else { + + // Traverse its children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + ret += getText( elem ); + } + } + } else if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + + // Do not include comment or processing instruction nodes + + return ret; +}; + +Expr = Sizzle.selectors = { + + // Can be adjusted by the user + cacheLength: 50, + + createPseudo: markFunction, + + match: matchExpr, + + attrHandle: {}, + + find: {}, + + relative: { + ">": { dir: "parentNode", first: true }, + " ": { dir: "parentNode" }, + "+": { dir: "previousSibling", first: true }, + "~": { dir: "previousSibling" } + }, + + preFilter: { + "ATTR": function( match ) { + match[ 1 ] = match[ 1 ].replace( runescape, funescape ); + + // Move the given value to match[3] whether quoted or unquoted + match[ 3 ] = ( match[ 3 ] || match[ 4 ] || + match[ 5 ] || "" ).replace( runescape, funescape ); + + if ( match[ 2 ] === "~=" ) { + match[ 3 ] = " " + match[ 3 ] + " "; + } + + return match.slice( 0, 4 ); + }, + + "CHILD": function( match ) { + + /* matches from matchExpr["CHILD"] + 1 type (only|nth|...) + 2 what (child|of-type) + 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) + 4 xn-component of xn+y argument ([+-]?\d*n|) + 5 sign of xn-component + 6 x of xn-component + 7 sign of y-component + 8 y of y-component + */ + match[ 1 ] = match[ 1 ].toLowerCase(); + + if ( match[ 1 ].slice( 0, 3 ) === "nth" ) { + + // nth-* requires argument + if ( !match[ 3 ] ) { + Sizzle.error( match[ 0 ] ); + } + + // numeric x and y parameters for Expr.filter.CHILD + // remember that false/true cast respectively to 0/1 + match[ 4 ] = +( match[ 4 ] ? + match[ 5 ] + ( match[ 6 ] || 1 ) : + 2 * ( match[ 3 ] === "even" || match[ 3 ] === "odd" ) ); + match[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === "odd" ); + + // other types prohibit arguments + } else if ( match[ 3 ] ) { + Sizzle.error( match[ 0 ] ); + } + + return match; + }, + + "PSEUDO": function( match ) { + var excess, + unquoted = !match[ 6 ] && match[ 2 ]; + + if ( matchExpr[ "CHILD" ].test( match[ 0 ] ) ) { + return null; + } + + // Accept quoted arguments as-is + if ( match[ 3 ] ) { + match[ 2 ] = match[ 4 ] || match[ 5 ] || ""; + + // Strip excess characters from unquoted arguments + } else if ( unquoted && rpseudo.test( unquoted ) && + + // Get excess from tokenize (recursively) + ( excess = tokenize( unquoted, true ) ) && + + // advance to the next closing parenthesis + ( excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length ) ) { + + // excess is a negative index + match[ 0 ] = match[ 0 ].slice( 0, excess ); + match[ 2 ] = unquoted.slice( 0, excess ); + } + + // Return only captures needed by the pseudo filter method (type and argument) + return match.slice( 0, 3 ); + } + }, + + filter: { + + "TAG": function( nodeNameSelector ) { + var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); + return nodeNameSelector === "*" ? + function() { + return true; + } : + function( elem ) { + return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; + }; + }, + + "CLASS": function( className ) { + var pattern = classCache[ className + " " ]; + + return pattern || + ( pattern = new RegExp( "(^|" + whitespace + + ")" + className + "(" + whitespace + "|$)" ) ) && classCache( + className, function( elem ) { + return pattern.test( + typeof elem.className === "string" && elem.className || + typeof elem.getAttribute !== "undefined" && + elem.getAttribute( "class" ) || + "" + ); + } ); + }, + + "ATTR": function( name, operator, check ) { + return function( elem ) { + var result = Sizzle.attr( elem, name ); + + if ( result == null ) { + return operator === "!="; + } + if ( !operator ) { + return true; + } + + result += ""; + + /* eslint-disable max-len */ + + return operator === "=" ? result === check : + operator === "!=" ? result !== check : + operator === "^=" ? check && result.indexOf( check ) === 0 : + operator === "*=" ? check && result.indexOf( check ) > -1 : + operator === "$=" ? check && result.slice( -check.length ) === check : + operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : + operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : + false; + /* eslint-enable max-len */ + + }; + }, + + "CHILD": function( type, what, _argument, first, last ) { + var simple = type.slice( 0, 3 ) !== "nth", + forward = type.slice( -4 ) !== "last", + ofType = what === "of-type"; + + return first === 1 && last === 0 ? + + // Shortcut for :nth-*(n) + function( elem ) { + return !!elem.parentNode; + } : + + function( elem, _context, xml ) { + var cache, uniqueCache, outerCache, node, nodeIndex, start, + dir = simple !== forward ? "nextSibling" : "previousSibling", + parent = elem.parentNode, + name = ofType && elem.nodeName.toLowerCase(), + useCache = !xml && !ofType, + diff = false; + + if ( parent ) { + + // :(first|last|only)-(child|of-type) + if ( simple ) { + while ( dir ) { + node = elem; + while ( ( node = node[ dir ] ) ) { + if ( ofType ? + node.nodeName.toLowerCase() === name : + node.nodeType === 1 ) { + + return false; + } + } + + // Reverse direction for :only-* (if we haven't yet done so) + start = dir = type === "only" && !start && "nextSibling"; + } + return true; + } + + start = [ forward ? parent.firstChild : parent.lastChild ]; + + // non-xml :nth-child(...) stores cache data on `parent` + if ( forward && useCache ) { + + // Seek `elem` from a previously-cached index + + // ...in a gzip-friendly way + node = parent; + outerCache = node[ expando ] || ( node[ expando ] = {} ); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + ( outerCache[ node.uniqueID ] = {} ); + + cache = uniqueCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex && cache[ 2 ]; + node = nodeIndex && parent.childNodes[ nodeIndex ]; + + while ( ( node = ++nodeIndex && node && node[ dir ] || + + // Fallback to seeking `elem` from the start + ( diff = nodeIndex = 0 ) || start.pop() ) ) { + + // When found, cache indexes on `parent` and break + if ( node.nodeType === 1 && ++diff && node === elem ) { + uniqueCache[ type ] = [ dirruns, nodeIndex, diff ]; + break; + } + } + + } else { + + // Use previously-cached element index if available + if ( useCache ) { + + // ...in a gzip-friendly way + node = elem; + outerCache = node[ expando ] || ( node[ expando ] = {} ); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + ( outerCache[ node.uniqueID ] = {} ); + + cache = uniqueCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex; + } + + // xml :nth-child(...) + // or :nth-last-child(...) or :nth(-last)?-of-type(...) + if ( diff === false ) { + + // Use the same loop as above to seek `elem` from the start + while ( ( node = ++nodeIndex && node && node[ dir ] || + ( diff = nodeIndex = 0 ) || start.pop() ) ) { + + if ( ( ofType ? + node.nodeName.toLowerCase() === name : + node.nodeType === 1 ) && + ++diff ) { + + // Cache the index of each encountered element + if ( useCache ) { + outerCache = node[ expando ] || + ( node[ expando ] = {} ); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + ( outerCache[ node.uniqueID ] = {} ); + + uniqueCache[ type ] = [ dirruns, diff ]; + } + + if ( node === elem ) { + break; + } + } + } + } + } + + // Incorporate the offset, then check against cycle size + diff -= last; + return diff === first || ( diff % first === 0 && diff / first >= 0 ); + } + }; + }, + + "PSEUDO": function( pseudo, argument ) { + + // pseudo-class names are case-insensitive + // http://www.w3.org/TR/selectors/#pseudo-classes + // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters + // Remember that setFilters inherits from pseudos + var args, + fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || + Sizzle.error( "unsupported pseudo: " + pseudo ); + + // The user may use createPseudo to indicate that + // arguments are needed to create the filter function + // just as Sizzle does + if ( fn[ expando ] ) { + return fn( argument ); + } + + // But maintain support for old signatures + if ( fn.length > 1 ) { + args = [ pseudo, pseudo, "", argument ]; + return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? + markFunction( function( seed, matches ) { + var idx, + matched = fn( seed, argument ), + i = matched.length; + while ( i-- ) { + idx = indexOf( seed, matched[ i ] ); + seed[ idx ] = !( matches[ idx ] = matched[ i ] ); + } + } ) : + function( elem ) { + return fn( elem, 0, args ); + }; + } + + return fn; + } + }, + + pseudos: { + + // Potentially complex pseudos + "not": markFunction( function( selector ) { + + // Trim the selector passed to compile + // to avoid treating leading and trailing + // spaces as combinators + var input = [], + results = [], + matcher = compile( selector.replace( rtrim, "$1" ) ); + + return matcher[ expando ] ? + markFunction( function( seed, matches, _context, xml ) { + var elem, + unmatched = matcher( seed, null, xml, [] ), + i = seed.length; + + // Match elements unmatched by `matcher` + while ( i-- ) { + if ( ( elem = unmatched[ i ] ) ) { + seed[ i ] = !( matches[ i ] = elem ); + } + } + } ) : + function( elem, _context, xml ) { + input[ 0 ] = elem; + matcher( input, null, xml, results ); + + // Don't keep the element (issue #299) + input[ 0 ] = null; + return !results.pop(); + }; + } ), + + "has": markFunction( function( selector ) { + return function( elem ) { + return Sizzle( selector, elem ).length > 0; + }; + } ), + + "contains": markFunction( function( text ) { + text = text.replace( runescape, funescape ); + return function( elem ) { + return ( elem.textContent || getText( elem ) ).indexOf( text ) > -1; + }; + } ), + + // "Whether an element is represented by a :lang() selector + // is based solely on the element's language value + // being equal to the identifier C, + // or beginning with the identifier C immediately followed by "-". + // The matching of C against the element's language value is performed case-insensitively. + // The identifier C does not have to be a valid language name." + // http://www.w3.org/TR/selectors/#lang-pseudo + "lang": markFunction( function( lang ) { + + // lang value must be a valid identifier + if ( !ridentifier.test( lang || "" ) ) { + Sizzle.error( "unsupported lang: " + lang ); + } + lang = lang.replace( runescape, funescape ).toLowerCase(); + return function( elem ) { + var elemLang; + do { + if ( ( elemLang = documentIsHTML ? + elem.lang : + elem.getAttribute( "xml:lang" ) || elem.getAttribute( "lang" ) ) ) { + + elemLang = elemLang.toLowerCase(); + return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; + } + } while ( ( elem = elem.parentNode ) && elem.nodeType === 1 ); + return false; + }; + } ), + + // Miscellaneous + "target": function( elem ) { + var hash = window.location && window.location.hash; + return hash && hash.slice( 1 ) === elem.id; + }, + + "root": function( elem ) { + return elem === docElem; + }, + + "focus": function( elem ) { + return elem === document.activeElement && + ( !document.hasFocus || document.hasFocus() ) && + !!( elem.type || elem.href || ~elem.tabIndex ); + }, + + // Boolean properties + "enabled": createDisabledPseudo( false ), + "disabled": createDisabledPseudo( true ), + + "checked": function( elem ) { + + // In CSS3, :checked should return both checked and selected elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + var nodeName = elem.nodeName.toLowerCase(); + return ( nodeName === "input" && !!elem.checked ) || + ( nodeName === "option" && !!elem.selected ); + }, + + "selected": function( elem ) { + + // Accessing this property makes selected-by-default + // options in Safari work properly + if ( elem.parentNode ) { + // eslint-disable-next-line no-unused-expressions + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + // Contents + "empty": function( elem ) { + + // http://www.w3.org/TR/selectors/#empty-pseudo + // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), + // but not by others (comment: 8; processing instruction: 7; etc.) + // nodeType < 6 works because attributes (2) do not appear as children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + if ( elem.nodeType < 6 ) { + return false; + } + } + return true; + }, + + "parent": function( elem ) { + return !Expr.pseudos[ "empty" ]( elem ); + }, + + // Element/input types + "header": function( elem ) { + return rheader.test( elem.nodeName ); + }, + + "input": function( elem ) { + return rinputs.test( elem.nodeName ); + }, + + "button": function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === "button" || name === "button"; + }, + + "text": function( elem ) { + var attr; + return elem.nodeName.toLowerCase() === "input" && + elem.type === "text" && + + // Support: IE<8 + // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" + ( ( attr = elem.getAttribute( "type" ) ) == null || + attr.toLowerCase() === "text" ); + }, + + // Position-in-collection + "first": createPositionalPseudo( function() { + return [ 0 ]; + } ), + + "last": createPositionalPseudo( function( _matchIndexes, length ) { + return [ length - 1 ]; + } ), + + "eq": createPositionalPseudo( function( _matchIndexes, length, argument ) { + return [ argument < 0 ? argument + length : argument ]; + } ), + + "even": createPositionalPseudo( function( matchIndexes, length ) { + var i = 0; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + } ), + + "odd": createPositionalPseudo( function( matchIndexes, length ) { + var i = 1; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + } ), + + "lt": createPositionalPseudo( function( matchIndexes, length, argument ) { + var i = argument < 0 ? + argument + length : + argument > length ? + length : + argument; + for ( ; --i >= 0; ) { + matchIndexes.push( i ); + } + return matchIndexes; + } ), + + "gt": createPositionalPseudo( function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; ++i < length; ) { + matchIndexes.push( i ); + } + return matchIndexes; + } ) + } +}; + +Expr.pseudos[ "nth" ] = Expr.pseudos[ "eq" ]; + +// Add button/input type pseudos +for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { + Expr.pseudos[ i ] = createInputPseudo( i ); +} +for ( i in { submit: true, reset: true } ) { + Expr.pseudos[ i ] = createButtonPseudo( i ); +} + +// Easy API for creating new setFilters +function setFilters() {} +setFilters.prototype = Expr.filters = Expr.pseudos; +Expr.setFilters = new setFilters(); + +tokenize = Sizzle.tokenize = function( selector, parseOnly ) { + var matched, match, tokens, type, + soFar, groups, preFilters, + cached = tokenCache[ selector + " " ]; + + if ( cached ) { + return parseOnly ? 0 : cached.slice( 0 ); + } + + soFar = selector; + groups = []; + preFilters = Expr.preFilter; + + while ( soFar ) { + + // Comma and first run + if ( !matched || ( match = rcomma.exec( soFar ) ) ) { + if ( match ) { + + // Don't consume trailing commas as valid + soFar = soFar.slice( match[ 0 ].length ) || soFar; + } + groups.push( ( tokens = [] ) ); + } + + matched = false; + + // Combinators + if ( ( match = rcombinators.exec( soFar ) ) ) { + matched = match.shift(); + tokens.push( { + value: matched, + + // Cast descendant combinators to space + type: match[ 0 ].replace( rtrim, " " ) + } ); + soFar = soFar.slice( matched.length ); + } + + // Filters + for ( type in Expr.filter ) { + if ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] || + ( match = preFilters[ type ]( match ) ) ) ) { + matched = match.shift(); + tokens.push( { + value: matched, + type: type, + matches: match + } ); + soFar = soFar.slice( matched.length ); + } + } + + if ( !matched ) { + break; + } + } + + // Return the length of the invalid excess + // if we're just parsing + // Otherwise, throw an error or return tokens + return parseOnly ? + soFar.length : + soFar ? + Sizzle.error( selector ) : + + // Cache the tokens + tokenCache( selector, groups ).slice( 0 ); +}; + +function toSelector( tokens ) { + var i = 0, + len = tokens.length, + selector = ""; + for ( ; i < len; i++ ) { + selector += tokens[ i ].value; + } + return selector; +} + +function addCombinator( matcher, combinator, base ) { + var dir = combinator.dir, + skip = combinator.next, + key = skip || dir, + checkNonElements = base && key === "parentNode", + doneName = done++; + + return combinator.first ? + + // Check against closest ancestor/preceding element + function( elem, context, xml ) { + while ( ( elem = elem[ dir ] ) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + return matcher( elem, context, xml ); + } + } + return false; + } : + + // Check against all ancestor/preceding elements + function( elem, context, xml ) { + var oldCache, uniqueCache, outerCache, + newCache = [ dirruns, doneName ]; + + // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching + if ( xml ) { + while ( ( elem = elem[ dir ] ) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + if ( matcher( elem, context, xml ) ) { + return true; + } + } + } + } else { + while ( ( elem = elem[ dir ] ) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + outerCache = elem[ expando ] || ( elem[ expando ] = {} ); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ elem.uniqueID ] || + ( outerCache[ elem.uniqueID ] = {} ); + + if ( skip && skip === elem.nodeName.toLowerCase() ) { + elem = elem[ dir ] || elem; + } else if ( ( oldCache = uniqueCache[ key ] ) && + oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { + + // Assign to newCache so results back-propagate to previous elements + return ( newCache[ 2 ] = oldCache[ 2 ] ); + } else { + + // Reuse newcache so results back-propagate to previous elements + uniqueCache[ key ] = newCache; + + // A match means we're done; a fail means we have to keep checking + if ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) { + return true; + } + } + } + } + } + return false; + }; +} + +function elementMatcher( matchers ) { + return matchers.length > 1 ? + function( elem, context, xml ) { + var i = matchers.length; + while ( i-- ) { + if ( !matchers[ i ]( elem, context, xml ) ) { + return false; + } + } + return true; + } : + matchers[ 0 ]; +} + +function multipleContexts( selector, contexts, results ) { + var i = 0, + len = contexts.length; + for ( ; i < len; i++ ) { + Sizzle( selector, contexts[ i ], results ); + } + return results; +} + +function condense( unmatched, map, filter, context, xml ) { + var elem, + newUnmatched = [], + i = 0, + len = unmatched.length, + mapped = map != null; + + for ( ; i < len; i++ ) { + if ( ( elem = unmatched[ i ] ) ) { + if ( !filter || filter( elem, context, xml ) ) { + newUnmatched.push( elem ); + if ( mapped ) { + map.push( i ); + } + } + } + } + + return newUnmatched; +} + +function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { + if ( postFilter && !postFilter[ expando ] ) { + postFilter = setMatcher( postFilter ); + } + if ( postFinder && !postFinder[ expando ] ) { + postFinder = setMatcher( postFinder, postSelector ); + } + return markFunction( function( seed, results, context, xml ) { + var temp, i, elem, + preMap = [], + postMap = [], + preexisting = results.length, + + // Get initial elements from seed or context + elems = seed || multipleContexts( + selector || "*", + context.nodeType ? [ context ] : context, + [] + ), + + // Prefilter to get matcher input, preserving a map for seed-results synchronization + matcherIn = preFilter && ( seed || !selector ) ? + condense( elems, preMap, preFilter, context, xml ) : + elems, + + matcherOut = matcher ? + + // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, + postFinder || ( seed ? preFilter : preexisting || postFilter ) ? + + // ...intermediate processing is necessary + [] : + + // ...otherwise use results directly + results : + matcherIn; + + // Find primary matches + if ( matcher ) { + matcher( matcherIn, matcherOut, context, xml ); + } + + // Apply postFilter + if ( postFilter ) { + temp = condense( matcherOut, postMap ); + postFilter( temp, [], context, xml ); + + // Un-match failing elements by moving them back to matcherIn + i = temp.length; + while ( i-- ) { + if ( ( elem = temp[ i ] ) ) { + matcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem ); + } + } + } + + if ( seed ) { + if ( postFinder || preFilter ) { + if ( postFinder ) { + + // Get the final matcherOut by condensing this intermediate into postFinder contexts + temp = []; + i = matcherOut.length; + while ( i-- ) { + if ( ( elem = matcherOut[ i ] ) ) { + + // Restore matcherIn since elem is not yet a final match + temp.push( ( matcherIn[ i ] = elem ) ); + } + } + postFinder( null, ( matcherOut = [] ), temp, xml ); + } + + // Move matched elements from seed to results to keep them synchronized + i = matcherOut.length; + while ( i-- ) { + if ( ( elem = matcherOut[ i ] ) && + ( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) { + + seed[ temp ] = !( results[ temp ] = elem ); + } + } + } + + // Add elements to results, through postFinder if defined + } else { + matcherOut = condense( + matcherOut === results ? + matcherOut.splice( preexisting, matcherOut.length ) : + matcherOut + ); + if ( postFinder ) { + postFinder( null, results, matcherOut, xml ); + } else { + push.apply( results, matcherOut ); + } + } + } ); +} + +function matcherFromTokens( tokens ) { + var checkContext, matcher, j, + len = tokens.length, + leadingRelative = Expr.relative[ tokens[ 0 ].type ], + implicitRelative = leadingRelative || Expr.relative[ " " ], + i = leadingRelative ? 1 : 0, + + // The foundational matcher ensures that elements are reachable from top-level context(s) + matchContext = addCombinator( function( elem ) { + return elem === checkContext; + }, implicitRelative, true ), + matchAnyContext = addCombinator( function( elem ) { + return indexOf( checkContext, elem ) > -1; + }, implicitRelative, true ), + matchers = [ function( elem, context, xml ) { + var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( + ( checkContext = context ).nodeType ? + matchContext( elem, context, xml ) : + matchAnyContext( elem, context, xml ) ); + + // Avoid hanging onto element (issue #299) + checkContext = null; + return ret; + } ]; + + for ( ; i < len; i++ ) { + if ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) { + matchers = [ addCombinator( elementMatcher( matchers ), matcher ) ]; + } else { + matcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches ); + + // Return special upon seeing a positional matcher + if ( matcher[ expando ] ) { + + // Find the next relative operator (if any) for proper handling + j = ++i; + for ( ; j < len; j++ ) { + if ( Expr.relative[ tokens[ j ].type ] ) { + break; + } + } + return setMatcher( + i > 1 && elementMatcher( matchers ), + i > 1 && toSelector( + + // If the preceding token was a descendant combinator, insert an implicit any-element `*` + tokens + .slice( 0, i - 1 ) + .concat( { value: tokens[ i - 2 ].type === " " ? "*" : "" } ) + ).replace( rtrim, "$1" ), + matcher, + i < j && matcherFromTokens( tokens.slice( i, j ) ), + j < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ), + j < len && toSelector( tokens ) + ); + } + matchers.push( matcher ); + } + } + + return elementMatcher( matchers ); +} + +function matcherFromGroupMatchers( elementMatchers, setMatchers ) { + var bySet = setMatchers.length > 0, + byElement = elementMatchers.length > 0, + superMatcher = function( seed, context, xml, results, outermost ) { + var elem, j, matcher, + matchedCount = 0, + i = "0", + unmatched = seed && [], + setMatched = [], + contextBackup = outermostContext, + + // We must always have either seed elements or outermost context + elems = seed || byElement && Expr.find[ "TAG" ]( "*", outermost ), + + // Use integer dirruns iff this is the outermost matcher + dirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ), + len = elems.length; + + if ( outermost ) { + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + outermostContext = context == document || context || outermost; + } + + // Add elements passing elementMatchers directly to results + // Support: IE<9, Safari + // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id + for ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) { + if ( byElement && elem ) { + j = 0; + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( !context && elem.ownerDocument != document ) { + setDocument( elem ); + xml = !documentIsHTML; + } + while ( ( matcher = elementMatchers[ j++ ] ) ) { + if ( matcher( elem, context || document, xml ) ) { + results.push( elem ); + break; + } + } + if ( outermost ) { + dirruns = dirrunsUnique; + } + } + + // Track unmatched elements for set filters + if ( bySet ) { + + // They will have gone through all possible matchers + if ( ( elem = !matcher && elem ) ) { + matchedCount--; + } + + // Lengthen the array for every element, matched or not + if ( seed ) { + unmatched.push( elem ); + } + } + } + + // `i` is now the count of elements visited above, and adding it to `matchedCount` + // makes the latter nonnegative. + matchedCount += i; + + // Apply set filters to unmatched elements + // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` + // equals `i`), unless we didn't visit _any_ elements in the above loop because we have + // no element matchers and no seed. + // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that + // case, which will result in a "00" `matchedCount` that differs from `i` but is also + // numerically zero. + if ( bySet && i !== matchedCount ) { + j = 0; + while ( ( matcher = setMatchers[ j++ ] ) ) { + matcher( unmatched, setMatched, context, xml ); + } + + if ( seed ) { + + // Reintegrate element matches to eliminate the need for sorting + if ( matchedCount > 0 ) { + while ( i-- ) { + if ( !( unmatched[ i ] || setMatched[ i ] ) ) { + setMatched[ i ] = pop.call( results ); + } + } + } + + // Discard index placeholder values to get only actual matches + setMatched = condense( setMatched ); + } + + // Add matches to results + push.apply( results, setMatched ); + + // Seedless set matches succeeding multiple successful matchers stipulate sorting + if ( outermost && !seed && setMatched.length > 0 && + ( matchedCount + setMatchers.length ) > 1 ) { + + Sizzle.uniqueSort( results ); + } + } + + // Override manipulation of globals by nested matchers + if ( outermost ) { + dirruns = dirrunsUnique; + outermostContext = contextBackup; + } + + return unmatched; + }; + + return bySet ? + markFunction( superMatcher ) : + superMatcher; +} + +compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { + var i, + setMatchers = [], + elementMatchers = [], + cached = compilerCache[ selector + " " ]; + + if ( !cached ) { + + // Generate a function of recursive functions that can be used to check each element + if ( !match ) { + match = tokenize( selector ); + } + i = match.length; + while ( i-- ) { + cached = matcherFromTokens( match[ i ] ); + if ( cached[ expando ] ) { + setMatchers.push( cached ); + } else { + elementMatchers.push( cached ); + } + } + + // Cache the compiled function + cached = compilerCache( + selector, + matcherFromGroupMatchers( elementMatchers, setMatchers ) + ); + + // Save selector and tokenization + cached.selector = selector; + } + return cached; +}; + +/** + * A low-level selection function that works with Sizzle's compiled + * selector functions + * @param {String|Function} selector A selector or a pre-compiled + * selector function built with Sizzle.compile + * @param {Element} context + * @param {Array} [results] + * @param {Array} [seed] A set of elements to match against + */ +select = Sizzle.select = function( selector, context, results, seed ) { + var i, tokens, token, type, find, + compiled = typeof selector === "function" && selector, + match = !seed && tokenize( ( selector = compiled.selector || selector ) ); + + results = results || []; + + // Try to minimize operations if there is only one selector in the list and no seed + // (the latter of which guarantees us context) + if ( match.length === 1 ) { + + // Reduce context if the leading compound selector is an ID + tokens = match[ 0 ] = match[ 0 ].slice( 0 ); + if ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === "ID" && + context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) { + + context = ( Expr.find[ "ID" ]( token.matches[ 0 ] + .replace( runescape, funescape ), context ) || [] )[ 0 ]; + if ( !context ) { + return results; + + // Precompiled matchers will still verify ancestry, so step up a level + } else if ( compiled ) { + context = context.parentNode; + } + + selector = selector.slice( tokens.shift().value.length ); + } + + // Fetch a seed set for right-to-left matching + i = matchExpr[ "needsContext" ].test( selector ) ? 0 : tokens.length; + while ( i-- ) { + token = tokens[ i ]; + + // Abort if we hit a combinator + if ( Expr.relative[ ( type = token.type ) ] ) { + break; + } + if ( ( find = Expr.find[ type ] ) ) { + + // Search, expanding context for leading sibling combinators + if ( ( seed = find( + token.matches[ 0 ].replace( runescape, funescape ), + rsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) || + context + ) ) ) { + + // If seed is empty or no tokens remain, we can return early + tokens.splice( i, 1 ); + selector = seed.length && toSelector( tokens ); + if ( !selector ) { + push.apply( results, seed ); + return results; + } + + break; + } + } + } + } + + // Compile and execute a filtering function if one is not provided + // Provide `match` to avoid retokenization if we modified the selector above + ( compiled || compile( selector, match ) )( + seed, + context, + !documentIsHTML, + results, + !context || rsibling.test( selector ) && testContext( context.parentNode ) || context + ); + return results; +}; + +// One-time assignments + +// Sort stability +support.sortStable = expando.split( "" ).sort( sortOrder ).join( "" ) === expando; + +// Support: Chrome 14-35+ +// Always assume duplicates if they aren't passed to the comparison function +support.detectDuplicates = !!hasDuplicate; + +// Initialize against the default document +setDocument(); + +// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) +// Detached nodes confoundingly follow *each other* +support.sortDetached = assert( function( el ) { + + // Should return 1, but returns 4 (following) + return el.compareDocumentPosition( document.createElement( "fieldset" ) ) & 1; +} ); + +// Support: IE<8 +// Prevent attribute/property "interpolation" +// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx +if ( !assert( function( el ) { + el.innerHTML = ""; + return el.firstChild.getAttribute( "href" ) === "#"; +} ) ) { + addHandle( "type|href|height|width", function( elem, name, isXML ) { + if ( !isXML ) { + return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); + } + } ); +} + +// Support: IE<9 +// Use defaultValue in place of getAttribute("value") +if ( !support.attributes || !assert( function( el ) { + el.innerHTML = ""; + el.firstChild.setAttribute( "value", "" ); + return el.firstChild.getAttribute( "value" ) === ""; +} ) ) { + addHandle( "value", function( elem, _name, isXML ) { + if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { + return elem.defaultValue; + } + } ); +} + +// Support: IE<9 +// Use getAttributeNode to fetch booleans when getAttribute lies +if ( !assert( function( el ) { + return el.getAttribute( "disabled" ) == null; +} ) ) { + addHandle( booleans, function( elem, name, isXML ) { + var val; + if ( !isXML ) { + return elem[ name ] === true ? name.toLowerCase() : + ( val = elem.getAttributeNode( name ) ) && val.specified ? + val.value : + null; + } + } ); +} + +return Sizzle; + +} )( window ); + + + +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; + +// Deprecated +jQuery.expr[ ":" ] = jQuery.expr.pseudos; +jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; +jQuery.escapeSelector = Sizzle.escape; + + + + +var dir = function( elem, dir, until ) { + var matched = [], + truncate = until !== undefined; + + while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { + if ( elem.nodeType === 1 ) { + if ( truncate && jQuery( elem ).is( until ) ) { + break; + } + matched.push( elem ); + } + } + return matched; +}; + + +var siblings = function( n, elem ) { + var matched = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + matched.push( n ); + } + } + + return matched; +}; + + +var rneedsContext = jQuery.expr.match.needsContext; + + + +function nodeName( elem, name ) { + + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); + +}; +var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i ); + + + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, not ) { + if ( isFunction( qualifier ) ) { + return jQuery.grep( elements, function( elem, i ) { + return !!qualifier.call( elem, i, elem ) !== not; + } ); + } + + // Single element + if ( qualifier.nodeType ) { + return jQuery.grep( elements, function( elem ) { + return ( elem === qualifier ) !== not; + } ); + } + + // Arraylike of elements (jQuery, arguments, Array) + if ( typeof qualifier !== "string" ) { + return jQuery.grep( elements, function( elem ) { + return ( indexOf.call( qualifier, elem ) > -1 ) !== not; + } ); + } + + // Filtered directly for both simple and complex selectors + return jQuery.filter( qualifier, elements, not ); +} + +jQuery.filter = function( expr, elems, not ) { + var elem = elems[ 0 ]; + + if ( not ) { + expr = ":not(" + expr + ")"; + } + + if ( elems.length === 1 && elem.nodeType === 1 ) { + return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : []; + } + + return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { + return elem.nodeType === 1; + } ) ); +}; + +jQuery.fn.extend( { + find: function( selector ) { + var i, ret, + len = this.length, + self = this; + + if ( typeof selector !== "string" ) { + return this.pushStack( jQuery( selector ).filter( function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + } ) ); + } + + ret = this.pushStack( [] ); + + for ( i = 0; i < len; i++ ) { + jQuery.find( selector, self[ i ], ret ); + } + + return len > 1 ? jQuery.uniqueSort( ret ) : ret; + }, + filter: function( selector ) { + return this.pushStack( winnow( this, selector || [], false ) ); + }, + not: function( selector ) { + return this.pushStack( winnow( this, selector || [], true ) ); + }, + is: function( selector ) { + return !!winnow( + this, + + // If this is a positional/relative selector, check membership in the returned set + // so $("p:first").is("p:last") won't return true for a doc with two "p". + typeof selector === "string" && rneedsContext.test( selector ) ? + jQuery( selector ) : + selector || [], + false + ).length; + } +} ); + + +// Initialize a jQuery object + + +// A central reference to the root jQuery(document) +var rootjQuery, + + // A simple way to check for HTML strings + // Prioritize #id over to avoid XSS via location.hash (#9521) + // Strict HTML recognition (#11290: must start with <) + // Shortcut simple #id case for speed + rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/, + + init = jQuery.fn.init = function( selector, context, root ) { + var match, elem; + + // HANDLE: $(""), $(null), $(undefined), $(false) + if ( !selector ) { + return this; + } + + // Method init() accepts an alternate rootjQuery + // so migrate can support jQuery.sub (gh-2101) + root = root || rootjQuery; + + // Handle HTML strings + if ( typeof selector === "string" ) { + if ( selector[ 0 ] === "<" && + selector[ selector.length - 1 ] === ">" && + selector.length >= 3 ) { + + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = rquickExpr.exec( selector ); + } + + // Match html or make sure no context is specified for #id + if ( match && ( match[ 1 ] || !context ) ) { + + // HANDLE: $(html) -> $(array) + if ( match[ 1 ] ) { + context = context instanceof jQuery ? context[ 0 ] : context; + + // Option to run scripts is true for back-compat + // Intentionally let the error be thrown if parseHTML is not present + jQuery.merge( this, jQuery.parseHTML( + match[ 1 ], + context && context.nodeType ? context.ownerDocument || context : document, + true + ) ); + + // HANDLE: $(html, props) + if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) { + for ( match in context ) { + + // Properties of context are called as methods if possible + if ( isFunction( this[ match ] ) ) { + this[ match ]( context[ match ] ); + + // ...and otherwise set as attributes + } else { + this.attr( match, context[ match ] ); + } + } + } + + return this; + + // HANDLE: $(#id) + } else { + elem = document.getElementById( match[ 2 ] ); + + if ( elem ) { + + // Inject the element directly into the jQuery object + this[ 0 ] = elem; + this.length = 1; + } + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return ( context || root ).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(DOMElement) + } else if ( selector.nodeType ) { + this[ 0 ] = selector; + this.length = 1; + return this; + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( isFunction( selector ) ) { + return root.ready !== undefined ? + root.ready( selector ) : + + // Execute immediately if ready is not present + selector( jQuery ); + } + + return jQuery.makeArray( selector, this ); + }; + +// Give the init function the jQuery prototype for later instantiation +init.prototype = jQuery.fn; + +// Initialize central reference +rootjQuery = jQuery( document ); + + +var rparentsprev = /^(?:parents|prev(?:Until|All))/, + + // Methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.fn.extend( { + has: function( target ) { + var targets = jQuery( target, this ), + l = targets.length; + + return this.filter( function() { + var i = 0; + for ( ; i < l; i++ ) { + if ( jQuery.contains( this, targets[ i ] ) ) { + return true; + } + } + } ); + }, + + closest: function( selectors, context ) { + var cur, + i = 0, + l = this.length, + matched = [], + targets = typeof selectors !== "string" && jQuery( selectors ); + + // Positional selectors never match, since there's no _selection_ context + if ( !rneedsContext.test( selectors ) ) { + for ( ; i < l; i++ ) { + for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { + + // Always skip document fragments + if ( cur.nodeType < 11 && ( targets ? + targets.index( cur ) > -1 : + + // Don't pass non-elements to Sizzle + cur.nodeType === 1 && + jQuery.find.matchesSelector( cur, selectors ) ) ) { + + matched.push( cur ); + break; + } + } + } + } + + return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched ); + }, + + // Determine the position of an element within the set + index: function( elem ) { + + // No argument, return index in parent + if ( !elem ) { + return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; + } + + // Index in selector + if ( typeof elem === "string" ) { + return indexOf.call( jQuery( elem ), this[ 0 ] ); + } + + // Locate the position of the desired element + return indexOf.call( this, + + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[ 0 ] : elem + ); + }, + + add: function( selector, context ) { + return this.pushStack( + jQuery.uniqueSort( + jQuery.merge( this.get(), jQuery( selector, context ) ) + ) + ); + }, + + addBack: function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter( selector ) + ); + } +} ); + +function sibling( cur, dir ) { + while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {} + return cur; +} + +jQuery.each( { + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, _i, until ) { + return dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return sibling( elem, "nextSibling" ); + }, + prev: function( elem ) { + return sibling( elem, "previousSibling" ); + }, + nextAll: function( elem ) { + return dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, _i, until ) { + return dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, _i, until ) { + return dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return siblings( ( elem.parentNode || {} ).firstChild, elem ); + }, + children: function( elem ) { + return siblings( elem.firstChild ); + }, + contents: function( elem ) { + if ( elem.contentDocument != null && + + // Support: IE 11+ + // elements with no `data` attribute has an object + // `contentDocument` with a `null` prototype. + getProto( elem.contentDocument ) ) { + + return elem.contentDocument; + } + + // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only + // Treat the template element as a regular one in browsers that + // don't support it. + if ( nodeName( elem, "template" ) ) { + elem = elem.content || elem; + } + + return jQuery.merge( [], elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var matched = jQuery.map( this, fn, until ); + + if ( name.slice( -5 ) !== "Until" ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + matched = jQuery.filter( selector, matched ); + } + + if ( this.length > 1 ) { + + // Remove duplicates + if ( !guaranteedUnique[ name ] ) { + jQuery.uniqueSort( matched ); + } + + // Reverse order for parents* and prev-derivatives + if ( rparentsprev.test( name ) ) { + matched.reverse(); + } + } + + return this.pushStack( matched ); + }; +} ); +var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g ); + + + +// Convert String-formatted options into Object-formatted ones +function createOptions( options ) { + var object = {}; + jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) { + object[ flag ] = true; + } ); + return object; +} + +/* + * Create a callback list using the following parameters: + * + * options: an optional list of space-separated options that will change how + * the callback list behaves or a more traditional option object + * + * By default a callback list will act like an event callback list and can be + * "fired" multiple times. + * + * Possible options: + * + * once: will ensure the callback list can only be fired once (like a Deferred) + * + * memory: will keep track of previous values and will call any callback added + * after the list has been fired right away with the latest "memorized" + * values (like a Deferred) + * + * unique: will ensure a callback can only be added once (no duplicate in the list) + * + * stopOnFalse: interrupt callings when a callback returns false + * + */ +jQuery.Callbacks = function( options ) { + + // Convert options from String-formatted to Object-formatted if needed + // (we check in cache first) + options = typeof options === "string" ? + createOptions( options ) : + jQuery.extend( {}, options ); + + var // Flag to know if list is currently firing + firing, + + // Last fire value for non-forgettable lists + memory, + + // Flag to know if list was already fired + fired, + + // Flag to prevent firing + locked, + + // Actual callback list + list = [], + + // Queue of execution data for repeatable lists + queue = [], + + // Index of currently firing callback (modified by add/remove as needed) + firingIndex = -1, + + // Fire callbacks + fire = function() { + + // Enforce single-firing + locked = locked || options.once; + + // Execute callbacks for all pending executions, + // respecting firingIndex overrides and runtime changes + fired = firing = true; + for ( ; queue.length; firingIndex = -1 ) { + memory = queue.shift(); + while ( ++firingIndex < list.length ) { + + // Run callback and check for early termination + if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && + options.stopOnFalse ) { + + // Jump to end and forget the data so .add doesn't re-fire + firingIndex = list.length; + memory = false; + } + } + } + + // Forget the data if we're done with it + if ( !options.memory ) { + memory = false; + } + + firing = false; + + // Clean up if we're done firing for good + if ( locked ) { + + // Keep an empty list if we have data for future add calls + if ( memory ) { + list = []; + + // Otherwise, this object is spent + } else { + list = ""; + } + } + }, + + // Actual Callbacks object + self = { + + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + + // If we have memory from a past run, we should fire after adding + if ( memory && !firing ) { + firingIndex = list.length - 1; + queue.push( memory ); + } + + ( function add( args ) { + jQuery.each( args, function( _, arg ) { + if ( isFunction( arg ) ) { + if ( !options.unique || !self.has( arg ) ) { + list.push( arg ); + } + } else if ( arg && arg.length && toType( arg ) !== "string" ) { + + // Inspect recursively + add( arg ); + } + } ); + } )( arguments ); + + if ( memory && !firing ) { + fire(); + } + } + return this; + }, + + // Remove a callback from the list + remove: function() { + jQuery.each( arguments, function( _, arg ) { + var index; + while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { + list.splice( index, 1 ); + + // Handle firing indexes + if ( index <= firingIndex ) { + firingIndex--; + } + } + } ); + return this; + }, + + // Check if a given callback is in the list. + // If no argument is given, return whether or not list has callbacks attached. + has: function( fn ) { + return fn ? + jQuery.inArray( fn, list ) > -1 : + list.length > 0; + }, + + // Remove all callbacks from the list + empty: function() { + if ( list ) { + list = []; + } + return this; + }, + + // Disable .fire and .add + // Abort any current/pending executions + // Clear all callbacks and values + disable: function() { + locked = queue = []; + list = memory = ""; + return this; + }, + disabled: function() { + return !list; + }, + + // Disable .fire + // Also disable .add unless we have memory (since it would have no effect) + // Abort any pending executions + lock: function() { + locked = queue = []; + if ( !memory && !firing ) { + list = memory = ""; + } + return this; + }, + locked: function() { + return !!locked; + }, + + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + if ( !locked ) { + args = args || []; + args = [ context, args.slice ? args.slice() : args ]; + queue.push( args ); + if ( !firing ) { + fire(); + } + } + return this; + }, + + // Call all the callbacks with the given arguments + fire: function() { + self.fireWith( this, arguments ); + return this; + }, + + // To know if the callbacks have already been called at least once + fired: function() { + return !!fired; + } + }; + + return self; +}; + + +function Identity( v ) { + return v; +} +function Thrower( ex ) { + throw ex; +} + +function adoptValue( value, resolve, reject, noValue ) { + var method; + + try { + + // Check for promise aspect first to privilege synchronous behavior + if ( value && isFunction( ( method = value.promise ) ) ) { + method.call( value ).done( resolve ).fail( reject ); + + // Other thenables + } else if ( value && isFunction( ( method = value.then ) ) ) { + method.call( value, resolve, reject ); + + // Other non-thenables + } else { + + // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer: + // * false: [ value ].slice( 0 ) => resolve( value ) + // * true: [ value ].slice( 1 ) => resolve() + resolve.apply( undefined, [ value ].slice( noValue ) ); + } + + // For Promises/A+, convert exceptions into rejections + // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in + // Deferred#then to conditionally suppress rejection. + } catch ( value ) { + + // Support: Android 4.0 only + // Strict mode functions invoked without .call/.apply get global-object context + reject.apply( undefined, [ value ] ); + } +} + +jQuery.extend( { + + Deferred: function( func ) { + var tuples = [ + + // action, add listener, callbacks, + // ... .then handlers, argument index, [final state] + [ "notify", "progress", jQuery.Callbacks( "memory" ), + jQuery.Callbacks( "memory" ), 2 ], + [ "resolve", "done", jQuery.Callbacks( "once memory" ), + jQuery.Callbacks( "once memory" ), 0, "resolved" ], + [ "reject", "fail", jQuery.Callbacks( "once memory" ), + jQuery.Callbacks( "once memory" ), 1, "rejected" ] + ], + state = "pending", + promise = { + state: function() { + return state; + }, + always: function() { + deferred.done( arguments ).fail( arguments ); + return this; + }, + "catch": function( fn ) { + return promise.then( null, fn ); + }, + + // Keep pipe for back-compat + pipe: function( /* fnDone, fnFail, fnProgress */ ) { + var fns = arguments; + + return jQuery.Deferred( function( newDefer ) { + jQuery.each( tuples, function( _i, tuple ) { + + // Map tuples (progress, done, fail) to arguments (done, fail, progress) + var fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ]; + + // deferred.progress(function() { bind to newDefer or newDefer.notify }) + // deferred.done(function() { bind to newDefer or newDefer.resolve }) + // deferred.fail(function() { bind to newDefer or newDefer.reject }) + deferred[ tuple[ 1 ] ]( function() { + var returned = fn && fn.apply( this, arguments ); + if ( returned && isFunction( returned.promise ) ) { + returned.promise() + .progress( newDefer.notify ) + .done( newDefer.resolve ) + .fail( newDefer.reject ); + } else { + newDefer[ tuple[ 0 ] + "With" ]( + this, + fn ? [ returned ] : arguments + ); + } + } ); + } ); + fns = null; + } ).promise(); + }, + then: function( onFulfilled, onRejected, onProgress ) { + var maxDepth = 0; + function resolve( depth, deferred, handler, special ) { + return function() { + var that = this, + args = arguments, + mightThrow = function() { + var returned, then; + + // Support: Promises/A+ section 2.3.3.3.3 + // https://promisesaplus.com/#point-59 + // Ignore double-resolution attempts + if ( depth < maxDepth ) { + return; + } + + returned = handler.apply( that, args ); + + // Support: Promises/A+ section 2.3.1 + // https://promisesaplus.com/#point-48 + if ( returned === deferred.promise() ) { + throw new TypeError( "Thenable self-resolution" ); + } + + // Support: Promises/A+ sections 2.3.3.1, 3.5 + // https://promisesaplus.com/#point-54 + // https://promisesaplus.com/#point-75 + // Retrieve `then` only once + then = returned && + + // Support: Promises/A+ section 2.3.4 + // https://promisesaplus.com/#point-64 + // Only check objects and functions for thenability + ( typeof returned === "object" || + typeof returned === "function" ) && + returned.then; + + // Handle a returned thenable + if ( isFunction( then ) ) { + + // Special processors (notify) just wait for resolution + if ( special ) { + then.call( + returned, + resolve( maxDepth, deferred, Identity, special ), + resolve( maxDepth, deferred, Thrower, special ) + ); + + // Normal processors (resolve) also hook into progress + } else { + + // ...and disregard older resolution values + maxDepth++; + + then.call( + returned, + resolve( maxDepth, deferred, Identity, special ), + resolve( maxDepth, deferred, Thrower, special ), + resolve( maxDepth, deferred, Identity, + deferred.notifyWith ) + ); + } + + // Handle all other returned values + } else { + + // Only substitute handlers pass on context + // and multiple values (non-spec behavior) + if ( handler !== Identity ) { + that = undefined; + args = [ returned ]; + } + + // Process the value(s) + // Default process is resolve + ( special || deferred.resolveWith )( that, args ); + } + }, + + // Only normal processors (resolve) catch and reject exceptions + process = special ? + mightThrow : + function() { + try { + mightThrow(); + } catch ( e ) { + + if ( jQuery.Deferred.exceptionHook ) { + jQuery.Deferred.exceptionHook( e, + process.stackTrace ); + } + + // Support: Promises/A+ section 2.3.3.3.4.1 + // https://promisesaplus.com/#point-61 + // Ignore post-resolution exceptions + if ( depth + 1 >= maxDepth ) { + + // Only substitute handlers pass on context + // and multiple values (non-spec behavior) + if ( handler !== Thrower ) { + that = undefined; + args = [ e ]; + } + + deferred.rejectWith( that, args ); + } + } + }; + + // Support: Promises/A+ section 2.3.3.3.1 + // https://promisesaplus.com/#point-57 + // Re-resolve promises immediately to dodge false rejection from + // subsequent errors + if ( depth ) { + process(); + } else { + + // Call an optional hook to record the stack, in case of exception + // since it's otherwise lost when execution goes async + if ( jQuery.Deferred.getStackHook ) { + process.stackTrace = jQuery.Deferred.getStackHook(); + } + window.setTimeout( process ); + } + }; + } + + return jQuery.Deferred( function( newDefer ) { + + // progress_handlers.add( ... ) + tuples[ 0 ][ 3 ].add( + resolve( + 0, + newDefer, + isFunction( onProgress ) ? + onProgress : + Identity, + newDefer.notifyWith + ) + ); + + // fulfilled_handlers.add( ... ) + tuples[ 1 ][ 3 ].add( + resolve( + 0, + newDefer, + isFunction( onFulfilled ) ? + onFulfilled : + Identity + ) + ); + + // rejected_handlers.add( ... ) + tuples[ 2 ][ 3 ].add( + resolve( + 0, + newDefer, + isFunction( onRejected ) ? + onRejected : + Thrower + ) + ); + } ).promise(); + }, + + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + return obj != null ? jQuery.extend( obj, promise ) : promise; + } + }, + deferred = {}; + + // Add list-specific methods + jQuery.each( tuples, function( i, tuple ) { + var list = tuple[ 2 ], + stateString = tuple[ 5 ]; + + // promise.progress = list.add + // promise.done = list.add + // promise.fail = list.add + promise[ tuple[ 1 ] ] = list.add; + + // Handle state + if ( stateString ) { + list.add( + function() { + + // state = "resolved" (i.e., fulfilled) + // state = "rejected" + state = stateString; + }, + + // rejected_callbacks.disable + // fulfilled_callbacks.disable + tuples[ 3 - i ][ 2 ].disable, + + // rejected_handlers.disable + // fulfilled_handlers.disable + tuples[ 3 - i ][ 3 ].disable, + + // progress_callbacks.lock + tuples[ 0 ][ 2 ].lock, + + // progress_handlers.lock + tuples[ 0 ][ 3 ].lock + ); + } + + // progress_handlers.fire + // fulfilled_handlers.fire + // rejected_handlers.fire + list.add( tuple[ 3 ].fire ); + + // deferred.notify = function() { deferred.notifyWith(...) } + // deferred.resolve = function() { deferred.resolveWith(...) } + // deferred.reject = function() { deferred.rejectWith(...) } + deferred[ tuple[ 0 ] ] = function() { + deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments ); + return this; + }; + + // deferred.notifyWith = list.fireWith + // deferred.resolveWith = list.fireWith + // deferred.rejectWith = list.fireWith + deferred[ tuple[ 0 ] + "With" ] = list.fireWith; + } ); + + // Make the deferred a promise + promise.promise( deferred ); + + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + + // All done! + return deferred; + }, + + // Deferred helper + when: function( singleValue ) { + var + + // count of uncompleted subordinates + remaining = arguments.length, + + // count of unprocessed arguments + i = remaining, + + // subordinate fulfillment data + resolveContexts = Array( i ), + resolveValues = slice.call( arguments ), + + // the master Deferred + master = jQuery.Deferred(), + + // subordinate callback factory + updateFunc = function( i ) { + return function( value ) { + resolveContexts[ i ] = this; + resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; + if ( !( --remaining ) ) { + master.resolveWith( resolveContexts, resolveValues ); + } + }; + }; + + // Single- and empty arguments are adopted like Promise.resolve + if ( remaining <= 1 ) { + adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject, + !remaining ); + + // Use .then() to unwrap secondary thenables (cf. gh-3000) + if ( master.state() === "pending" || + isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) { + + return master.then(); + } + } + + // Multiple arguments are aggregated like Promise.all array elements + while ( i-- ) { + adoptValue( resolveValues[ i ], updateFunc( i ), master.reject ); + } + + return master.promise(); + } +} ); + + +// These usually indicate a programmer mistake during development, +// warn about them ASAP rather than swallowing them by default. +var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/; + +jQuery.Deferred.exceptionHook = function( error, stack ) { + + // Support: IE 8 - 9 only + // Console exists when dev tools are open, which can happen at any time + if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) { + window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack ); + } +}; + + + + +jQuery.readyException = function( error ) { + window.setTimeout( function() { + throw error; + } ); +}; + + + + +// The deferred used on DOM ready +var readyList = jQuery.Deferred(); + +jQuery.fn.ready = function( fn ) { + + readyList + .then( fn ) + + // Wrap jQuery.readyException in a function so that the lookup + // happens at the time of error handling instead of callback + // registration. + .catch( function( error ) { + jQuery.readyException( error ); + } ); + + return this; +}; + +jQuery.extend( { + + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // A counter to track how many items to wait for before + // the ready event fires. See #6781 + readyWait: 1, + + // Handle when the DOM is ready + ready: function( wait ) { + + // Abort if there are pending holds or we're already ready + if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { + return; + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.resolveWith( document, [ jQuery ] ); + } +} ); + +jQuery.ready.then = readyList.then; + +// The ready event handler and self cleanup method +function completed() { + document.removeEventListener( "DOMContentLoaded", completed ); + window.removeEventListener( "load", completed ); + jQuery.ready(); +} + +// Catch cases where $(document).ready() is called +// after the browser event has already occurred. +// Support: IE <=9 - 10 only +// Older IE sometimes signals "interactive" too soon +if ( document.readyState === "complete" || + ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { + + // Handle it asynchronously to allow scripts the opportunity to delay ready + window.setTimeout( jQuery.ready ); + +} else { + + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", completed ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", completed ); +} + + + + +// Multifunctional method to get and set values of a collection +// The value/s can optionally be executed if it's a function +var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { + var i = 0, + len = elems.length, + bulk = key == null; + + // Sets many values + if ( toType( key ) === "object" ) { + chainable = true; + for ( i in key ) { + access( elems, fn, i, key[ i ], true, emptyGet, raw ); + } + + // Sets one value + } else if ( value !== undefined ) { + chainable = true; + + if ( !isFunction( value ) ) { + raw = true; + } + + if ( bulk ) { + + // Bulk operations run against the entire set + if ( raw ) { + fn.call( elems, value ); + fn = null; + + // ...except when executing function values + } else { + bulk = fn; + fn = function( elem, _key, value ) { + return bulk.call( jQuery( elem ), value ); + }; + } + } + + if ( fn ) { + for ( ; i < len; i++ ) { + fn( + elems[ i ], key, raw ? + value : + value.call( elems[ i ], i, fn( elems[ i ], key ) ) + ); + } + } + } + + if ( chainable ) { + return elems; + } + + // Gets + if ( bulk ) { + return fn.call( elems ); + } + + return len ? fn( elems[ 0 ], key ) : emptyGet; +}; + + +// Matches dashed string for camelizing +var rmsPrefix = /^-ms-/, + rdashAlpha = /-([a-z])/g; + +// Used by camelCase as callback to replace() +function fcamelCase( _all, letter ) { + return letter.toUpperCase(); +} + +// Convert dashed to camelCase; used by the css and data modules +// Support: IE <=9 - 11, Edge 12 - 15 +// Microsoft forgot to hump their vendor prefix (#9572) +function camelCase( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); +} +var acceptData = function( owner ) { + + // Accepts only: + // - Node + // - Node.ELEMENT_NODE + // - Node.DOCUMENT_NODE + // - Object + // - Any + return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); +}; + + + + +function Data() { + this.expando = jQuery.expando + Data.uid++; +} + +Data.uid = 1; + +Data.prototype = { + + cache: function( owner ) { + + // Check if the owner object already has a cache + var value = owner[ this.expando ]; + + // If not, create one + if ( !value ) { + value = {}; + + // We can accept data for non-element nodes in modern browsers, + // but we should not, see #8335. + // Always return an empty object. + if ( acceptData( owner ) ) { + + // If it is a node unlikely to be stringify-ed or looped over + // use plain assignment + if ( owner.nodeType ) { + owner[ this.expando ] = value; + + // Otherwise secure it in a non-enumerable property + // configurable must be true to allow the property to be + // deleted when data is removed + } else { + Object.defineProperty( owner, this.expando, { + value: value, + configurable: true + } ); + } + } + } + + return value; + }, + set: function( owner, data, value ) { + var prop, + cache = this.cache( owner ); + + // Handle: [ owner, key, value ] args + // Always use camelCase key (gh-2257) + if ( typeof data === "string" ) { + cache[ camelCase( data ) ] = value; + + // Handle: [ owner, { properties } ] args + } else { + + // Copy the properties one-by-one to the cache object + for ( prop in data ) { + cache[ camelCase( prop ) ] = data[ prop ]; + } + } + return cache; + }, + get: function( owner, key ) { + return key === undefined ? + this.cache( owner ) : + + // Always use camelCase key (gh-2257) + owner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ]; + }, + access: function( owner, key, value ) { + + // In cases where either: + // + // 1. No key was specified + // 2. A string key was specified, but no value provided + // + // Take the "read" path and allow the get method to determine + // which value to return, respectively either: + // + // 1. The entire cache object + // 2. The data stored at the key + // + if ( key === undefined || + ( ( key && typeof key === "string" ) && value === undefined ) ) { + + return this.get( owner, key ); + } + + // When the key is not a string, or both a key and value + // are specified, set or extend (existing objects) with either: + // + // 1. An object of properties + // 2. A key and value + // + this.set( owner, key, value ); + + // Since the "set" path can have two possible entry points + // return the expected data based on which path was taken[*] + return value !== undefined ? value : key; + }, + remove: function( owner, key ) { + var i, + cache = owner[ this.expando ]; + + if ( cache === undefined ) { + return; + } + + if ( key !== undefined ) { + + // Support array or space separated string of keys + if ( Array.isArray( key ) ) { + + // If key is an array of keys... + // We always set camelCase keys, so remove that. + key = key.map( camelCase ); + } else { + key = camelCase( key ); + + // If a key with the spaces exists, use it. + // Otherwise, create an array by matching non-whitespace + key = key in cache ? + [ key ] : + ( key.match( rnothtmlwhite ) || [] ); + } + + i = key.length; + + while ( i-- ) { + delete cache[ key[ i ] ]; + } + } + + // Remove the expando if there's no more data + if ( key === undefined || jQuery.isEmptyObject( cache ) ) { + + // Support: Chrome <=35 - 45 + // Webkit & Blink performance suffers when deleting properties + // from DOM nodes, so set to undefined instead + // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted) + if ( owner.nodeType ) { + owner[ this.expando ] = undefined; + } else { + delete owner[ this.expando ]; + } + } + }, + hasData: function( owner ) { + var cache = owner[ this.expando ]; + return cache !== undefined && !jQuery.isEmptyObject( cache ); + } +}; +var dataPriv = new Data(); + +var dataUser = new Data(); + + + +// Implementation Summary +// +// 1. Enforce API surface and semantic compatibility with 1.9.x branch +// 2. Improve the module's maintainability by reducing the storage +// paths to a single mechanism. +// 3. Use the same single mechanism to support "private" and "user" data. +// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) +// 5. Avoid exposing implementation details on user objects (eg. expando properties) +// 6. Provide a clear path for implementation upgrade to WeakMap in 2014 + +var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, + rmultiDash = /[A-Z]/g; + +function getData( data ) { + if ( data === "true" ) { + return true; + } + + if ( data === "false" ) { + return false; + } + + if ( data === "null" ) { + return null; + } + + // Only convert to a number if it doesn't change the string + if ( data === +data + "" ) { + return +data; + } + + if ( rbrace.test( data ) ) { + return JSON.parse( data ); + } + + return data; +} + +function dataAttr( elem, key, data ) { + var name; + + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase(); + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = getData( data ); + } catch ( e ) {} + + // Make sure we set the data so it isn't changed later + dataUser.set( elem, key, data ); + } else { + data = undefined; + } + } + return data; +} + +jQuery.extend( { + hasData: function( elem ) { + return dataUser.hasData( elem ) || dataPriv.hasData( elem ); + }, + + data: function( elem, name, data ) { + return dataUser.access( elem, name, data ); + }, + + removeData: function( elem, name ) { + dataUser.remove( elem, name ); + }, + + // TODO: Now that all calls to _data and _removeData have been replaced + // with direct calls to dataPriv methods, these can be deprecated. + _data: function( elem, name, data ) { + return dataPriv.access( elem, name, data ); + }, + + _removeData: function( elem, name ) { + dataPriv.remove( elem, name ); + } +} ); + +jQuery.fn.extend( { + data: function( key, value ) { + var i, name, data, + elem = this[ 0 ], + attrs = elem && elem.attributes; + + // Gets all values + if ( key === undefined ) { + if ( this.length ) { + data = dataUser.get( elem ); + + if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) { + i = attrs.length; + while ( i-- ) { + + // Support: IE 11 only + // The attrs elements can be null (#14894) + if ( attrs[ i ] ) { + name = attrs[ i ].name; + if ( name.indexOf( "data-" ) === 0 ) { + name = camelCase( name.slice( 5 ) ); + dataAttr( elem, name, data[ name ] ); + } + } + } + dataPriv.set( elem, "hasDataAttrs", true ); + } + } + + return data; + } + + // Sets multiple values + if ( typeof key === "object" ) { + return this.each( function() { + dataUser.set( this, key ); + } ); + } + + return access( this, function( value ) { + var data; + + // The calling jQuery object (element matches) is not empty + // (and therefore has an element appears at this[ 0 ]) and the + // `value` parameter was not undefined. An empty jQuery object + // will result in `undefined` for elem = this[ 0 ] which will + // throw an exception if an attempt to read a data cache is made. + if ( elem && value === undefined ) { + + // Attempt to get data from the cache + // The key will always be camelCased in Data + data = dataUser.get( elem, key ); + if ( data !== undefined ) { + return data; + } + + // Attempt to "discover" the data in + // HTML5 custom data-* attrs + data = dataAttr( elem, key ); + if ( data !== undefined ) { + return data; + } + + // We tried really hard, but the data doesn't exist. + return; + } + + // Set the data... + this.each( function() { + + // We always store the camelCased key + dataUser.set( this, key, value ); + } ); + }, null, value, arguments.length > 1, null, true ); + }, + + removeData: function( key ) { + return this.each( function() { + dataUser.remove( this, key ); + } ); + } +} ); + + +jQuery.extend( { + queue: function( elem, type, data ) { + var queue; + + if ( elem ) { + type = ( type || "fx" ) + "queue"; + queue = dataPriv.get( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !queue || Array.isArray( data ) ) { + queue = dataPriv.access( elem, type, jQuery.makeArray( data ) ); + } else { + queue.push( data ); + } + } + return queue || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + startLength = queue.length, + fn = queue.shift(), + hooks = jQuery._queueHooks( elem, type ), + next = function() { + jQuery.dequeue( elem, type ); + }; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + startLength--; + } + + if ( fn ) { + + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift( "inprogress" ); + } + + // Clear up the last queue stop function + delete hooks.stop; + fn.call( elem, next, hooks ); + } + + if ( !startLength && hooks ) { + hooks.empty.fire(); + } + }, + + // Not public - generate a queueHooks object, or return the current one + _queueHooks: function( elem, type ) { + var key = type + "queueHooks"; + return dataPriv.get( elem, key ) || dataPriv.access( elem, key, { + empty: jQuery.Callbacks( "once memory" ).add( function() { + dataPriv.remove( elem, [ type + "queue", key ] ); + } ) + } ); + } +} ); + +jQuery.fn.extend( { + queue: function( type, data ) { + var setter = 2; + + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + setter--; + } + + if ( arguments.length < setter ) { + return jQuery.queue( this[ 0 ], type ); + } + + return data === undefined ? + this : + this.each( function() { + var queue = jQuery.queue( this, type, data ); + + // Ensure a hooks for this queue + jQuery._queueHooks( this, type ); + + if ( type === "fx" && queue[ 0 ] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + } ); + }, + dequeue: function( type ) { + return this.each( function() { + jQuery.dequeue( this, type ); + } ); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, obj ) { + var tmp, + count = 1, + defer = jQuery.Deferred(), + elements = this, + i = this.length, + resolve = function() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + }; + + if ( typeof type !== "string" ) { + obj = type; + type = undefined; + } + type = type || "fx"; + + while ( i-- ) { + tmp = dataPriv.get( elements[ i ], type + "queueHooks" ); + if ( tmp && tmp.empty ) { + count++; + tmp.empty.add( resolve ); + } + } + resolve(); + return defer.promise( obj ); + } +} ); +var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; + +var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); + + +var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; + +var documentElement = document.documentElement; + + + + var isAttached = function( elem ) { + return jQuery.contains( elem.ownerDocument, elem ); + }, + composed = { composed: true }; + + // Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only + // Check attachment across shadow DOM boundaries when possible (gh-3504) + // Support: iOS 10.0-10.2 only + // Early iOS 10 versions support `attachShadow` but not `getRootNode`, + // leading to errors. We need to check for `getRootNode`. + if ( documentElement.getRootNode ) { + isAttached = function( elem ) { + return jQuery.contains( elem.ownerDocument, elem ) || + elem.getRootNode( composed ) === elem.ownerDocument; + }; + } +var isHiddenWithinTree = function( elem, el ) { + + // isHiddenWithinTree might be called from jQuery#filter function; + // in that case, element will be second argument + elem = el || elem; + + // Inline style trumps all + return elem.style.display === "none" || + elem.style.display === "" && + + // Otherwise, check computed style + // Support: Firefox <=43 - 45 + // Disconnected elements can have computed display: none, so first confirm that elem is + // in the document. + isAttached( elem ) && + + jQuery.css( elem, "display" ) === "none"; + }; + + + +function adjustCSS( elem, prop, valueParts, tween ) { + var adjusted, scale, + maxIterations = 20, + currentValue = tween ? + function() { + return tween.cur(); + } : + function() { + return jQuery.css( elem, prop, "" ); + }, + initial = currentValue(), + unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), + + // Starting value computation is required for potential unit mismatches + initialInUnit = elem.nodeType && + ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && + rcssNum.exec( jQuery.css( elem, prop ) ); + + if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { + + // Support: Firefox <=54 + // Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144) + initial = initial / 2; + + // Trust units reported by jQuery.css + unit = unit || initialInUnit[ 3 ]; + + // Iteratively approximate from a nonzero starting point + initialInUnit = +initial || 1; + + while ( maxIterations-- ) { + + // Evaluate and update our best guess (doubling guesses that zero out). + // Finish if the scale equals or crosses 1 (making the old*new product non-positive). + jQuery.style( elem, prop, initialInUnit + unit ); + if ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) { + maxIterations = 0; + } + initialInUnit = initialInUnit / scale; + + } + + initialInUnit = initialInUnit * 2; + jQuery.style( elem, prop, initialInUnit + unit ); + + // Make sure we update the tween properties later on + valueParts = valueParts || []; + } + + if ( valueParts ) { + initialInUnit = +initialInUnit || +initial || 0; + + // Apply relative offset (+=/-=) if specified + adjusted = valueParts[ 1 ] ? + initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : + +valueParts[ 2 ]; + if ( tween ) { + tween.unit = unit; + tween.start = initialInUnit; + tween.end = adjusted; + } + } + return adjusted; +} + + +var defaultDisplayMap = {}; + +function getDefaultDisplay( elem ) { + var temp, + doc = elem.ownerDocument, + nodeName = elem.nodeName, + display = defaultDisplayMap[ nodeName ]; + + if ( display ) { + return display; + } + + temp = doc.body.appendChild( doc.createElement( nodeName ) ); + display = jQuery.css( temp, "display" ); + + temp.parentNode.removeChild( temp ); + + if ( display === "none" ) { + display = "block"; + } + defaultDisplayMap[ nodeName ] = display; + + return display; +} + +function showHide( elements, show ) { + var display, elem, + values = [], + index = 0, + length = elements.length; + + // Determine new display value for elements that need to change + for ( ; index < length; index++ ) { + elem = elements[ index ]; + if ( !elem.style ) { + continue; + } + + display = elem.style.display; + if ( show ) { + + // Since we force visibility upon cascade-hidden elements, an immediate (and slow) + // check is required in this first loop unless we have a nonempty display value (either + // inline or about-to-be-restored) + if ( display === "none" ) { + values[ index ] = dataPriv.get( elem, "display" ) || null; + if ( !values[ index ] ) { + elem.style.display = ""; + } + } + if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) { + values[ index ] = getDefaultDisplay( elem ); + } + } else { + if ( display !== "none" ) { + values[ index ] = "none"; + + // Remember what we're overwriting + dataPriv.set( elem, "display", display ); + } + } + } + + // Set the display of the elements in a second loop to avoid constant reflow + for ( index = 0; index < length; index++ ) { + if ( values[ index ] != null ) { + elements[ index ].style.display = values[ index ]; + } + } + + return elements; +} + +jQuery.fn.extend( { + show: function() { + return showHide( this, true ); + }, + hide: function() { + return showHide( this ); + }, + toggle: function( state ) { + if ( typeof state === "boolean" ) { + return state ? this.show() : this.hide(); + } + + return this.each( function() { + if ( isHiddenWithinTree( this ) ) { + jQuery( this ).show(); + } else { + jQuery( this ).hide(); + } + } ); + } +} ); +var rcheckableType = ( /^(?:checkbox|radio)$/i ); + +var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]*)/i ); + +var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i ); + + + +( function() { + var fragment = document.createDocumentFragment(), + div = fragment.appendChild( document.createElement( "div" ) ), + input = document.createElement( "input" ); + + // Support: Android 4.0 - 4.3 only + // Check state lost if the name is set (#11217) + // Support: Windows Web Apps (WWA) + // `name` and `type` must use .setAttribute for WWA (#14901) + input.setAttribute( "type", "radio" ); + input.setAttribute( "checked", "checked" ); + input.setAttribute( "name", "t" ); + + div.appendChild( input ); + + // Support: Android <=4.1 only + // Older WebKit doesn't clone checked state correctly in fragments + support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Support: IE <=11 only + // Make sure textarea (and checkbox) defaultValue is properly cloned + div.innerHTML = ""; + support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; + + // Support: IE <=9 only + // IE <=9 replaces "; + support.option = !!div.lastChild; +} )(); + + +// We have to close these tags to support XHTML (#13200) +var wrapMap = { + + // XHTML parsers do not magically insert elements in the + // same way that tag soup parsers do. So we cannot shorten + // this by omitting or other required elements. + thead: [ 1, "", "
" ], + col: [ 2, "", "
" ], + tr: [ 2, "", "
" ], + td: [ 3, "", "
" ], + + _default: [ 0, "", "" ] +}; + +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + +// Support: IE <=9 only +if ( !support.option ) { + wrapMap.optgroup = wrapMap.option = [ 1, "" ]; +} + + +function getAll( context, tag ) { + + // Support: IE <=9 - 11 only + // Use typeof to avoid zero-argument method invocation on host objects (#15151) + var ret; + + if ( typeof context.getElementsByTagName !== "undefined" ) { + ret = context.getElementsByTagName( tag || "*" ); + + } else if ( typeof context.querySelectorAll !== "undefined" ) { + ret = context.querySelectorAll( tag || "*" ); + + } else { + ret = []; + } + + if ( tag === undefined || tag && nodeName( context, tag ) ) { + return jQuery.merge( [ context ], ret ); + } + + return ret; +} + + +// Mark scripts as having already been evaluated +function setGlobalEval( elems, refElements ) { + var i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + dataPriv.set( + elems[ i ], + "globalEval", + !refElements || dataPriv.get( refElements[ i ], "globalEval" ) + ); + } +} + + +var rhtml = /<|&#?\w+;/; + +function buildFragment( elems, context, scripts, selection, ignored ) { + var elem, tmp, tag, wrap, attached, j, + fragment = context.createDocumentFragment(), + nodes = [], + i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + elem = elems[ i ]; + + if ( elem || elem === 0 ) { + + // Add nodes directly + if ( toType( elem ) === "object" ) { + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); + + // Convert non-html into a text node + } else if ( !rhtml.test( elem ) ) { + nodes.push( context.createTextNode( elem ) ); + + // Convert html into DOM nodes + } else { + tmp = tmp || fragment.appendChild( context.createElement( "div" ) ); + + // Deserialize a standard representation + tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); + wrap = wrapMap[ tag ] || wrapMap._default; + tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ]; + + // Descend through wrappers to the right content + j = wrap[ 0 ]; + while ( j-- ) { + tmp = tmp.lastChild; + } + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( nodes, tmp.childNodes ); + + // Remember the top-level container + tmp = fragment.firstChild; + + // Ensure the created nodes are orphaned (#12392) + tmp.textContent = ""; + } + } + } + + // Remove wrapper from fragment + fragment.textContent = ""; + + i = 0; + while ( ( elem = nodes[ i++ ] ) ) { + + // Skip elements already in the context collection (trac-4087) + if ( selection && jQuery.inArray( elem, selection ) > -1 ) { + if ( ignored ) { + ignored.push( elem ); + } + continue; + } + + attached = isAttached( elem ); + + // Append to fragment + tmp = getAll( fragment.appendChild( elem ), "script" ); + + // Preserve script evaluation history + if ( attached ) { + setGlobalEval( tmp ); + } + + // Capture executables + if ( scripts ) { + j = 0; + while ( ( elem = tmp[ j++ ] ) ) { + if ( rscriptType.test( elem.type || "" ) ) { + scripts.push( elem ); + } + } + } + } + + return fragment; +} + + +var + rkeyEvent = /^key/, + rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, + rtypenamespace = /^([^.]*)(?:\.(.+)|)/; + +function returnTrue() { + return true; +} + +function returnFalse() { + return false; +} + +// Support: IE <=9 - 11+ +// focus() and blur() are asynchronous, except when they are no-op. +// So expect focus to be synchronous when the element is already active, +// and blur to be synchronous when the element is not already active. +// (focus and blur are always synchronous in other supported browsers, +// this just defines when we can count on it). +function expectSync( elem, type ) { + return ( elem === safeActiveElement() ) === ( type === "focus" ); +} + +// Support: IE <=9 only +// Accessing document.activeElement can throw unexpectedly +// https://bugs.jquery.com/ticket/13393 +function safeActiveElement() { + try { + return document.activeElement; + } catch ( err ) { } +} + +function on( elem, types, selector, data, fn, one ) { + var origFn, type; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { + + // ( types-Object, data ) + data = data || selector; + selector = undefined; + } + for ( type in types ) { + on( elem, type, selector, data, types[ type ], one ); + } + return elem; + } + + if ( data == null && fn == null ) { + + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if ( fn == null ) { + if ( typeof selector === "string" ) { + + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if ( fn === false ) { + fn = returnFalse; + } else if ( !fn ) { + return elem; + } + + if ( one === 1 ) { + origFn = fn; + fn = function( event ) { + + // Can use an empty set, since event contains the info + jQuery().off( event ); + return origFn.apply( this, arguments ); + }; + + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); + } + return elem.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + } ); +} + +/* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + global: {}, + + add: function( elem, types, handler, data, selector ) { + + var handleObjIn, eventHandle, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = dataPriv.get( elem ); + + // Only attach events to objects that accept data + if ( !acceptData( elem ) ) { + return; + } + + // Caller can pass in an object of custom data in lieu of the handler + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + selector = handleObjIn.selector; + } + + // Ensure that invalid selectors throw exceptions at attach time + // Evaluate against documentElement in case elem is a non-element node (e.g., document) + if ( selector ) { + jQuery.find.matchesSelector( documentElement, selector ); + } + + // Make sure that the handler has a unique ID, used to find/remove it later + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main handler, if this is the first + if ( !( events = elemData.events ) ) { + events = elemData.events = Object.create( null ); + } + if ( !( eventHandle = elemData.handle ) ) { + eventHandle = elemData.handle = function( e ) { + + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? + jQuery.event.dispatch.apply( elem, arguments ) : undefined; + }; + } + + // Handle multiple events separated by a space + types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); + + // There *must* be a type, no attaching namespace-only handlers + if ( !type ) { + continue; + } + + // If event changes its type, use the special event handlers for the changed type + special = jQuery.event.special[ type ] || {}; + + // If selector defined, determine special event api type, otherwise given type + type = ( selector ? special.delegateType : special.bindType ) || type; + + // Update special based on newly reset type + special = jQuery.event.special[ type ] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend( { + type: type, + origType: origType, + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + needsContext: selector && jQuery.expr.match.needsContext.test( selector ), + namespace: namespaces.join( "." ) + }, handleObjIn ); + + // Init the event handler queue if we're the first + if ( !( handlers = events[ type ] ) ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener if the special events handler returns false + if ( !special.setup || + special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates in front + if ( selector ) { + handlers.splice( handlers.delegateCount++, 0, handleObj ); + } else { + handlers.push( handleObj ); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[ type ] = true; + } + + }, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + + var j, origCount, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = dataPriv.hasData( elem ) && dataPriv.get( elem ); + + if ( !elemData || !( events = elemData.events ) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); + + // Unbind all events (on this namespace, if provided) for the element + if ( !type ) { + for ( type in events ) { + jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); + } + continue; + } + + special = jQuery.event.special[ type ] || {}; + type = ( selector ? special.delegateType : special.bindType ) || type; + handlers = events[ type ] || []; + tmp = tmp[ 2 ] && + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); + + // Remove matching events + origCount = j = handlers.length; + while ( j-- ) { + handleObj = handlers[ j ]; + + if ( ( mappedTypes || origType === handleObj.origType ) && + ( !handler || handler.guid === handleObj.guid ) && + ( !tmp || tmp.test( handleObj.namespace ) ) && + ( !selector || selector === handleObj.selector || + selector === "**" && handleObj.selector ) ) { + handlers.splice( j, 1 ); + + if ( handleObj.selector ) { + handlers.delegateCount--; + } + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + } + + // Remove generic event handler if we removed something and no more handlers exist + // (avoids potential for endless recursion during removal of special event handlers) + if ( origCount && !handlers.length ) { + if ( !special.teardown || + special.teardown.call( elem, namespaces, elemData.handle ) === false ) { + + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove data and the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + dataPriv.remove( elem, "handle events" ); + } + }, + + dispatch: function( nativeEvent ) { + + var i, j, ret, matched, handleObj, handlerQueue, + args = new Array( arguments.length ), + + // Make a writable jQuery.Event from the native event object + event = jQuery.event.fix( nativeEvent ), + + handlers = ( + dataPriv.get( this, "events" ) || Object.create( null ) + )[ event.type ] || [], + special = jQuery.event.special[ event.type ] || {}; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[ 0 ] = event; + + for ( i = 1; i < arguments.length; i++ ) { + args[ i ] = arguments[ i ]; + } + + event.delegateTarget = this; + + // Call the preDispatch hook for the mapped type, and let it bail if desired + if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { + return; + } + + // Determine handlers + handlerQueue = jQuery.event.handlers.call( this, event, handlers ); + + // Run delegates first; they may want to stop propagation beneath us + i = 0; + while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { + event.currentTarget = matched.elem; + + j = 0; + while ( ( handleObj = matched.handlers[ j++ ] ) && + !event.isImmediatePropagationStopped() ) { + + // If the event is namespaced, then each handler is only invoked if it is + // specially universal or its namespaces are a superset of the event's. + if ( !event.rnamespace || handleObj.namespace === false || + event.rnamespace.test( handleObj.namespace ) ) { + + event.handleObj = handleObj; + event.data = handleObj.data; + + ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || + handleObj.handler ).apply( matched.elem, args ); + + if ( ret !== undefined ) { + if ( ( event.result = ret ) === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + } + } + + // Call the postDispatch hook for the mapped type + if ( special.postDispatch ) { + special.postDispatch.call( this, event ); + } + + return event.result; + }, + + handlers: function( event, handlers ) { + var i, handleObj, sel, matchedHandlers, matchedSelectors, + handlerQueue = [], + delegateCount = handlers.delegateCount, + cur = event.target; + + // Find delegate handlers + if ( delegateCount && + + // Support: IE <=9 + // Black-hole SVG instance trees (trac-13180) + cur.nodeType && + + // Support: Firefox <=42 + // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861) + // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click + // Support: IE 11 only + // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343) + !( event.type === "click" && event.button >= 1 ) ) { + + for ( ; cur !== this; cur = cur.parentNode || this ) { + + // Don't check non-elements (#13208) + // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) + if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) { + matchedHandlers = []; + matchedSelectors = {}; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + + // Don't conflict with Object.prototype properties (#13203) + sel = handleObj.selector + " "; + + if ( matchedSelectors[ sel ] === undefined ) { + matchedSelectors[ sel ] = handleObj.needsContext ? + jQuery( sel, this ).index( cur ) > -1 : + jQuery.find( sel, this, null, [ cur ] ).length; + } + if ( matchedSelectors[ sel ] ) { + matchedHandlers.push( handleObj ); + } + } + if ( matchedHandlers.length ) { + handlerQueue.push( { elem: cur, handlers: matchedHandlers } ); + } + } + } + } + + // Add the remaining (directly-bound) handlers + cur = this; + if ( delegateCount < handlers.length ) { + handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } ); + } + + return handlerQueue; + }, + + addProp: function( name, hook ) { + Object.defineProperty( jQuery.Event.prototype, name, { + enumerable: true, + configurable: true, + + get: isFunction( hook ) ? + function() { + if ( this.originalEvent ) { + return hook( this.originalEvent ); + } + } : + function() { + if ( this.originalEvent ) { + return this.originalEvent[ name ]; + } + }, + + set: function( value ) { + Object.defineProperty( this, name, { + enumerable: true, + configurable: true, + writable: true, + value: value + } ); + } + } ); + }, + + fix: function( originalEvent ) { + return originalEvent[ jQuery.expando ] ? + originalEvent : + new jQuery.Event( originalEvent ); + }, + + special: { + load: { + + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + click: { + + // Utilize native event to ensure correct state for checkable inputs + setup: function( data ) { + + // For mutual compressibility with _default, replace `this` access with a local var. + // `|| data` is dead code meant only to preserve the variable through minification. + var el = this || data; + + // Claim the first handler + if ( rcheckableType.test( el.type ) && + el.click && nodeName( el, "input" ) ) { + + // dataPriv.set( el, "click", ... ) + leverageNative( el, "click", returnTrue ); + } + + // Return false to allow normal processing in the caller + return false; + }, + trigger: function( data ) { + + // For mutual compressibility with _default, replace `this` access with a local var. + // `|| data` is dead code meant only to preserve the variable through minification. + var el = this || data; + + // Force setup before triggering a click + if ( rcheckableType.test( el.type ) && + el.click && nodeName( el, "input" ) ) { + + leverageNative( el, "click" ); + } + + // Return non-false to allow normal event-path propagation + return true; + }, + + // For cross-browser consistency, suppress native .click() on links + // Also prevent it if we're currently inside a leveraged native-event stack + _default: function( event ) { + var target = event.target; + return rcheckableType.test( target.type ) && + target.click && nodeName( target, "input" ) && + dataPriv.get( target, "click" ) || + nodeName( target, "a" ); + } + }, + + beforeunload: { + postDispatch: function( event ) { + + // Support: Firefox 20+ + // Firefox doesn't alert if the returnValue field is not set. + if ( event.result !== undefined && event.originalEvent ) { + event.originalEvent.returnValue = event.result; + } + } + } + } +}; + +// Ensure the presence of an event listener that handles manually-triggered +// synthetic events by interrupting progress until reinvoked in response to +// *native* events that it fires directly, ensuring that state changes have +// already occurred before other listeners are invoked. +function leverageNative( el, type, expectSync ) { + + // Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add + if ( !expectSync ) { + if ( dataPriv.get( el, type ) === undefined ) { + jQuery.event.add( el, type, returnTrue ); + } + return; + } + + // Register the controller as a special universal handler for all event namespaces + dataPriv.set( el, type, false ); + jQuery.event.add( el, type, { + namespace: false, + handler: function( event ) { + var notAsync, result, + saved = dataPriv.get( this, type ); + + if ( ( event.isTrigger & 1 ) && this[ type ] ) { + + // Interrupt processing of the outer synthetic .trigger()ed event + // Saved data should be false in such cases, but might be a leftover capture object + // from an async native handler (gh-4350) + if ( !saved.length ) { + + // Store arguments for use when handling the inner native event + // There will always be at least one argument (an event object), so this array + // will not be confused with a leftover capture object. + saved = slice.call( arguments ); + dataPriv.set( this, type, saved ); + + // Trigger the native event and capture its result + // Support: IE <=9 - 11+ + // focus() and blur() are asynchronous + notAsync = expectSync( this, type ); + this[ type ](); + result = dataPriv.get( this, type ); + if ( saved !== result || notAsync ) { + dataPriv.set( this, type, false ); + } else { + result = {}; + } + if ( saved !== result ) { + + // Cancel the outer synthetic event + event.stopImmediatePropagation(); + event.preventDefault(); + return result.value; + } + + // If this is an inner synthetic event for an event with a bubbling surrogate + // (focus or blur), assume that the surrogate already propagated from triggering the + // native event and prevent that from happening again here. + // This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the + // bubbling surrogate propagates *after* the non-bubbling base), but that seems + // less bad than duplication. + } else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) { + event.stopPropagation(); + } + + // If this is a native event triggered above, everything is now in order + // Fire an inner synthetic event with the original arguments + } else if ( saved.length ) { + + // ...and capture the result + dataPriv.set( this, type, { + value: jQuery.event.trigger( + + // Support: IE <=9 - 11+ + // Extend with the prototype to reset the above stopImmediatePropagation() + jQuery.extend( saved[ 0 ], jQuery.Event.prototype ), + saved.slice( 1 ), + this + ) + } ); + + // Abort handling of the native event + event.stopImmediatePropagation(); + } + } + } ); +} + +jQuery.removeEvent = function( elem, type, handle ) { + + // This "if" is needed for plain objects + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle ); + } +}; + +jQuery.Event = function( src, props ) { + + // Allow instantiation without the 'new' keyword + if ( !( this instanceof jQuery.Event ) ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = src.defaultPrevented || + src.defaultPrevented === undefined && + + // Support: Android <=2.3 only + src.returnValue === false ? + returnTrue : + returnFalse; + + // Create target properties + // Support: Safari <=6 - 7 only + // Target should not be a text node (#504, #13143) + this.target = ( src.target && src.target.nodeType === 3 ) ? + src.target.parentNode : + src.target; + + this.currentTarget = src.currentTarget; + this.relatedTarget = src.relatedTarget; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || Date.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + constructor: jQuery.Event, + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse, + isSimulated: false, + + preventDefault: function() { + var e = this.originalEvent; + + this.isDefaultPrevented = returnTrue; + + if ( e && !this.isSimulated ) { + e.preventDefault(); + } + }, + stopPropagation: function() { + var e = this.originalEvent; + + this.isPropagationStopped = returnTrue; + + if ( e && !this.isSimulated ) { + e.stopPropagation(); + } + }, + stopImmediatePropagation: function() { + var e = this.originalEvent; + + this.isImmediatePropagationStopped = returnTrue; + + if ( e && !this.isSimulated ) { + e.stopImmediatePropagation(); + } + + this.stopPropagation(); + } +}; + +// Includes all common event props including KeyEvent and MouseEvent specific props +jQuery.each( { + altKey: true, + bubbles: true, + cancelable: true, + changedTouches: true, + ctrlKey: true, + detail: true, + eventPhase: true, + metaKey: true, + pageX: true, + pageY: true, + shiftKey: true, + view: true, + "char": true, + code: true, + charCode: true, + key: true, + keyCode: true, + button: true, + buttons: true, + clientX: true, + clientY: true, + offsetX: true, + offsetY: true, + pointerId: true, + pointerType: true, + screenX: true, + screenY: true, + targetTouches: true, + toElement: true, + touches: true, + + which: function( event ) { + var button = event.button; + + // Add which for key events + if ( event.which == null && rkeyEvent.test( event.type ) ) { + return event.charCode != null ? event.charCode : event.keyCode; + } + + // Add which for click: 1 === left; 2 === middle; 3 === right + if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) { + if ( button & 1 ) { + return 1; + } + + if ( button & 2 ) { + return 3; + } + + if ( button & 4 ) { + return 2; + } + + return 0; + } + + return event.which; + } +}, jQuery.event.addProp ); + +jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) { + jQuery.event.special[ type ] = { + + // Utilize native event if possible so blur/focus sequence is correct + setup: function() { + + // Claim the first handler + // dataPriv.set( this, "focus", ... ) + // dataPriv.set( this, "blur", ... ) + leverageNative( this, type, expectSync ); + + // Return false to allow normal processing in the caller + return false; + }, + trigger: function() { + + // Force setup before trigger + leverageNative( this, type ); + + // Return non-false to allow normal event-path propagation + return true; + }, + + delegateType: delegateType + }; +} ); + +// Create mouseenter/leave events using mouseover/out and event-time checks +// so that event delegation works in jQuery. +// Do the same for pointerenter/pointerleave and pointerover/pointerout +// +// Support: Safari 7 only +// Safari sends mouseenter too often; see: +// https://bugs.chromium.org/p/chromium/issues/detail?id=470258 +// for the description of the bug (it existed in older Chrome versions as well). +jQuery.each( { + mouseenter: "mouseover", + mouseleave: "mouseout", + pointerenter: "pointerover", + pointerleave: "pointerout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var ret, + target = this, + related = event.relatedTarget, + handleObj = event.handleObj; + + // For mouseenter/leave call the handler if related is outside the target. + // NB: No relatedTarget if the mouse left/entered the browser window + if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { + event.type = handleObj.origType; + ret = handleObj.handler.apply( this, arguments ); + event.type = fix; + } + return ret; + } + }; +} ); + +jQuery.fn.extend( { + + on: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn ); + }, + one: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn, 1 ); + }, + off: function( types, selector, fn ) { + var handleObj, type; + if ( types && types.preventDefault && types.handleObj ) { + + // ( event ) dispatched jQuery.Event + handleObj = types.handleObj; + jQuery( types.delegateTarget ).off( + handleObj.namespace ? + handleObj.origType + "." + handleObj.namespace : + handleObj.origType, + handleObj.selector, + handleObj.handler + ); + return this; + } + if ( typeof types === "object" ) { + + // ( types-object [, selector] ) + for ( type in types ) { + this.off( type, selector, types[ type ] ); + } + return this; + } + if ( selector === false || typeof selector === "function" ) { + + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if ( fn === false ) { + fn = returnFalse; + } + return this.each( function() { + jQuery.event.remove( this, types, fn, selector ); + } ); + } +} ); + + +var + + // Support: IE <=10 - 11, Edge 12 - 13 only + // In IE/Edge using regex groups here causes severe slowdowns. + // See https://connect.microsoft.com/IE/feedback/details/1736512/ + rnoInnerhtml = /\s*$/g; + +// Prefer a tbody over its parent table for containing new rows +function manipulationTarget( elem, content ) { + if ( nodeName( elem, "table" ) && + nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) { + + return jQuery( elem ).children( "tbody" )[ 0 ] || elem; + } + + return elem; +} + +// Replace/restore the type attribute of script elements for safe DOM manipulation +function disableScript( elem ) { + elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type; + return elem; +} +function restoreScript( elem ) { + if ( ( elem.type || "" ).slice( 0, 5 ) === "true/" ) { + elem.type = elem.type.slice( 5 ); + } else { + elem.removeAttribute( "type" ); + } + + return elem; +} + +function cloneCopyEvent( src, dest ) { + var i, l, type, pdataOld, udataOld, udataCur, events; + + if ( dest.nodeType !== 1 ) { + return; + } + + // 1. Copy private data: events, handlers, etc. + if ( dataPriv.hasData( src ) ) { + pdataOld = dataPriv.get( src ); + events = pdataOld.events; + + if ( events ) { + dataPriv.remove( dest, "handle events" ); + + for ( type in events ) { + for ( i = 0, l = events[ type ].length; i < l; i++ ) { + jQuery.event.add( dest, type, events[ type ][ i ] ); + } + } + } + } + + // 2. Copy user data + if ( dataUser.hasData( src ) ) { + udataOld = dataUser.access( src ); + udataCur = jQuery.extend( {}, udataOld ); + + dataUser.set( dest, udataCur ); + } +} + +// Fix IE bugs, see support tests +function fixInput( src, dest ) { + var nodeName = dest.nodeName.toLowerCase(); + + // Fails to persist the checked state of a cloned checkbox or radio button. + if ( nodeName === "input" && rcheckableType.test( src.type ) ) { + dest.checked = src.checked; + + // Fails to return the selected option to the default selected state when cloning options + } else if ( nodeName === "input" || nodeName === "textarea" ) { + dest.defaultValue = src.defaultValue; + } +} + +function domManip( collection, args, callback, ignored ) { + + // Flatten any nested arrays + args = flat( args ); + + var fragment, first, scripts, hasScripts, node, doc, + i = 0, + l = collection.length, + iNoClone = l - 1, + value = args[ 0 ], + valueIsFunction = isFunction( value ); + + // We can't cloneNode fragments that contain checked, in WebKit + if ( valueIsFunction || + ( l > 1 && typeof value === "string" && + !support.checkClone && rchecked.test( value ) ) ) { + return collection.each( function( index ) { + var self = collection.eq( index ); + if ( valueIsFunction ) { + args[ 0 ] = value.call( this, index, self.html() ); + } + domManip( self, args, callback, ignored ); + } ); + } + + if ( l ) { + fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); + first = fragment.firstChild; + + if ( fragment.childNodes.length === 1 ) { + fragment = first; + } + + // Require either new content or an interest in ignored elements to invoke the callback + if ( first || ignored ) { + scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); + hasScripts = scripts.length; + + // Use the original fragment for the last item + // instead of the first because it can end up + // being emptied incorrectly in certain situations (#8070). + for ( ; i < l; i++ ) { + node = fragment; + + if ( i !== iNoClone ) { + node = jQuery.clone( node, true, true ); + + // Keep references to cloned scripts for later restoration + if ( hasScripts ) { + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( scripts, getAll( node, "script" ) ); + } + } + + callback.call( collection[ i ], node, i ); + } + + if ( hasScripts ) { + doc = scripts[ scripts.length - 1 ].ownerDocument; + + // Reenable scripts + jQuery.map( scripts, restoreScript ); + + // Evaluate executable scripts on first document insertion + for ( i = 0; i < hasScripts; i++ ) { + node = scripts[ i ]; + if ( rscriptType.test( node.type || "" ) && + !dataPriv.access( node, "globalEval" ) && + jQuery.contains( doc, node ) ) { + + if ( node.src && ( node.type || "" ).toLowerCase() !== "module" ) { + + // Optional AJAX dependency, but won't run scripts if not present + if ( jQuery._evalUrl && !node.noModule ) { + jQuery._evalUrl( node.src, { + nonce: node.nonce || node.getAttribute( "nonce" ) + }, doc ); + } + } else { + DOMEval( node.textContent.replace( rcleanScript, "" ), node, doc ); + } + } + } + } + } + } + + return collection; +} + +function remove( elem, selector, keepData ) { + var node, + nodes = selector ? jQuery.filter( selector, elem ) : elem, + i = 0; + + for ( ; ( node = nodes[ i ] ) != null; i++ ) { + if ( !keepData && node.nodeType === 1 ) { + jQuery.cleanData( getAll( node ) ); + } + + if ( node.parentNode ) { + if ( keepData && isAttached( node ) ) { + setGlobalEval( getAll( node, "script" ) ); + } + node.parentNode.removeChild( node ); + } + } + + return elem; +} + +jQuery.extend( { + htmlPrefilter: function( html ) { + return html; + }, + + clone: function( elem, dataAndEvents, deepDataAndEvents ) { + var i, l, srcElements, destElements, + clone = elem.cloneNode( true ), + inPage = isAttached( elem ); + + // Fix IE cloning issues + if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && + !jQuery.isXMLDoc( elem ) ) { + + // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2 + destElements = getAll( clone ); + srcElements = getAll( elem ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + fixInput( srcElements[ i ], destElements[ i ] ); + } + } + + // Copy the events from the original to the clone + if ( dataAndEvents ) { + if ( deepDataAndEvents ) { + srcElements = srcElements || getAll( elem ); + destElements = destElements || getAll( clone ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + cloneCopyEvent( srcElements[ i ], destElements[ i ] ); + } + } else { + cloneCopyEvent( elem, clone ); + } + } + + // Preserve script evaluation history + destElements = getAll( clone, "script" ); + if ( destElements.length > 0 ) { + setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); + } + + // Return the cloned set + return clone; + }, + + cleanData: function( elems ) { + var data, elem, type, + special = jQuery.event.special, + i = 0; + + for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) { + if ( acceptData( elem ) ) { + if ( ( data = elem[ dataPriv.expando ] ) ) { + if ( data.events ) { + for ( type in data.events ) { + if ( special[ type ] ) { + jQuery.event.remove( elem, type ); + + // This is a shortcut to avoid jQuery.event.remove's overhead + } else { + jQuery.removeEvent( elem, type, data.handle ); + } + } + } + + // Support: Chrome <=35 - 45+ + // Assign undefined instead of using delete, see Data#remove + elem[ dataPriv.expando ] = undefined; + } + if ( elem[ dataUser.expando ] ) { + + // Support: Chrome <=35 - 45+ + // Assign undefined instead of using delete, see Data#remove + elem[ dataUser.expando ] = undefined; + } + } + } + } +} ); + +jQuery.fn.extend( { + detach: function( selector ) { + return remove( this, selector, true ); + }, + + remove: function( selector ) { + return remove( this, selector ); + }, + + text: function( value ) { + return access( this, function( value ) { + return value === undefined ? + jQuery.text( this ) : + this.empty().each( function() { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + this.textContent = value; + } + } ); + }, null, value, arguments.length ); + }, + + append: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.appendChild( elem ); + } + } ); + }, + + prepend: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.insertBefore( elem, target.firstChild ); + } + } ); + }, + + before: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this ); + } + } ); + }, + + after: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this.nextSibling ); + } + } ); + }, + + empty: function() { + var elem, + i = 0; + + for ( ; ( elem = this[ i ] ) != null; i++ ) { + if ( elem.nodeType === 1 ) { + + // Prevent memory leaks + jQuery.cleanData( getAll( elem, false ) ); + + // Remove any remaining nodes + elem.textContent = ""; + } + } + + return this; + }, + + clone: function( dataAndEvents, deepDataAndEvents ) { + dataAndEvents = dataAndEvents == null ? false : dataAndEvents; + deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; + + return this.map( function() { + return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); + } ); + }, + + html: function( value ) { + return access( this, function( value ) { + var elem = this[ 0 ] || {}, + i = 0, + l = this.length; + + if ( value === undefined && elem.nodeType === 1 ) { + return elem.innerHTML; + } + + // See if we can take a shortcut and just use innerHTML + if ( typeof value === "string" && !rnoInnerhtml.test( value ) && + !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { + + value = jQuery.htmlPrefilter( value ); + + try { + for ( ; i < l; i++ ) { + elem = this[ i ] || {}; + + // Remove element nodes and prevent memory leaks + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + elem.innerHTML = value; + } + } + + elem = 0; + + // If using innerHTML throws an exception, use the fallback method + } catch ( e ) {} + } + + if ( elem ) { + this.empty().append( value ); + } + }, null, value, arguments.length ); + }, + + replaceWith: function() { + var ignored = []; + + // Make the changes, replacing each non-ignored context element with the new content + return domManip( this, arguments, function( elem ) { + var parent = this.parentNode; + + if ( jQuery.inArray( this, ignored ) < 0 ) { + jQuery.cleanData( getAll( this ) ); + if ( parent ) { + parent.replaceChild( elem, this ); + } + } + + // Force callback invocation + }, ignored ); + } +} ); + +jQuery.each( { + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith" +}, function( name, original ) { + jQuery.fn[ name ] = function( selector ) { + var elems, + ret = [], + insert = jQuery( selector ), + last = insert.length - 1, + i = 0; + + for ( ; i <= last; i++ ) { + elems = i === last ? this : this.clone( true ); + jQuery( insert[ i ] )[ original ]( elems ); + + // Support: Android <=4.0 only, PhantomJS 1 only + // .get() because push.apply(_, arraylike) throws on ancient WebKit + push.apply( ret, elems.get() ); + } + + return this.pushStack( ret ); + }; +} ); +var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); + +var getStyles = function( elem ) { + + // Support: IE <=11 only, Firefox <=30 (#15098, #14150) + // IE throws on elements created in popups + // FF meanwhile throws on frame elements through "defaultView.getComputedStyle" + var view = elem.ownerDocument.defaultView; + + if ( !view || !view.opener ) { + view = window; + } + + return view.getComputedStyle( elem ); + }; + +var swap = function( elem, options, callback ) { + var ret, name, + old = {}; + + // Remember the old values, and insert the new ones + for ( name in options ) { + old[ name ] = elem.style[ name ]; + elem.style[ name ] = options[ name ]; + } + + ret = callback.call( elem ); + + // Revert the old values + for ( name in options ) { + elem.style[ name ] = old[ name ]; + } + + return ret; +}; + + +var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" ); + + + +( function() { + + // Executing both pixelPosition & boxSizingReliable tests require only one layout + // so they're executed at the same time to save the second computation. + function computeStyleTests() { + + // This is a singleton, we need to execute it only once + if ( !div ) { + return; + } + + container.style.cssText = "position:absolute;left:-11111px;width:60px;" + + "margin-top:1px;padding:0;border:0"; + div.style.cssText = + "position:relative;display:block;box-sizing:border-box;overflow:scroll;" + + "margin:auto;border:1px;padding:1px;" + + "width:60%;top:1%"; + documentElement.appendChild( container ).appendChild( div ); + + var divStyle = window.getComputedStyle( div ); + pixelPositionVal = divStyle.top !== "1%"; + + // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44 + reliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12; + + // Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3 + // Some styles come back with percentage values, even though they shouldn't + div.style.right = "60%"; + pixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36; + + // Support: IE 9 - 11 only + // Detect misreporting of content dimensions for box-sizing:border-box elements + boxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36; + + // Support: IE 9 only + // Detect overflow:scroll screwiness (gh-3699) + // Support: Chrome <=64 + // Don't get tricked when zoom affects offsetWidth (gh-4029) + div.style.position = "absolute"; + scrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12; + + documentElement.removeChild( container ); + + // Nullify the div so it wouldn't be stored in the memory and + // it will also be a sign that checks already performed + div = null; + } + + function roundPixelMeasures( measure ) { + return Math.round( parseFloat( measure ) ); + } + + var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal, + reliableTrDimensionsVal, reliableMarginLeftVal, + container = document.createElement( "div" ), + div = document.createElement( "div" ); + + // Finish early in limited (non-browser) environments + if ( !div.style ) { + return; + } + + // Support: IE <=9 - 11 only + // Style of cloned element affects source element cloned (#8908) + div.style.backgroundClip = "content-box"; + div.cloneNode( true ).style.backgroundClip = ""; + support.clearCloneStyle = div.style.backgroundClip === "content-box"; + + jQuery.extend( support, { + boxSizingReliable: function() { + computeStyleTests(); + return boxSizingReliableVal; + }, + pixelBoxStyles: function() { + computeStyleTests(); + return pixelBoxStylesVal; + }, + pixelPosition: function() { + computeStyleTests(); + return pixelPositionVal; + }, + reliableMarginLeft: function() { + computeStyleTests(); + return reliableMarginLeftVal; + }, + scrollboxSize: function() { + computeStyleTests(); + return scrollboxSizeVal; + }, + + // Support: IE 9 - 11+, Edge 15 - 18+ + // IE/Edge misreport `getComputedStyle` of table rows with width/height + // set in CSS while `offset*` properties report correct values. + // Behavior in IE 9 is more subtle than in newer versions & it passes + // some versions of this test; make sure not to make it pass there! + reliableTrDimensions: function() { + var table, tr, trChild, trStyle; + if ( reliableTrDimensionsVal == null ) { + table = document.createElement( "table" ); + tr = document.createElement( "tr" ); + trChild = document.createElement( "div" ); + + table.style.cssText = "position:absolute;left:-11111px"; + tr.style.height = "1px"; + trChild.style.height = "9px"; + + documentElement + .appendChild( table ) + .appendChild( tr ) + .appendChild( trChild ); + + trStyle = window.getComputedStyle( tr ); + reliableTrDimensionsVal = parseInt( trStyle.height ) > 3; + + documentElement.removeChild( table ); + } + return reliableTrDimensionsVal; + } + } ); +} )(); + + +function curCSS( elem, name, computed ) { + var width, minWidth, maxWidth, ret, + + // Support: Firefox 51+ + // Retrieving style before computed somehow + // fixes an issue with getting wrong values + // on detached elements + style = elem.style; + + computed = computed || getStyles( elem ); + + // getPropertyValue is needed for: + // .css('filter') (IE 9 only, #12537) + // .css('--customProperty) (#3144) + if ( computed ) { + ret = computed.getPropertyValue( name ) || computed[ name ]; + + if ( ret === "" && !isAttached( elem ) ) { + ret = jQuery.style( elem, name ); + } + + // A tribute to the "awesome hack by Dean Edwards" + // Android Browser returns percentage for some values, + // but width seems to be reliably pixels. + // This is against the CSSOM draft spec: + // https://drafts.csswg.org/cssom/#resolved-values + if ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) { + + // Remember the original values + width = style.width; + minWidth = style.minWidth; + maxWidth = style.maxWidth; + + // Put in the new values to get a computed value out + style.minWidth = style.maxWidth = style.width = ret; + ret = computed.width; + + // Revert the changed values + style.width = width; + style.minWidth = minWidth; + style.maxWidth = maxWidth; + } + } + + return ret !== undefined ? + + // Support: IE <=9 - 11 only + // IE returns zIndex value as an integer. + ret + "" : + ret; +} + + +function addGetHookIf( conditionFn, hookFn ) { + + // Define the hook, we'll check on the first run if it's really needed. + return { + get: function() { + if ( conditionFn() ) { + + // Hook not needed (or it's not possible to use it due + // to missing dependency), remove it. + delete this.get; + return; + } + + // Hook needed; redefine it so that the support test is not executed again. + return ( this.get = hookFn ).apply( this, arguments ); + } + }; +} + + +var cssPrefixes = [ "Webkit", "Moz", "ms" ], + emptyStyle = document.createElement( "div" ).style, + vendorProps = {}; + +// Return a vendor-prefixed property or undefined +function vendorPropName( name ) { + + // Check for vendor prefixed names + var capName = name[ 0 ].toUpperCase() + name.slice( 1 ), + i = cssPrefixes.length; + + while ( i-- ) { + name = cssPrefixes[ i ] + capName; + if ( name in emptyStyle ) { + return name; + } + } +} + +// Return a potentially-mapped jQuery.cssProps or vendor prefixed property +function finalPropName( name ) { + var final = jQuery.cssProps[ name ] || vendorProps[ name ]; + + if ( final ) { + return final; + } + if ( name in emptyStyle ) { + return name; + } + return vendorProps[ name ] = vendorPropName( name ) || name; +} + + +var + + // Swappable if display is none or starts with table + // except "table", "table-cell", or "table-caption" + // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display + rdisplayswap = /^(none|table(?!-c[ea]).+)/, + rcustomProp = /^--/, + cssShow = { position: "absolute", visibility: "hidden", display: "block" }, + cssNormalTransform = { + letterSpacing: "0", + fontWeight: "400" + }; + +function setPositiveNumber( _elem, value, subtract ) { + + // Any relative (+/-) values have already been + // normalized at this point + var matches = rcssNum.exec( value ); + return matches ? + + // Guard against undefined "subtract", e.g., when used as in cssHooks + Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) : + value; +} + +function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) { + var i = dimension === "width" ? 1 : 0, + extra = 0, + delta = 0; + + // Adjustment may not be necessary + if ( box === ( isBorderBox ? "border" : "content" ) ) { + return 0; + } + + for ( ; i < 4; i += 2 ) { + + // Both box models exclude margin + if ( box === "margin" ) { + delta += jQuery.css( elem, box + cssExpand[ i ], true, styles ); + } + + // If we get here with a content-box, we're seeking "padding" or "border" or "margin" + if ( !isBorderBox ) { + + // Add padding + delta += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + + // For "border" or "margin", add border + if ( box !== "padding" ) { + delta += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + + // But still keep track of it otherwise + } else { + extra += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + + // If we get here with a border-box (content + padding + border), we're seeking "content" or + // "padding" or "margin" + } else { + + // For "content", subtract padding + if ( box === "content" ) { + delta -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + } + + // For "content" or "padding", subtract border + if ( box !== "margin" ) { + delta -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + } + } + + // Account for positive content-box scroll gutter when requested by providing computedVal + if ( !isBorderBox && computedVal >= 0 ) { + + // offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border + // Assuming integer scroll gutter, subtract the rest and round down + delta += Math.max( 0, Math.ceil( + elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - + computedVal - + delta - + extra - + 0.5 + + // If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter + // Use an explicit zero to avoid NaN (gh-3964) + ) ) || 0; + } + + return delta; +} + +function getWidthOrHeight( elem, dimension, extra ) { + + // Start with computed style + var styles = getStyles( elem ), + + // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322). + // Fake content-box until we know it's needed to know the true value. + boxSizingNeeded = !support.boxSizingReliable() || extra, + isBorderBox = boxSizingNeeded && + jQuery.css( elem, "boxSizing", false, styles ) === "border-box", + valueIsBorderBox = isBorderBox, + + val = curCSS( elem, dimension, styles ), + offsetProp = "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ); + + // Support: Firefox <=54 + // Return a confounding non-pixel value or feign ignorance, as appropriate. + if ( rnumnonpx.test( val ) ) { + if ( !extra ) { + return val; + } + val = "auto"; + } + + + // Support: IE 9 - 11 only + // Use offsetWidth/offsetHeight for when box sizing is unreliable. + // In those cases, the computed value can be trusted to be border-box. + if ( ( !support.boxSizingReliable() && isBorderBox || + + // Support: IE 10 - 11+, Edge 15 - 18+ + // IE/Edge misreport `getComputedStyle` of table rows with width/height + // set in CSS while `offset*` properties report correct values. + // Interestingly, in some cases IE 9 doesn't suffer from this issue. + !support.reliableTrDimensions() && nodeName( elem, "tr" ) || + + // Fall back to offsetWidth/offsetHeight when value is "auto" + // This happens for inline elements with no explicit setting (gh-3571) + val === "auto" || + + // Support: Android <=4.1 - 4.3 only + // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602) + !parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) && + + // Make sure the element is visible & connected + elem.getClientRects().length ) { + + isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; + + // Where available, offsetWidth/offsetHeight approximate border box dimensions. + // Where not available (e.g., SVG), assume unreliable box-sizing and interpret the + // retrieved value as a content box dimension. + valueIsBorderBox = offsetProp in elem; + if ( valueIsBorderBox ) { + val = elem[ offsetProp ]; + } + } + + // Normalize "" and auto + val = parseFloat( val ) || 0; + + // Adjust for the element's box model + return ( val + + boxModelAdjustment( + elem, + dimension, + extra || ( isBorderBox ? "border" : "content" ), + valueIsBorderBox, + styles, + + // Provide the current computed size to request scroll gutter calculation (gh-3589) + val + ) + ) + "px"; +} + +jQuery.extend( { + + // Add in style property hooks for overriding the default + // behavior of getting and setting a style property + cssHooks: { + opacity: { + get: function( elem, computed ) { + if ( computed ) { + + // We should always get a number back from opacity + var ret = curCSS( elem, "opacity" ); + return ret === "" ? "1" : ret; + } + } + } + }, + + // Don't automatically add "px" to these possibly-unitless properties + cssNumber: { + "animationIterationCount": true, + "columnCount": true, + "fillOpacity": true, + "flexGrow": true, + "flexShrink": true, + "fontWeight": true, + "gridArea": true, + "gridColumn": true, + "gridColumnEnd": true, + "gridColumnStart": true, + "gridRow": true, + "gridRowEnd": true, + "gridRowStart": true, + "lineHeight": true, + "opacity": true, + "order": true, + "orphans": true, + "widows": true, + "zIndex": true, + "zoom": true + }, + + // Add in properties whose names you wish to fix before + // setting or getting the value + cssProps: {}, + + // Get and set the style property on a DOM Node + style: function( elem, name, value, extra ) { + + // Don't set styles on text and comment nodes + if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { + return; + } + + // Make sure that we're working with the right name + var ret, type, hooks, + origName = camelCase( name ), + isCustomProp = rcustomProp.test( name ), + style = elem.style; + + // Make sure that we're working with the right name. We don't + // want to query the value if it is a CSS custom property + // since they are user-defined. + if ( !isCustomProp ) { + name = finalPropName( origName ); + } + + // Gets hook for the prefixed version, then unprefixed version + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // Check if we're setting a value + if ( value !== undefined ) { + type = typeof value; + + // Convert "+=" or "-=" to relative numbers (#7345) + if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) { + value = adjustCSS( elem, name, ret ); + + // Fixes bug #9237 + type = "number"; + } + + // Make sure that null and NaN values aren't set (#7116) + if ( value == null || value !== value ) { + return; + } + + // If a number was passed in, add the unit (except for certain CSS properties) + // The isCustomProp check can be removed in jQuery 4.0 when we only auto-append + // "px" to a few hardcoded values. + if ( type === "number" && !isCustomProp ) { + value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" ); + } + + // background-* props affect original clone's values + if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) { + style[ name ] = "inherit"; + } + + // If a hook was provided, use that value, otherwise just set the specified value + if ( !hooks || !( "set" in hooks ) || + ( value = hooks.set( elem, value, extra ) ) !== undefined ) { + + if ( isCustomProp ) { + style.setProperty( name, value ); + } else { + style[ name ] = value; + } + } + + } else { + + // If a hook was provided get the non-computed value from there + if ( hooks && "get" in hooks && + ( ret = hooks.get( elem, false, extra ) ) !== undefined ) { + + return ret; + } + + // Otherwise just get the value from the style object + return style[ name ]; + } + }, + + css: function( elem, name, extra, styles ) { + var val, num, hooks, + origName = camelCase( name ), + isCustomProp = rcustomProp.test( name ); + + // Make sure that we're working with the right name. We don't + // want to modify the value if it is a CSS custom property + // since they are user-defined. + if ( !isCustomProp ) { + name = finalPropName( origName ); + } + + // Try prefixed name followed by the unprefixed name + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // If a hook was provided get the computed value from there + if ( hooks && "get" in hooks ) { + val = hooks.get( elem, true, extra ); + } + + // Otherwise, if a way to get the computed value exists, use that + if ( val === undefined ) { + val = curCSS( elem, name, styles ); + } + + // Convert "normal" to computed value + if ( val === "normal" && name in cssNormalTransform ) { + val = cssNormalTransform[ name ]; + } + + // Make numeric if forced or a qualifier was provided and val looks numeric + if ( extra === "" || extra ) { + num = parseFloat( val ); + return extra === true || isFinite( num ) ? num || 0 : val; + } + + return val; + } +} ); + +jQuery.each( [ "height", "width" ], function( _i, dimension ) { + jQuery.cssHooks[ dimension ] = { + get: function( elem, computed, extra ) { + if ( computed ) { + + // Certain elements can have dimension info if we invisibly show them + // but it must have a current display style that would benefit + return rdisplayswap.test( jQuery.css( elem, "display" ) ) && + + // Support: Safari 8+ + // Table columns in Safari have non-zero offsetWidth & zero + // getBoundingClientRect().width unless display is changed. + // Support: IE <=11 only + // Running getBoundingClientRect on a disconnected node + // in IE throws an error. + ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ? + swap( elem, cssShow, function() { + return getWidthOrHeight( elem, dimension, extra ); + } ) : + getWidthOrHeight( elem, dimension, extra ); + } + }, + + set: function( elem, value, extra ) { + var matches, + styles = getStyles( elem ), + + // Only read styles.position if the test has a chance to fail + // to avoid forcing a reflow. + scrollboxSizeBuggy = !support.scrollboxSize() && + styles.position === "absolute", + + // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991) + boxSizingNeeded = scrollboxSizeBuggy || extra, + isBorderBox = boxSizingNeeded && + jQuery.css( elem, "boxSizing", false, styles ) === "border-box", + subtract = extra ? + boxModelAdjustment( + elem, + dimension, + extra, + isBorderBox, + styles + ) : + 0; + + // Account for unreliable border-box dimensions by comparing offset* to computed and + // faking a content-box to get border and padding (gh-3699) + if ( isBorderBox && scrollboxSizeBuggy ) { + subtract -= Math.ceil( + elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - + parseFloat( styles[ dimension ] ) - + boxModelAdjustment( elem, dimension, "border", false, styles ) - + 0.5 + ); + } + + // Convert to pixels if value adjustment is needed + if ( subtract && ( matches = rcssNum.exec( value ) ) && + ( matches[ 3 ] || "px" ) !== "px" ) { + + elem.style[ dimension ] = value; + value = jQuery.css( elem, dimension ); + } + + return setPositiveNumber( elem, value, subtract ); + } + }; +} ); + +jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft, + function( elem, computed ) { + if ( computed ) { + return ( parseFloat( curCSS( elem, "marginLeft" ) ) || + elem.getBoundingClientRect().left - + swap( elem, { marginLeft: 0 }, function() { + return elem.getBoundingClientRect().left; + } ) + ) + "px"; + } + } +); + +// These hooks are used by animate to expand properties +jQuery.each( { + margin: "", + padding: "", + border: "Width" +}, function( prefix, suffix ) { + jQuery.cssHooks[ prefix + suffix ] = { + expand: function( value ) { + var i = 0, + expanded = {}, + + // Assumes a single number if not a string + parts = typeof value === "string" ? value.split( " " ) : [ value ]; + + for ( ; i < 4; i++ ) { + expanded[ prefix + cssExpand[ i ] + suffix ] = + parts[ i ] || parts[ i - 2 ] || parts[ 0 ]; + } + + return expanded; + } + }; + + if ( prefix !== "margin" ) { + jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; + } +} ); + +jQuery.fn.extend( { + css: function( name, value ) { + return access( this, function( elem, name, value ) { + var styles, len, + map = {}, + i = 0; + + if ( Array.isArray( name ) ) { + styles = getStyles( elem ); + len = name.length; + + for ( ; i < len; i++ ) { + map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); + } + + return map; + } + + return value !== undefined ? + jQuery.style( elem, name, value ) : + jQuery.css( elem, name ); + }, name, value, arguments.length > 1 ); + } +} ); + + +function Tween( elem, options, prop, end, easing ) { + return new Tween.prototype.init( elem, options, prop, end, easing ); +} +jQuery.Tween = Tween; + +Tween.prototype = { + constructor: Tween, + init: function( elem, options, prop, end, easing, unit ) { + this.elem = elem; + this.prop = prop; + this.easing = easing || jQuery.easing._default; + this.options = options; + this.start = this.now = this.cur(); + this.end = end; + this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); + }, + cur: function() { + var hooks = Tween.propHooks[ this.prop ]; + + return hooks && hooks.get ? + hooks.get( this ) : + Tween.propHooks._default.get( this ); + }, + run: function( percent ) { + var eased, + hooks = Tween.propHooks[ this.prop ]; + + if ( this.options.duration ) { + this.pos = eased = jQuery.easing[ this.easing ]( + percent, this.options.duration * percent, 0, 1, this.options.duration + ); + } else { + this.pos = eased = percent; + } + this.now = ( this.end - this.start ) * eased + this.start; + + if ( this.options.step ) { + this.options.step.call( this.elem, this.now, this ); + } + + if ( hooks && hooks.set ) { + hooks.set( this ); + } else { + Tween.propHooks._default.set( this ); + } + return this; + } +}; + +Tween.prototype.init.prototype = Tween.prototype; + +Tween.propHooks = { + _default: { + get: function( tween ) { + var result; + + // Use a property on the element directly when it is not a DOM element, + // or when there is no matching style property that exists. + if ( tween.elem.nodeType !== 1 || + tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) { + return tween.elem[ tween.prop ]; + } + + // Passing an empty string as a 3rd parameter to .css will automatically + // attempt a parseFloat and fallback to a string if the parse fails. + // Simple values such as "10px" are parsed to Float; + // complex values such as "rotate(1rad)" are returned as-is. + result = jQuery.css( tween.elem, tween.prop, "" ); + + // Empty strings, null, undefined and "auto" are converted to 0. + return !result || result === "auto" ? 0 : result; + }, + set: function( tween ) { + + // Use step hook for back compat. + // Use cssHook if its there. + // Use .style if available and use plain properties where available. + if ( jQuery.fx.step[ tween.prop ] ) { + jQuery.fx.step[ tween.prop ]( tween ); + } else if ( tween.elem.nodeType === 1 && ( + jQuery.cssHooks[ tween.prop ] || + tween.elem.style[ finalPropName( tween.prop ) ] != null ) ) { + jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); + } else { + tween.elem[ tween.prop ] = tween.now; + } + } + } +}; + +// Support: IE <=9 only +// Panic based approach to setting things on disconnected nodes +Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { + set: function( tween ) { + if ( tween.elem.nodeType && tween.elem.parentNode ) { + tween.elem[ tween.prop ] = tween.now; + } + } +}; + +jQuery.easing = { + linear: function( p ) { + return p; + }, + swing: function( p ) { + return 0.5 - Math.cos( p * Math.PI ) / 2; + }, + _default: "swing" +}; + +jQuery.fx = Tween.prototype.init; + +// Back compat <1.8 extension point +jQuery.fx.step = {}; + + + + +var + fxNow, inProgress, + rfxtypes = /^(?:toggle|show|hide)$/, + rrun = /queueHooks$/; + +function schedule() { + if ( inProgress ) { + if ( document.hidden === false && window.requestAnimationFrame ) { + window.requestAnimationFrame( schedule ); + } else { + window.setTimeout( schedule, jQuery.fx.interval ); + } + + jQuery.fx.tick(); + } +} + +// Animations created synchronously will run synchronously +function createFxNow() { + window.setTimeout( function() { + fxNow = undefined; + } ); + return ( fxNow = Date.now() ); +} + +// Generate parameters to create a standard animation +function genFx( type, includeWidth ) { + var which, + i = 0, + attrs = { height: type }; + + // If we include width, step value is 1 to do all cssExpand values, + // otherwise step value is 2 to skip over Left and Right + includeWidth = includeWidth ? 1 : 0; + for ( ; i < 4; i += 2 - includeWidth ) { + which = cssExpand[ i ]; + attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; + } + + if ( includeWidth ) { + attrs.opacity = attrs.width = type; + } + + return attrs; +} + +function createTween( value, prop, animation ) { + var tween, + collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ), + index = 0, + length = collection.length; + for ( ; index < length; index++ ) { + if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) { + + // We're done with this property + return tween; + } + } +} + +function defaultPrefilter( elem, props, opts ) { + var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display, + isBox = "width" in props || "height" in props, + anim = this, + orig = {}, + style = elem.style, + hidden = elem.nodeType && isHiddenWithinTree( elem ), + dataShow = dataPriv.get( elem, "fxshow" ); + + // Queue-skipping animations hijack the fx hooks + if ( !opts.queue ) { + hooks = jQuery._queueHooks( elem, "fx" ); + if ( hooks.unqueued == null ) { + hooks.unqueued = 0; + oldfire = hooks.empty.fire; + hooks.empty.fire = function() { + if ( !hooks.unqueued ) { + oldfire(); + } + }; + } + hooks.unqueued++; + + anim.always( function() { + + // Ensure the complete handler is called before this completes + anim.always( function() { + hooks.unqueued--; + if ( !jQuery.queue( elem, "fx" ).length ) { + hooks.empty.fire(); + } + } ); + } ); + } + + // Detect show/hide animations + for ( prop in props ) { + value = props[ prop ]; + if ( rfxtypes.test( value ) ) { + delete props[ prop ]; + toggle = toggle || value === "toggle"; + if ( value === ( hidden ? "hide" : "show" ) ) { + + // Pretend to be hidden if this is a "show" and + // there is still data from a stopped show/hide + if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) { + hidden = true; + + // Ignore all other no-op show/hide data + } else { + continue; + } + } + orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop ); + } + } + + // Bail out if this is a no-op like .hide().hide() + propTween = !jQuery.isEmptyObject( props ); + if ( !propTween && jQuery.isEmptyObject( orig ) ) { + return; + } + + // Restrict "overflow" and "display" styles during box animations + if ( isBox && elem.nodeType === 1 ) { + + // Support: IE <=9 - 11, Edge 12 - 15 + // Record all 3 overflow attributes because IE does not infer the shorthand + // from identically-valued overflowX and overflowY and Edge just mirrors + // the overflowX value there. + opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; + + // Identify a display type, preferring old show/hide data over the CSS cascade + restoreDisplay = dataShow && dataShow.display; + if ( restoreDisplay == null ) { + restoreDisplay = dataPriv.get( elem, "display" ); + } + display = jQuery.css( elem, "display" ); + if ( display === "none" ) { + if ( restoreDisplay ) { + display = restoreDisplay; + } else { + + // Get nonempty value(s) by temporarily forcing visibility + showHide( [ elem ], true ); + restoreDisplay = elem.style.display || restoreDisplay; + display = jQuery.css( elem, "display" ); + showHide( [ elem ] ); + } + } + + // Animate inline elements as inline-block + if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) { + if ( jQuery.css( elem, "float" ) === "none" ) { + + // Restore the original display value at the end of pure show/hide animations + if ( !propTween ) { + anim.done( function() { + style.display = restoreDisplay; + } ); + if ( restoreDisplay == null ) { + display = style.display; + restoreDisplay = display === "none" ? "" : display; + } + } + style.display = "inline-block"; + } + } + } + + if ( opts.overflow ) { + style.overflow = "hidden"; + anim.always( function() { + style.overflow = opts.overflow[ 0 ]; + style.overflowX = opts.overflow[ 1 ]; + style.overflowY = opts.overflow[ 2 ]; + } ); + } + + // Implement show/hide animations + propTween = false; + for ( prop in orig ) { + + // General show/hide setup for this element animation + if ( !propTween ) { + if ( dataShow ) { + if ( "hidden" in dataShow ) { + hidden = dataShow.hidden; + } + } else { + dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } ); + } + + // Store hidden/visible for toggle so `.stop().toggle()` "reverses" + if ( toggle ) { + dataShow.hidden = !hidden; + } + + // Show elements before animating them + if ( hidden ) { + showHide( [ elem ], true ); + } + + /* eslint-disable no-loop-func */ + + anim.done( function() { + + /* eslint-enable no-loop-func */ + + // The final step of a "hide" animation is actually hiding the element + if ( !hidden ) { + showHide( [ elem ] ); + } + dataPriv.remove( elem, "fxshow" ); + for ( prop in orig ) { + jQuery.style( elem, prop, orig[ prop ] ); + } + } ); + } + + // Per-property setup + propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim ); + if ( !( prop in dataShow ) ) { + dataShow[ prop ] = propTween.start; + if ( hidden ) { + propTween.end = propTween.start; + propTween.start = 0; + } + } + } +} + +function propFilter( props, specialEasing ) { + var index, name, easing, value, hooks; + + // camelCase, specialEasing and expand cssHook pass + for ( index in props ) { + name = camelCase( index ); + easing = specialEasing[ name ]; + value = props[ index ]; + if ( Array.isArray( value ) ) { + easing = value[ 1 ]; + value = props[ index ] = value[ 0 ]; + } + + if ( index !== name ) { + props[ name ] = value; + delete props[ index ]; + } + + hooks = jQuery.cssHooks[ name ]; + if ( hooks && "expand" in hooks ) { + value = hooks.expand( value ); + delete props[ name ]; + + // Not quite $.extend, this won't overwrite existing keys. + // Reusing 'index' because we have the correct "name" + for ( index in value ) { + if ( !( index in props ) ) { + props[ index ] = value[ index ]; + specialEasing[ index ] = easing; + } + } + } else { + specialEasing[ name ] = easing; + } + } +} + +function Animation( elem, properties, options ) { + var result, + stopped, + index = 0, + length = Animation.prefilters.length, + deferred = jQuery.Deferred().always( function() { + + // Don't match elem in the :animated selector + delete tick.elem; + } ), + tick = function() { + if ( stopped ) { + return false; + } + var currentTime = fxNow || createFxNow(), + remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), + + // Support: Android 2.3 only + // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497) + temp = remaining / animation.duration || 0, + percent = 1 - temp, + index = 0, + length = animation.tweens.length; + + for ( ; index < length; index++ ) { + animation.tweens[ index ].run( percent ); + } + + deferred.notifyWith( elem, [ animation, percent, remaining ] ); + + // If there's more to do, yield + if ( percent < 1 && length ) { + return remaining; + } + + // If this was an empty animation, synthesize a final progress notification + if ( !length ) { + deferred.notifyWith( elem, [ animation, 1, 0 ] ); + } + + // Resolve the animation and report its conclusion + deferred.resolveWith( elem, [ animation ] ); + return false; + }, + animation = deferred.promise( { + elem: elem, + props: jQuery.extend( {}, properties ), + opts: jQuery.extend( true, { + specialEasing: {}, + easing: jQuery.easing._default + }, options ), + originalProperties: properties, + originalOptions: options, + startTime: fxNow || createFxNow(), + duration: options.duration, + tweens: [], + createTween: function( prop, end ) { + var tween = jQuery.Tween( elem, animation.opts, prop, end, + animation.opts.specialEasing[ prop ] || animation.opts.easing ); + animation.tweens.push( tween ); + return tween; + }, + stop: function( gotoEnd ) { + var index = 0, + + // If we are going to the end, we want to run all the tweens + // otherwise we skip this part + length = gotoEnd ? animation.tweens.length : 0; + if ( stopped ) { + return this; + } + stopped = true; + for ( ; index < length; index++ ) { + animation.tweens[ index ].run( 1 ); + } + + // Resolve when we played the last frame; otherwise, reject + if ( gotoEnd ) { + deferred.notifyWith( elem, [ animation, 1, 0 ] ); + deferred.resolveWith( elem, [ animation, gotoEnd ] ); + } else { + deferred.rejectWith( elem, [ animation, gotoEnd ] ); + } + return this; + } + } ), + props = animation.props; + + propFilter( props, animation.opts.specialEasing ); + + for ( ; index < length; index++ ) { + result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts ); + if ( result ) { + if ( isFunction( result.stop ) ) { + jQuery._queueHooks( animation.elem, animation.opts.queue ).stop = + result.stop.bind( result ); + } + return result; + } + } + + jQuery.map( props, createTween, animation ); + + if ( isFunction( animation.opts.start ) ) { + animation.opts.start.call( elem, animation ); + } + + // Attach callbacks from options + animation + .progress( animation.opts.progress ) + .done( animation.opts.done, animation.opts.complete ) + .fail( animation.opts.fail ) + .always( animation.opts.always ); + + jQuery.fx.timer( + jQuery.extend( tick, { + elem: elem, + anim: animation, + queue: animation.opts.queue + } ) + ); + + return animation; +} + +jQuery.Animation = jQuery.extend( Animation, { + + tweeners: { + "*": [ function( prop, value ) { + var tween = this.createTween( prop, value ); + adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween ); + return tween; + } ] + }, + + tweener: function( props, callback ) { + if ( isFunction( props ) ) { + callback = props; + props = [ "*" ]; + } else { + props = props.match( rnothtmlwhite ); + } + + var prop, + index = 0, + length = props.length; + + for ( ; index < length; index++ ) { + prop = props[ index ]; + Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || []; + Animation.tweeners[ prop ].unshift( callback ); + } + }, + + prefilters: [ defaultPrefilter ], + + prefilter: function( callback, prepend ) { + if ( prepend ) { + Animation.prefilters.unshift( callback ); + } else { + Animation.prefilters.push( callback ); + } + } +} ); + +jQuery.speed = function( speed, easing, fn ) { + var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { + complete: fn || !fn && easing || + isFunction( speed ) && speed, + duration: speed, + easing: fn && easing || easing && !isFunction( easing ) && easing + }; + + // Go to the end state if fx are off + if ( jQuery.fx.off ) { + opt.duration = 0; + + } else { + if ( typeof opt.duration !== "number" ) { + if ( opt.duration in jQuery.fx.speeds ) { + opt.duration = jQuery.fx.speeds[ opt.duration ]; + + } else { + opt.duration = jQuery.fx.speeds._default; + } + } + } + + // Normalize opt.queue - true/undefined/null -> "fx" + if ( opt.queue == null || opt.queue === true ) { + opt.queue = "fx"; + } + + // Queueing + opt.old = opt.complete; + + opt.complete = function() { + if ( isFunction( opt.old ) ) { + opt.old.call( this ); + } + + if ( opt.queue ) { + jQuery.dequeue( this, opt.queue ); + } + }; + + return opt; +}; + +jQuery.fn.extend( { + fadeTo: function( speed, to, easing, callback ) { + + // Show any hidden elements after setting opacity to 0 + return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show() + + // Animate to the value specified + .end().animate( { opacity: to }, speed, easing, callback ); + }, + animate: function( prop, speed, easing, callback ) { + var empty = jQuery.isEmptyObject( prop ), + optall = jQuery.speed( speed, easing, callback ), + doAnimation = function() { + + // Operate on a copy of prop so per-property easing won't be lost + var anim = Animation( this, jQuery.extend( {}, prop ), optall ); + + // Empty animations, or finishing resolves immediately + if ( empty || dataPriv.get( this, "finish" ) ) { + anim.stop( true ); + } + }; + doAnimation.finish = doAnimation; + + return empty || optall.queue === false ? + this.each( doAnimation ) : + this.queue( optall.queue, doAnimation ); + }, + stop: function( type, clearQueue, gotoEnd ) { + var stopQueue = function( hooks ) { + var stop = hooks.stop; + delete hooks.stop; + stop( gotoEnd ); + }; + + if ( typeof type !== "string" ) { + gotoEnd = clearQueue; + clearQueue = type; + type = undefined; + } + if ( clearQueue ) { + this.queue( type || "fx", [] ); + } + + return this.each( function() { + var dequeue = true, + index = type != null && type + "queueHooks", + timers = jQuery.timers, + data = dataPriv.get( this ); + + if ( index ) { + if ( data[ index ] && data[ index ].stop ) { + stopQueue( data[ index ] ); + } + } else { + for ( index in data ) { + if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) { + stopQueue( data[ index ] ); + } + } + } + + for ( index = timers.length; index--; ) { + if ( timers[ index ].elem === this && + ( type == null || timers[ index ].queue === type ) ) { + + timers[ index ].anim.stop( gotoEnd ); + dequeue = false; + timers.splice( index, 1 ); + } + } + + // Start the next in the queue if the last step wasn't forced. + // Timers currently will call their complete callbacks, which + // will dequeue but only if they were gotoEnd. + if ( dequeue || !gotoEnd ) { + jQuery.dequeue( this, type ); + } + } ); + }, + finish: function( type ) { + if ( type !== false ) { + type = type || "fx"; + } + return this.each( function() { + var index, + data = dataPriv.get( this ), + queue = data[ type + "queue" ], + hooks = data[ type + "queueHooks" ], + timers = jQuery.timers, + length = queue ? queue.length : 0; + + // Enable finishing flag on private data + data.finish = true; + + // Empty the queue first + jQuery.queue( this, type, [] ); + + if ( hooks && hooks.stop ) { + hooks.stop.call( this, true ); + } + + // Look for any active animations, and finish them + for ( index = timers.length; index--; ) { + if ( timers[ index ].elem === this && timers[ index ].queue === type ) { + timers[ index ].anim.stop( true ); + timers.splice( index, 1 ); + } + } + + // Look for any animations in the old queue and finish them + for ( index = 0; index < length; index++ ) { + if ( queue[ index ] && queue[ index ].finish ) { + queue[ index ].finish.call( this ); + } + } + + // Turn off finishing flag + delete data.finish; + } ); + } +} ); + +jQuery.each( [ "toggle", "show", "hide" ], function( _i, name ) { + var cssFn = jQuery.fn[ name ]; + jQuery.fn[ name ] = function( speed, easing, callback ) { + return speed == null || typeof speed === "boolean" ? + cssFn.apply( this, arguments ) : + this.animate( genFx( name, true ), speed, easing, callback ); + }; +} ); + +// Generate shortcuts for custom animations +jQuery.each( { + slideDown: genFx( "show" ), + slideUp: genFx( "hide" ), + slideToggle: genFx( "toggle" ), + fadeIn: { opacity: "show" }, + fadeOut: { opacity: "hide" }, + fadeToggle: { opacity: "toggle" } +}, function( name, props ) { + jQuery.fn[ name ] = function( speed, easing, callback ) { + return this.animate( props, speed, easing, callback ); + }; +} ); + +jQuery.timers = []; +jQuery.fx.tick = function() { + var timer, + i = 0, + timers = jQuery.timers; + + fxNow = Date.now(); + + for ( ; i < timers.length; i++ ) { + timer = timers[ i ]; + + // Run the timer and safely remove it when done (allowing for external removal) + if ( !timer() && timers[ i ] === timer ) { + timers.splice( i--, 1 ); + } + } + + if ( !timers.length ) { + jQuery.fx.stop(); + } + fxNow = undefined; +}; + +jQuery.fx.timer = function( timer ) { + jQuery.timers.push( timer ); + jQuery.fx.start(); +}; + +jQuery.fx.interval = 13; +jQuery.fx.start = function() { + if ( inProgress ) { + return; + } + + inProgress = true; + schedule(); +}; + +jQuery.fx.stop = function() { + inProgress = null; +}; + +jQuery.fx.speeds = { + slow: 600, + fast: 200, + + // Default speed + _default: 400 +}; + + +// Based off of the plugin by Clint Helfers, with permission. +// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/ +jQuery.fn.delay = function( time, type ) { + time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; + type = type || "fx"; + + return this.queue( type, function( next, hooks ) { + var timeout = window.setTimeout( next, time ); + hooks.stop = function() { + window.clearTimeout( timeout ); + }; + } ); +}; + + +( function() { + var input = document.createElement( "input" ), + select = document.createElement( "select" ), + opt = select.appendChild( document.createElement( "option" ) ); + + input.type = "checkbox"; + + // Support: Android <=4.3 only + // Default value for a checkbox should be "on" + support.checkOn = input.value !== ""; + + // Support: IE <=11 only + // Must access selectedIndex to make default options select + support.optSelected = opt.selected; + + // Support: IE <=11 only + // An input loses its value after becoming a radio + input = document.createElement( "input" ); + input.value = "t"; + input.type = "radio"; + support.radioValue = input.value === "t"; +} )(); + + +var boolHook, + attrHandle = jQuery.expr.attrHandle; + +jQuery.fn.extend( { + attr: function( name, value ) { + return access( this, jQuery.attr, name, value, arguments.length > 1 ); + }, + + removeAttr: function( name ) { + return this.each( function() { + jQuery.removeAttr( this, name ); + } ); + } +} ); + +jQuery.extend( { + attr: function( elem, name, value ) { + var ret, hooks, + nType = elem.nodeType; + + // Don't get/set attributes on text, comment and attribute nodes + if ( nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + // Fallback to prop when attributes are not supported + if ( typeof elem.getAttribute === "undefined" ) { + return jQuery.prop( elem, name, value ); + } + + // Attribute hooks are determined by the lowercase version + // Grab necessary hook if one is defined + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + hooks = jQuery.attrHooks[ name.toLowerCase() ] || + ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined ); + } + + if ( value !== undefined ) { + if ( value === null ) { + jQuery.removeAttr( elem, name ); + return; + } + + if ( hooks && "set" in hooks && + ( ret = hooks.set( elem, value, name ) ) !== undefined ) { + return ret; + } + + elem.setAttribute( name, value + "" ); + return value; + } + + if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { + return ret; + } + + ret = jQuery.find.attr( elem, name ); + + // Non-existent attributes return null, we normalize to undefined + return ret == null ? undefined : ret; + }, + + attrHooks: { + type: { + set: function( elem, value ) { + if ( !support.radioValue && value === "radio" && + nodeName( elem, "input" ) ) { + var val = elem.value; + elem.setAttribute( "type", value ); + if ( val ) { + elem.value = val; + } + return value; + } + } + } + }, + + removeAttr: function( elem, value ) { + var name, + i = 0, + + // Attribute names can contain non-HTML whitespace characters + // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2 + attrNames = value && value.match( rnothtmlwhite ); + + if ( attrNames && elem.nodeType === 1 ) { + while ( ( name = attrNames[ i++ ] ) ) { + elem.removeAttribute( name ); + } + } + } +} ); + +// Hooks for boolean attributes +boolHook = { + set: function( elem, value, name ) { + if ( value === false ) { + + // Remove boolean attributes when set to false + jQuery.removeAttr( elem, name ); + } else { + elem.setAttribute( name, name ); + } + return name; + } +}; + +jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( _i, name ) { + var getter = attrHandle[ name ] || jQuery.find.attr; + + attrHandle[ name ] = function( elem, name, isXML ) { + var ret, handle, + lowercaseName = name.toLowerCase(); + + if ( !isXML ) { + + // Avoid an infinite loop by temporarily removing this function from the getter + handle = attrHandle[ lowercaseName ]; + attrHandle[ lowercaseName ] = ret; + ret = getter( elem, name, isXML ) != null ? + lowercaseName : + null; + attrHandle[ lowercaseName ] = handle; + } + return ret; + }; +} ); + + + + +var rfocusable = /^(?:input|select|textarea|button)$/i, + rclickable = /^(?:a|area)$/i; + +jQuery.fn.extend( { + prop: function( name, value ) { + return access( this, jQuery.prop, name, value, arguments.length > 1 ); + }, + + removeProp: function( name ) { + return this.each( function() { + delete this[ jQuery.propFix[ name ] || name ]; + } ); + } +} ); + +jQuery.extend( { + prop: function( elem, name, value ) { + var ret, hooks, + nType = elem.nodeType; + + // Don't get/set properties on text, comment and attribute nodes + if ( nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + + // Fix name and attach hooks + name = jQuery.propFix[ name ] || name; + hooks = jQuery.propHooks[ name ]; + } + + if ( value !== undefined ) { + if ( hooks && "set" in hooks && + ( ret = hooks.set( elem, value, name ) ) !== undefined ) { + return ret; + } + + return ( elem[ name ] = value ); + } + + if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { + return ret; + } + + return elem[ name ]; + }, + + propHooks: { + tabIndex: { + get: function( elem ) { + + // Support: IE <=9 - 11 only + // elem.tabIndex doesn't always return the + // correct value when it hasn't been explicitly set + // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ + // Use proper attribute retrieval(#12072) + var tabindex = jQuery.find.attr( elem, "tabindex" ); + + if ( tabindex ) { + return parseInt( tabindex, 10 ); + } + + if ( + rfocusable.test( elem.nodeName ) || + rclickable.test( elem.nodeName ) && + elem.href + ) { + return 0; + } + + return -1; + } + } + }, + + propFix: { + "for": "htmlFor", + "class": "className" + } +} ); + +// Support: IE <=11 only +// Accessing the selectedIndex property +// forces the browser to respect setting selected +// on the option +// The getter ensures a default option is selected +// when in an optgroup +// eslint rule "no-unused-expressions" is disabled for this code +// since it considers such accessions noop +if ( !support.optSelected ) { + jQuery.propHooks.selected = { + get: function( elem ) { + + /* eslint no-unused-expressions: "off" */ + + var parent = elem.parentNode; + if ( parent && parent.parentNode ) { + parent.parentNode.selectedIndex; + } + return null; + }, + set: function( elem ) { + + /* eslint no-unused-expressions: "off" */ + + var parent = elem.parentNode; + if ( parent ) { + parent.selectedIndex; + + if ( parent.parentNode ) { + parent.parentNode.selectedIndex; + } + } + } + }; +} + +jQuery.each( [ + "tabIndex", + "readOnly", + "maxLength", + "cellSpacing", + "cellPadding", + "rowSpan", + "colSpan", + "useMap", + "frameBorder", + "contentEditable" +], function() { + jQuery.propFix[ this.toLowerCase() ] = this; +} ); + + + + + // Strip and collapse whitespace according to HTML spec + // https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace + function stripAndCollapse( value ) { + var tokens = value.match( rnothtmlwhite ) || []; + return tokens.join( " " ); + } + + +function getClass( elem ) { + return elem.getAttribute && elem.getAttribute( "class" ) || ""; +} + +function classesToArray( value ) { + if ( Array.isArray( value ) ) { + return value; + } + if ( typeof value === "string" ) { + return value.match( rnothtmlwhite ) || []; + } + return []; +} + +jQuery.fn.extend( { + addClass: function( value ) { + var classes, elem, cur, curValue, clazz, j, finalValue, + i = 0; + + if ( isFunction( value ) ) { + return this.each( function( j ) { + jQuery( this ).addClass( value.call( this, j, getClass( this ) ) ); + } ); + } + + classes = classesToArray( value ); + + if ( classes.length ) { + while ( ( elem = this[ i++ ] ) ) { + curValue = getClass( elem ); + cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); + + if ( cur ) { + j = 0; + while ( ( clazz = classes[ j++ ] ) ) { + if ( cur.indexOf( " " + clazz + " " ) < 0 ) { + cur += clazz + " "; + } + } + + // Only assign if different to avoid unneeded rendering. + finalValue = stripAndCollapse( cur ); + if ( curValue !== finalValue ) { + elem.setAttribute( "class", finalValue ); + } + } + } + } + + return this; + }, + + removeClass: function( value ) { + var classes, elem, cur, curValue, clazz, j, finalValue, + i = 0; + + if ( isFunction( value ) ) { + return this.each( function( j ) { + jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) ); + } ); + } + + if ( !arguments.length ) { + return this.attr( "class", "" ); + } + + classes = classesToArray( value ); + + if ( classes.length ) { + while ( ( elem = this[ i++ ] ) ) { + curValue = getClass( elem ); + + // This expression is here for better compressibility (see addClass) + cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); + + if ( cur ) { + j = 0; + while ( ( clazz = classes[ j++ ] ) ) { + + // Remove *all* instances + while ( cur.indexOf( " " + clazz + " " ) > -1 ) { + cur = cur.replace( " " + clazz + " ", " " ); + } + } + + // Only assign if different to avoid unneeded rendering. + finalValue = stripAndCollapse( cur ); + if ( curValue !== finalValue ) { + elem.setAttribute( "class", finalValue ); + } + } + } + } + + return this; + }, + + toggleClass: function( value, stateVal ) { + var type = typeof value, + isValidValue = type === "string" || Array.isArray( value ); + + if ( typeof stateVal === "boolean" && isValidValue ) { + return stateVal ? this.addClass( value ) : this.removeClass( value ); + } + + if ( isFunction( value ) ) { + return this.each( function( i ) { + jQuery( this ).toggleClass( + value.call( this, i, getClass( this ), stateVal ), + stateVal + ); + } ); + } + + return this.each( function() { + var className, i, self, classNames; + + if ( isValidValue ) { + + // Toggle individual class names + i = 0; + self = jQuery( this ); + classNames = classesToArray( value ); + + while ( ( className = classNames[ i++ ] ) ) { + + // Check each className given, space separated list + if ( self.hasClass( className ) ) { + self.removeClass( className ); + } else { + self.addClass( className ); + } + } + + // Toggle whole class name + } else if ( value === undefined || type === "boolean" ) { + className = getClass( this ); + if ( className ) { + + // Store className if set + dataPriv.set( this, "__className__", className ); + } + + // If the element has a class name or if we're passed `false`, + // then remove the whole classname (if there was one, the above saved it). + // Otherwise bring back whatever was previously saved (if anything), + // falling back to the empty string if nothing was stored. + if ( this.setAttribute ) { + this.setAttribute( "class", + className || value === false ? + "" : + dataPriv.get( this, "__className__" ) || "" + ); + } + } + } ); + }, + + hasClass: function( selector ) { + var className, elem, + i = 0; + + className = " " + selector + " "; + while ( ( elem = this[ i++ ] ) ) { + if ( elem.nodeType === 1 && + ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) { + return true; + } + } + + return false; + } +} ); + + + + +var rreturn = /\r/g; + +jQuery.fn.extend( { + val: function( value ) { + var hooks, ret, valueIsFunction, + elem = this[ 0 ]; + + if ( !arguments.length ) { + if ( elem ) { + hooks = jQuery.valHooks[ elem.type ] || + jQuery.valHooks[ elem.nodeName.toLowerCase() ]; + + if ( hooks && + "get" in hooks && + ( ret = hooks.get( elem, "value" ) ) !== undefined + ) { + return ret; + } + + ret = elem.value; + + // Handle most common string cases + if ( typeof ret === "string" ) { + return ret.replace( rreturn, "" ); + } + + // Handle cases where value is null/undef or number + return ret == null ? "" : ret; + } + + return; + } + + valueIsFunction = isFunction( value ); + + return this.each( function( i ) { + var val; + + if ( this.nodeType !== 1 ) { + return; + } + + if ( valueIsFunction ) { + val = value.call( this, i, jQuery( this ).val() ); + } else { + val = value; + } + + // Treat null/undefined as ""; convert numbers to string + if ( val == null ) { + val = ""; + + } else if ( typeof val === "number" ) { + val += ""; + + } else if ( Array.isArray( val ) ) { + val = jQuery.map( val, function( value ) { + return value == null ? "" : value + ""; + } ); + } + + hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; + + // If set returns undefined, fall back to normal setting + if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) { + this.value = val; + } + } ); + } +} ); + +jQuery.extend( { + valHooks: { + option: { + get: function( elem ) { + + var val = jQuery.find.attr( elem, "value" ); + return val != null ? + val : + + // Support: IE <=10 - 11 only + // option.text throws exceptions (#14686, #14858) + // Strip and collapse whitespace + // https://html.spec.whatwg.org/#strip-and-collapse-whitespace + stripAndCollapse( jQuery.text( elem ) ); + } + }, + select: { + get: function( elem ) { + var value, option, i, + options = elem.options, + index = elem.selectedIndex, + one = elem.type === "select-one", + values = one ? null : [], + max = one ? index + 1 : options.length; + + if ( index < 0 ) { + i = max; + + } else { + i = one ? index : 0; + } + + // Loop through all the selected options + for ( ; i < max; i++ ) { + option = options[ i ]; + + // Support: IE <=9 only + // IE8-9 doesn't update selected after form reset (#2551) + if ( ( option.selected || i === index ) && + + // Don't return options that are disabled or in a disabled optgroup + !option.disabled && + ( !option.parentNode.disabled || + !nodeName( option.parentNode, "optgroup" ) ) ) { + + // Get the specific value for the option + value = jQuery( option ).val(); + + // We don't need an array for one selects + if ( one ) { + return value; + } + + // Multi-Selects return an array + values.push( value ); + } + } + + return values; + }, + + set: function( elem, value ) { + var optionSet, option, + options = elem.options, + values = jQuery.makeArray( value ), + i = options.length; + + while ( i-- ) { + option = options[ i ]; + + /* eslint-disable no-cond-assign */ + + if ( option.selected = + jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1 + ) { + optionSet = true; + } + + /* eslint-enable no-cond-assign */ + } + + // Force browsers to behave consistently when non-matching value is set + if ( !optionSet ) { + elem.selectedIndex = -1; + } + return values; + } + } + } +} ); + +// Radios and checkboxes getter/setter +jQuery.each( [ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = { + set: function( elem, value ) { + if ( Array.isArray( value ) ) { + return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 ); + } + } + }; + if ( !support.checkOn ) { + jQuery.valHooks[ this ].get = function( elem ) { + return elem.getAttribute( "value" ) === null ? "on" : elem.value; + }; + } +} ); + + + + +// Return jQuery for attributes-only inclusion + + +support.focusin = "onfocusin" in window; + + +var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, + stopPropagationCallback = function( e ) { + e.stopPropagation(); + }; + +jQuery.extend( jQuery.event, { + + trigger: function( event, data, elem, onlyHandlers ) { + + var i, cur, tmp, bubbleType, ontype, handle, special, lastElement, + eventPath = [ elem || document ], + type = hasOwn.call( event, "type" ) ? event.type : event, + namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : []; + + cur = lastElement = tmp = elem = elem || document; + + // Don't do events on text and comment nodes + if ( elem.nodeType === 3 || elem.nodeType === 8 ) { + return; + } + + // focus/blur morphs to focusin/out; ensure we're not firing them right now + if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { + return; + } + + if ( type.indexOf( "." ) > -1 ) { + + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split( "." ); + type = namespaces.shift(); + namespaces.sort(); + } + ontype = type.indexOf( ":" ) < 0 && "on" + type; + + // Caller can pass in a jQuery.Event object, Object, or just an event type string + event = event[ jQuery.expando ] ? + event : + new jQuery.Event( type, typeof event === "object" && event ); + + // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) + event.isTrigger = onlyHandlers ? 2 : 3; + event.namespace = namespaces.join( "." ); + event.rnamespace = event.namespace ? + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) : + null; + + // Clean up the event in case it is being reused + event.result = undefined; + if ( !event.target ) { + event.target = elem; + } + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data == null ? + [ event ] : + jQuery.makeArray( data, [ event ] ); + + // Allow special events to draw outside the lines + special = jQuery.event.special[ type ] || {}; + if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { + return; + } + + // Determine event propagation path in advance, per W3C events spec (#9951) + // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) + if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) { + + bubbleType = special.delegateType || type; + if ( !rfocusMorph.test( bubbleType + type ) ) { + cur = cur.parentNode; + } + for ( ; cur; cur = cur.parentNode ) { + eventPath.push( cur ); + tmp = cur; + } + + // Only add window if we got to document (e.g., not plain obj or detached DOM) + if ( tmp === ( elem.ownerDocument || document ) ) { + eventPath.push( tmp.defaultView || tmp.parentWindow || window ); + } + } + + // Fire handlers on the event path + i = 0; + while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) { + lastElement = cur; + event.type = i > 1 ? + bubbleType : + special.bindType || type; + + // jQuery handler + handle = ( + dataPriv.get( cur, "events" ) || Object.create( null ) + )[ event.type ] && + dataPriv.get( cur, "handle" ); + if ( handle ) { + handle.apply( cur, data ); + } + + // Native handler + handle = ontype && cur[ ontype ]; + if ( handle && handle.apply && acceptData( cur ) ) { + event.result = handle.apply( cur, data ); + if ( event.result === false ) { + event.preventDefault(); + } + } + } + event.type = type; + + // If nobody prevented the default action, do it now + if ( !onlyHandlers && !event.isDefaultPrevented() ) { + + if ( ( !special._default || + special._default.apply( eventPath.pop(), data ) === false ) && + acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name as the event. + // Don't do default actions on window, that's where global variables be (#6170) + if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) { + + // Don't re-trigger an onFOO event when we call its FOO() method + tmp = elem[ ontype ]; + + if ( tmp ) { + elem[ ontype ] = null; + } + + // Prevent re-triggering of the same event, since we already bubbled it above + jQuery.event.triggered = type; + + if ( event.isPropagationStopped() ) { + lastElement.addEventListener( type, stopPropagationCallback ); + } + + elem[ type ](); + + if ( event.isPropagationStopped() ) { + lastElement.removeEventListener( type, stopPropagationCallback ); + } + + jQuery.event.triggered = undefined; + + if ( tmp ) { + elem[ ontype ] = tmp; + } + } + } + } + + return event.result; + }, + + // Piggyback on a donor event to simulate a different one + // Used only for `focus(in | out)` events + simulate: function( type, elem, event ) { + var e = jQuery.extend( + new jQuery.Event(), + event, + { + type: type, + isSimulated: true + } + ); + + jQuery.event.trigger( e, null, elem ); + } + +} ); + +jQuery.fn.extend( { + + trigger: function( type, data ) { + return this.each( function() { + jQuery.event.trigger( type, data, this ); + } ); + }, + triggerHandler: function( type, data ) { + var elem = this[ 0 ]; + if ( elem ) { + return jQuery.event.trigger( type, data, elem, true ); + } + } +} ); + + +// Support: Firefox <=44 +// Firefox doesn't have focus(in | out) events +// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 +// +// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1 +// focus(in | out) events fire after focus & blur events, +// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order +// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857 +if ( !support.focusin ) { + jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler on the document while someone wants focusin/focusout + var handler = function( event ) { + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) ); + }; + + jQuery.event.special[ fix ] = { + setup: function() { + + // Handle: regular nodes (via `this.ownerDocument`), window + // (via `this.document`) & document (via `this`). + var doc = this.ownerDocument || this.document || this, + attaches = dataPriv.access( doc, fix ); + + if ( !attaches ) { + doc.addEventListener( orig, handler, true ); + } + dataPriv.access( doc, fix, ( attaches || 0 ) + 1 ); + }, + teardown: function() { + var doc = this.ownerDocument || this.document || this, + attaches = dataPriv.access( doc, fix ) - 1; + + if ( !attaches ) { + doc.removeEventListener( orig, handler, true ); + dataPriv.remove( doc, fix ); + + } else { + dataPriv.access( doc, fix, attaches ); + } + } + }; + } ); +} +var location = window.location; + +var nonce = { guid: Date.now() }; + +var rquery = ( /\?/ ); + + + +// Cross-browser xml parsing +jQuery.parseXML = function( data ) { + var xml; + if ( !data || typeof data !== "string" ) { + return null; + } + + // Support: IE 9 - 11 only + // IE throws on parseFromString with invalid input. + try { + xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); + } catch ( e ) { + xml = undefined; + } + + if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) { + jQuery.error( "Invalid XML: " + data ); + } + return xml; +}; + + +var + rbracket = /\[\]$/, + rCRLF = /\r?\n/g, + rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, + rsubmittable = /^(?:input|select|textarea|keygen)/i; + +function buildParams( prefix, obj, traditional, add ) { + var name; + + if ( Array.isArray( obj ) ) { + + // Serialize array item. + jQuery.each( obj, function( i, v ) { + if ( traditional || rbracket.test( prefix ) ) { + + // Treat each array item as a scalar. + add( prefix, v ); + + } else { + + // Item is non-scalar (array or object), encode its numeric index. + buildParams( + prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]", + v, + traditional, + add + ); + } + } ); + + } else if ( !traditional && toType( obj ) === "object" ) { + + // Serialize object item. + for ( name in obj ) { + buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); + } + + } else { + + // Serialize scalar item. + add( prefix, obj ); + } +} + +// Serialize an array of form elements or a set of +// key/values into a query string +jQuery.param = function( a, traditional ) { + var prefix, + s = [], + add = function( key, valueOrFunction ) { + + // If value is a function, invoke it and use its return value + var value = isFunction( valueOrFunction ) ? + valueOrFunction() : + valueOrFunction; + + s[ s.length ] = encodeURIComponent( key ) + "=" + + encodeURIComponent( value == null ? "" : value ); + }; + + if ( a == null ) { + return ""; + } + + // If an array was passed in, assume that it is an array of form elements. + if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { + + // Serialize the form elements + jQuery.each( a, function() { + add( this.name, this.value ); + } ); + + } else { + + // If traditional, encode the "old" way (the way 1.3.2 or older + // did it), otherwise encode params recursively. + for ( prefix in a ) { + buildParams( prefix, a[ prefix ], traditional, add ); + } + } + + // Return the resulting serialization + return s.join( "&" ); +}; + +jQuery.fn.extend( { + serialize: function() { + return jQuery.param( this.serializeArray() ); + }, + serializeArray: function() { + return this.map( function() { + + // Can add propHook for "elements" to filter or add form elements + var elements = jQuery.prop( this, "elements" ); + return elements ? jQuery.makeArray( elements ) : this; + } ) + .filter( function() { + var type = this.type; + + // Use .is( ":disabled" ) so that fieldset[disabled] works + return this.name && !jQuery( this ).is( ":disabled" ) && + rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && + ( this.checked || !rcheckableType.test( type ) ); + } ) + .map( function( _i, elem ) { + var val = jQuery( this ).val(); + + if ( val == null ) { + return null; + } + + if ( Array.isArray( val ) ) { + return jQuery.map( val, function( val ) { + return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + } ); + } + + return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + } ).get(); + } +} ); + + +var + r20 = /%20/g, + rhash = /#.*$/, + rantiCache = /([?&])_=[^&]*/, + rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, + + // #7653, #8125, #8152: local protocol detection + rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, + rnoContent = /^(?:GET|HEAD)$/, + rprotocol = /^\/\//, + + /* Prefilters + * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) + * 2) These are called: + * - BEFORE asking for a transport + * - AFTER param serialization (s.data is a string if s.processData is true) + * 3) key is the dataType + * 4) the catchall symbol "*" can be used + * 5) execution will start with transport dataType and THEN continue down to "*" if needed + */ + prefilters = {}, + + /* Transports bindings + * 1) key is the dataType + * 2) the catchall symbol "*" can be used + * 3) selection will start with transport dataType and THEN go to "*" if needed + */ + transports = {}, + + // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression + allTypes = "*/".concat( "*" ), + + // Anchor tag for parsing the document origin + originAnchor = document.createElement( "a" ); + originAnchor.href = location.href; + +// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport +function addToPrefiltersOrTransports( structure ) { + + // dataTypeExpression is optional and defaults to "*" + return function( dataTypeExpression, func ) { + + if ( typeof dataTypeExpression !== "string" ) { + func = dataTypeExpression; + dataTypeExpression = "*"; + } + + var dataType, + i = 0, + dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || []; + + if ( isFunction( func ) ) { + + // For each dataType in the dataTypeExpression + while ( ( dataType = dataTypes[ i++ ] ) ) { + + // Prepend if requested + if ( dataType[ 0 ] === "+" ) { + dataType = dataType.slice( 1 ) || "*"; + ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func ); + + // Otherwise append + } else { + ( structure[ dataType ] = structure[ dataType ] || [] ).push( func ); + } + } + } + }; +} + +// Base inspection function for prefilters and transports +function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) { + + var inspected = {}, + seekingTransport = ( structure === transports ); + + function inspect( dataType ) { + var selected; + inspected[ dataType ] = true; + jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) { + var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR ); + if ( typeof dataTypeOrTransport === "string" && + !seekingTransport && !inspected[ dataTypeOrTransport ] ) { + + options.dataTypes.unshift( dataTypeOrTransport ); + inspect( dataTypeOrTransport ); + return false; + } else if ( seekingTransport ) { + return !( selected = dataTypeOrTransport ); + } + } ); + return selected; + } + + return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" ); +} + +// A special extend for ajax options +// that takes "flat" options (not to be deep extended) +// Fixes #9887 +function ajaxExtend( target, src ) { + var key, deep, + flatOptions = jQuery.ajaxSettings.flatOptions || {}; + + for ( key in src ) { + if ( src[ key ] !== undefined ) { + ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ]; + } + } + if ( deep ) { + jQuery.extend( true, target, deep ); + } + + return target; +} + +/* Handles responses to an ajax request: + * - finds the right dataType (mediates between content-type and expected dataType) + * - returns the corresponding response + */ +function ajaxHandleResponses( s, jqXHR, responses ) { + + var ct, type, finalDataType, firstDataType, + contents = s.contents, + dataTypes = s.dataTypes; + + // Remove auto dataType and get content-type in the process + while ( dataTypes[ 0 ] === "*" ) { + dataTypes.shift(); + if ( ct === undefined ) { + ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" ); + } + } + + // Check if we're dealing with a known content-type + if ( ct ) { + for ( type in contents ) { + if ( contents[ type ] && contents[ type ].test( ct ) ) { + dataTypes.unshift( type ); + break; + } + } + } + + // Check to see if we have a response for the expected dataType + if ( dataTypes[ 0 ] in responses ) { + finalDataType = dataTypes[ 0 ]; + } else { + + // Try convertible dataTypes + for ( type in responses ) { + if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) { + finalDataType = type; + break; + } + if ( !firstDataType ) { + firstDataType = type; + } + } + + // Or just use first one + finalDataType = finalDataType || firstDataType; + } + + // If we found a dataType + // We add the dataType to the list if needed + // and return the corresponding response + if ( finalDataType ) { + if ( finalDataType !== dataTypes[ 0 ] ) { + dataTypes.unshift( finalDataType ); + } + return responses[ finalDataType ]; + } +} + +/* Chain conversions given the request and the original response + * Also sets the responseXXX fields on the jqXHR instance + */ +function ajaxConvert( s, response, jqXHR, isSuccess ) { + var conv2, current, conv, tmp, prev, + converters = {}, + + // Work with a copy of dataTypes in case we need to modify it for conversion + dataTypes = s.dataTypes.slice(); + + // Create converters map with lowercased keys + if ( dataTypes[ 1 ] ) { + for ( conv in s.converters ) { + converters[ conv.toLowerCase() ] = s.converters[ conv ]; + } + } + + current = dataTypes.shift(); + + // Convert to each sequential dataType + while ( current ) { + + if ( s.responseFields[ current ] ) { + jqXHR[ s.responseFields[ current ] ] = response; + } + + // Apply the dataFilter if provided + if ( !prev && isSuccess && s.dataFilter ) { + response = s.dataFilter( response, s.dataType ); + } + + prev = current; + current = dataTypes.shift(); + + if ( current ) { + + // There's only work to do if current dataType is non-auto + if ( current === "*" ) { + + current = prev; + + // Convert response if prev dataType is non-auto and differs from current + } else if ( prev !== "*" && prev !== current ) { + + // Seek a direct converter + conv = converters[ prev + " " + current ] || converters[ "* " + current ]; + + // If none found, seek a pair + if ( !conv ) { + for ( conv2 in converters ) { + + // If conv2 outputs current + tmp = conv2.split( " " ); + if ( tmp[ 1 ] === current ) { + + // If prev can be converted to accepted input + conv = converters[ prev + " " + tmp[ 0 ] ] || + converters[ "* " + tmp[ 0 ] ]; + if ( conv ) { + + // Condense equivalence converters + if ( conv === true ) { + conv = converters[ conv2 ]; + + // Otherwise, insert the intermediate dataType + } else if ( converters[ conv2 ] !== true ) { + current = tmp[ 0 ]; + dataTypes.unshift( tmp[ 1 ] ); + } + break; + } + } + } + } + + // Apply converter (if not an equivalence) + if ( conv !== true ) { + + // Unless errors are allowed to bubble, catch and return them + if ( conv && s.throws ) { + response = conv( response ); + } else { + try { + response = conv( response ); + } catch ( e ) { + return { + state: "parsererror", + error: conv ? e : "No conversion from " + prev + " to " + current + }; + } + } + } + } + } + } + + return { state: "success", data: response }; +} + +jQuery.extend( { + + // Counter for holding the number of active queries + active: 0, + + // Last-Modified header cache for next request + lastModified: {}, + etag: {}, + + ajaxSettings: { + url: location.href, + type: "GET", + isLocal: rlocalProtocol.test( location.protocol ), + global: true, + processData: true, + async: true, + contentType: "application/x-www-form-urlencoded; charset=UTF-8", + + /* + timeout: 0, + data: null, + dataType: null, + username: null, + password: null, + cache: null, + throws: false, + traditional: false, + headers: {}, + */ + + accepts: { + "*": allTypes, + text: "text/plain", + html: "text/html", + xml: "application/xml, text/xml", + json: "application/json, text/javascript" + }, + + contents: { + xml: /\bxml\b/, + html: /\bhtml/, + json: /\bjson\b/ + }, + + responseFields: { + xml: "responseXML", + text: "responseText", + json: "responseJSON" + }, + + // Data converters + // Keys separate source (or catchall "*") and destination types with a single space + converters: { + + // Convert anything to text + "* text": String, + + // Text to html (true = no transformation) + "text html": true, + + // Evaluate text as a json expression + "text json": JSON.parse, + + // Parse text as xml + "text xml": jQuery.parseXML + }, + + // For options that shouldn't be deep extended: + // you can add your own custom options here if + // and when you create one that shouldn't be + // deep extended (see ajaxExtend) + flatOptions: { + url: true, + context: true + } + }, + + // Creates a full fledged settings object into target + // with both ajaxSettings and settings fields. + // If target is omitted, writes into ajaxSettings. + ajaxSetup: function( target, settings ) { + return settings ? + + // Building a settings object + ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) : + + // Extending ajaxSettings + ajaxExtend( jQuery.ajaxSettings, target ); + }, + + ajaxPrefilter: addToPrefiltersOrTransports( prefilters ), + ajaxTransport: addToPrefiltersOrTransports( transports ), + + // Main method + ajax: function( url, options ) { + + // If url is an object, simulate pre-1.5 signature + if ( typeof url === "object" ) { + options = url; + url = undefined; + } + + // Force options to be an object + options = options || {}; + + var transport, + + // URL without anti-cache param + cacheURL, + + // Response headers + responseHeadersString, + responseHeaders, + + // timeout handle + timeoutTimer, + + // Url cleanup var + urlAnchor, + + // Request state (becomes false upon send and true upon completion) + completed, + + // To know if global events are to be dispatched + fireGlobals, + + // Loop variable + i, + + // uncached part of the url + uncached, + + // Create the final options object + s = jQuery.ajaxSetup( {}, options ), + + // Callbacks context + callbackContext = s.context || s, + + // Context for global events is callbackContext if it is a DOM node or jQuery collection + globalEventContext = s.context && + ( callbackContext.nodeType || callbackContext.jquery ) ? + jQuery( callbackContext ) : + jQuery.event, + + // Deferreds + deferred = jQuery.Deferred(), + completeDeferred = jQuery.Callbacks( "once memory" ), + + // Status-dependent callbacks + statusCode = s.statusCode || {}, + + // Headers (they are sent all at once) + requestHeaders = {}, + requestHeadersNames = {}, + + // Default abort message + strAbort = "canceled", + + // Fake xhr + jqXHR = { + readyState: 0, + + // Builds headers hashtable if needed + getResponseHeader: function( key ) { + var match; + if ( completed ) { + if ( !responseHeaders ) { + responseHeaders = {}; + while ( ( match = rheaders.exec( responseHeadersString ) ) ) { + responseHeaders[ match[ 1 ].toLowerCase() + " " ] = + ( responseHeaders[ match[ 1 ].toLowerCase() + " " ] || [] ) + .concat( match[ 2 ] ); + } + } + match = responseHeaders[ key.toLowerCase() + " " ]; + } + return match == null ? null : match.join( ", " ); + }, + + // Raw string + getAllResponseHeaders: function() { + return completed ? responseHeadersString : null; + }, + + // Caches the header + setRequestHeader: function( name, value ) { + if ( completed == null ) { + name = requestHeadersNames[ name.toLowerCase() ] = + requestHeadersNames[ name.toLowerCase() ] || name; + requestHeaders[ name ] = value; + } + return this; + }, + + // Overrides response content-type header + overrideMimeType: function( type ) { + if ( completed == null ) { + s.mimeType = type; + } + return this; + }, + + // Status-dependent callbacks + statusCode: function( map ) { + var code; + if ( map ) { + if ( completed ) { + + // Execute the appropriate callbacks + jqXHR.always( map[ jqXHR.status ] ); + } else { + + // Lazy-add the new callbacks in a way that preserves old ones + for ( code in map ) { + statusCode[ code ] = [ statusCode[ code ], map[ code ] ]; + } + } + } + return this; + }, + + // Cancel the request + abort: function( statusText ) { + var finalText = statusText || strAbort; + if ( transport ) { + transport.abort( finalText ); + } + done( 0, finalText ); + return this; + } + }; + + // Attach deferreds + deferred.promise( jqXHR ); + + // Add protocol if not provided (prefilters might expect it) + // Handle falsy url in the settings object (#10093: consistency with old signature) + // We also use the url parameter if available + s.url = ( ( url || s.url || location.href ) + "" ) + .replace( rprotocol, location.protocol + "//" ); + + // Alias method option to type as per ticket #12004 + s.type = options.method || options.type || s.method || s.type; + + // Extract dataTypes list + s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ]; + + // A cross-domain request is in order when the origin doesn't match the current origin. + if ( s.crossDomain == null ) { + urlAnchor = document.createElement( "a" ); + + // Support: IE <=8 - 11, Edge 12 - 15 + // IE throws exception on accessing the href property if url is malformed, + // e.g. http://example.com:80x/ + try { + urlAnchor.href = s.url; + + // Support: IE <=8 - 11 only + // Anchor's host property isn't correctly set when s.url is relative + urlAnchor.href = urlAnchor.href; + s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== + urlAnchor.protocol + "//" + urlAnchor.host; + } catch ( e ) { + + // If there is an error parsing the URL, assume it is crossDomain, + // it can be rejected by the transport if it is invalid + s.crossDomain = true; + } + } + + // Convert data if not already a string + if ( s.data && s.processData && typeof s.data !== "string" ) { + s.data = jQuery.param( s.data, s.traditional ); + } + + // Apply prefilters + inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); + + // If request was aborted inside a prefilter, stop there + if ( completed ) { + return jqXHR; + } + + // We can fire global events as of now if asked to + // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118) + fireGlobals = jQuery.event && s.global; + + // Watch for a new set of requests + if ( fireGlobals && jQuery.active++ === 0 ) { + jQuery.event.trigger( "ajaxStart" ); + } + + // Uppercase the type + s.type = s.type.toUpperCase(); + + // Determine if request has content + s.hasContent = !rnoContent.test( s.type ); + + // Save the URL in case we're toying with the If-Modified-Since + // and/or If-None-Match header later on + // Remove hash to simplify url manipulation + cacheURL = s.url.replace( rhash, "" ); + + // More options handling for requests with no content + if ( !s.hasContent ) { + + // Remember the hash so we can put it back + uncached = s.url.slice( cacheURL.length ); + + // If data is available and should be processed, append data to url + if ( s.data && ( s.processData || typeof s.data === "string" ) ) { + cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data; + + // #9682: remove data so that it's not used in an eventual retry + delete s.data; + } + + // Add or update anti-cache param if needed + if ( s.cache === false ) { + cacheURL = cacheURL.replace( rantiCache, "$1" ); + uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce.guid++ ) + + uncached; + } + + // Put hash and anti-cache on the URL that will be requested (gh-1732) + s.url = cacheURL + uncached; + + // Change '%20' to '+' if this is encoded form body content (gh-2658) + } else if ( s.data && s.processData && + ( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) { + s.data = s.data.replace( r20, "+" ); + } + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + if ( jQuery.lastModified[ cacheURL ] ) { + jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] ); + } + if ( jQuery.etag[ cacheURL ] ) { + jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] ); + } + } + + // Set the correct header, if data is being sent + if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { + jqXHR.setRequestHeader( "Content-Type", s.contentType ); + } + + // Set the Accepts header for the server, depending on the dataType + jqXHR.setRequestHeader( + "Accept", + s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ? + s.accepts[ s.dataTypes[ 0 ] ] + + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : + s.accepts[ "*" ] + ); + + // Check for headers option + for ( i in s.headers ) { + jqXHR.setRequestHeader( i, s.headers[ i ] ); + } + + // Allow custom headers/mimetypes and early abort + if ( s.beforeSend && + ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) { + + // Abort if not done already and return + return jqXHR.abort(); + } + + // Aborting is no longer a cancellation + strAbort = "abort"; + + // Install callbacks on deferreds + completeDeferred.add( s.complete ); + jqXHR.done( s.success ); + jqXHR.fail( s.error ); + + // Get transport + transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); + + // If no transport, we auto-abort + if ( !transport ) { + done( -1, "No Transport" ); + } else { + jqXHR.readyState = 1; + + // Send global event + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); + } + + // If request was aborted inside ajaxSend, stop there + if ( completed ) { + return jqXHR; + } + + // Timeout + if ( s.async && s.timeout > 0 ) { + timeoutTimer = window.setTimeout( function() { + jqXHR.abort( "timeout" ); + }, s.timeout ); + } + + try { + completed = false; + transport.send( requestHeaders, done ); + } catch ( e ) { + + // Rethrow post-completion exceptions + if ( completed ) { + throw e; + } + + // Propagate others as results + done( -1, e ); + } + } + + // Callback for when everything is done + function done( status, nativeStatusText, responses, headers ) { + var isSuccess, success, error, response, modified, + statusText = nativeStatusText; + + // Ignore repeat invocations + if ( completed ) { + return; + } + + completed = true; + + // Clear timeout if it exists + if ( timeoutTimer ) { + window.clearTimeout( timeoutTimer ); + } + + // Dereference transport for early garbage collection + // (no matter how long the jqXHR object will be used) + transport = undefined; + + // Cache response headers + responseHeadersString = headers || ""; + + // Set readyState + jqXHR.readyState = status > 0 ? 4 : 0; + + // Determine if successful + isSuccess = status >= 200 && status < 300 || status === 304; + + // Get response data + if ( responses ) { + response = ajaxHandleResponses( s, jqXHR, responses ); + } + + // Use a noop converter for missing script + if ( !isSuccess && jQuery.inArray( "script", s.dataTypes ) > -1 ) { + s.converters[ "text script" ] = function() {}; + } + + // Convert no matter what (that way responseXXX fields are always set) + response = ajaxConvert( s, response, jqXHR, isSuccess ); + + // If successful, handle type chaining + if ( isSuccess ) { + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + modified = jqXHR.getResponseHeader( "Last-Modified" ); + if ( modified ) { + jQuery.lastModified[ cacheURL ] = modified; + } + modified = jqXHR.getResponseHeader( "etag" ); + if ( modified ) { + jQuery.etag[ cacheURL ] = modified; + } + } + + // if no content + if ( status === 204 || s.type === "HEAD" ) { + statusText = "nocontent"; + + // if not modified + } else if ( status === 304 ) { + statusText = "notmodified"; + + // If we have data, let's convert it + } else { + statusText = response.state; + success = response.data; + error = response.error; + isSuccess = !error; + } + } else { + + // Extract error from statusText and normalize for non-aborts + error = statusText; + if ( status || !statusText ) { + statusText = "error"; + if ( status < 0 ) { + status = 0; + } + } + } + + // Set data for the fake xhr object + jqXHR.status = status; + jqXHR.statusText = ( nativeStatusText || statusText ) + ""; + + // Success/Error + if ( isSuccess ) { + deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); + } else { + deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); + } + + // Status-dependent callbacks + jqXHR.statusCode( statusCode ); + statusCode = undefined; + + if ( fireGlobals ) { + globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError", + [ jqXHR, s, isSuccess ? success : error ] ); + } + + // Complete + completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] ); + + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); + + // Handle the global AJAX counter + if ( !( --jQuery.active ) ) { + jQuery.event.trigger( "ajaxStop" ); + } + } + } + + return jqXHR; + }, + + getJSON: function( url, data, callback ) { + return jQuery.get( url, data, callback, "json" ); + }, + + getScript: function( url, callback ) { + return jQuery.get( url, undefined, callback, "script" ); + } +} ); + +jQuery.each( [ "get", "post" ], function( _i, method ) { + jQuery[ method ] = function( url, data, callback, type ) { + + // Shift arguments if data argument was omitted + if ( isFunction( data ) ) { + type = type || callback; + callback = data; + data = undefined; + } + + // The url can be an options object (which then must have .url) + return jQuery.ajax( jQuery.extend( { + url: url, + type: method, + dataType: type, + data: data, + success: callback + }, jQuery.isPlainObject( url ) && url ) ); + }; +} ); + +jQuery.ajaxPrefilter( function( s ) { + var i; + for ( i in s.headers ) { + if ( i.toLowerCase() === "content-type" ) { + s.contentType = s.headers[ i ] || ""; + } + } +} ); + + +jQuery._evalUrl = function( url, options, doc ) { + return jQuery.ajax( { + url: url, + + // Make this explicit, since user can override this through ajaxSetup (#11264) + type: "GET", + dataType: "script", + cache: true, + async: false, + global: false, + + // Only evaluate the response if it is successful (gh-4126) + // dataFilter is not invoked for failure responses, so using it instead + // of the default converter is kludgy but it works. + converters: { + "text script": function() {} + }, + dataFilter: function( response ) { + jQuery.globalEval( response, options, doc ); + } + } ); +}; + + +jQuery.fn.extend( { + wrapAll: function( html ) { + var wrap; + + if ( this[ 0 ] ) { + if ( isFunction( html ) ) { + html = html.call( this[ 0 ] ); + } + + // The elements to wrap the target around + wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); + + if ( this[ 0 ].parentNode ) { + wrap.insertBefore( this[ 0 ] ); + } + + wrap.map( function() { + var elem = this; + + while ( elem.firstElementChild ) { + elem = elem.firstElementChild; + } + + return elem; + } ).append( this ); + } + + return this; + }, + + wrapInner: function( html ) { + if ( isFunction( html ) ) { + return this.each( function( i ) { + jQuery( this ).wrapInner( html.call( this, i ) ); + } ); + } + + return this.each( function() { + var self = jQuery( this ), + contents = self.contents(); + + if ( contents.length ) { + contents.wrapAll( html ); + + } else { + self.append( html ); + } + } ); + }, + + wrap: function( html ) { + var htmlIsFunction = isFunction( html ); + + return this.each( function( i ) { + jQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html ); + } ); + }, + + unwrap: function( selector ) { + this.parent( selector ).not( "body" ).each( function() { + jQuery( this ).replaceWith( this.childNodes ); + } ); + return this; + } +} ); + + +jQuery.expr.pseudos.hidden = function( elem ) { + return !jQuery.expr.pseudos.visible( elem ); +}; +jQuery.expr.pseudos.visible = function( elem ) { + return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length ); +}; + + + + +jQuery.ajaxSettings.xhr = function() { + try { + return new window.XMLHttpRequest(); + } catch ( e ) {} +}; + +var xhrSuccessStatus = { + + // File protocol always yields status code 0, assume 200 + 0: 200, + + // Support: IE <=9 only + // #1450: sometimes IE returns 1223 when it should be 204 + 1223: 204 + }, + xhrSupported = jQuery.ajaxSettings.xhr(); + +support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported ); +support.ajax = xhrSupported = !!xhrSupported; + +jQuery.ajaxTransport( function( options ) { + var callback, errorCallback; + + // Cross domain only allowed if supported through XMLHttpRequest + if ( support.cors || xhrSupported && !options.crossDomain ) { + return { + send: function( headers, complete ) { + var i, + xhr = options.xhr(); + + xhr.open( + options.type, + options.url, + options.async, + options.username, + options.password + ); + + // Apply custom fields if provided + if ( options.xhrFields ) { + for ( i in options.xhrFields ) { + xhr[ i ] = options.xhrFields[ i ]; + } + } + + // Override mime type if needed + if ( options.mimeType && xhr.overrideMimeType ) { + xhr.overrideMimeType( options.mimeType ); + } + + // X-Requested-With header + // For cross-domain requests, seeing as conditions for a preflight are + // akin to a jigsaw puzzle, we simply never set it to be sure. + // (it can always be set on a per-request basis or even using ajaxSetup) + // For same-domain requests, won't change header if already provided. + if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) { + headers[ "X-Requested-With" ] = "XMLHttpRequest"; + } + + // Set headers + for ( i in headers ) { + xhr.setRequestHeader( i, headers[ i ] ); + } + + // Callback + callback = function( type ) { + return function() { + if ( callback ) { + callback = errorCallback = xhr.onload = + xhr.onerror = xhr.onabort = xhr.ontimeout = + xhr.onreadystatechange = null; + + if ( type === "abort" ) { + xhr.abort(); + } else if ( type === "error" ) { + + // Support: IE <=9 only + // On a manual native abort, IE9 throws + // errors on any property access that is not readyState + if ( typeof xhr.status !== "number" ) { + complete( 0, "error" ); + } else { + complete( + + // File: protocol always yields status 0; see #8605, #14207 + xhr.status, + xhr.statusText + ); + } + } else { + complete( + xhrSuccessStatus[ xhr.status ] || xhr.status, + xhr.statusText, + + // Support: IE <=9 only + // IE9 has no XHR2 but throws on binary (trac-11426) + // For XHR2 non-text, let the caller handle it (gh-2498) + ( xhr.responseType || "text" ) !== "text" || + typeof xhr.responseText !== "string" ? + { binary: xhr.response } : + { text: xhr.responseText }, + xhr.getAllResponseHeaders() + ); + } + } + }; + }; + + // Listen to events + xhr.onload = callback(); + errorCallback = xhr.onerror = xhr.ontimeout = callback( "error" ); + + // Support: IE 9 only + // Use onreadystatechange to replace onabort + // to handle uncaught aborts + if ( xhr.onabort !== undefined ) { + xhr.onabort = errorCallback; + } else { + xhr.onreadystatechange = function() { + + // Check readyState before timeout as it changes + if ( xhr.readyState === 4 ) { + + // Allow onerror to be called first, + // but that will not handle a native abort + // Also, save errorCallback to a variable + // as xhr.onerror cannot be accessed + window.setTimeout( function() { + if ( callback ) { + errorCallback(); + } + } ); + } + }; + } + + // Create the abort callback + callback = callback( "abort" ); + + try { + + // Do send the request (this may raise an exception) + xhr.send( options.hasContent && options.data || null ); + } catch ( e ) { + + // #14683: Only rethrow if this hasn't been notified as an error yet + if ( callback ) { + throw e; + } + } + }, + + abort: function() { + if ( callback ) { + callback(); + } + } + }; + } +} ); + + + + +// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432) +jQuery.ajaxPrefilter( function( s ) { + if ( s.crossDomain ) { + s.contents.script = false; + } +} ); + +// Install script dataType +jQuery.ajaxSetup( { + accepts: { + script: "text/javascript, application/javascript, " + + "application/ecmascript, application/x-ecmascript" + }, + contents: { + script: /\b(?:java|ecma)script\b/ + }, + converters: { + "text script": function( text ) { + jQuery.globalEval( text ); + return text; + } + } +} ); + +// Handle cache's special case and crossDomain +jQuery.ajaxPrefilter( "script", function( s ) { + if ( s.cache === undefined ) { + s.cache = false; + } + if ( s.crossDomain ) { + s.type = "GET"; + } +} ); + +// Bind script tag hack transport +jQuery.ajaxTransport( "script", function( s ) { + + // This transport only deals with cross domain or forced-by-attrs requests + if ( s.crossDomain || s.scriptAttrs ) { + var script, callback; + return { + send: function( _, complete ) { + script = jQuery( " + + + + Contact — cartography documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+

Contact

+ +
+
+

Community Meeting

+

Talk to us and see what we’re working on at our monthly community meeting.

+
    +
  • Meeting minutes are here.

  • +
  • Recorded videos are posted here.

  • +
  • Our current project road map is here.

  • +
+
+ + +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/dev/developer-guide.html b/dev/developer-guide.html new file mode 100644 index 0000000000..f397d62d45 --- /dev/null +++ b/dev/developer-guide.html @@ -0,0 +1,725 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Cartography Developer Guide — cartography documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+ + +
+
+ +
+

Cartography Developer Guide

+
+

Testing

+

*If you’d like to test using Docker and Docker Compose, see here*

+
+

Running from source

+
    +
  1. Install

    +
    +

    Follow steps 1 and 2 in Installation. Ensure that you have JVM 11 installed and Neo4j Community Edition 4.4 is running on your local machine.

    +
    +
  2. +
  3. Clone the source code

    +
    +

    Run cd {path-where-you-want-your-source-code}. Get the source code with git clone git://github.com/lyft/cartography.git

    +
    +
  4. +
  5. Install from source

    +
    +

    Run cd cartography and then pip install -e . (yes, actually type the period into the command line) to install Cartography from source.

    +

    ℹ️You may find it beneficial to use Python virtualenvs (or the virutalenvwrapper) so that packages installed via pip are easier to manage.

    +
    +
  6. +
  7. Run from source

    +
    +

    After this finishes you should be able to run Cartography from source with cartography --neo4j-uri <uri for your neo4j instance; usually bolt://localhost:7687>. Any changes to the source code in {path-where-you-want-your-source-code}/cartography are now locally testable by running cartography from the command line.

    +
    +
  8. +
+
+
+

Manually testing individual intel modules

+

After completing the section above, you are now able to manually test intel modules.

+
    +
  1. If needed, comment out unnecessary lines

    +
    +

    See cartography.intel.aws._sync_one_account()here. This function syncs different AWS objects with your Neo4j instance. Comment out the lines that you don’t want to test for.

    +

    For example, IAM can take a long time to ingest so if you’re testing an intel module that doesn’t require IAM nodes to already exist in the graph, then you can comment out all of the iam.sync_* lines.

    +
    +
  2. +
  3. Save your changes and run cartography from a terminal as you normally would.

  4. +
+
+
+

Automated testing

+
    +
  1. Install test requirements

    +
    +

    pip install -r test-requirements.txt

    +
    +
  2. +
  3. (OPTIONAL) Setup environment variables for integration tests

    +
    +

    The integration tests expect Neo4j to be running locally, listening on default ports, with auth disabled:

    +

    To disable auth, edit your neo4j.conf file with dbms.security.auth_enabled=false. Additional details on neo4j.com.

    +

    To run the integration tests on a specific Neo4j instance, add the following environment variable:

    +

    export "NEO4J_URL=<your_neo4j_instance_bolt_url:your_neo4j_instance_port>"

    +
    +
  4. +
  5. **Run tests using make**

    +
      +
    • make test_lint can be used to run pre-commit linting against the codebase. We use pre-commit to standardize our linting across our code-base at Lyft.

    • +
    • make test_unit can be used to run the unit test suite.

      +

      ⚠️ Important! The below commands will DELETE ALL NODES on your local Neo4j instance as part of our testing procedure. Only run any of the below commands if you are ok with this. ⚠️

      +
    • +
    • make test_integration can be used to run the integration test suite. +For more granular testing, you can invoke pytest directly:

      +
        +
      • pytest ./tests/integration/cartography/intel/aws/test_iam.py

      • +
      • pytest ./tests/integration/cartography/intel/aws/test_iam.py::test_load_groups

      • +
      +
    • +
    • make test can be used to run all of the above.

    • +
    +
  6. +
+
+
+
+

Implementing custom sync commands

+

By default, cartography will try to sync every intel module included as part of the default sync. If you’re not using certain intel modules you can create a custom sync script and invoke it using the cartography CLI. For example, if you’re only interested in the AWS intel module you can create a sync script, custom_sync.py, that looks like this:

+
from cartography import cli
+from cartography import sync
+from cartography.intel import aws
+from cartography.intel import create_indexes
+
+def build_custom_sync():
+    s = sync.Sync()
+    s.add_stages([
+        ('create-indexes', create_indexes.run),
+        ('aws', aws.start_aws_ingestion),
+    ])
+    return s
+
+def main(argv):
+    return cli.CLI(build_custom_sync(), prog='cartography').main(argv)
+
+if __name__ == '__main__':
+    import sys
+    sys.exit(main(sys.argv[1:]))
+
+
+

Which can then be invoked using python custom_sync.py and will have all the features of the cartography CLI while only including the intel modules you are specifically interested in using. For example:

+
cartography$ python custom_sync.py
+INFO:cartography.sync:Starting sync with update tag '1569022981'
+INFO:cartography.sync:Starting sync stage 'create-indexes'
+INFO:cartography.intel.create_indexes:Creating indexes for cartography node types.
+INFO:cartography.sync:Finishing sync stage 'create-indexes'
+INFO:cartography.sync:Starting sync stage 'aws'
+INFO:botocore.credentials:Found credentials in shared credentials file: ~/.aws/credentials
+...
+
+
+
+
+

How to write a new intel module

+

See here.

+
+
+ + +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/dev/index.html b/dev/index.html new file mode 100644 index 0000000000..c36175e15f --- /dev/null +++ b/dev/index.html @@ -0,0 +1,619 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <no title> — cartography documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ + +
+
+
+ + + + + \ No newline at end of file diff --git a/dev/testing-with-docker.html b/dev/testing-with-docker.html new file mode 100644 index 0000000000..bd63adb61f --- /dev/null +++ b/dev/testing-with-docker.html @@ -0,0 +1,639 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Testing with docker — cartography documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+

Testing with docker

+
+

Using the included docker-compose support

+
+

Usage

+
docker build -t lyft/cartography
+docker-compose up -d
+docker-compose run cartography ...
+
+
+
+
+

Configuration

+

Configuration is possible via the .compose directory, which is +git ignored. neo4j config, logs, etc is located at .compose/neo4j/...

+

Configuration for cartography itself should be passed in through +environment variables, using the docker-compose format -e VARIABLE -e VARIABLE

+

AWS credentials can be bind mapped in using volumes. TODO: document correct +bind mount format for docker-compose run.

+
+
+

Notes

+
    +
  • On initial start of the compose stack, it’s necessary to +change the neo4j user’s password through the neo4j UI.

  • +
  • Neither the docker image, nor the docker-compose file define an +entrypoint, so it’s necessary to pass in the command being run. This +also makes it possible to run a custom sync script, rather than only +cartography.

  • +
+
+
+

Example

+
# Temporarily disable bash command history
+set +o history
+# See the cartography github configuration intel module docs
+export GITHUB_KEY=BASE64ENCODEDKEY
+# You need to set this after starting neo4j once, and resetting
+# the default neo4j password, which is neo4j
+export NEO4j_PASSWORD=...
+# Reenable bash command history
+set -o history
+# Start cartography dependencies
+docker-compose up -d
+# Run cartography
+docker-compose run -e GITHUB_KEY -e NEO4j_PASSWORD cartography cartography --github-config-env-var GITHUB_KEY --neo4j-uri bolt://neo4j:7687 --neo4j-password-env-var NEO4j_PASSWORD --neo4j-user neo4j
+
+
+
+
+
+ + +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/dev/writing-analysis-jobs.html b/dev/writing-analysis-jobs.html new file mode 100644 index 0000000000..8b095f6cd4 --- /dev/null +++ b/dev/writing-analysis-jobs.html @@ -0,0 +1,756 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + How to extend Cartography with Analysis Jobs — cartography documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+ + +
+
+ +
+

How to extend Cartography with Analysis Jobs

+
+

Overview

+

In a nutshell, Analysis Jobs let you add your own customizations to Cartography by writing Neo4j queries. This helps you add powerful enhancements to your data without the need to write Python code.

+
+

The stages

+

There are 3 stages to a cartography sync. First we create database indexes, next we ingest assets via intel modules, and finally we can run Analysis Jobs on the database (see cartography.sync.build_default_sync()). This tutorial focuses on Analysis Jobs.

+
+
+

How to run

+

Each Analysis Job is a JSON file with a list of Neo4j statements which get run in order. To run Analysis Jobs, in your call to cartography, set the --analysis-job-directory parameter to the folder path of your jobs. Although the order of statements within a single job is preserved, we don’t guarantee the order in which jobs are executed.

+
+
+
+

Example job: which of my EC2 instances is accessible to any host on the internet?

+

The easiest way to learn how to write an Analysis Job is through an example. One of the Analysis Jobs that we’ve included by default in Cartography’s source tree is cartography/data/jobs/analysis/aws_ec2_asset_exposure.json. This tutorial covers only the EC2 instance part of that job, but after reading this you should be able to understand the other steps in that file.

+
+

Our goal

+

After ingesting all our AWS data, we want to explicitly mark EC2 instances that are accessible to the public internet - a useful thing to know for anyone running an internet service. If any internet-open nodes are found, the job will add an attribute exposed_internet = True to the node. This way we can easily query to find the assets later on and take remediation action if needed.

+

But how do we make this determination, and how should we structure the job?

+
+
+

The logic in plain English

+

We can use the following facts to tell if an EC2 instance is open to the internet:

+
    +
  1. The EC2 instance is a member of a Security Group that has an IP Rule applied to it that allows inbound traffic from the 0.0.0.0/0 subnet.

  2. +
  3. The EC2 instance has a network interface that is connected to a Security Group that has an IP Rule applied to it that allows inbound traffic from the 0.0.0.0/0 subnet.

  4. +
+

The graph created by Cartography’s sync process already has this information for us; we just need to run a few queries to properly to mark it with exposed_internet = True. This example is complex but we hope that this exposes enough Neo4j concepts to help you write your own queries.

+
+
+

Translating the plain-English logic into Neo4j’s Cypher syntax

+

We can take the ideas above and use Cypher’s declarative syntax to “sketch” out this graph path.

+
    +
  1. The EC2 instance is a member of a Security Group that has an IP Rule applied to it that allows inbound traffic from the 0.0.0.0/0 subnet.

    +
    +

    In Cypher, this is

    +
    +
       MATCH
    +   (:IpRange{id: '0.0.0.0/0'})-[:MEMBER_OF_IP_RULE]->(:IpPermissionInbound)
    +   -[:MEMBER_OF_EC2_SECURITY_GROUP]->(group:EC2SecurityGroup)
    +   <-[:MEMBER_OF_EC2_SECURITY_GROUP]-(instance:EC2Instance)
    +
    +   SET instance.exposed_internet = true,
    +       instance.exposed_internet_type = coalesce(instance.exposed_internet_type , []) + 'direct';
    +
    +In the ``SET`` clause we add ``exposed_internet = True`` to the instance. We also add a field for ``exposed_internet_type`` to denote what type of internet exposure has occurred here. You can read the `documentation for ``coalesce`` <https://neo4j.com/docs/cypher-manual/current/functions/scalar/#functions-coalesce>`_\ , but in English this last part says "add ``direct`` to the list of ways this instance is exposed to the internet".
    +
    +
    +
  2. +
  3. The EC2 instance has a network interface that is connected to a Security Group that has an IP Rule applied to it that allows inbound traffic from the 0.0.0.0/0 subnet.

    +
    +

    This is the same as the previous query except for the final line:

    +
    +
       MATCH
    +   (:IpRange{id: '0.0.0.0/0'})-[:MEMBER_OF_IP_RULE]->(:IpPermissionInbound)
    +   -[:MEMBER_OF_EC2_SECURITY_GROUP]->(group:EC2SecurityGroup)
    +   <-[:NETWORK_INTERFACE*..2]-(instance:EC2Instance)
    +
    +   SET instance.exposed_internet = true,
    +       instance.exposed_internet_type = coalesce(instance.exposed_internet_type , []) + 'direct';
    +
    +The ``*..2`` operator means "within 2 hops". We use this here as a shortcut because there are a few more relationships between NetworkInterfaces and EC2SecurityGroups that we can skip over.
    +
    +
    +
  4. +
+

Finally, notice that (1) and (2) are similar enough that we can actually merge them like this:

+
MATCH
+(:IpRange{id: '0.0.0.0/0'})-[:MEMBER_OF_IP_RULE]->(:IpPermissionInbound)
+-[:MEMBER_OF_EC2_SECURITY_GROUP]->(group:EC2SecurityGroup)
+<-[:MEMBER_OF_EC2_SECURITY_GROUP|NETWORK_INTERFACE*..2]-(instance:EC2Instance)
+
+SET instance.exposed_internet = true,
+    instance.exposed_internet_type = coalesce(instance.exposed_internet_type , []) + 'direct';
+
+
+

Kinda neat, right?

+
+
+

The skeleton of an Analysis Job

+

Now that we know what we want to do on a sync, how should we structure the Analysis Job? Here is the basic skeleton that we recommend.

+
+

Clean up first, then update

+

In general, the first statement(s) should be a “clean-up phase” that removes custom attributes or relationships that you may have added in a previous run. This ensures that whatever labels you add on this current run will be up to date and not stale. Next, the statements after the clean-up phase will perform the matching and attribute updates as described in the previous section.

+

Here’s our final result:

+
{
+  "name": "AWS asset internet exposure",
+  "statements": [
+      {
+        "__comment": "This is a clean-up statement to remove custom attributes",
+        "query": "MATCH (n)
+                  WHERE n.exposed_internet IS NOT NULL
+                        AND labels(n) IN ['AutoScalingGroup', 'EC2Instance', 'LoadBalancer']
+                  WITH n LIMIT $LIMIT_SIZE
+                  REMOVE n.exposed_internet, n.exposed_internet_type
+                  RETURN COUNT(*) as TotalCompleted",
+        "iterative": true,
+        "iterationsize": 1000
+      },
+      {
+        "__comment__": "This is our analysis logic as described in the section above",
+        "query": MATCH (:IpRange{id: '0.0.0.0/0'})-[:MEMBER_OF_IP_RULE]->(:IpPermissionInbound)
+                 -[:MEMBER_OF_EC2_SECURITY_GROUP]->(group:EC2SecurityGroup)
+                 <-[:MEMBER_OF_EC2_SECURITY_GROUP|NETWORK_INTERFACE*..2]-(instance:EC2Instance)
+
+                 SET instance.exposed_internet = true,
+                     instance.exposed_internet_type = coalesce(instance.exposed_internet_type , []) + 'direct';,
+        "iterative": true,
+        "iterationsize": 100
+      }
+  ]
+}
+
+
+

Setting a statement as iterative: true means that we will run this query on #{iterationsize} entries at a time. This can be helpful for queries that return large numbers of records so that Neo4j doesn’t get too angry.

+

Now we can enjoy the fruits of our labor and query for internet exposure:

+internet-exposure-query +
+
+
+
+

Recap

+

As shown, you create an Analysis Job by putting together a bunch of statements together (which are essentially Neo4j queries). In general, each job should first clean up the custom attributes added by a previous run, and then it can perform the match and update steps to add the custom attributes back again. This ensures that your data is up to date.

+
+
+ + +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/dev/writing-intel-modules.html b/dev/writing-intel-modules.html new file mode 100644 index 0000000000..04ba22c765 --- /dev/null +++ b/dev/writing-intel-modules.html @@ -0,0 +1,1075 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + How to write a new intel module — cartography documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+ + +
+
+ +
+

How to write a new intel module

+

If you want to add a new data type to Cartography, this is the guide for you. We look forward to receiving your PR!

+
+

Before getting started…

+

Read through and follow the setup steps in the Cartography developer guide. Learn the basics of +running, testing, and linting your code there.

+
+
+

The fast way

+

To get started coding without reading this doc, just copy the structure of our AWS EMR module and use it as an example. For a longer written explanation of the “how” and “why”, read on.

+
+
+

Configuration and credential management

+
+

Supplying credentials and arguments to your module

+

If you need to supply an API key or other credential to your Cartography module, we recommend adding a CLI argument. An example of this can be seen in our Okta module where we require the user to specify the name of an environment variable containing their Okta API key. This credential will then be bound to Cartography’s Config object which is present in all modules. You can specify different arguments from the commandline for your module via the Config object.

+
+
+

An important note on validating your commandline args

+

Note that it is your module’s responsibility to validate arguments that you introduce. For example with the Okta module, we validate that config.okta_api_key has been defined before attempting to continue.

+
+
+
+

Sync = Get, Transform, Load, Cleanup

+

A cartography intel module consists of one sync function. sync should call get, then load, and finally cleanup.

+
+

Get

+

The get function returns data as a list of dicts +from a resource provider API, which is GCP in this particular example.

+

get should be “dumb” in the sense that it should not handle retry logic or data +manipulation. It should also raise an exception if it’s not able to complete successfully.

+
+
+

Transform

+

The transform function manipulates the list of dicts +to make it easier to ingest to the graph. transform functions are sometimes omitted when a module author decides that the output from the get is already in the shape that they need.

+

We have some best practices on handling transforms:

+
+

Handling required versus optional fields

+

We should directly access dicts in cases where not having the data should cause a sync to fail. +For example, if we are transforming AWS data, we definitely need an AWS object’s ARN field because it uniquely +identifies the object. Therefore, we should access an object’s ARN using data['arn'] as opposed to +using data.get('arn') (the former will raise a KeyError if arn does not exist and the latter will just return +None without an exception).

+

We want the sync to fail if an important field is not present in our data. The idea here is that +it is better to fail a sync than to add malformed data.

+

On the other hand, we should use data.get('SomeField') if SomeField is something optional that can afford to be +None.

+

For the sake of consistency, if a field does not exist, set it to None and not "".

+
+
+
+

Load

+

As seen in our AWS EMR example, the load function ingests a list of dicts to Neo4j by calling cartography.client.core.tx.load():

+
def load_emr_clusters(
+        neo4j_session: neo4j.Session,
+        cluster_data: List[Dict[str, Any]],
+        region: str,
+        current_aws_account_id: str,
+        aws_update_tag: int,
+) -> None:
+    logger.info(f"Loading EMR {len(cluster_data)} clusters for region '{region}' into graph.")
+    load(
+        neo4j_session,
+        EMRClusterSchema(),
+        cluster_data,
+        lastupdated=aws_update_tag,
+        Region=region,
+        AWS_ID=current_aws_account_id,
+    )
+
+
+
+

Defining a node

+

As an example of a CartographyNodeSchema, you can view our EMRClusterSchema code:

+
@dataclass(frozen=True)
+class EMRClusterSchema(CartographyNodeSchema):
+    label: str = 'EMRCluster'  # The label of the node
+    properties: EMRClusterNodeProperties = EMRClusterNodeProperties()  # An object representing all properties on the EMR Cluster node
+    sub_resource_relationship: EMRClusterToAWSAccount = EMRClusterToAWSAccount()
+
+
+

An EMRClusterSchema object inherits from the CartographyNodeSchema class and contains a node label, properties, and connection to its sub-resource: an AWSAccount.

+

Note that the typehints are necessary for Python dataclasses to work properly.

+
+
+

Defining node properties

+

Here’s our EMRClusterNodeProperties code:

+
@dataclass(frozen=True)
+class EMRClusterNodeProperties(CartographyNodeProperties):
+    arn: PropertyRef = PropertyRef('ClusterArn', extra_index=True)
+    firstseen: PropertyRef = PropertyRef('firstseen')
+    id: PropertyRef = PropertyRef('Id')
+    # ...
+    lastupdated: PropertyRef = PropertyRef('lastupdated', set_in_kwargs=True)
+    region: PropertyRef = PropertyRef('Region', set_in_kwargs=True)
+    security_configuration: PropertyRef = PropertyRef('SecurityConfiguration')
+
+
+

A CartographyNodeProperties object consists of ``PropertyRef` <https://github.com/lyft/cartography/blob/e6ada9a1a741b83a34c1c3207515a1863debeeb9/cartography/graph/model.py#L37>`_ objects. PropertyRefs tell querybuilder.build_ingestion_query() where to find appropriate values for each field from the list of dicts.

+

For example, id: PropertyRef = PropertyRef('Id') above tells the querybuilder to set a field called id on the EMRCluster node using the value located at key 'id' on each dict in the list.

+

As another example, region: PropertyRef = PropertyRef('Region', set_in_kwargs=True) tells the querybuilder to set a field called region on the EMRCluster node using a keyword argument called Region supplied to cartography.client.core.tx.load(). set_in_kwargs=True is useful in cases where we want every object loaded by a single call to load() to have the same value for a given attribute.

+
+
Node property indexes
+

Cartography uses its data model to automatically create indexes for

+
    +
  • node properties that uniquely identify the node (e.g. id)

  • +
  • node properties are used to connect a node to other nodes (i.e. they are used as part of a TargetNodeMatcher on a CartographyRelSchema.)

  • +
  • a node’s lastupdated field – this is used to enable faster cleanup jobs

  • +
+

As seen in the above definition for EMRClusterNodeProperties.arn, you can also explicitly specify additional indexes for fields that you expect to be queried on by providing extra_index=True to the PropertyRef constructor:

+
class EMRClusterNodeProperties(CartographyNodeProperties):
+    # ...
+    arn: PropertyRef = PropertyRef('ClusterArn', extra_index=True)
+
+
+

Index creation is idempotent (we only create them if they don’t exist).

+

See below for more information on indexes.

+
+
+
+

Defining relationships

+

Relationships can be defined on CartographyNodeSchema on either their ``sub_resource_relationship` <https://github.com/lyft/cartography/blob/e6ada9a1a741b83a34c1c3207515a1863debeeb9/cartography/graph/model.py#L216-L228>`_ field or their ``other_relationships` <https://github.com/lyft/cartography/blob/e6ada9a1a741b83a34c1c3207515a1863debeeb9/cartography/graph/model.py#L230-L237>`_ field (you can find an example of other_relationships here in our test data).

+

As seen above, an EMRClusterSchema only has a single relationship defined: an ``EMRClusterToAWSAccount` <https://github.com/lyft/cartography/blob/e6ada9a1a741b83a34c1c3207515a1863debeeb9/cartography/intel/aws/emr.py#L94-L103>`_:

+
@dataclass(frozen=True)
+# (:EMRCluster)<-[:RESOURCE]-(:AWSAccount)
+class EMRClusterToAWSAccount(CartographyRelSchema):
+    target_node_label: str = 'AWSAccount'  # (1)
+    target_node_matcher: TargetNodeMatcher = make_target_node_matcher(  # (2)
+        {'id': PropertyRef('AccountId', set_in_kwargs=True)},
+    )
+    direction: LinkDirection = LinkDirection.INWARD  # (3)
+    rel_label: str = "RESOURCE"  # (4)
+    properties: EMRClusterToAwsAccountRelProperties = EMRClusterToAwsAccountRelProperties()  #  (5)
+
+
+

This class is best described by explaining how it is processed: build_ingestion_query() will traverse the EMRClusterSchema to its sub_resource_relationship field and find the above EMRClusterToAWSAccount object. With this information, we know to

+
    +
  • draw a relationship to an AWSAccount node (1) using the label “RESOURCE” (4)

  • +
  • by matching on the AWSAccount’s “id” field” (2)

  • +
  • where the relationship directionality is pointed inward toward the EMRCluster (3)

  • +
  • making sure to define a set of properties for the relationship (5). The full example RelProperties is very short:

  • +
+
@dataclass(frozen=True)
+class EMRClusterToAwsAccountRelProperties(CartographyRelProperties):
+    lastupdated: PropertyRef = PropertyRef('lastupdated', set_in_kwargs=True)
+
+
+
+
+

The result

+

And those are all the objects necessary for this example! The resulting query will look something like this:

+
UNWIND $DictList AS item
+    MERGE (i:EMRCluster{id: item.Id})
+    ON CREATE SET i.firstseen = timestamp()
+    SET
+        i.lastupdated = $lastupdated,
+        i.arn = item.ClusterArn
+        // ...
+
+        WITH i, item
+        CALL {
+            WITH i, item
+
+            OPTIONAL MATCH (j:AWSAccount{id: $AccountId})
+            WITH i, item, j WHERE j IS NOT NULL
+            MERGE (i)<-[r:RESOURCE]-(j)
+            ON CREATE SET r.firstseen = timestamp()
+            SET
+                r.lastupdated = $lastupdated
+        }
+
+
+

And that’s basically all you need to know to understand how to define your own nodes and relationships using cartography’s data objects. For more information, you can view the object model API documentation as a reference.

+
+
+
+

Additional concepts

+

This section explains cartography general patterns, conventions, and design decisions.

+
+

cartography’s update_tag:

+

cartography‘s global config object carries around an ``update_tag` property <https://github.com/lyft/cartography/blob/8d60311a10156cd8aa16de7e1fe3e109cc3eca0f/cartography/cli.py#L91-L98>`_ +which is a tag/label associated with the current sync. +Cartography’s CLI code sets this to a Unix timestamp of when the CLI was run.

+

All cartography intel modules set the lastupdated property on all nodes and all relationships to this update_tag.

+
+
+

All nodes need these fields

+
    +
  • +
    `id` - an ID should be a string that uniquely identifies the node. In AWS, this is usually an

    ARN. In GCP, this is usually a partial URI.

    +

    If possible, we should use API-provided fields for IDs and not create our own. +In some cases though this is unavoidable - +see GCPNetworkTag.

    +

    When setting an id, ensure that you also include the field name that it came from. For example, since we’ve +decided to use partial_uris as an id for a GCPVpc, we should include both partial_uri and id on the node. +This way, a user can tell what fields were used to derive the id. This is accomplished here

    +
    +
    +
  • +
  • lastupdated - See below on how this gets set automatically.

  • +
  • firstseen - See below on how this gets set automatically.

  • +
+
+
+

All relationships need these fields

+

Cartography currently does not create indexes on relationships, so in most cases we should keep relationships lightweight with only these two fields:

+
    +
  • lastupdated - See below on how this gets set automatically.

  • +
  • firstseen - See below on how this gets set automatically.

  • +
+
+
+

Run queries only on indexed fields for best performance

+

In this older example of ingesting GCP VPCs, we connect VPCs with GCPProjects +based on GCPProject ``id`s and GCPVpc ids <https://github.com/lyft/cartography/blob/8d60311a10156cd8aa16de7e1fe3e109cc3eca0f/cartography/intel/gcp/compute.py#L451>`_. +ids are indexed, as seen here +and here. +All of these queries use indexes for faster lookup.

+
+
+

indexes.cypher

+

Older intel modules define indexes in indexes.cypher. +By using CartographyNodeSchema and CartographyRelSchema objects, indexes are automatically created so you don’t need to update this file!

+
+
+

lastupdated and firstseen

+

On every cartography node and relationship, we set the lastupdated field to the UPDATE_TAG and firstseen field to timestamp() (a built-in Neo4j function equivalent to epoch time in milliseconds). This is automatically handled by the cartography object model.

+
+
+
+

Cleanup

+

We have just added new nodes and relationships to the graph, and we have also updated previously-added ones +by using MERGE. We now need to delete nodes and relationships that no longer exist, and we do this by removing +all nodes and relationships that have lastupdated NOT set to the update_tag of this current run.

+

By using Cartography schema objects, a cleanup function is trivial to write:

+
def cleanup(neo4j_session: neo4j.Session, common_job_parameters: Dict) -> None:
+    logger.debug("Running EMR cleanup job.")
+    cleanup_job = GraphJob.from_node_schema(EMRClusterSchema(), common_job_parameters)
+    cleanup_job.run(neo4j_session)
+
+
+

Older intel modules still do this process with hand-written cleanup jobs that work like this:

+
    +
  • Delete all old nodes

    +
    +

    You can see this in our GCP VPCs example. +We run DETACH DELETE to delete an old node and disconnect it from all other nodes.

    +
    +
      +
    • Delete all old relationships

      +

      You can see this in the GCP VPC example here +and here.

      +
        +
      • Q: We just DETACH DELETE‘d the node. Why do we need to delete the relationships too?

      • +
      • +
        A: There are cases where the node may continue to exist but the relationships between it and other nodes have changed.

        Explicitly deleting stale relationships accounts for this case. +See this short discussion.

        +
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+
+

Error handling principles

+
    +
  • Don’t catch the base Exception class when error handling because it makes problems difficult to trace.

  • +
  • Do catch the narrowest possible class of exception.

  • +
  • Only catch exceptions when your code can resolve the issue. Otherwise, allow exceptions to bubble up.

  • +
+
+
+

Schema

+
    +
  • Update the schema +with every change!

  • +
+
+
+

Making tests

+ +
+
+

Other

+
    +
  • We prefer and will accept PRs which incrementally add information from a particular data source. Incomplete +representations are OK provided they are consistent over time. For example, we don’t sync 100% of AWS resources but the +resources that exist in the graph don’t change across syncs.

  • +
  • Each intel module offers its own view of the graph

    +
    +

    ℹ️ This best practice is a little more less precise, so if you’ve gotten to this point and you need clarification, just +submit your PR and ask us.

    +

    As much as possible, each intel module should ingest data without assuming that a different module will ingest the +same data. Explained another way, each module should “offer its own perspective” on the data. We believe doing this +gives us a more complete graph. Below are some key guidelines clarifying and justifying this design choice.

    +
    +
      +
    • Use MERGE when connecting one node type to another node type.

    • +
    • It is possible (and encouraged) for more than one intel module to modify the same node type.

      +
      +

      For example, when we connect RDS instances to their associated EC2 security +groups +there are actually two different intel modules that retrieve EC2 security group data: the RDS module +returns partial group data, +and the EC2 module returns more complete data as it calls APIs specific for retrieving and loading security groups. +Because both the RDS and EC2 modules MERGE on a unique ID, we don’t need to worry about +creating duplicate nodes in the graph.

      +

      Another less obvious benefit of using MERGE across more than one intel module to connect nodes in this way is that +in many cases, we’ve seen an intel module discover nodes that another module was not aware of!

      +
      +
    • +
    +
  • +
+
+
+ + +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000000..157d78590d --- /dev/null +++ b/index.html @@ -0,0 +1,547 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + What is Cartography? — cartography documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ + logo +
+

What is Cartography?

+

Cartography is a Python tool that consolidates infrastructure assets and the relationships between them in an intuitive graph view powered by a Neo4j database.

+example +
+
+

Why Cartography?

+

Cartography aims to enable a broad set of exploration and automation scenarios. It is particularly good at exposing otherwise hidden dependency relationships between your service’s assets so that you may validate assumptions about security risks.

+

Service owners can generate asset reports, Red Teamers can discover attack paths, and Blue Teamers can identify areas for security improvement. All can benefit from using the graph for manual exploration through a web frontend interface, or in an automated fashion by calling the APIs.

+

Cartography is not the only security graph tool out there, but it differentiates itself by being fully-featured yet generic and extensible enough to help make anyone better understand their risk exposure, regardless of what platforms they use. Rather than being focused on one core scenario or attack vector like the other linked tools, Cartography focuses on flexibility and exploration.

+

You can learn more about the story behind Cartography in our presentation at BSidesSF 2019.

+
+
+
+
+
+
+
+
+
+
+
+ + +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/info.html b/info.html new file mode 100644 index 0000000000..ce12b2bf5a --- /dev/null +++ b/info.html @@ -0,0 +1,568 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + What is Cartography? — cartography documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ + logo +
+

What is Cartography?

+

Cartography is a Python tool that consolidates infrastructure assets and the relationships between them in an intuitive graph view powered by a Neo4j database.

+example +
+
+

Why Cartography?

+

Cartography aims to enable a broad set of exploration and automation scenarios. It is particularly good at exposing otherwise hidden dependency relationships between your service’s assets so that you may validate assumptions about security risks.

+

Service owners can generate asset reports, Red Teamers can discover attack paths, and Blue Teamers can identify areas for security improvement. All can benefit from using the graph for manual exploration through a web frontend interface, or in an automated fashion by calling the APIs.

+

Cartography is not the only security graph tool out there, but it differentiates itself by being fully-featured yet generic and extensible enough to help make anyone better understand their risk exposure, regardless of what platforms they use. Rather than being focused on one core scenario or attack vector like the other linked tools, Cartography focuses on flexibility and exploration.

+

You can learn more about the story behind Cartography in our presentation at BSidesSF 2019.

+
+ + +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/install.html b/install.html new file mode 100644 index 0000000000..d49f9f5114 --- /dev/null +++ b/install.html @@ -0,0 +1,607 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Cartography Installation — cartography documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+

Cartography Installation

+

Time to set up the server that will run Cartography. Cartography should work on both Linux and Windows servers, but bear in mind we’ve only tested it in Linux so far. Cartography supports Python 3.8. Older versions of Python may work but are not explicitly supported.

+
    +
  1. Run the Neo4j graph database version 4.x on your server.

    +
    ⚠️ Neo4j 5.x will probably work but Cartography does not explicitly support it yet.
    +
    +
    +
      +
    1. If you prefer Docker, follow the Neo4j Docker official docs to run a version 4.x container.

      +
        +
      • If you are using an ARM-based machine like an M1 Mac, you should use an ARM image otherwise performance will be very slow - Neo4j keeps ARM builds here.

      • +
      • If you’re just playing around, you can specify the --env=NEO4J_AUTH=none argument to your docker command to run a Neo4j container without authentication.

      • +
      +
    2. +
    3. Else if you prefer a manual install,

      +
        +
      1. Neo4j requires a JVM (JDK/JRE 11 or higher) to be installed. One option is to install Amazon Coretto 11.

        +
        ⚠️ Make sure you have `JAVA_HOME` environment variable set. The following works for Mac OS: `export JAVA_HOME=$(/usr/libexec/java_home)`
        +
        +
        +
      2. +
      3. Go to the Neo4j download page, and download Neo4j Community Edition 4.4.*. If you prefer Docker, you can view Neo4j’s instructions [here].

      4. +
      5. Install Neo4j on the server you will run Cartography on.

        +
        ⚠️ For local testing, you might want to turn off authentication via property `dbms.security.auth_enabled` in file /NEO4J_PATH/conf/neo4j.conf
        +
        +
        +
      6. +
      +
    4. +
    +
  2. +
  3. Configure your data sources. See the configuration section of each relevant intel module for more details.

  4. +
  5. Get and run Cartography

    +
      +
    1. Run pip install cartography to install our code.

    2. +
    3. Finally, to sync your data:

      +
        +
      • For one account using the default profile defined in your AWS config file, run

        +
        cartography --neo4j-uri <uri for your neo4j instance; usually bolt://localhost:7687>
        +
        +
        +
      • +
      • Or for a specific account defined as a separate profile in your AWS config file, set the AWS_PROFILE environment variable, for example

        +
        AWS_PROFILE=other-profile cartography --neo4j-uri <uri for your neo4j instance; usually bolt://localhost:7687>
        +
        +
        +
      • +
      • For more than one AWS account, run

        +
        AWS_CONFIG_FILE=/path/to/your/aws/config cartography --neo4j-uri <uri for your neo4j instance; usually bolt://localhost:7687> --aws-sync-all-profiles
        +
        +
        +

        You can view a full list of Cartography’s CLI arguments by running cartography --help

        +

        The sync will pull data from your configured accounts and ingest data to Neo4j! This process might take a long time if your account has a lot of assets.

        +
      • +
      +
    4. +
    5. See our Operations Guide for tips on running Cartography in production.

    6. +
    +
  6. +
+
+ + +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/modules/_cartography-metadata/schema.html b/modules/_cartography-metadata/schema.html new file mode 100644 index 0000000000..e691b18b4c --- /dev/null +++ b/modules/_cartography-metadata/schema.html @@ -0,0 +1,555 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Cartography metadata schema — cartography documentation + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+

Cartography metadata schema

+

Some Cartography sync jobs write nodes to convey information about the job itself. See https://github.com/lyft/cartography/issues/758 for more background on this.

+
+

SyncMetadata:ModuleSyncMetadata

+

This is a node to represent metadata about the sync job of a particular module. Its existence indicates that a particular sync job did happen. +The ‘types’ used here should be actual node labels. For example, if we did sync a particular AWSAccount’s S3Buckets, +the grouptype is ‘AWSAccount’, the groupid is the particular account’s id, and the syncedtype is ‘S3Bucket’.

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

Source

id

{group_type}_{group_id}_{synced_type}

util.py

grouptype

The parent module’s type

util.py

groupid

The parent module’s id

util.py

syncedtype

The sub-module’s type

util.py

+
+
+ + +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/modules/aws/config.html b/modules/aws/config.html new file mode 100644 index 0000000000..7ddd7a44f4 --- /dev/null +++ b/modules/aws/config.html @@ -0,0 +1,685 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AWS Configuration — cartography documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+

AWS Configuration

+

Follow these steps to analyze AWS assets with Cartography.

+
+

Single AWS Account Setup

+
    +
  1. Set up an AWS identity (user, group, or role) for Cartography to use. Ensure that this identity has the built-in AWS SecurityAudit policy (arn:aws:iam::aws:policy/SecurityAudit) attached. This policy grants access to read security config metadata. The SecurityAudit policy does not yet containe permissions for inspector2, so you will also need the AmazonInspector2ReadOnlyAccess policy.

  2. +
  3. Set up AWS credentials to this identity on your server, using a config and credential file. For details, see AWS’ official guide.

  4. +
  5. [Optional] Configure AWS Retry settings using AWS_MAX_ATTEMPTS and AWS_RETRY_MODE environment variables. This helps in API Rate Limit throttling and TooManyRequestException related errors. For details, see AWS’ official guide.

  6. +
+
+
+

Multiple AWS Account Setup

+

There are many ways to allow Cartography to pull from more than one AWS account. We can’t cover all of them, but we can show you the way we have things set up at Lyft. In this scenario we will assume that you are going to run Cartography on an EC2 instance.

+
    +
  1. Pick one of your AWS accounts to be the “Hub” account. This Hub account will pull data from all of your other accounts - we’ll call those “Spoke” accounts.

  2. +
  3. Set up the IAM roles: Create an IAM role named cartography-read-only on all of your accounts. Configure the role on all accounts as follows:

    +

    #. Attach the built-in AWS SecurityAudit IAM policy (arn:aws:iam::aws:policy/SecurityAudit) to the role. This grants access to read security config metadata. +#.

    +
    +

    Set up a trust relationship so that the Spoke accounts will allow the Hub account to assume the cartography-read-only role. The resulting trust relationship should look something like this:

    +
    {
    +  "Version": "2012-10-17",
    +  "Statement": [
    +    {
    +      "Effect": "Allow",
    +      "Principal": {
    +        "AWS": "arn:aws:iam::<Hub's account number>:root"
    +      },
    +      "Action": "sts:AssumeRole"
    +    }
    +  ]
    +}
    +
    +
    +
    +
      +
    1. Allow a role in the Hub account to assume the ``cartography-read-only`` role on your Spoke account(s).

      +
        +
      • On the Hub account, create a role called cartography-service.

      • +
      • On this new cartography-service role, add an inline policy with the following JSON:

        +
           {
        +     "Version": "2012-10-17",
        +     "Statement": [
        +       {
        +         "Effect": "Allow",
        +         "Resource": "arn:aws:iam::*:role/cartography-read-only",
        +         "Action": "sts:AssumeRole"
        +       },
        +       {
        +         "Effect": "Allow",
        +         "Action": "ec2:DescribeRegions",
        +         "Resource": "*"
        +       }
        +     ]
        +   }
        +
        +This allows the Hub role to assume the ``cartography-read-only`` role on your Spoke accounts and to fetch all the different regions used by the Spoke accounts.
        +
        +
        +
      • +
      • When prompted to name the policy, you can name it anything you want - perhaps CartographyAssumeRolePolicy.

      • +
      +
    2. +
    +
  4. +
  5. Set up your EC2 instance to correctly access these AWS identities

    +
      +
    1. Attach the cartography-service role to the EC2 instance that you will run Cartography on. You can do this by following these official AWS steps.

    2. +
    3. Ensure that the [default] profile in your AWS_CONFIG_FILE file (default ~/.aws/config in Linux, and %UserProfile%\.aws\config in Windows) looks like this:

      +
      [default]
      +region=<the region of your Hub account, e.g. us-east-1>
      +output=json
      +
      +
      +
    4. +
    5. Add a profile for each AWS account you want Cartography to sync with to your AWS_CONFIG_FILE. It will look something like this:

      +
      [profile accountname1]
      +role_arn = arn:aws:iam::<AccountId#1>:role/cartography-read-only
      +region=us-east-1
      +output=json
      +credential_source = Ec2InstanceMetadata
      +
      +[profile accountname2]
      +role_arn = arn:aws:iam::<AccountId#2>:role/cartography-read-only
      +region=us-west-1
      +output=json
      +credential_source = Ec2InstanceMetadata
      +
      +... etc ...
      +
      +
      +
    6. +
    +
  6. +
  7. [Optional] Configure AWS Retry settings using AWS_MAX_ATTEMPTS and AWS_RETRY_MODE environment variables. This helps in API Rate Limit throttling and TooManyRequestException related errors. For details, see AWS’ official guide.

  8. +
+
+
+ + +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/modules/aws/index.html b/modules/aws/index.html new file mode 100644 index 0000000000..d892b598d6 --- /dev/null +++ b/modules/aws/index.html @@ -0,0 +1,593 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Amazon Web Services (AWS) — cartography documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+

Amazon Web Services (AWS)

+

The AWS module has the following coverage:

+
    +
  • API Gateway - Rest APIs, Stages, Certificates, Resources

  • +
  • Config - Configuration Recorders, Delivery Channels, Config Rules

  • +
  • EC2 - Autoscaling groups, Elastic IPs, AMIs, Instances, Internet Gateways, SSH Key Pairs, Launch Templates, Launch Config, Load Balancers (V1 and V2), Network Interfaces, Reserved Instances, Security Groups, EBS Volumes, EBS Snapshots, Subnets, Trusted Gateway, VPC, VPC Peerings

  • +
  • Elasticsearch - Domains

  • +
  • Elastic Kubernetes Service - Clusters

  • +
  • DynamoDB - Tables, Global Secondary Indexes

  • +
  • IAM - Users, User Access Keys, Roles, Groups, Group Membership, Principals, Policies (managed and inline), Assume Role Relationships

  • +
  • KMS - Keys, Key Policy, Grants, Aliases

  • +
  • Lambda - Functions, Aliases, Source Mappings, Layers

  • +
  • RDS - Clusters, Instances, Subnet Groups, Security Groups, Read Replicas

  • +
  • Redshift - Clusters

  • +
  • Route53 - Records, Zones

  • +
  • S3 - Buckets, Bucket Policy, ACLs

  • +
  • Secrets Manager - Secrets

  • +
  • Security Hub - Basic Hub Details

  • +
  • SQS - Queues, Dead Letter Queues

  • +
  • STS

  • +
  • Tags - Tag support for the supported resources, if supported by the resource groups tagging API

  • +
+
+
+
+ + +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/modules/aws/permissions-mapping.html b/modules/aws/permissions-mapping.html new file mode 100644 index 0000000000..b9a6e91350 --- /dev/null +++ b/modules/aws/permissions-mapping.html @@ -0,0 +1,626 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Permissions Mapping — cartography documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+

Permissions Mapping

+
+

How to use Permissions Mapping

+

An AWSPrincipal contains AWSPolicies which contain AWSPolicyStatements which grant permission to resources. Cartography can map in permission relationships between IAM Pricipals (AWSPrincipal nodes) and the resources they have permission to.

+

As mapping all permissions is infeasible both to calculate and store Cartography will only map in the relationships defined in the permission relationship file which includes some default permission mappings including s3 read access.

+

You can specify your own permission mapping file using the --permission-relationships-file command line parameter

+
+

Permission Mapping File

+

The permission relationship file is a yaml file that specifies what permission relationships should be created in the graph. It consists of RPR (Resource Permission Relationship) sections that are going to map specific permissions between AWSPrincipals and resources

+
- target_label: S3Bucket
+  permissions:
+  - S3:GetObject
+  relationship_name: CAN_READ
+
+
+

Each RPR consists of

+
    +
  • ResourceType (string) - The node Label that permissions will be built for

  • +
  • Permissions (list(string)) - The list of permissions to map. If any of these permissions are present between a resource and a permission then the relationship is created.

  • +
  • RelationshipName - (string) - The name of the relationship cartography will create

  • +
+

It can also be used to absract many different permissions into one. This example combines all of the permissions that would allow a dynamodb table to be queried.

+
- target_label: DynamoDBTable
+  permissions:
+  - dynamodb:BatchGetItem
+  - dynamodb:GetItem
+  - dynamodb:GetRecords
+  - dynamodb:Query
+  relationship_name: CAN_QUERY
+
+
+

If a principal has any of the permission it will be mapped

+
+
+
+ + +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/modules/aws/schema.html b/modules/aws/schema.html new file mode 100644 index 0000000000..a71e664d32 --- /dev/null +++ b/modules/aws/schema.html @@ -0,0 +1,8248 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AWS Schema — cartography documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+

AWS Schema

+
+

AWSAccount

+

Representation of an AWS Account.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

name

The name of the account

inscope

Indicates that the account is part of the sync scope (true or false).

foreign

Indicates if the account is not part of the sync scope (true or false). One such example is an account that is trusted as part of cross-account AWSRole trust not in scope for sync.

lastupdated

Timestamp of the last time the node was updated

id

The AWS Account ID number

+
+

Relationships

+
    +
  • Many node types belong to an AWSAccount.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(AWSDNSZone,
    +                      AWSGroup,
    +                      AWSInspectorFinding,
    +                      AWSInspectorPackage,
    +                      AWSLambda,
    +                      AWSPrincipal,
    +                      AWSUser,
    +                      AWSVpc,
    +                      AutoScalingGroup,
    +                      DNSZone,
    +                      DynamoDBTable,
    +                      EBSSnapshot,
    +                      EBSVolume,
    +                      EC2Image,
    +                      EC2Instance,
    +                      EC2Reservation,
    +                      EC2ReservedInstance,
    +                      EC2SecurityGroup,
    +                      ElasticIPAddress,
    +                      ESDomain,
    +                      LaunchConfiguration,
    +                      LaunchTemplate,
    +                      LaunchTemplateVersion,
    +                      LoadBalancer,
    +                      RDSCluster,
    +                      RDSInstance,
    +                      RDSSnapshot,
    +                      SecretsManagerSecret,
    +                      SecurityHub,
    +                      SQSQueue
    +                      SSMInstanceInformation,
    +                      SSMInstancePatch)
    +```
    +
    +
    +
  • +
  • An AWSPolicy node is defined for an AWSAccount.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(AWSPolicy)
    +```
    +
    +
    +
  • +
  • AWSRole nodes are defined in AWSAccount nodes.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(AWSRole)
    +```
    +
    +
    +
  • +
+
+
+
+

AWSCidrBlock

+
+

AWSIpv4CidrBlock

+
+
+

AWSIpv6CidrBlock

+

Representation of an AWS CidrBlock used in VPC configuration. +The AWSCidrBlock defines the base label +type for AWSIpv4CidrBlock and AWSIpv6CidrBlock

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

cidr_block

The CIDR block

block_state

The state of the block

association_id

the association id if the block is associated to a VPC

lastupdated

Timestamp of the last time the node was updated

id

Unique identifier defined with the VPC association and the cidr_block

+
+
+

Relationships

+
    +
  • AWSVpc association

    +
    (AWSVpc)-[BLOCK_ASSOCIATION]->(AWSCidrBlock)
    +
    +
    +
  • +
  • Peering connection where AWSCidrBlock is an accepter or requester cidr.

    +
    (AWSCidrBlock)<-[REQUESTER_CIDR]-(AWSPeeringConnection)
    +(AWSCidrBlock)<-[ACCEPTER_CIDR]-(AWSPeeringConnection)
    +
    +
    +

    Example of high level view of peering (without security group permissions)

    +
    MATCH p=(:AWSAccount)-[:RESOURCE|BLOCK_ASSOCIATION*..]->(:AWSCidrBlock)<-[:ACCEPTER_CIDR]-(:AWSPeeringConnection)-[:REQUESTER_CIDR]->(:AWSCidrBlock)<-[:RESOURCE|BLOCK_ASSOCIATION*..]-(:AWSAccount)
    +RETURN p
    +
    +
    +

    Exploring detailed inbound peering rules

    +
    MATCH (outbound_account:AWSAccount)-[:RESOURCE|BLOCK_ASSOCIATION*..]->(:AWSCidrBlock)<-[:ACCEPTER_CIDR]-(:AWSPeeringConnection)-[:REQUESTER_CIDR]->(inbound_block:AWSCidrBlock)<-[:BLOCK_ASSOCIATION]-(inbound_vpc:AWSVpc)<-[:RESOURCE]-(inbound_account:AWSAccount)
    +WITH inbound_vpc, inbound_block, outbound_account, inbound_account
    +MATCH (inbound_range:IpRange{id: inbound_block.cidr_block})-[:MEMBER_OF_IP_RULE]->(inbound_rule:IpPermissionInbound)-[:MEMBER_OF_EC2_SECURITY_GROUP]->(inbound_group:EC2SecurityGroup)<-[:MEMBER_OF_EC2_SECURITY_GROUP]-(inbound_vpc)
    +RETURN outbound_account.name, inbound_account.name, inbound_range.range, inbound_rule.fromport, inbound_rule.toport, inbound_rule.protocol, inbound_group.name, inbound_vpc.id
    +
    +
    +
  • +
+
+
+
+

AWSGroup

+

Representation of AWS IAM Groups.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

path

The path to the group (IAM identifier, see linked docs above for details)

groupid

Unique string identifying the group

name

The friendly name that identifies the group

createdate

ISO 8601 date-time string when the group was created

arn

The AWS-global identifier for this group

+
+

Relationships

+
    +
  • Objects part of an AWSGroup may assume AWSRoles.

    +
    ```
    +(AWSGroup)-[STS_ASSUMEROLE_ALLOW]->(AWSRole)
    +```
    +
    +
    +
  • +
  • AWSUsers and AWSPrincipals can be members of AWSGroups.

    +
    ```
    +(AWSUser, AWSPrincipal)-[MEMBER_AWS_GROUP]->(AWSGroup)
    +```
    +
    +
    +
  • +
  • AWSGroups belong to AWSAccounts.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(AWSGroup)
    +```
    +
    +
    +
  • +
+
+
+
+

AWSInspectorFinding

+

Representation of an AWS Inspector Finding

+
+

Relationships

+
    +
  • AWSInspectorFinding may affect EC2 Instances

    +
    (AWSInspectorFinding)-[:AFFECTS]->(EC2Instance)
    +
    +
    +
  • +
  • AWSInspectorFinding may affect ECR Repositories

    +
    (AWSInspectorFinding)-[:AFFECTS]->(ECRRepository)
    +
    +
    +
  • +
  • AWSInspectorFinding may affect ECR Images

    +
    (AWSInspectorFinding)-[:AFFECTS]->(ECRImage)
    +
    +
    +
  • +
  • AWSInspectorFindings belong to AWSAccounts.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(AWSInspectorFinding)
    +```
    +
    +
    +
  • +
+
+
+
+

AWSInspectorPackage

+

Representation of an AWS Inspector Finding Package

+
+

Relationships

+
    +
  • AWSInspectorFindings have AWSInspectorPackages.

    +
    ```
    +(AWSInspectorFindings)-[HAS]->(AWSInspectorPackages)
    +```
    +
    +
    +
  • +
  • AWSInspectorPackages belong to AWSAccounts.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(AWSInspectorPackages)
    +```
    +
    +
    +
  • +
+
+
+
+

AWSLambda

+

Representation of an AWS Lambda Function.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The arn of the lambda function

name

The name of the lambda function

modifieddate

Timestamp of the last time the function was last updated

runtime

The runtime environment for the Lambda function

description

The description of the Lambda function

timeout

The amount of time in seconds that Lambda allows a function to run before stopping it

memory

The memory that’s allocated to the function

codesize

The size of the function’s deployment package, in bytes.

handler

The function that Lambda calls to begin executing your function.

version

The version of the Lambda function.

tracingconfigmode

The function’s AWS X-Ray tracing configuration mode.

revisionid

The latest updated revision of the function or alias.

state

The current state of the function.

statereason

The reason for the function’s current state.

statereasoncode

The reason code for the function’s current state.

lastupdatestatus

The status of the last update that was performed on the function.

lastupdatestatusreason

The reason for the last update that was performed on the function.

lastupdatestatusreasoncode

The reason code for the last update that was performed on the function.

packagetype

The type of deployment package.

signingprofileversionarn

The ARN of the signing profile version.

signingjobarn

The ARN of the signing job.

codesha256

The SHA256 hash of the function’s deployment package.

architectures

The instruction set architecture that the function supports. Architecture is a string array with one of the valid values.

masterarn

For Lambda@Edge functions, the ARN of the main function.

kmskeyarn

The KMS key that’s used to encrypt the function’s environment variables. This key is only returned if you’ve configured a customer managed key.

+
+

Relationships

+
    +
  • AWSLambda function are resources in an AWS Account.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(AWSLambda)
    +```
    +
    +
    +
  • +
  • AWSLambda functions may act as AWSPrincipals via role assumption.

    +
    ```
    +(AWSLambda)-[STS_ASSUME_ROLE_ALLOW]->(AWSPrincipal)
    +```
    +
    +
    +
  • +
  • AWSLambda functions may also have aliases.

    +
    ```
    +(AWSLambda)-[KNOWN_AS]->(AWSLambdaFunctionAlias)
    +```
    +
    +
    +
  • +
  • AWSLambda functions may have the resource AWSLambdaEventSourceMapping.

    +
    ```
    +(AWSLambda)-[RESOURCE]->(AWSLambdaEventSourceMapping)
    +```
    +
    +
    +
  • +
  • AWSLambda functions has AWS Lambda Layers.

    +
    ```
    +(AWSLambda)-[HAS]->(AWSLambdaLayer)
    +```
    +
    +
    +
  • +
  • AWSLambda functions has AWS ECR Images.

    +
    ```
    +(AWSLambda)-[HAS]->(ECRImage)
    +```
    +
    +
    +
  • +
+
+
+
+

AWSLambdaFunctionAlias

+

Representation of an AWSLambdaFunctionAlias.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The arn of the lambda function alias

name

The name of the lambda function alias

functionversion

The function version that the alias invokes.

revisionid

A unique identifier that changes when you update the alias.

description

The description of the alias.

+
+

Relationships

+
    +
  • AWSLambda functions may also have aliases.

    +
    ```
    +(AWSLambda)-[KNOWN_AS]->(AWSLambdaFunctionAlias)
    +```
    +
    +
    +
  • +
+
+
+
+

AWSLambdaEventSourceMapping

+

Representation of an AWSLambdaEventSourceMapping.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The id of the event source mapping

batchsize

The maximum number of items to retrieve in a single batch.

startingposition

The position in a stream from which to start reading.

startingpositiontimestamp

The time from which to start reading.

parallelizationfactor

The number of batches to process from each shard concurrently.

maximumbatchingwindowinseconds

The maximum amount of time to gather records before invoking the function, in seconds.

eventsourcearn

The Amazon Resource Name (ARN) of the event source.

lastmodified

The date that the event source mapping was last updated, or its state changed.

state

The state of the event source mapping.

maximumrecordage

Discard records older than the specified age.

bisectbatchonfunctionerror

If the function returns an error, split the batch in two and retry.

maximumretryattempts

Discard records after the specified number of retries.

tumblingwindowinseconds

The duration in seconds of a processing window.

lastprocessingresult

The result of the last AWS Lambda invocation of your Lambda function.

+
+

Relationships

+
    +
  • AWSLambda functions may have the resource AWSLambdaEventSourceMapping.

    +
    ```
    +(AWSLambda)-[RESOURCE]->(AWSLambdaEventSourceMapping)
    +```
    +
    +
    +
  • +
+
+
+
+

AWSLambdaLayer

+

Representation of an AWSLambdaLayer.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The arn of the lambda function layer

codesize

The size of the layer archive in bytes.

signingprofileversionarn

The Amazon Resource Name (ARN) for a signing profile version.

signingjobarn

The Amazon Resource Name (ARN) of a signing job.

+
+

Relationships

+
    +
  • AWSLambda functions has AWS Lambda Layers.

    +
    ```
    +(AWSLambda)-[HAS]->(AWSLambdaLayer)
    +```
    +
    +
    +
  • +
+
+
+
+

AWSPolicy

+

Representation of an AWS Policy.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

name

The friendly name (not ARN) identifying the policy

createdate

ISO 8601 date-time when the policy was created

type

“inline” or “managed” - the type of policy it is

arn

The arn for this object

id

The unique identifer for a policy. If the policy is managed this will be the Arn. If the policy is inline this will calculated as AWSPrincipal/inline_policy/PolicyName

+
+

Relationships

+
    +
  • AWSPrincipal contains AWSPolicy

    +
    ```
    +(AWSPrincipal)-[POLICY]->(AWSPolicy)
    +```
    +
    +
    +
  • +
  • AWSPolicy contains AWSPolicyStatement

    +
    ```
    +(AWSPolicy)-[STATEMENTS]->(AWSPolicyStatement)
    +```
    +
    +
    +
  • +
+
+
+
+

AWSPolicyStatement

+

Representation of an AWS Policy Statement.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

resources

(array) The resources the statement is applied to. Can contain wildcards

actions

(array) The permissions allowed or denied by the statement. Can contain wildcards

notactions

(array) The permission explicitly not matched by the statement

effect

“Allow” or “Deny” - the effect of this statement

id

The unique identifier for a statement.
If the statement has an Sid the id will be calculated as AWSPolicy.id/statements/Sid.
If the statement has no Sid the id will be calculated as AWSPolicy.id/statements/index of statement in statement list

+
+

Relationships

+
    +
  • AWSPolicy contains AWSPolicyStatement

    +
    ```
    +(AWSPolicy)-[STATEMENTS]->(AWSPolicyStatement)
    +```
    +
    +
    +
  • +
+
+
+
+

AWSPrincipal

+

Representation of an AWSPrincipal.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

path

The path to the principal

name

The friendly name of the principal

createdate

ISO 8601 date-time when the principal was created

arn

AWS-unique identifier for this object

userid

The stable and unique string identifying the principal.

passwordlastused

Datetime when this principal’s password was last used

+
+

Relationships

+
    +
  • AWS Principals can be members of AWS Groups.

    +
    ```
    +(AWSPrincipal)-[MEMBER_AWS_GROUP]->(AWSGroup)
    +```
    +
    +
    +
  • +
  • This AccountAccessKey is used to authenticate to this AWSPrincipal.

    +
    ```
    +(AWSPrincipal)-[AWS_ACCESS_KEY]->(AccountAccessKey)
    +```
    +
    +
    +
  • +
  • AWS Roles can trust AWS Principals.

    +
    (AWSRole)-[TRUSTS_AWS_PRINCIPAL]->(AWSPrincipal)
    +
    +
    +
  • +
  • AWS Accounts contain AWS Principals.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(AWSPrincipal)
    +```
    +
    +
    +
  • +
  • Redshift clusters may assume IAM roles. See this article.

    +
    (RedshiftCluster)-[STS_ASSUMEROLE_ALLOW]->(AWSPrincipal)
    +
    +
    +
  • +
+
+
+
+

AWSPrincipal::AWSUser

+

Representation of an AWSUser. An AWS User is a type of AWS Principal.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

path

The path to the user

name

The friendly name of the user

createdate

ISO 8601 date-time when the user was created

arn

AWS-unique identifier for this object

userid

The stable and unique string identifying the user.

passwordlastused

Datetime when this user’s password was last used

+
+

Relationships

+
    +
  • AWS Users can be members of AWS Groups.

    +
    ```
    +(AWSUser)-[MEMBER_AWS_GROUP]->(AWSGroup)
    +```
    +
    +
    +
  • +
  • AWS Users can assume AWS Roles.

    +
    ```
    +(AWSUser)-[STS_ASSUMEROLE_ALLOW]->(AWSRole)
    +```
    +
    +
    +
  • +
  • This AccountAccessKey is used to authenticate to this AWSUser

    +
    ```
    +(AWSUser)-[AWS_ACCESS_KEY]->(AccountAccessKey)
    +```
    +
    +
    +
  • +
  • AWS Accounts contain AWS Users.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(AWSUser)
    +```
    +
    +
    +
  • +
+
+
+
+

AWSPrincipal::AWSRole

+

Representation of an AWS IAM Role. An AWS Role is a type of AWS Principal.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

roleid

The stable and unique string identifying the role.

name

The friendly name that identifies the role.

createdate

The date and time, in ISO 8601 date-time format, when the role was created.

arn

AWS-unique identifier for this object

+
+

Relationships

+
    +
  • Some AWS Groups, Users, Principals, and EC2 Instances can assume AWS Roles.

    +
    (AWSGroup, AWSUser, EC2Instance)-[STS_ASSUMEROLE_ALLOW]->(AWSRole)
    +
    +
    +
  • +
  • Some AWS Roles can assume other AWS Roles.

    +
    (AWSRole)-[STS_ASSUMEROLE_ALLOW]->(AWSRole)
    +
    +
    +
  • +
  • Some AWS Roles trust AWS Principals.

    +
    (AWSRole)-[TRUSTS_AWS_PRINCIPAL]->(AWSPrincipal)
    +
    +
    +
  • +
  • AWS Roles are defined in AWS Accounts.

    +
    (AWSAccount)-[RESOURCE]->(AWSRole)
    +
    +
    +
  • +
+
+
+
+

AWSTransitGateway

+

Representation of an AWS Transit Gateway.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

owner_id

The ID of the AWS account that owns the transit gateway

description

Transit Gateway description

state

Can be one of pending | available | modifying | deleting | deleted

tgw_id

Unique identifier of the Transit Gateway

id

Unique identifier of the Transit Gateway

arn

AWS-unique identifier for this object (same as id)

+
+

Relationships

+
    +
  • Transit Gateways belong to one AWSAccount

    +
    (AWSAccount)-[RESOURCE]->(AWSTransitGateway)
    +
    +
    +
  • +
  • … and can be shared with other accounts

    +
    (AWSAccount)<-[SHARED_WITH]-(AWSTransitGateway)
    +
    +
    +
  • +
  • AWSTag

    +
    (AWSTransitGateway)-[TAGGED]->(AWSTag)
    +
    +
    +
  • +
+
+
+
+

AWSTransitGatewayAttachment

+

Representation of an AWS Transit Gateway Attachment.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

resource_type

Can be one of vpc | vpn | direct-connect-gateway | tgw-peering

state

Can be one of initiating | pendingAcceptance | rollingBack | pending | available | modifying | deleting | deleted | failed | rejected | rejecting | failing

id

Unique identifier of the Transit Gateway Attachment

+
+

Relationships

+
    +
  • AWSAccount

    +
    (AWSAccount)-[RESOURCE]->(AWSTransitGatewayAttachment)
    +
    +
    +
  • +
  • AWSVpc (for VPC attachments)

    +
    (AWSVpc)-[RESOURCE]->(AWSTransitGatewayAttachment {resource_type: 'vpc'})
    +
    +
    +
  • +
  • AWSTransitGateway attachment

    +
    (AWSTransitGateway)<-[ATTACHED_TO]-(AWSTransitGatewayAttachment)
    +
    +
    +
  • +
  • AWSTag

    +
    (AWSTransitGatewayAttachment)-[TAGGED]->(AWSTag)
    +
    +
    +
  • +
+
+
+
+

AWSVpc

+

Representation of an AWS CidrBlock used in VPC configuration. +More information on https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-vpcs.html

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

vpcid

The VPC unique identifier

primary_cidr_block

The primary IPv4 CIDR block for the VPC.

instance_tenancy

The allowed tenancy of instances launched into the VPC.

state

The current state of the VPC.

region

(optional) the region of this VPC. This field is only available on VPCs in your account. It is not available on VPCs that are external to your account and linked via a VPC peering relationship.

id

Unique identifier defined VPC node (vpcid)

+
+

Relationships

+
    +
  • AWSAccount resource

    +
    (AWSAccount)-[RESOURCE]->(AWSVpc)
    +
    +
    +
  • +
  • AWSVpc and AWSCidrBlock association

    +
    (AWSVpc)-[BLOCK_ASSOCIATION]->(AWSCidrBlock)
    +
    +
    +
  • +
  • AWSVpc and EC2SecurityGroup membership association

    +
    (AWSVpc)<-[MEMBER_OF_EC2_SECURITY_GROUP]-(EC2SecurityGroup)
    +
    +
    +
  • +
  • AWS VPCs can be tagged with AWSTags.

    +
    (AWSVpc)-[TAGGED]->(AWSTag)
    +
    +
    +
  • +
  • Redshift clusters can be members of AWSVpcs.

    +
    (RedshiftCluster)-[MEMBER_OF_AWS_VPC]->(AWSVpc)
    +
    +
    +
  • +
  • Peering connection where AWSVpc is an accepter or requester vpc.

    +
    (AWSVpc)<-[REQUESTER_VPC]-(AWSPeeringConnection)
    +(AWSVpc)<-[ACCEPTER_VPC]-(AWSPeeringConnection)
    +
    +
    +
  • +
+
+
+
+

Tag::AWSTag

+

Representation of an AWS Tag. AWS Tags can be applied to many objects.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

This tag’s unique identifier of the format {TagKey}:{TagValue}. We fabricated this ID.

key

One part of a key-value pair that makes up a tag.

value

One part of a key-value pair that makes up a tag.

region

The region where this tag was discovered.

+
+

Relationships

+
    +
  • AWS VPCs, DB Subnet Groups, EC2 Instances, EC2 SecurityGroups, EC2 Subnets, EC2 Network Interfaces, RDS Instances, and S3 Buckets can be tagged with AWSTags.

    +
    (AWSVpc, DBSubnetGroup, EC2Instance, EC2SecurityGroup, EC2Subnet, NetworkInterface, RDSInstance, S3Bucket)-[TAGGED]->(AWSTag)
    +
    +
    +
  • +
+
+
+
+

AccountAccessKey

+

Representation of an AWS Access Key.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

createdate

Date when access key was created

status

Active: valid for API calls. Inactive: not valid for API calls

lastuseddate

Date when the key was last used

lastusedservice

The service that was last used with the access key

lastusedregion

The region where the access key was last used

accesskeyid

The ID for this access key

+
+

Relationships

+
    +
  • Account Access Keys may authenticate AWS Users and AWS Principal objects.

    +
    ```
    +(AWSUser, AWSPrincipal)-[AWS_ACCESS_KEY]->(AccountAccessKey)
    +```
    +
    +
    +
  • +
+
+
+
+

DBSubnetGroup

+

Representation of an RDS DB Subnet Group. For more information on how RDS instances interact with these, please see this article.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

id

The ARN of the DBSubnetGroup

name

The name of DBSubnetGroup

lastupdated

Timestamp of the last time the node was updated

description

Description of the DB Subnet Group

status

The status of the group

vpc_id

The ID of the VPC (Virtual Private Cloud) that this DB Subnet Group is associated with.

value

The IP address that the DNSRecord points to

+
+

Relationships

+
    +
  • RDS Instances are part of DB Subnet Groups

    +
    (RDSInstance)-[:MEMBER_OF_DB_SUBNET_GROUP]->(DBSubnetGroup)
    +
    +
    +
  • +
  • DB Subnet Groups consist of EC2 Subnets

    +
    (DBSubnetGroup)-[:RESOURCE]->(EC2Subnet)
    +
    +
    +
  • +
  • DB Subnet Groups can be tagged with AWSTags.

    +
    ```
    +(DBSubnetGroup)-[TAGGED]->(AWSTag)
    +```
    +
    +
    +
  • +
+
+
+
+

DNSRecord

+

Representation of a generic DNSRecord.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

name

The name of the DNSRecord

lastupdated

Timestamp of the last time the node was updated

id

The name of the DNSRecord concatenated with the record type

type

The record type of the DNS record

value

The IP address that the DNSRecord points to

+
+

Relationships

+
    +
  • DNSRecords can point to IP addresses.

    +
    ```
    +(DNSRecord)-[DNS_POINTS_TO]->(Ip)
    +```
    +
    +
    +
  • +
  • DNSRecords/AWSDNSRecords can point to each other.

    +
    ```
    +(AWSDNSRecord, DNSRecord)-[DNS_POINTS_TO]->(AWSDNSRecord, DNSRecord)
    +```
    +
    +
    +
  • +
  • DNSRecords can point to LoadBalancers.

    +
    ```
    +(DNSRecord)-[DNS_POINTS_TO]->(LoadBalancer)
    +```
    +
    +
    +
  • +
  • DNSRecords can be members of DNSZones.

    +
    ```
    +(DNSRecord)-[MEMBER_OF_DNS_ZONE]->(DNSZone)
    +```
    +
    +
    +
  • +
+
+
+
+

DNSRecord::AWSDNSRecord

+

Representation of an AWS DNS ResourceRecordSet.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

name

The name of the DNSRecord

lastupdated

Timestamp of the last time the node was updated

id

The zoneid for the record, the value of the record, and the type concatenated together

type

The record type of the DNS record

value

If it is an A, ALIAS, or CNAME record, this is the IP address that the DNSRecord points to. If it is an NS record, the name is used here.

+
+

Relationships

+
    +
  • DNSRecords/AWSDNSRecords can point to each other.

    +
    ```
    +(AWSDNSRecord, DNSRecord)-[DNS_POINTS_TO]->(AWSDNSRecord, DNSRecord)
    +```
    +
    +
    +
  • +
  • AWSDNSRecords can point to LoadBalancers.

    +
    ```
    +(AWSDNSRecord)-[DNS_POINTS_TO]->(LoadBalancer, ESDomain)
    +```
    +
    +
    +
  • +
  • AWSDNSRecords can be members of AWSDNSZones.

    +
    ```
    +(AWSDNSRecord)-[MEMBER_OF_DNS_ZONE]->(AWSDNSZone)
    +```
    +
    +
    +
  • +
+
+
+
+

DNSZone

+

Representation of a generic DNS Zone.

+ ++++ + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

name

the name of the DNS zone

comment

Comments about the zone

+
+

Relationships

+
    +
  • DNSRecords can be members of DNSZones.

    +
    ```
    +(DNSRecord)-[MEMBER_OF_DNS_ZONE]->(DNSZone)
    +```
    +
    +
    +
  • +
+
+
+
+

DNSZone::AWSDNSZone

+

Representation of an AWS DNS HostedZone.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

name

the name of the DNS zone

zoneid

The zoneid defined by Amazon Route53

lastupdated

Timestamp of the last time the node was updated

comment

Comments about the zone

privatezone

Whether or not this is a private DNS zone

+
+

Relationships

+
    +
  • AWSDNSZones and DNSZones can be part of AWSAccounts.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(AWSDNSZone)
    +```
    +
    +
    +
  • +
  • AWSDNSRecords can be members of AWSDNSZones.

    +
    ```
    +(AWSDNSRecord)-[MEMBER_OF_DNS_ZONE]->(AWSDNSZone)
    +```
    +
    +
    +
  • +
  • AWSDNSZone can have subzones hosted by another AWSDNSZone

    +
    ```
    +(AWSDNSZone)<-[SUBZONE]-(AWSDNSZone)
    +```
    +
    +
    +
  • +
+
+
+
+

DynamoDBTable

+

Representation of an AWS DynamoDBTable.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

name

The name of the table

id

The ARN of the table

region

The AWS region of the table

arn

The AWS-unique identifier

+
+

Relationships

+
    +
  • DynamoDBTables belong to AWS Accounts.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(DynamoDBTable)
    +```
    +
    +
    +
  • +
+
+
+
+

EC2Instance

+

Our representation of an AWS EC2 Instance.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

Same as instanceid below.

instanceid

The instance id provided by AWS. This is globally unique

publicdnsname

The public DNS name assigned to the instance

publicipaddress

The public IPv4 address assigned to the instance if applicable

privateipaddress

The private IPv4 address assigned to the instance

imageid

The ID of the Amazon Machine Image used to launch the instance

subnetid

The ID of the EC2Subnet associated with this instance

instancetype

The instance type. See API docs linked above for specifics.

iaminstanceprofile

The IAM instance profile associated with the instance, if applicable.

launchtime

The time the instance was launched

monitoringstate

Whether monitoring is enabled. Valid Values: disabled, disabling, enabled, pending.

state

The current state of the instance.

launchtimeunix

The time the instance was launched in unix time

region

The AWS region this Instance is running in

exposed_internet

The exposed_internet flag on an EC2 instance is set to True when (1) the instance is part of an EC2 security group or is connected to a network interface connected to an EC2 security group that allows connectivity from the 0.0.0.0/0 subnet or (2) the instance is connected to an Elastic Load Balancer that has its own exposed_internet flag set to True.

availabilityzone

The Availability Zone of the instance.

tenancy

The tenancy of the instance.

hostresourcegrouparn

The ARN of the host resource group in which to launch the instances.

platform

The value is Windows for Windows instances; otherwise blank.

architecture

The architecture of the image.

ebsoptimized

Indicates whether the instance is optimized for Amazon EBS I/O.

bootmode

The boot mode of the instance.

instancelifecycle

Indicates whether this is a Spot Instance or a Scheduled Instance.

hibernationoptions

Indicates whether the instance is enabled for hibernation.

+
+

Relationships

+
    +
  • EC2 Instances can be part of subnets

    +
    ```
    +(EC2Instance)-[PART_OF_SUBNET]->(EC2Subnet)
    +```
    +
    +
    +
  • +
  • EC2 Instances can have NetworkInterfaces connected to them

    +
    ```
    +(EC2Instance)-[NETWORK_INTERFACE]->(NetworkInterface)
    +```
    +
    +
    +
  • +
  • EC2 Instances may be members of EC2 Reservations

    +
    ```
    +(EC2Instance)-[MEMBER_OF_EC2_RESERVATION]->(EC2Reservation)
    +```
    +
    +
    +
  • +
  • EC2 Instances can be part of EC2 Security Groups

    +
    ```
    +(EC2Instance)-[MEMBER_OF_EC2_SECURITY_GROUP]->(EC2SecurityGroup)
    +```
    +
    +
    +
  • +
  • Load Balancers can expose (be connected to) EC2 Instances

    +
    ```
    +(LoadBalancer)-[EXPOSE]->(EC2Instance)
    +```
    +
    +
    +
  • +
  • Package and Dependency nodes can be deployed in EC2 Instances.

    +
    ```
    +(Package, Dependency)-[DEPLOYED]->(EC2Instance)
    +```
    +
    +
    +
  • +
  • AWS Accounts contain EC2 Instances.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(EC2Instance)
    +```
    +
    +
    +
  • +
  • EC2 Instances can be tagged with AWSTags.

    +
    ```
    +(EC2Instance)-[TAGGED]->(AWSTag)
    +```
    +
    +
    +
  • +
  • AWS EBS Volumes are attached to an EC2 Instance

    +
    ```
    +(EBSVolume)-[ATTACHED_TO]->(EC2Instance)
    +```
    +
    +
    +
  • +
  • EC2 Instances can assume IAM Roles.

    +
    ```
    +(EC2Instance)-[STS_ASSUMEROLE_ALLOW]->(AWSRole)
    +```
    +
    +
    +
  • +
  • EC2Instances can have SSMInstanceInformation

    +
    ```
    +(EC2Instance)-[HAS_INFORMATION]->(SSMInstanceInformation)
    +```
    +
    +
    +
  • +
  • EC2Instances can have SSMInstancePatches

    +
    ```
    +(EC2Instance)-[HAS_PATCH]->(SSMInstancePatch)
    +```
    +
    +
    +
  • +
+
+
+
+

EC2KeyPair

+

Representation of an AWS EC2 Key Pair

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

keyname

The name of the key pair

keyfingerprint

The fingerprint of the public key

region

The AWS region

arn

AWS-unique identifier for this object

id

same as arn

user_uploaded

user_uploaded is set to True if the the KeyPair was uploaded to AWS. Uploaded KeyPairs will have 128-bit MD5 hashed keyfingerprint, and KeyPairs from AWS will have 160-bit SHA-1 hashed keyfingerprints.

duplicate_keyfingerprint

duplicate_keyfingerprint is set to True if the KeyPair has the same keyfingerprint as another KeyPair.

+
+

Relationships

+
    +
  • EC2 key pairs are contained in AWS Accounts.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(EC2KeyPair)
    +```
    +
    +
    +
  • +
  • EC2 key pairs can be used to log in to AWS EC2 isntances.

    +
    ```
    +(EC2KeyPair)-[SSH_LOGIN_TO]->(EC2Instance)
    +```
    +
    +
    +
  • +
  • EC2 key pairs have matching keyfingerprint.

    +
    ```
    +(EC2KeyPair)-[MATCHING_FINGERPRINT]->(EC2KeyPair)
    +```
    +
    +
    +
  • +
+
+
+
+

EC2PrivateIp

+

Representation of an AWS EC2 InstancePrivateIpAddress

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

network_interface_id

id of the network interface with which the IP is associated with

primary

Indicates whether this IPv4 address is the primary private IP address of the network interface.

private_ip_address

The private IPv4 address of the network interface.

public_ip

The public IP address or Elastic IP address bound to the network interface.

ip_owner_id

Id of the owner, e.g. amazon-elb for ELBs

+
+

Relationships

+
    +
  • EC2PrivateIps are connected with NetworkInterfaces.

    +
    ```
    +(NetworkInterface)-[PRIVATE_IP_ADDRESS]->(EC2PrivateIp)
    +```
    +
    +
    +
  • +
+
+
+
+

EC2Reservation

+

Representation of an AWS EC2 Reservation.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

requesterid

The ID of the requester that launched the instances on your behalf

reservationid

The ID of the reservation.

region

The AWS region

ownerid

The ID of the AWS account that owns the reservation.

+
+

Relationships

+
    +
  • EC2 reservations are contained in AWS Accounts.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(EC2Reservation)
    +```
    +
    +
    +
  • +
  • EC2 Instances are members of EC2 reservations.

    +
    ```
    +(EC2Instance)-[MEMBER_OF_EC2_RESERVATION]->(EC2Reservation)
    +```
    +
    +
    +
  • +
+
+
+
+

EC2SecurityGroup

+

Representation of an AWS EC2 Security Group.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

groupid

The ID of the security group

name

The name of the security group

description

A description of the security group

id

Same as groupid

region

The AWS region this security group is installed in

+
+

Relationships

+
    +
  • EC2 Instances, Network Interfaces, Load Balancers, Elastic Search Domains, IP Rules, IP Permission Inbound nodes, and RDS Instances can be members of EC2 Security Groups.

    +
    ```
    +(EC2Instance,
    + NetworkInterface,
    + LoadBalancer,
    + ESDomain,
    + IpRule,
    + IpPermissionInbound,
    + RDSInstance,
    + AWSVpc)-[MEMBER_OF_EC2_SECURITY_GROUP]->(EC2SecurityGroup)
    +```
    +
    +
    +
  • +
  • Load balancers can define inbound Source Security Groups.

    +
    ```
    +(LoadBalancer)-[SOURCE_SECURITY_GROUP]->(EC2SecurityGroup)
    +```
    +
    +
    +
  • +
  • AWS Accounts contain EC2 Security Groups.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(EC2SecurityGroup)
    +```
    +
    +
    +
  • +
  • EC2 SecurityGroups can be tagged with AWSTags.

    +
    ```
    +(EC2SecurityGroup)-[TAGGED]->(AWSTag)
    +```
    +
    +
    +
  • +
  • Redshift clusters can be members of EC2 Security Groups.

    +
    (RedshiftCluster)-[MEMBER_OF_EC2_SECURITY_GROUP]->(EC2SecurityGroup)
    +
    +
    +
  • +
+
+
+
+

EC2Subnet

+

Representation of an AWS EC2 Subnet.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

subnetid

The ID of the subnet

id

same as subnetid

region

The AWS region the subnet is installed on

name

The IPv4 CIDR block assigned to the subnet

cidr_block

The IPv4 CIDR block assigned to the subnet

available_ip_address_count

The number of unused private IPv4 addresses in the subnet. The IPv4 addresses for any stopped instances are considered unavailable

default_for_az

Indicates whether this is the default subnet for the Availability Zone.

map_customer_owned_ip_on_launch

Indicates whether a network interface created in this subnet (including a network interface created by RunInstances ) receives a customer-owned IPv4 address

map_public_ip_on_launch

Indicates whether instances launched in this subnet receive a public IPv4 address

subnet_arn

The Amazon Resource Name (ARN) of the subnet

availability_zone

The Availability Zone of the subnet

availability_zone_id

The AZ ID of the subnet

state

The current state of the subnet.

assignipv6addressoncreation

Indicates whether a network interface created in this subnet (including a network interface created by RunInstances ) receives an IPv6 address.

+
+

Relationships

+
    +
  • A Network Interface can be part of an EC2 Subnet.

    +
    ```
    +(NetworkInterface)-[PART_OF_SUBNET]->(EC2Subnet)
    +```
    +
    +
    +
  • +
  • An EC2 Instance can be part of an EC2 Subnet.

    +
    ```
    +(EC2Instance)-[PART_OF_SUBNET]->(EC2Subnet)
    +```
    +
    +
    +
  • +
  • A LoadBalancer can be part of an EC2 Subnet.

    +
    ```
    +(LoadBalancer)-[SUBNET]->(EC2Subnet)
    +
    +```
    +
    +
    +
  • +
  • A LoadBalancer can be part of an EC2 Subnet.

    +
    ```
    +(LoadBalancer)-[PART_OF_SUBNET]->(EC2Subnet)
    +```
    +
    +
    +
  • +
  • A LoadBalancerV2 can be part of an EC2 Subnet.

    +
    ```
    +(LoadBalancerV2)-[PART_OF_SUBNET]->(EC2Subnet)
    +```
    +
    +
    +
  • +
  • DB Subnet Groups consist of EC2 Subnets

    +
    (DBSubnetGroup)-[RESOURCE]->(EC2Subnet)
    +
    +
    +
  • +
  • EC2 Subnets can be tagged with AWSTags.

    +
    ```
    +(EC2Subnet)-[TAGGED]->(AWSTag)
    +```
    +
    +
    +
  • +
  • EC2 Subnets are member of a VPC.

    +
    ```
    +(EC2Subnet)-[MEMBER_OF_AWS_VPC]->(AWSVpc)
    +```
    +
    +
    +
  • +
  • EC2 Subnets belong to AWS Accounts

    +
    ```
    +(AWSAccount)-[RESOURCE]->(EC2Subnet)
    +```
    +
    +
    +
  • +
  • EC2PrivateIps are connected with NetworkInterfaces.

    +
    (NetworkInterface)-[PRIVATE_IP_ADDRESS]->(EC2PrivateIp)
    +
    +
    +
  • +
+
+
+
+

AWSInternetGateway

+
+

Representation of an AWS Interent Gateway.

+
+ ++++ + + + + + + + + + + + + + + + + +

Field

Description

id

Internet gateway ID

arn

Amazon Resource Name

region

The region of the gateway

+
+

Relationships

+
    +
  • Internet Gateways are attached to a VPC.

    +
    ```
    +(AWSInternetGateway)-[ATTACHED_TO]->(AWSVpc)
    +```
    +
    +
    +
  • +
  • Internet Gateways belong to AWS Accounts

    +
    ```
    +(AWSAccount)-[RESOURCE]->(AWSInternetGateway)
    +```
    +
    +
    +
  • +
+
+
+
+

ECRRepository

+

Representation of an AWS Elastic Container Registry Repository.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

id

Same as ARN

arn

The ARN of the repository

name

The name of the repository

region

The region of the repository

created_at

Date and time when the repository was created

+
+

Relationships

+
    +
  • An ECRRepository contains ECRRepositoryImages:

    +
    (:ECRRepository)-[:REPO_IMAGE]->(:ECRRepositoryImage)
    +
    +
    +
  • +
+
+
+
+

ECRRepositoryImage

+

An ECR image may be referenced and tagged by more than one ECR Repository. To best represent this, we’ve created an +ECRRepositoryImage node as a layer of indirection between the repo and the image.

+

More concretely explained, we run +``ecr.list_images()` <https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_ImageIdentifier.html>`_, and then +store the image tag on an ECRRepositoryImage node and the image digest hash on a separate ECRImage node.

+

This way, more than one ECRRepositoryImage can reference/be connected to the same ECRImage.

+ ++++ + + + + + + + + + + + + + + + + +

Field

Description

tag

The tag applied to the repository image, e.g. “latest”

uri

The URI where the repository image is stored

id

same as uri

+
+

Relationships

+
    +
  • An ECRRepository contains ECRRepositoryImages:

    +
    (:ECRRepository)-[:REPO_IMAGE]->(:ECRRepositoryImage)
    +
    +
    +
  • +
  • ECRRepositoryImages reference ECRImages

    +
    (:ECRRepositoryImage)-[:IMAGE]->(:ECRImage)
    +
    +
    +
  • +
+
+
+
+

ECRImage

+

Representation of an ECR image identified by its digest (e.g. a SHA hash). Specifically, this is the “digest part” of +``ecr.list_images()` <https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_ImageIdentifier.html>`_. Also see +ECRRepositoryImage.

+ ++++ + + + + + + + + + + + + + +

Field

Description

digest

The hash of this ECR image

id

Same as digest

+
+

Relationships

+
    +
  • ECRRepositoryImages reference ECRImages

    +
    (:ECRRepositoryImage)-[:IMAGE]->(:ECRImage)
    +
    +
    +
  • +
  • Software packages are a part of ECR Images

    +
    (:Package)-[:DEPLOYED]->(:ECRImage)
    +
    +
    +
  • +
+
+
+
+

Package

+

Representation of a software package, as found by an AWS ECR vulnerability scan.

+ ++++ + + + + + + + + + + + + + + + + +

Field

Description

id

Concatenation of {version}|{name}

version

The version of the package, includes the Linux distro that it was built for

name

The name of the package

+
+

Relationships

+
    +
  • Software packages are a part of ECR Images

    +
    (:Package)-[:DEPLOYED]->(:ECRImage)
    +
    +
    +
  • +
  • AWS ECR scans yield ECRScanFindings that affect software packages

    +
    (:ECRScanFindings)-[:AFFECTS]->(:Package)
    +
    +
    +
  • +
+
+
+
+

ECRScanFinding (:Risk:CVE)

+

Representation of a scan finding from AWS ECR. This is the result output of ``ecr.describe_image_scan_findings()` <https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_DescribeImageScanFindings.html>`_.

+ ++++ + + + + + + + + + + + + + + + + + + + +

Field

Description

name

The name of the ECR scan finding, e.g. a CVE name

id

Same as name

severity

The severity of the risk

uri

A URI link to a descriptive article on the risk

+
+

Relationships

+
    +
  • AWS ECR scans yield ECRScanFindings that affect software packages

    +
    (:ECRScanFindings)-[:AFFECTS]->(:Package)
    +
    +
    +
  • +
+
+
+
+

EKSCluster

+

Representation of an AWS EKS Cluster.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

created_at

The date and time the cluster was created

region

The AWS region

arn

AWS-unique identifier for this object

id

same as arn

name

Name of the EKS Cluster

endpoint

The endpoint for the Kubernetes API server.

endpoint_public_access

Indicates whether the Amazon EKS public API server endpoint is enabled

exposed_internet

Set to True if the EKS Cluster public API server endpoint is enabled

rolearn

The ARN of the IAM role that provides permissions for the Kubernetes control plane to make calls to AWS API

version

Kubernetes version running

platform_version

Version of EKS

status

Status of the cluster. Valid Values: creating, active, deleting, failed, updating

audit_logging

Whether audit logging is enabled

+
+

Relationships

+
    +
  • EKS Clusters belong to AWS Accounts.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(EKSCluster)
    +```
    +
    +
    +
  • +
+
+
+
+

EMRCluster

+

Representation of an AWS EMR Cluster.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

region

The AWS region

arn

AWS-unique identifier for this object

id

The Id of the EMR Cluster.

instance_collection_type

The instance group configuration of the cluster. A value of INSTANCE_GROUP indicates a uniform instance group configuration. A value of INSTANCE_FLEET indicates an instance fleets configuration.

log_encryption_kms_key_id

The KMS key used for encrypting log files.

requested_ami_version

The AMI version requested for this cluster.

running_ami_version

The AMI version running on this cluster.

release_label

The Amazon EMR release label, which determines the version of open-source application packages installed on the cluster.

auto_terminate

Specifies whether the cluster should terminate after completing all steps.

termination_protected

Indicates whether Amazon EMR will lock the cluster to prevent the EC2 instances from being terminated by an API call or user intervention, or in the event of a cluster error.

visible_to_all_users

Indicates whether the cluster is visible to IAM principals in the Amazon Web Services account associated with the cluster.

master_public_dns_name

The DNS name of the master node. If the cluster is on a private subnet, this is the private DNS name. On a public subnet, this is the public DNS name.

security_configuration

The name of the security configuration applied to the cluster.

autoscaling_role

An IAM role for automatic scaling policies.

scale_down_behavior

The way that individual Amazon EC2 instances terminate when an automatic scale-in activity occurs or an instance group is resized.

custom_ami_id

The ID of a custom Amazon EBS-backed Linux AMI if the cluster uses a custom AMI.

repo_upgrade_on_boot

Specifies the type of updates that are applied from the Amazon Linux AMI package repositories when an instance boots using the AMI.

outpost_arn

The Amazon Resource Name (ARN) of the Outpost where the cluster is launched.

log_uri

The path to the Amazon S3 location where logs for this cluster are stored.

servicerole

Service Role of the EMR Cluster

+
+

Relationships

+
    +
  • EMR Clusters belong to AWS Accounts.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(EMRCluster)
    +```
    +
    +
    +
  • +
+
+
+
+

ESDomain

+

Representation of an AWS ElasticSearch Domain (see ElasticsearchDomainConfig).

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

elasticsearch_cluster_config_instancetype

The instancetype

elasticsearch_version

The version of elasticsearch

elasticsearch_cluster_config_zoneawarenessenabled

Indicates whether multiple Availability Zones are enabled.

elasticsearch_cluster_config_dedicatedmasterenabled

Indicates whether dedicated master nodes are enabled for the cluster. True if the cluster will use a dedicated master node. False if the cluster will not.

elasticsearch_cluster_config_dedicatedmastercount

Number of dedicated master nodes in the cluster.

elasticsearch_cluster_config_dedicatedmastertype

Amazon ES instance type of the dedicated master nodes in the cluster.

domainid

Unique identifier for an Amazon ES domain.

encryption_at_rest_options_enabled

Specify true to enable encryption at rest.

deleted

Status of the deletion of an Amazon ES domain. True if deletion of the domain is complete. False if domain deletion is still in progress.

id

same as domainid

arn

Amazon Resource Name (ARN) of an Amazon ES domain.

exposed_internet

exposed_internet is set to True if the ElasticSearch domain has a policy applied to it that makes it internet-accessible. This policy determination is made by using the policyuniverse library. The code for this augmentation is implemented at cartography.intel.aws.elasticsearch._process_access_policy().

+
+

Relationships

+
    +
  • Elastic Search domains can be members of EC2 Security Groups.

    +
    ```
    +(ESDomain)-[MEMBER_OF_EC2_SECURITY_GROUP]->(EC2SecurityGroup)
    +```
    +
    +
    +
  • +
  • Elastic Search domains belong to AWS Accounts.

    +
    (AWSAccount)-[RESOURCE]->(ESDomain)
    +
    +
    +
  • +
  • DNS Records can point to Elastic Search domains.

    +
    ```
    +(DNSRecord)-[DNS_POINTS_TO]->(ESDomain)
    +```
    +
    +
    +
  • +
+
+
+
+

Endpoint

+

Representation of a generic network endpoint.

+ ++++ + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

protocol

The protocol of this endpoint

port

The port of this endpoint

+
+

Relationships

+
    +
  • Endpoints can be installed load balancers, though more specifically we would refer to these Endpoint nodes as ELBListeners.

    +
    ```
    +(LoadBalancer)-[ELB_LISTENER]->(Endpoint)
    +```
    +
    +
    +
  • +
+
+
+
+

Endpoint::ELBListener

+

Representation of an AWS Elastic Load Balancer Listener. Here, an ELBListener is a more specific type of Endpoint. Here’a good introduction.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

protocol

The protocol of this endpoint

port

The port of this endpoint

policy_names

A list of SSL policy names set on the listener.

id

The ELB ID. This is a concatenation of the DNS name, port, and protocol.

instance_port

The port open on the EC2 instance that this listener is connected to

instance_protocol

The protocol defined on the EC2 instance that this listener is connected to

+
+

Relationships

+
    +
  • A ELBListener is installed on a load balancer.

    +
    ```
    +(LoadBalancer)-[ELB_LISTENER]->(ELBListener)
    +```
    +
    +
    +
  • +
+
+
+
+

Endpoint::ELBV2Listener

+

Representation of an AWS Elastic Load Balancer V2 Listener.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

protocol

The protocol of this endpoint - One of 'HTTP''HTTPS''TCP''TLS''UDP''TCP_UDP'

port

The port of this endpoint

ssl_policy

Only set for HTTPS or TLS listener. The security policy that defines which protocols and ciphers are supported.

targetgrouparn

The ARN of the Target Group, if the Action type is forward.

+
+

Relationships

+
    +
  • A ELBV2Listener is installed on a LoadBalancerV2.

    +
    ```
    +(elbv2)-[r:ELBV2_LISTENER]->(ELBV2Listener)
    +```
    +
    +
    +
  • +
+
+
+
+

Ip

+

Represents a generic IP address.

+ ++++ + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

ip

The IPv4 address

id

Same as ip

+
+

Relationships

+
    +
  • DNSRecords can point to IP addresses.

    +
    ```
    +(DNSRecord)-[DNS_POINTS_TO]->(Ip)
    +```
    +
    +
    +
  • +
+
+
+
+

IpRule

+

Represents a generic IP rule. The creation of this node is currently derived from ingesting AWS EC2 Security Group rules.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

ruleid

{group_id}/{rule_type}/{from_port}{to_port}{protocol}

groupid

The groupid of the EC2 Security Group that this was derived from

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

protocol

The protocol this rule applies to

fromport

Lowest port in the range defined by this rule

toport

Highest port in the range defined by this rule

+
+

Relationships

+
    +
  • IpRules are defined from EC2SecurityGroups.

    +
    ```
    +(IpRule, IpPermissionInbound)-[MEMBER_OF_EC2_SECURITY_GROUP]->(EC2SecurityGroup)
    +```
    +
    +
    +
  • +
+
+
+
+

IpRule::IpPermissionInbound

+

An IpPermissionInbound node is a specific type of IpRule. It represents a generic inbound IP-based rules. The creation of this node is currently derived from ingesting AWS EC2 Security Group rules.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

ruleid

{group_id}/{rule_type}/{from_port}{to_port}{protocol}

groupid

The groupid of the EC2 Security Group that this was derived from

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

protocol

The protocol this rule applies to

fromport

Lowest port in the range defined by this rule

toport

Highest port in the range defined by this rule

+
+

Relationships

+
    +
  • IpPermissionInbound rules are defined from EC2SecurityGroups.

    +
    ```
    +(IpRule, IpPermissionInbound)-[MEMBER_OF_EC2_SECURITY_GROUP]->(EC2SecurityGroup)
    +```
    +
    +
    +
  • +
+
+
+
+

LoadBalancer

+

Represents an AWS Elastic Load Balancer. See spec for details.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

scheme

The type of load balancer. Valid only for load balancers in a VPC. If scheme is internet-facing, the load balancer has a public DNS name that resolves to a public IP address. If scheme is internal, the load balancer has a public DNS name that resolves to a private IP address.

name

The name of the load balancer

dnsname

The DNS name of the load balancer.

canonicalhostedzonename

The DNS name of the load balancer

id

Currently set to the dnsname of the load balancer.

region

The region of the load balancer

createdtime

The date and time the load balancer was created.

canonicalhostedzonenameid

The ID of the Amazon Route 53 hosted zone for the load balancer.

exposed_internet

The exposed_internet flag is set to True when the load balancer’s scheme field is set to internet-facing. This indicates that the load balancer has a public DNS name that resolves to a public IP address.

+
+

Relationships

+
    +
  • LoadBalancers can be connected to EC2Instances and therefore expose them.

    +
    ```
    +(LoadBalancer)-[EXPOSE]->(EC2Instance)
    +```
    +
    +
    +
  • +
  • LoadBalancers can have source security groups configured.

    +
    ```
    +(LoadBalancer)-[SOURCE_SECURITY_GROUP]->(EC2SecurityGroup)
    +```
    +
    +
    +
  • +
  • LoadBalancers can be part of EC2SecurityGroups.

    +
    ```
    +(LoadBalancer)-[MEMBER_OF_EC2_SECURITY_GROUP]->(EC2SecurityGroup)
    +```
    +
    +
    +
  • +
  • LoadBalancers can be part of EC2 Subnets

    +
    ```
    +(LoadBalancer)-[SUBNET]->(EC2Subnet)
    +```
    +
    +
    +
  • +
  • LoadBalancers can be part of EC2 Subnets

    +
    ```
    +(LoadBalancer)-[PART_OF_SUBNET]->(EC2Subnet)
    +```
    +
    +
    +
  • +
  • LoadBalancers can have listeners configured to accept connections from clients (good introduction).

    +
    ```
    +(LoadBalancer)-[ELB_LISTENER]->(Endpoint, ELBListener)
    +```
    +
    +
    +
  • +
  • LoadBalancers are part of AWSAccounts.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(LoadBalancer)
    +```
    +
    +
    +
  • +
  • AWSDNSRecords and DNSRecords point to LoadBalancers.

    +
    ```
    +(AWSDNSRecord, DNSRecord)-[DNS_POINTS_TO]->(LoadBalancer)
    +```
    +
    +
    +
  • +
+
+
+
+

LoadBalancerV2

+

Represents an Elastic Load Balancer V2 (Application Load Balancer or Network Load Balancer.) API reference here.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

scheme

The type of load balancer. If scheme is internet-facing, the load balancer has a public DNS name that resolves to a public IP address. If scheme is internal, the load balancer has a public DNS name that resolves to a private IP address.

name

The name of the load balancer

dnsname

The DNS name of the load balancer.

exposed_internet

The exposed_internet flag is set to True when the load balancer’s scheme field is set to internet-facing. This indicates that the load balancer has a public DNS name that resolves to a public IP address.

id

Currently set to the dnsname of the load balancer.

type

Can be application or network

region

The region of the load balancer

createdtime

The date and time the load balancer was created.

canonicalhostedzonenameid

The ID of the Amazon Route 53 hosted zone for the load balancer.

+
+

Relationships

+
    +
  • LoadBalancerV2’s can be connected to EC2Instances and therefore expose them.

    +
    ```
    +(LoadBalancerV2)-[EXPOSE]->(EC2Instance)
    +```
    +
    +
    +
  • +
  • LoadBalancerV2’s can be part of EC2SecurityGroups but only if their type = “application”. NLBs don’t have SGs.

    +
    ```
    +(LoadBalancerV2)-[MEMBER_OF_EC2_SECURITY_GROUP]->(EC2SecurityGroup)
    +```
    +
    +
    +
  • +
  • LoadBalancerV2’s can be part of EC2 Subnets

    +
    ```
    +(LoadBalancerV2)-[SUBNET]->(EC2Subnet)
    +```
    +
    +
    +
  • +
  • LoadBalancerV2’s can be part of EC2 Subnets

    +
    ```
    +(LoadBalancerV2)-[PART_OF_SUBNET]->(EC2Subnet)
    +```
    +
    +
    +
  • +
  • LoadBalancerV2’s have listeners:

    +
    ```
    +(LoadBalancerV2)-[ELBV2_LISTENER]->(ELBV2Listener)
    +```
    +
    +
    +
  • +
+
+
+
+

Nameserver

+

Represents a DNS nameserver. +| Field | Description | +|-------|————-| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| id | The address of the nameserver| +| name | The name or address of the nameserver|

+
+

Relationships

+
    +
  • Nameservers are nameservers for to DNSZone.

    +
    ```
    +(Nameserver)-[NAMESERVER]->(DNSZone)
    +```
    +
    +
    +
  • +
+
+
+
+

NetworkInterface

+

Representation of a generic Network Interface. Currently however, we only create NetworkInterface nodes from AWS EC2 Instances. The spec for an AWS EC2 network interface is here.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

mac_address

The MAC address of the network interface

description

Description of the network interface

private_ip_address

The primary IPv4 address of the network interface within the subnet

id

The ID of the network interface. (known as networkInterfaceId in EC2)

private_dns_name

The private DNS name

status

Status of the network interface. Valid Values: available | associated | attaching | in-use | detaching

subnetid

The ID of the subnet

interface_type

Describes the type of network interface. Valid values: interface | efa

requester_id

Id of the requester, e.g. amazon-elb for ELBs

requester_managed

Indicates whether the interface is managed by the requester

source_dest_check

Indicates whether to validate network traffic to or from this network interface.

public_ip

Public IPv4 address attached to the interface

+
+

Relationships

+
    +
  • EC2 Network Interfaces belong to AWS accounts.

    +
    (NetworkInterface)<-[:RESOURCE]->(:AWSAccount)
    +
    +
    +
  • +
  • Network interfaces can be connected to EC2Subnets.

    +
    ```
    +(NetworkInterface)-[PART_OF_SUBNET]->(EC2Subnet)
    +```
    +
    +
    +
  • +
  • Network interfaces can be members of EC2SecurityGroups.

    +
    ```
    +(NetworkInterface)-[MEMBER_OF_EC2_SECURITY_GROUP]->(EC2SecurityGroup)
    +```
    +
    +
    +
  • +
  • EC2Instances can have NetworkInterfaces connected to them.

    +
    ```
    +(EC2Instance)-[NETWORK_INTERFACE]->(NetworkInterface)
    +```
    +
    +
    +
  • +
  • LoadBalancers can have NetworkInterfaces connected to them.

    +
    ```
    +(LoadBalancer)-[NETWORK_INTERFACE]->(NetworkInterface)
    +```
    +
    +
    +
  • +
  • LoadBalancerV2s can have NetworkInterfaces connected to them.

    +
    ```
    +(LoadBalancerV2)-[NETWORK_INTERFACE]->(NetworkInterface)
    +```
    +
    +
    +
  • +
  • EC2PrivateIps are connected to a NetworkInterface.

    +
    ```
    +(NetworkInterface)-[PRIVATE_IP_ADDRESS]->(EC2PrivateIp)
    +```
    +
    +
    +
  • +
  • EC2 Network Interfaces can be tagged with AWSTags.

    +
    ```
    +(NetworkInterface)-[TAGGED]->(AWSTag)
    +```
    +
    +
    +
  • +
+
+
+
+

AWSPeeringConnection

+

Representation of an AWS PeeringConnection implementing an AWS VpcPeeringConnection object.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

vpcPeeringConnectionId, The ID of the VPC peering connection.

allow_dns_resolution_from_remote_vpc

Indicates whether a local VPC can resolve public DNS hostnames to private IP addresses when queried from instances in a peer VPC.

allow_egress_from_local_classic_link_to_remote_vpc

Indicates whether a local ClassicLink connection can communicate with the peer VPC over the VPC peering connection.

allow_egress_from_local_vpc_to_remote_classic_link

Indicates whether a local VPC can communicate with a ClassicLink connection in the peer VPC over the VPC peering connection.

requester_region

Peering requester region

accepter_region

Peering accepter region

status_code

The status of the VPC peering connection.

status_message

A message that provides more information about the status, if applicable.

+
+

Relationships

+
    +
  • AWSVpc is an accepter or requester vpc.

    +
    (AWSVpc)<-[REQUESTER_VPC]-(AWSPeeringConnection)
    +(AWSVpc)<-[ACCEPTER_VPC]-(AWSPeeringConnection)
    +
    +
    +
  • +
  • AWSCidrBlock is an accepter or requester cidr.

    +
    (AWSCidrBlock)<-[REQUESTER_CIDR]-(AWSPeeringConnection)
    +(AWSCidrBlock)<-[ACCEPTER_CIDR]-(AWSPeeringConnection)
    +
    +
    +
  • +
+
+
+
+

RedshiftCluster

+

Representation of an AWS RedshiftCluster.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

arn

The Amazon Resource Name (ARN) for the Redshift cluster

id

Same as arn

availability_zone

Specifies the name of the Availability Zone the cluster is located in

cluster_create_time

Provides the date and time the cluster was created

cluster_identifier

The unique identifier of the cluster.

cluster_revision_number

The specific revision number of the database in the cluster.

db_name

The name of the initial database that was created when the cluster was created. This same name is returned for the life of the cluster. If an initial database was not specified, a database named devdev was created by default.

encrypted

Specifies whether the cluster has encryption enabled

cluster_status

The current state of the cluster.

endpoint_address

DNS name of the Redshift cluster endpoint

endpoint_port

The port that the Redshift cluster’s endpoint is listening on

master_username

The master user name for the cluster. This name is used to connect to the database that is specified in the DBName parameter.

node_type

The node type for the nodes in the cluster.

number_of_nodes

The number of compute nodes in the cluster.

publicly_accessible

A boolean value that, if true, indicates that the cluster can be accessed from a public network.

vpc_id

The identifier of the VPC the cluster is in, if the cluster is in a VPC.

+
+

Relationships

+
    +
  • Redshift clusters are part of AWS Accounts.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(RedshiftCluster)
    +```
    +
    +
    +
  • +
  • Redshift clusters can be members of EC2 Security Groups.

    +
    (RedshiftCluster)-[MEMBER_OF_EC2_SECURITY_GROUP]->(EC2SecurityGroup)
    +
    +
    +
  • +
  • Redshift clusters may assume IAM roles. See this article.

    +
    (RedshiftCluster)-[STS_ASSUMEROLE_ALLOW]->(AWSPrincipal)
    +
    +
    +
  • +
  • Redshift clusters can be members of AWSVpcs.

    +
    (RedshiftCluster)-[MEMBER_OF_AWS_VPC]->(AWSVpc)
    +
    +
    +
  • +
+
+
+
+

RDSCluster

+

Representation of an AWS Relational Database Service DBCluster

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

Same as ARN

arn

The Amazon Resource Name (ARN) for the DB cluster.

allocated_storage

For all database engines except Amazon Aurora, AllocatedStorage specifies the allocated storage size in gibibytes (GiB). For Aurora, AllocatedStorage always returns 1, because Aurora DB cluster storage size isn’t fixed, but instead automatically adjusts as needed.

availability_zones

Provides the list of Availability Zones (AZs) where instances in the DB cluster can be created.

backup_retention_period

Specifies the number of days for which automatic DB snapshots are retained.

character_set_name

If present, specifies the name of the character set that this cluster is associated with.

database_name

Contains the name of the initial database of this DB cluster that was provided at create time, if one was specified when the DB cluster was created. This same name is returned for the life of the DB cluster.

db_cluster_identifier

Contains a user-supplied DB cluster identifier. This identifier is the unique key that identifies a DB cluster.

db_parameter_group

Specifies the name of the DB cluster parameter group for the DB cluster.

status

Specifies the current state of this DB cluster.

earliest_restorable_time

The earliest time to which a database can be restored with point-in-time restore.

endpoint

Specifies the connection endpoint for the primary instance of the DB cluster.

reader_endpoint

The reader endpoint for the DB cluster. The reader endpoint for a DB cluster load-balances connections across the Aurora Replicas that are available in a DB cluster. As clients request new connections to the reader endpoint, Aurora distributes the connection requests among the Aurora Replicas in the DB cluster. This functionality can help balance your read workload across multiple Aurora Replicas in your DB cluster. If a failover occurs, and the Aurora Replica that you are connected to is promoted to be the primary instance, your connection is dropped. To continue sending your read workload to other Aurora Replicas in the cluster, you can then reconnect to the reader endpoint.

multi_az

Specifies whether the DB cluster has instances in multiple Availability Zones.

engine

The name of the database engine to be used for this DB cluster.

engine_version

Indicates the database engine version.

latest_restorable_time

Specifies the latest time to which a database can be restored with point-in-time restore.

port

Specifies the port that the database engine is listening on.

master_username

Contains the master username for the DB cluster.

preferred_backup_window

Specifies the daily time range during which automated backups are created if automated backups are enabled, as determined by the BackupRetentionPeriod.

preferred_maintenance_window

Specifies the weekly time range during which system maintenance can occur, in Universal Coordinated Time (UTC).

hosted_zone_id

Specifies the ID that Amazon Route 53 assigns when you create a hosted zone.

storage_encrypted

Specifies whether the DB cluster is encrypted.

kms_key_id

If StorageEncrypted is enabled, the AWS KMS key identifier for the encrypted DB cluster. The AWS KMS key identifier is the key ARN, key ID, alias ARN, or alias name for the AWS KMS customer master key (CMK).

db_cluster_resource_id

The AWS Region-unique, immutable identifier for the DB cluster. This identifier is found in AWS CloudTrail log entries whenever the AWS KMS CMK for the DB cluster is accessed.

clone_group_id

Identifies the clone group to which the DB cluster is associated.

cluster_create_time

Specifies the time when the DB cluster was created, in Universal Coordinated Time (UTC).

earliest_backtrack_time

The earliest time to which a DB cluster can be backtracked.

backtrack_window

The target backtrack window, in seconds. If this value is set to 0, backtracking is disabled for the DB cluster. Otherwise, backtracking is enabled.

backtrack_consumed_change_records

The number of change records stored for Backtrack.

capacity

The current capacity of an Aurora Serverless DB cluster. The capacity is 0 (zero) when the cluster is paused.

engine_mode

The DB engine mode of the DB cluster, either provisioned, serverless, parallelquery, global, or multimaster.

scaling_configuration_info_min_capacity

The minimum capacity for the Aurora DB cluster in serverless DB engine mode.

scaling_configuration_info_max_capacity

The maximum capacity for an Aurora DB cluster in serverless DB engine mode.

scaling_configuration_info_auto_pause

A value that indicates whether automatic pause is allowed for the Aurora DB cluster in serverless DB engine mode.

deletion_protection

Indicates if the DB cluster has deletion protection enabled. The database can’t be deleted when deletion protection is enabled.

+
+

Relationships

+
    +
  • RDS Clusters are part of AWS Accounts.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(RDSCluster)
    +```
    +
    +
    +
  • +
  • Some RDS instances are cluster members.

    +
    (replica:RDSInstance)-[IS_CLUSTER_MEMBER_OF]->(source:RDSCluster)
    +
    +
    +
  • +
+
+
+
+

RDSInstance

+

Representation of an AWS Relational Database Service DBInstance.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

Same as ARN

arn

The Amazon Resource Name (ARN) for the DB instance.

db_instance_identifier

Contains a user-supplied database identifier. This identifier is the unique key that identifies a DB instance.

availability_zone

Specifies the name of the Availability Zone the DB instance is located in.

backup_retention_period

Specifies the number of days for which automatic DB snapshots are retained.

preferred_backup_window

Specifies the daily time range during which automated backups are created if automated backups are enabled, as determined by the BackupRetentionPeriod.

ca_certificate_identifier

The identifier of the CA certificate for this DB instance.

db_cluster_identifier

If the DB instance is a member of a DB cluster, contains the name of the DB cluster that the DB instance is a member of.

db_instance_class

Contains the name of the compute and memory capacity class of the DB instance.

db_instance_port

Specifies the port that the DB instance listens on.

dbi_resource_id

The AWS Region-unique, immutable identifier for the DB instance. This identifier is found in AWS CloudTrail log entries whenever the AWS KMS key for the DB instance is accessed.

db_name

The meaning of this parameter differs according to the database engine you use. For example, this value returns MySQL, MariaDB, or PostgreSQL information when returning values from CreateDBInstanceReadReplica since Read Replicas are only supported for these engines.

MySQL, MariaDB, SQL Server, PostgreSQL: Contains the name of the initial database of this instance that was provided at create time, if one was specified when the DB instance was created. This same name is returned for the life of the DB instance.

Oracle: Contains the Oracle System ID (SID) of the created DB instance. Not shown when the returned parameters do not apply to an Oracle DB instance.

engine

Provides the name of the database engine to be used for this DB instance.

engine_version

Indicates the database engine version.

enhanced_monitoring_resource_arn

The Amazon Resource Name (ARN) of the Amazon CloudWatch Logs log stream that receives the Enhanced Monitoring metrics data for the DB instance.

instance_create_time

Provides the date and time the DB instance was created.

kms_key_id

If StorageEncrypted is true, the AWS KMS key identifier for the encrypted DB instance.

master_username

Contains the master username for the DB instance.

monitoring_role_arn

The ARN for the IAM role that permits RDS to send Enhanced Monitoring metrics to Amazon CloudWatch Logs.

multi_az

Specifies if the DB instance is a Multi-AZ deployment.

performance_insights_enabled

True if Performance Insights is enabled for the DB instance, and otherwise false.

preferred_maintenance_window

Specifies the weekly time range during which system maintenance can occur, in Universal Coordinated Time (UTC).

publicly_accessible

Specifies the accessibility options for the DB instance. A value of true specifies an Internet-facing instance with a publicly resolvable DNS name, which resolves to a public IP address. A value of false specifies an internal instance with a DNS name that resolves to a private IP address.

storage_encrypted

Specifies whether the DB instance is encrypted.

endpoint_address

DNS name of the RDS instance

endpoint_port

The port that the RDS instance is listening on

endpoint_hostedzoneid

The AWS DNS Zone ID that is associated with the RDS instance’s DNS entry

auto_minor_version_upgrade

Specifies whether minor version upgrades are applied automatically to the DB instance during the maintenance window

iam_database_authentication_enabled

Specifies if mapping of AWS Identity and Access Management (IAM) accounts to database accounts is enabled

+
+

Relationships

+
    +
  • RDS Instances are part of AWS Accounts.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(RDSInstance)
    +```
    +
    +
    +
  • +
  • Some RDS instances are Read Replicas.

    +
    (replica:RDSInstance)-[IS_READ_REPLICA_OF]->(source:RDSInstance)
    +
    +
    +
  • +
  • RDS Instances can be members of EC2 Security Groups.

    +
    (RDSInstance)-[m:MEMBER_OF_EC2_SECURITY_GROUP]->(EC2SecurityGroup)
    +
    +
    +
  • +
  • RDS Instances are connected to DB Subnet Groups.

    +
    (RDSInstance)-[:MEMBER_OF_DB_SUBNET_GROUP]->(DBSubnetGroup)
    +
    +
    +
  • +
  • RDS Instances can be tagged with AWSTags.

    +
    ```
    +(RDSInstance)-[TAGGED]->(AWSTag)
    +```
    +
    +
    +
  • +
+
+
+
+

RDSSnapshot

+

Representation of an AWS Relational Database Service DBSnapshot.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

Same as ARN

arn

The Amazon Resource Name (ARN) for the DB snapshot.

db_snapshot_identifier

Specifies the identifier for the DB snapshot.

db_instance_identifier

Specifies the DB instance identifier of the DB instance this DB snapshot was created from.

snapshot_create_time

Specifies when the snapshot was taken in Coordinated Universal Time (UTC). Changes for the copy when the snapshot is copied.

engine

Specifies the name of the database engine.

allocated_storage

Specifies the allocated storage size in gibibytes (GiB).

status

Specifies the status of this DB snapshot.

port

Specifies the port that the database engine was listening on at the time of the snapshot.

availability_zone

Specifies the name of the Availability Zone the DB instance was located in at the time of the DB snapshot.

vpc_id

Provides the VPC ID associated with the DB snapshot.

instance_create_time

Specifies the time in Coordinated Universal Time (UTC) when the DB instance, from which the snapshot was taken, was created.

master_username

Provides the master username for the DB snapshot.

engine_version

Specifies the version of the database engine.

license_model

License model information for the restored DB instance.

snapshot_type

Provides the type of the DB snapshot.

iops

Specifies the Provisioned IOPS (I/O operations per second) value of the DB instance at the time of the snapshot.

option_group_name

Provides the option group name for the DB snapshot.

percent_progress

The percentage of the estimated data that has been transferred.

source_region

The AWS Region that the DB snapshot was created in or copied from.

source_db_snapshot_identifier

The DB snapshot Amazon Resource Name (ARN) that the DB snapshot was copied from. It only has a value in the case of a cross-account or cross-Region copy.

storage_type

Specifies the storage type associated with DB snapshot.

tde_credential_arn

The ARN from the key store with which to associate the instance for TDE encryption.

encrypted

Specifies whether the DB snapshot is encrypted.

kms_key_id

If Encrypted is true, the AWS KMS key identifier for the encrypted DB snapshot. The AWS KMS key identifier is the key ARN, key ID, alias ARN, or alias name for the KMS key.

timezone

The time zone of the DB snapshot. In most cases, the Timezone element is empty. Timezone content appears only for snapshots taken from Microsoft SQL Server DB instances that were created with a time zone specified.

iam_database_authentication_enabled

True if mapping of AWS Identity and Access Management (IAM) accounts to database accounts is enabled, and otherwise false.

processor_features

The number of CPU cores and the number of threads per core for the DB instance class of the DB instance when the DB snapshot was created.

dbi_resource_id

The identifier for the source DB instance, which can’t be changed and which is unique to an AWS Region.

original_snapshot_create_time

Specifies the time of the CreateDBSnapshot operation in Coordinated Universal Time (UTC). Doesn’t change when the snapshot is copied.

snapshot_database_time

The timestamp of the most recent transaction applied to the database that you’re backing up. Thus, if you restore a snapshot, SnapshotDatabaseTime is the most recent transaction in the restored DB instance. In contrast, originalSnapshotCreateTime specifies the system time that the snapshot completed. If you back up a read replica, you can determine the replica lag by comparing SnapshotDatabaseTime with originalSnapshotCreateTime. For example, if originalSnapshotCreateTime is two hours later than SnapshotDatabaseTime, then the replica lag is two hours.

snapshot_target

Specifies where manual snapshots are stored: AWS Outposts or the AWS Region.

storage_throughput

region

The AWS region of the snapshot

+
+

Relationships

+
    +
  • RDS Snapshots are part of AWS Accounts.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(RDSSnapshot)
    +```
    +
    +
    +
  • +
  • RDS Snapshots are connected to DB Instances.

    +
    (RDSSnapshot)-[:IS_SNAPSHOT_SOURCE]->(RDSInstance)
    +
    +
    +
  • +
  • RDS Snapshots can be tagged with AWSTags.

    +
    ```
    +(RDSSnapshot)-[TAGGED]->(AWSTag)
    +```
    +
    +
    +
  • +
+
+
+
+

S3Acl

+

Representation of an AWS S3 Access Control List.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

granteeid

The ID of the grantee as defined here

displayname

Optional display name for the ACL

permission

Valid values: FULL_CONTROL | READ | WRITE | READ_ACP | WRITE_ACP (ACP = Access Control Policy)

id

The ID of this ACL

type

The type of the grantee. Either CanonicalUser | AmazonCustomerByEmail | Group.

ownerid

The ACL’s owner ID as defined here

+
+

Relationships

+
    +
  • S3 Access Control Lists apply to S3 buckets.

    +
    ```
    +(S3Acl)-[APPLIES_TO]->(S3Bucket)
    +```
    +
    +
    +
  • +
+
+
+
+

S3Bucket

+

Representation of an AWS S3 Bucket.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

creationdate

Date-time when the bucket was created

id

Same as name, as seen below

name

The name of the bucket. This is guaranteed to be globally unique

anonymous_actions

List of anonymous internet accessible actions that may be run on the bucket. This list is taken by running policyuniverse on the policy that applies to the bucket.

anonymous_access

True if this bucket has a policy applied to it that allows anonymous access or if it is open to the internet. These policy determinations are made by using the policyuniverse library.

region

The region that the bucket is in. Only defined if the S3 bucket has a location constraint

default_encryption

True if this bucket has default encryption enabled.

encryption_algorithm

The encryption algorithm used for default encryption. Only defined if the S3 bucket has default encryption enabled.

encryption_key_id

The KMS key ID used for default encryption. Only defined if the S3 bucket has SSE-KMS enabled as the default encryption method.

bucket_key_enabled

True if a bucket key is enabled, when using SSE-KMS as the default encryption method.

versioning_status

The versioning state of the bucket.

mfa_delete

Specifies whether MFA delete is enabled in the bucket versioning configuration.

block_public_acls

Specifies whether Amazon S3 should block public access control lists (ACLs) for this bucket and objects in this bucket.

ignore_public_acls

Specifies whether Amazon S3 should ignore public ACLs for this bucket and objects in this bucket.

block_public_acls

Specifies whether Amazon S3 should block public bucket policies for this bucket.

restrict_public_buckets

Specifies whether Amazon S3 should restrict public bucket policies for this bucket.

+
+

Relationships

+
    +
  • S3Buckets are resources in an AWS Account.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(S3Bucket)
    +```
    +
    +
    +
  • +
  • S3 Access Control Lists apply to S3 buckets.

    +
    ```
    +(S3Acl)-[APPLIES_TO]->(S3Bucket)
    +```
    +
    +
    +
  • +
  • S3 Buckets can be tagged with AWSTags.

    +
    ```
    +(S3Bucket)-[TAGGED]->(AWSTag)
    +```
    +
    +
    +
  • +
+
+
+
+

S3PolicyStatement

+

Representation of an AWS S3 Bucket Policy Statements for controlling ownership of objects and ACLs of the bucket.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

policy_id

Optional string “Id” for the bucket’s policy

policy_version

Version of the bucket’s policy

id

The unique identifier for a bucket policy statement.
If the statement has an Sid the id will be calculated as S3Bucket.id/policy_statement/index of statement in statement/Sid.
If the statement has no Sid the id will be calculated as S3Bucket.id/policy_statement/index of statement in statement/

effect

Specifies “Deny” or “Allow” for the policy statement

action

Specifies permissions that policy statement applies to, as defined here

resource

Specifies the resource the bucket policy statement is based on

condition

Specifies conditions where permissions are granted: examples

sid

Optional string to label the specific bucket policy statement

+
+

Relationships

+
    +
  • S3PolicyStatements define the policy for S3 Buckets.

    +
    ```
    +(:S3Bucket)-[:POLICY_STATEMENT]->(:S3PolicyStatement)
    +```
    +
    +
    +
  • +
+
+
+
+

KMSKey

+

Representation of an AWS KMS Key.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The id of the key

name

The name of the key

description

The description of the key

enabled

Whether the key is enabled

region

The region where key is created

anonymous_actions

List of anonymous internet accessible actions that may be run on the key.

anonymous_access

True if this key has a policy applied to it that allows anonymous access or if it is open to the internet.

+
+

Relationships

+
    +
  • AWS KMS Keys are resources in an AWS Account.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(KMSKey)
    +```
    +
    +
    +
  • +
  • AWS KMS Key may also be refered as KMSAlias via aliases.

    +
    ```
    +(KMSKey)-[KNOWN_AS]->(KMSAlias)
    +```
    +
    +
    +
  • +
  • AWS KMS Key may also have KMSGrant based on grants.

    +
    ```
    +(KMSGrant)-[APPLIED_ON]->(KMSKey)
    +```
    +
    +
    +
  • +
+
+
+
+

KMSAlias

+

Representation of an AWS KMS Key Alias.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The arn of the alias

aliasname

The name of the alias

targetkeyid

The kms key id associated via this alias

+
+

Relationships

+
    +
  • AWS KMS Key may also be refered as KMSAlias via aliases.

    +
    ```
    +(KMSKey)-[KNOWN_AS]->(KMSAlias)
    +```
    +
    +
    +
  • +
+
+
+
+

KMSGrant

+

Representation of an AWS KMS Key Grant.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The id of the key grant

name

The name of the key grant

granteeprincipal

The principal associated with the key grant

creationdate

ISO 8601 date-time string when the grant was created

+
+

Relationships

+
    +
  • AWS KMS Key may also have KMSGrant based on grants.

    +
    ```
    +(KMSGrant)-[APPLIED_ON]->(KMSKey)
    +```
    +
    +
    +
  • +
+
+
+
+

APIGatewayRestAPI

+

Representation of an AWS API Gateway REST API.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The id of the REST API

createddate

The timestamp when the REST API was created

version

The version identifier for the API

minimumcompressionsize

A nullable integer that is used to enable or disable the compression of the REST API

disableexecuteapiendpoint

Specifies whether clients can invoke your API by using the default execute-api endpoint

region

The region where the REST API is created

anonymous_actions

List of anonymous internet accessible actions that may be run on the API.

anonymous_access

True if this API has a policy applied to it that allows anonymous access or if it is open to the internet.

+
+

Relationships

+
    +
  • AWS API Gateway REST APIs are resources in an AWS Account.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(APIGatewayRestAPI)
    +```
    +
    +
    +
  • +
  • AWS API Gateway REST APIs may be associated with an API Gateway Stage.

    +
    ```
    +(APIGatewayRestAPI)-[ASSOCIATED_WITH]->(APIGatewayStage)
    +```
    +
    +
    +
  • +
  • AWS API Gateway REST APIs may also have API Gateway Resource resources.

    +
    ```
    +(APIGatewayRestAPI)-[RESOURCE]->(APIGatewayResource)
    +```
    +
    +
    +
  • +
+
+
+
+

APIGatewayStage

+

Representation of an AWS API Gateway Stage.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The name of the API Gateway Stage

createddate

The timestamp when the stage was created

deploymentid

The identifier of the Deployment that the stage points to.

clientcertificateid

The identifier of a client certificate for an API stage.

cacheclusterenabled

Specifies whether a cache cluster is enabled for the stage.

cacheclusterstatus

The status of the cache cluster for the stage, if enabled.

tracingenabled

Specifies whether active tracing with X-ray is enabled for the Stage

webaclarn

The ARN of the WebAcl associated with the Stage

+
+

Relationships

+
    +
  • AWS API Gateway REST APIs may be associated with an API Gateway Stage.

    +
    ```
    +(APIGatewayRestAPI)-[ASSOCIATED_WITH]->(APIGatewayStage)
    +```
    +
    +
    +
  • +
  • AWS API Gateway Stage may also contain a Client Certificate.

    +
    ```
    +(APIGatewayStage)-[HAS_CERTIFICATE]->(APIGatewayClientCertificate)
    +```
    +
    +
    +
  • +
+
+
+
+

APIGatewayClientCertificate

+

Representation of an AWS API Gateway Client Certificate.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The identifier of the client certificate

createddate

The timestamp when the client certificate was created

expirationdate

The timestamp when the client certificate will expire

+
+

Relationships

+
    +
  • AWS API Gateway Stage may also contain a Client Certificate.

    +
    ```
    +(APIGatewayStage)-[HAS_CERTIFICATE]->(APIGatewayClientCertificate)
    +```
    +
    +
    +
  • +
+
+
+
+

APIGatewayResource

+

Representation of an AWS API Gateway Resource.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The id of the REST API

path

The timestamp when the REST API was created

pathpart

The version identifier for the API

parentid

A nullable integer that is used to enable or disable the compression of the REST API

+
+

Relationships

+
    +
  • AWS API Gateway REST APIs may also have API Gateway Resource resources.

    +
    ```
    +(APIGatewayRestAPI)-[RESOURCE]->(APIGatewayResource)
    +```
    +
    +
    +
  • +
+
+
+
+

AutoScalingGroup

+

Representation of an AWS Auto Scaling Group Resource.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

arn

The ARN of the Auto Scaling Group

name

The name of the Auto Scaling group.

createdtime

The date and time the group was created.

launchconfigurationname

The name of the associated launch configuration.

launchtemplatename

The name of the launch template.

launchtemplateid

The ID of the launch template.

launchtemplateversion

The version number of the launch template.

maxsize

The maximum size of the group.

minsize

The minimum size of the group.

defaultcooldown

The duration of the default cooldown period, in seconds.

desiredcapacity

The desired size of the group.

healthchecktype

The service to use for the health checks.

healthcheckgraceperiod

The amount of time, in seconds, that Amazon EC2 Auto Scaling waits before checking the health status of an EC2 instance that has come into service.

status

The current state of the group when the DeleteAutoScalingGroup operation is in progress.

newinstancesprotectedfromscalein

Indicates whether newly launched instances are protected from termination by Amazon EC2 Auto Scaling when scaling in.

maxinstancelifetime

The maximum amount of time, in seconds, that an instance can be in service.

capacityrebalance

Indicates whether Capacity Rebalancing is enabled.

region

The region of the auto scaling group.

+

Link to API Documentation of AWS Auto Scaling Groups

+
+

Relationships

+
    +
  • AWS Auto Scaling Groups are a resource under the AWS Account.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(AutoScalingGroup)
    +```
    +
    +
    +
  • +
  • AWS Auto Scaling Groups has one or more subnets/vpc identifiers.

    +
    ```
    +(AutoScalingGroup)-[VPC_IDENTIFIER]->(EC2Subnet)
    +```
    +
    +
    +
  • +
  • AWS EC2 Instances are members of one or more AWS Auto Scaling Groups.

    +
    ```
    +(EC2Instance)-[MEMBER_AUTO_SCALE_GROUP]->(AutoScalingGroup)
    +```
    +
    +
    +
  • +
  • AWS Auto Scaling Groups have Launch Configurations

    +
    ```
    +(AutoScalingGroup)-[HAS_LAUNCH_CONFIG]->(LaunchConfiguration)
    +```
    +
    +
    +
  • +
  • AWS Auto Scaling Groups have Launch Templates

    +
    ```
    +(AutoScalingGroup)-[HAS_LAUNCH_TEMPLATE]->(LaunchTemplate)
    +```
    +
    +
    +
  • +
+
+
+
+

EC2Image

+

Representation of an AWS EC2 Images (AMIs).

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The ID of the AMI.

name

The name of the AMI that was provided during image creation.

creationdate

The date and time the image was created.

architecture

The architecture of the image.

location

The location of the AMI.

type

The type of image.

ispublic

Indicates whether the image has public launch permissions.

platform

This value is set to windows for Windows AMIs; otherwise, it is blank.

usageoperation

The operation of the Amazon EC2 instance and the billing code that is associated with the AMI.

state

The current state of the AMI.

description

The description of the AMI that was provided during image creation.

enasupport

Specifies whether enhanced networking with ENA is enabled.

hypervisor

The hypervisor type of the image.

rootdevicename

The device name of the root device volume (for example, /dev/sda1 ).

rootdevicetype

The type of root device used by the AMI.

virtualizationtype

The type of virtualization of the AMI.

bootmode

The boot mode of the image.

region

The region of the image.

+

Link to API Documentation of EC2 Images

+
+

Relationships

+
    +
  • AWS EC2 Images (AMIs) are a resource under the AWS Account.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(EC2Image)
    +```
    +
    +
    +
  • +
+
+
+
+

EC2ReservedInstance

+

Representation of an AWS EC2 Reserved Instance.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The ID of the Reserved Instance.

availabilityzone

The Availability Zone in which the Reserved Instance can be used.

duration

The duration of the Reserved Instance, in seconds.

end

The time when the Reserved Instance expires.

start

The date and time the Reserved Instance started.

count

The number of reservations purchased.

type

The instance type on which the Reserved Instance can be used.

productdescription

The Reserved Instance product platform description.

state

The state of the Reserved Instance purchase.

currencycode

The currency of the Reserved Instance. It’s specified using ISO 4217 standard currency codes.

instancetenancy

The tenancy of the instance.

offeringclass

The offering class of the Reserved Instance.

offeringtype

The Reserved Instance offering type.

scope

The scope of the Reserved Instance.

fixedprice

The purchase price of the Reserved Instance.

region

The region of the reserved instance.

+
+

Relationships

+
    +
  • AWS EC2 Reserved Instances are a resource under the AWS Account.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(EC2ReservedInstance)
    +```
    +
    +
    +
  • +
+
+
+
+

SecretsManagerSecret

+

Representation of an AWS Secrets Manager Secret

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The arn of the secret.

created_date

The date and time when a secret was created.

deleted_date

The date and time the deletion of the secret occurred. Not present on active secrets. The secret can be recovered until the number of days in the recovery window has passed, as specified in the RecoveryWindowInDays parameter of the DeleteSecret operation.

description

The user-provided description of the secret.

kms_key_id

The ARN or alias of the AWS KMS customer master key (CMK) used to encrypt the SecretString and SecretBinary fields in each version of the secret. If you don’t provide a key, then Secrets Manager defaults to encrypting the secret fields with the default KMS CMK, the key named awssecretsmanager, for this account.

last_accessed_date

The last date that this secret was accessed. This value is truncated to midnight of the date and therefore shows only the date, not the time.

last_changed_date

The last date and time that this secret was modified in any way.

last_rotated_date

The most recent date and time that the Secrets Manager rotation process was successfully completed. This value is null if the secret hasn’t ever rotated.

name

The friendly name of the secret. You can use forward slashes in the name to represent a path hierarchy. For example, /prod/databases/dbserver1 could represent the secret for a server named dbserver1 in the folder databases in the folder prod.

owning_service

Returns the name of the service that created the secret.

primary_region

The Region where Secrets Manager originated the secret.

rotation_enabled

Indicates whether automatic, scheduled rotation is enabled for this secret.

rotation_lambda_arn

The ARN of an AWS Lambda function invoked by Secrets Manager to rotate and expire the secret either automatically per the schedule or manually by a call to RotateSecret.

rotation_rules_automatically_after_days

Specifies the number of days between automatic scheduled rotations of the secret.

+
+

Relationships

+
    +
  • AWS Secrets Manager Secrets are a resource under the AWS Account.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(SecretsManagerSecret)
    +```
    +
    +
    +
  • +
+
+
+
+

EBSVolume

+

Representation of an AWS EBS Volume.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The ID of the EBS Volume.

availabilityzone

The Availability Zone for the volume.

createtime

The time stamp when volume creation was initiated.

encrypted

Indicates whether the volume is encrypted.

size

The size of the volume, in GiBs.

state

The volume state.

outpostarn

The Amazon Resource Name (ARN) of the Outpost.

snapshotid

The snapshot ID.

iops

The number of I/O operations per second (IOPS).

type

The volume type.

fastrestored

Indicates whether the volume was created using fast snapshot restore.

multiattachenabled

Indicates whether Amazon EBS Multi-Attach is enabled.

throughput

The throughput that the volume supports, in MiB/s.

kmskeyid

The Amazon Resource Name (ARN) of the AWS Key Management Service (AWS KMS) customer master key (CMK) that was used to protect the volume encryption key for the volume.

deleteontermination

Indicates whether the volume is deleted on instance termination.

region

The region of the volume.

+
+

Relationships

+
    +
  • AWS EBS Volumes are a resource under the AWS Account.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(EBSVolume)
    +```
    +
    +
    +
  • +
  • AWS EBS Snapshots are created using EBS Volumes

    +
    ```
    +(EBSSnapshot)-[CREATED_FROM]->(EBSVolume)
    +```
    +
    +
    +
  • +
  • AWS EBS Volumes are attached to an EC2 Instance

    +
    ```
    +(EBSVolume)-[ATTACHED_TO_EC2_INSTANCE]->(EC2Instance)
    +```
    +
    +
    +
  • +
  • AWSTag

    +
    ```
    +(EBSVolume)-[TAGGED]->(AWSTag)
    +```
    +
    +
    +
  • +
+
+
+
+

EBSSnapshot

+

Representation of an AWS EBS Snapshot.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The ID of the EBS Snapshot.

description

The description of the snapshot.

progress

The progress of the snapshot, as a percentage.

encrypted

Indicates whether the snapshot is encrypted.

starttime

The time stamp when the snapshot was initiated.

state

The snapshot state.

statemessage

Encrypted Amazon EBS snapshots are copied asynchronously. If a snapshot copy operation fails (for example, if the proper AWS Key Management Service (AWS KMS) permissions are not obtained) this field displays error state details to help you diagnose why the error occurred. This parameter is only returned by DescribeSnapshots .

volumeid

The volume ID.

volumesize

The size of the volume, in GiB.

outpostarn

The ARN of the AWS Outpost on which the snapshot is stored.

dataencryptionkeyid

The data encryption key identifier for the snapshot.

kmskeyid

The Amazon Resource Name (ARN) of the AWS Key Management Service (AWS KMS) customer master key (CMK) that was used to protect the volume encryption key for the parent volume.

region

The region of the snapshot.

+
+

Relationships

+
    +
  • AWS EBS Snapshots are a resource under the AWS Account.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(EBSSnapshot)
    +```
    +
    +
    +
  • +
  • AWS EBS Snapshots are created using EBS Volumes

    +
    ```
    +(EBSSnapshot)-[CREATED_FROM]->(EBSVolume)
    +```
    +
    +
    +
  • +
+
+
+
+

SQSQueue

+

Representation of an AWS SQS Queue

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The arn of the sqs queue.

created_timestamp

The time when the queue was created in seconds

delay_seconds

The default delay on the queue in seconds.

last_modified_timestamp

The time when the queue was last changed in seconds.

maximum_message_size

The limit of how many bytes a message can contain before Amazon SQS rejects it.

message_retention_period

he length of time, in seconds, for which Amazon SQS retains a message.

policy

The IAM policy of the queue.

arn

The arn of the sqs queue.

receive_message_wait_time_seconds

The length of time, in seconds, for which the ReceiveMessage action waits for a message to arrive.

redrive_policy_dead_letter_target_arn

The Amazon Resource Name (ARN) of the dead-letter queue to which Amazon SQS moves messages after the value of maxReceiveCount is exceeded.

redrive_policy_max_receive_count

The number of times a message is delivered to the source queue before being moved to the dead-letter queue. When the ReceiveCount for a message exceeds the maxReceiveCount for a queue, Amazon SQS moves the message to the dead-letter-queue.

visibility_timeout

The visibility timeout for the queue.

kms_master_key_id

The ID of an AWS managed customer master key (CMK) for Amazon SQS or a custom CMK.

kms_data_key_reuse_period_seconds

The length of time, in seconds, for which Amazon SQS can reuse a data key to encrypt or decrypt messages before calling AWS KMS again.

fifo_queue

Whether or not the queue is FIFO.

content_based_deduplication

Whether or not content-based deduplication is enabled for the queue.

deduplication_scope

Specifies whether message deduplication occurs at the message group or queue level.

fifo_throughput_limit

Specifies whether the FIFO queue throughput quota applies to the entire queue or per message group.

+
+

Relationships

+
    +
  • AWS SQS Queues are a resource under the AWS Account.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(SQSQueue)
    +```
    +
    +
    +
  • +
  • AWS SQS Queues can have other SQS Queues configured as dead letter queues

    +
    ```
    +(SQSQueue)-[HAS_DEADLETTER_QUEUE]->(SQSQueue)
    +```
    +
    +
    +
  • +
+
+
+
+

SecurityHub

+

Representation of the configuration of AWS Security Hub

+ ++++ + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The arn of the hub resource.

subscribed_at

The date and time when Security Hub was enabled in the account.

auto_enable_controls

Whether to automatically enable new controls when they are added to standards that are enabled.

+
+

Relationships

+
    +
  • AWS Security Hub nodes are a resource under the AWS Account.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(SecurityHub)
    +```
    +
    +
    +
  • +
+
+
+
+

AWSConfigurationRecorder

+

Representation of an AWS Config Configuration Recorder

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

A combination of name:account_id:region

name

The name of the recorder.

role_arn

Amazon Resource Name (ARN) of the IAM role used to describe the AWS resources associated with the account.

recording_group_all_supported

Specifies whether AWS Config records configuration changes for every supported type of regional resource.

recording_group_include_global_resource_types

Specifies whether AWS Config includes all supported types of global resources (for example, IAM resources) with the resources that it records.

recording_group_resource_types

A comma-separated list that specifies the types of AWS resources for which AWS Config records configuration changes (for example, AWS::EC2::Instance or AWS::CloudTrail::Trail).

region

The region of the configuration recorder.

+
+

Relationships

+
    +
  • AWS Configuration Recorders are a resource under the AWS Account.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(AWSConfigurationRecorder)
    +```
    +
    +
    +
  • +
+
+
+
+

AWSConfigDeliveryChannel

+

Representation of an AWS Config Delivery Channel

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

A combination of name:account_id:region

name

The name of the delivery channel.

s3_bucket_name

The name of the Amazon S3 bucket to which AWS Config delivers configuration snapshots and configuration history files.

s3_key_prefix

The prefix for the specified Amazon S3 bucket.

s3_kms_key_arn

The Amazon Resource Name (ARN) of the AWS Key Management Service (KMS) customer managed key (CMK) used to encrypt objects delivered by AWS Config. Must belong to the same Region as the destination S3 bucket.

sns_topic_arn

The Amazon Resource Name (ARN) of the Amazon SNS topic to which AWS Config sends notifications about configuration changes.

config_snapshot_delivery_properties_delivery_frequency

The frequency with which AWS Config delivers configuration snapshots.

region

The region of the delivery channel.

+
+

Relationships

+
    +
  • AWS Config Delivery Channels are a resource under the AWS Account.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(AWSConfigDeliveryChannel)
    +```
    +
    +
    +
  • +
+
+
+
+

AWSConfigRule

+

Representation of an AWS Config Rule

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The ARN of the config rule.

name

The name of the delivery channel.

description

The description that you provide for the AWS Config rule.

arn

The ARN of the config rule.

rule_id

The ID of the AWS Config rule.

scope_compliance_resource_types

The resource types of only those AWS resources that you want to trigger an evaluation for the rule. You can only specify one type if you also specify a resource ID for ComplianceResourceId.

scope_tag_key

The tag key that is applied to only those AWS resources that you want to trigger an evaluation for the rule.

scope_tag_value

The tag value applied to only those AWS resources that you want to trigger an evaluation for the rule. If you specify a value for TagValue, you must also specify a value for TagKey.

scope_tag_compliance_resource_id

The resource types of only those AWS resources that you want to trigger an evaluation for the rule. You can only specify one type if you also specify a resource ID for ComplianceResourceId.

source_owner

Indicates whether AWS or the customer owns and manages the AWS Config rule.

source_identifier

For AWS Config managed rules, a predefined identifier from a list. For example, IAM_PASSWORD_POLICY is a managed rule.

source_details

Provides the source and type of the event that causes AWS Config to evaluate your AWS resources.

input_parameters

A string, in JSON format, that is passed to the AWS Config rule Lambda function.

maximum_execution_frequency

The maximum frequency with which AWS Config runs evaluations for a rule.

created_by

Service principal name of the service that created the rule.

region

The region of the delivery channel.

+
+

Relationships

+
    +
  • AWS Config Rules are a resource under the AWS Account.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(AWSConfigRule)
    +```
    +
    +
    +
  • +
+
+
+
+

LaunchConfiguration

+

Representation of an AWS Launch Configuration

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The ARN of the launch configuration.

name

The name of the launch configuration.

arn

The ARN of the launch configuration.

created_time

The creation date and time for the launch configuration.

image_id

The ID of the Amazon Machine Image (AMI) to use to launch your EC2 instances.

key_name

The name of the key pair.

security_groups

A list that contains the security groups to assign to the instances in the Auto Scaling group.

instance_type

The instance type for the instances.

kernel_id

The ID of the kernel associated with the AMI.

ramdisk_id

The ID of the RAM disk associated with the AMI.

instance_monitoring_enabled

If true, detailed monitoring is enabled. Otherwise, basic monitoring is enabled.

spot_price

The maximum hourly price to be paid for any Spot Instance launched to fulfill the request.

iam_instance_profile

The name or the Amazon Resource Name (ARN) of the instance profile associated with the IAM role for the instance.

ebs_optimized

Specifies whether the launch configuration is optimized for EBS I/O (true) or not (false).

associate_public_ip_address

For Auto Scaling groups that are running in a VPC, specifies whether to assign a public IP address to the group’s instances.

placement_tenancy

The tenancy of the instance, either default or dedicated. An instance with dedicated tenancy runs on isolated, single-tenant hardware and can only be launched into a VPC.

region

The region of the launch configuration.

+
+

Relationships

+
    +
  • Launch Configurations are a resource under the AWS Account.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(LaunchConfiguration)
    +```
    +
    +
    +
  • +
+
+
+
+

LaunchTemplate

+

Representation of an AWS Launch Template

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The ID of the launch template.

name

The name of the launch template.

create_time

The time launch template was created.

created_by

The principal that created the launch template.

default_version_number

The version number of the default version of the launch template.

latest_version_number

The version number of the latest version of the launch template.

region

The region of the launch template.

+
+

Relationships

+
    +
  • Launch Templates are a resource under the AWS Account.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(LaunchTemplate)
    +```
    +
    +
    +
  • +
  • Launch templates have Launch Template Versions

    +
    ```
    +(LaunchTemplate)-[VERSION]->(LaunchTemplateVersion)
    +```
    +
    +
    +
  • +
+
+
+
+

LaunchTemplateVersion

+

Representation of an AWS Launch Template Version

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The ID of the launch template version (ID-version).

name

The name of the launch template.

create_time

The time the version was created.

created_by

The principal that created the version.

default_version

Indicates whether the version is the default version.

version_number

The version number.

version_description

The description of the version.

kernel_id

The ID of the kernel, if applicable.

ebs_optimized

Indicates whether the instance is optimized for Amazon EBS I/O.

iam_instance_profile_arn

The Amazon Resource Name (ARN) of the instance profile.

iam_instance_profile_name

The name of the instance profile.

image_id

The ID of the AMI that was used to launch the instance.

instance_type

The instance type.

key_name

The name of the key pair.

monitoring_enabled

Indicates whether detailed monitoring is enabled. Otherwise, basic monitoring is enabled.

ramdisk_id

The ID of the RAM disk, if applicable.

disable_api_termination

If set to true, indicates that the instance cannot be terminated using the Amazon EC2 console, command line tool, or API.

instance_initiated_shutdown_behavior

Indicates whether an instance stops or terminates when you initiate shutdown from the instance (using the operating system command for system shutdown).

security_group_ids

The security group IDs.

security_groups

The security group names.

region

The region of the launch template.

+
+

Relationships

+
    +
  • Launch Template Versions are a resource under the AWS Account.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(LaunchTemplateVersion)
    +```
    +
    +
    +
  • +
+
+
+
+

ElasticIPAddress

+

Representation of an AWS EC2 Elastic IP address

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The Elastic IP address

instance_id

The ID of the instance that the address is associated with (if any).

public_ip

The Elastic IP address.

allocation_id

The ID representing the allocation of the address for use with EC2-VPC.

association_id

The ID representing the association of the address with an instance in a VPC.

domain

Indicates whether this Elastic IP address is for use with instances in EC2-Classic (standard) or instances in a VPC (vpc).

network_interface_id

The ID of the network interface.

private_ip_address

The private IP address associated with the Elastic IP address.

public_ipv4_pool

The ID of an address pool.

network_border_group

The name of the unique set of Availability Zones, Local Zones, or Wavelength Zones from which AWS advertises IP addresses.

customer_owned_ip

The customer-owned IP address.

customer_owned_ipv4_pool

The ID of the customer-owned address pool.

carrier_ip

The carrier IP address associated. This option is only available for network interfaces which reside in a subnet in a Wavelength Zone (for example an EC2 instance).

region

The region of the IP.

+
+

Relationships

+
    +
  • Elastic IPs are a resource under the AWS Account.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(ElasticIPAddress)
    +```
    +
    +
    +
  • +
  • Elastic IPs can be attached to EC2 instances

    +
    ```
    +(EC2Instance)-[ELASTIC_IP_ADDRESS]->(ElasticIPAddress)
    +```
    +
    +
    +
  • +
  • Elastic IPs can be attached to NetworkInterfaces

    +
    ```
    +(NetworkInterface)-[ELASTIC_IP_ADDRESS]->(ElasticIPAddress)
    +```
    +
    +
    +
  • +
+
+
+
+

ECSCluster

+

Representation of an AWS ECS Cluster

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The ARN of the cluster

region

The region of the cluster.

name

A user-generated string that you use to identify your cluster.

arn

The ARN of the cluster

ecc_kms_key_id

An AWS Key Management Service key ID to encrypt the data between the local client and the container.

ecc_logging

The log setting to use for redirecting logs for your execute command results.

ecc_log_configuration_cloud_watch_log_group_name

The name of the CloudWatch log group to send logs to.

ecc_log_configuration_cloud_watch_encryption_enabled

Determines whether to enable encryption on the CloudWatch logs.

ecc_log_configuration_s3_bucket_name

The name of the S3 bucket to send logs to.

ecc_log_configuration_s3_encryption_enabled

Determines whether to use encryption on the S3 logs.

ecc_log_configuration_s3_key_prefix

An optional folder in the S3 bucket to place logs in.

status

The status of the cluster

settings_container_insights

If enabled is specified, CloudWatch Container Insights will be enabled for the cluster, otherwise it will be disabled unless the containerInsights account setting is enabled.

capacity_providers

The capacity providers associated with the cluster.

attachments_status

The status of the capacity providers associated with the cluster.

+
+

Relationships

+
    +
  • ECSClusters are a resource under the AWS Account.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(ECSCluster)
    +```
    +
    +
    +
  • +
+
+
+
+

ECSContainerInstance

+

Representation of an AWS ECS Container Instance

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The ARN of the container instance

region

The region of the container instance.

ec2_instance_id

The ID of the container instance. For Amazon EC2 instances, this value is the Amazon EC2 instance ID. For external instances, this value is the AWS Systems Manager managed instance ID.

arn

The ARN of the container instance

capacity_provider_name

The capacity provider that’s associated with the container instance.

version

The version counter for the container instance.

version_info_agent_version

The version number of the Amazon ECS container agent.

version_info_agent_hash

The Git commit hash for the Amazon ECS container agent build on the amazon-ecs-agent GitHub repository.

version_info_agent_docker_version

The Docker version that’s running on the container instance.

status

The status of the container instance.

status_reason

The reason that the container instance reached its current status.

agent_connected

This parameter returns true if the agent is connected to Amazon ECS. Registered instances with an agent that may be unhealthy or stopped return false.

agent_update_status

The status of the most recent agent update. If an update wasn’t ever requested, this value is NULL.

registered_at

The Unix timestamp for the time when the container instance was registered.

+
+

Relationships

+
    +
  • An ECSCluster has ECSContainerInstances

    +
    ```
    +(ECSCluster)-[HAS_CONTAINER_INSTANCE]->(ECSContainerInstance)
    +```
    +
    +
    +
  • +
  • ECSContainerInstances have ECSTasks

    +
    ```
    +(ECSContainerInstance)-[HAS_TASK]->(ECSTask)
    +```
    +
    +
    +
  • +
+
+
+
+

ECSService

+

Representation of an AWS ECS Service

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The ARN of the service

region

The region of the service.

name

The name of your service.

arn

The ARN of the service

cluster_arn

The Amazon Resource Name (ARN) of the cluster that hosts the service.

status

The status of the service.

desired_count

The desired number of instantiations of the task definition to keep running on the service.

running_count

The number of tasks in the cluster that are in the RUNNING state.

pending_count

The number of tasks in the cluster that are in the PENDING state.

launch_type

The launch type the service is using.

platform_version

The platform version to run your service on. A platform version is only specified for tasks that are hosted on AWS Fargate.

platform_family

The operating system that your tasks in the service run on. A platform family is specified only for tasks using the Fargate launch type.

task_definition

The task definition to use for tasks in the service.

deployment_config_circuit_breaker_enable

Determines whether to enable the deployment circuit breaker logic for the service.

deployment_config_circuit_breaker_rollback

Determines whether to enable Amazon ECS to roll back the service if a service deployment fails.

deployment_config_maximum_percent

If a service is using the rolling update (ECS) deployment type, the maximum percent parameter represents an upper limit on the number of tasks in a service that are allowed in the RUNNING or PENDING state during a deployment, as a percentage of the desired number of tasks (rounded down to the nearest integer), and while any container instances are in the DRAINING state if the service contains tasks using the EC2 launch type.

deployment_config_minimum_healthy_percent

If a service is using the rolling update (ECS) deployment type, the minimum healthy percent represents a lower limit on the number of tasks in a service that must remain in the RUNNING state during a deployment, as a percentage of the desired number of tasks (rounded up to the nearest integer), and while any container instances are in the DRAINING state if the service contains tasks using the EC2 launch type.

role_arn

The ARN of the IAM role that’s associated with the service.

created_at

The Unix timestamp for the time when the service was created.

health_check_grace_period_seconds

The period of time, in seconds, that the Amazon ECS service scheduler ignores unhealthy Elastic Load Balancing target health checks after a task has first started.

created_by

The principal that created the service.

enable_ecs_managed_tags

Determines whether to enable Amazon ECS managed tags for the tasks in the service.

propagate_tags

Determines whether to propagate the tags from the task definition or the service to the task.

enable_execute_command

Determines whether the execute command functionality is enabled for the service.

+
+

Relationships

+
    +
  • An ECSCluster has ECSService

    +
    ```
    +(ECSCluster)-[HAS_SERVICE]->(ECSService)
    +```
    +
    +
    +
  • +
  • An ECSCluster has ECSContainerInstances

    +
    ```
    +(ECSCluster)-[HAS_CONTAINER_INSTANCE]->(ECSContainerInstance)
    +```
    +
    +
    +
  • +
+
+
+
+

ECSTaskDefinition

+

Representation of an AWS ECS Task Definition

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The ARN of the task definition

region

The region of the task definition.

family

The name of a family that this task definition is registered to.

task_role_arn

The short name or full Amazon Resource Name (ARN) of the AWS Identity and Access Management role that grants containers in the task permission to call AWS APIs on your behalf.

execution_role_arn

The Amazon Resource Name (ARN) of the task execution role that grants the Amazon ECS container agent permission to make AWS API calls on your behalf.

network_mode

The Docker networking mode to use for the containers in the task. The valid values are none, bridge, awsvpc, and host. If no network mode is specified, the default is bridge.

revision

The revision of the task in a particular family.

status

The status of the task definition.

compatibilities

The task launch types the task definition validated against during task definition registration.

runtime_platform_cpu_architecture

The CPU architecture.

runtime_platform_operating_system_family

The operating system.

requires_compatibilities

The task launch types the task definition was validated against.

cpu

The number of cpu units used by the task.

memory

The amount (in MiB) of memory used by the task.

pid_mode

The process namespace to use for the containers in the task.

ipc_mode

The IPC resource namespace to use for the containers in the task.

proxy_configuration_type

The proxy type.

proxy_configuration_container_name

The name of the container that will serve as the App Mesh proxy.

registered_at

The Unix timestamp for the time when the task definition was registered.

deregistered_at

The Unix timestamp for the time when the task definition was deregistered.

registered_by

The principal that registered the task definition.

ephemeral_storage_size_in_gib

The total amount, in GiB, of ephemeral storage to set for the task.

+
+

Relationships

+
    +
  • ECSTaskDefinition are a resource under the AWS Account.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(ECSTaskDefinition)
    +```
    +
    +
    +
  • +
  • An ECSTask has an ECSTaskDefinition.

    +
    ```
    +(ECSTask)-[HAS_TASK_DEFINITION]->(ECSTaskDefinition)
    +```
    +
    +
    +
  • +
+
+
+
+

ECSContainerDefinition

+

Representation of an AWS ECS Container Definition

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The ARN of the task definition, plus the container definition name

region

The region of the container definition.

name

The name of a container.

image

The image used to start a container. This string is passed directly to the Docker daemon.

cpu

The number of cpu units reserved for the container.

memory

The amount (in MiB) of memory to present to the container.

memory_reservation

The soft limit (in MiB) of memory to reserve for the container.

links

The links parameter allows containers to communicate with each other without the need for port mappings.

essential

If the essential parameter of a container is marked as true, and that container fails or stops for any reason, all other containers that are part of the task are stopped.

entry_point

The entry point that’s passed to the container.

command

The command that’s passed to the container.

start_timeout

Time duration (in seconds) to wait before giving up on resolving dependencies for a container.

stop_timeout

Time duration (in seconds) to wait before the container is forcefully killed if it doesn’t exit normally on its own.

hostname

The hostname to use for your container.

user

The user to use inside the container.

working_directory

The working directory to run commands inside the container in.

disable_networking

When this parameter is true, networking is disabled within the container.

privileged

When this parameter is true, the container is given elevated privileges on the host container instance (similar to the root user).

readonly_root_filesystem

When this parameter is true, the container is given read-only access to its root file system.

dns_servers

A list of DNS servers that are presented to the container.

dns_search_domains

A list of DNS search domains that are presented to the container.

docker_security_options

A list of strings to provide custom labels for SELinux and AppArmor multi-level security systems. This field isn’t valid for containers in tasks using the Fargate launch type.

interactive

When this parameter is true, you can deploy containerized applications that require stdin or a tty to be allocated.

pseudo_terminal

When this parameter is true, a TTY is allocated.

+
+

Relationships

+
    +
  • ECSTaskDefinitions have ECSContainerDefinitions

    +
    ```
    +(ECSTaskDefinition)-[HAS_CONTAINER_DEFINITION]->(ECSContainerDefinition)
    +```
    +
    +
    +
  • +
+
+
+
+

ECSTask

+

Representation of an AWS ECS Task

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The ARN of the task

region

The region of the task.

arn

The arn of the task.

availability_zone

The Availability Zone for the task.

capacity_provider_name

The capacity provider that’s associated with the task.

cluster_arn

The ARN of the cluster that hosts the task.

connectivity

The connectivity status of a task.

connectivity_at

The Unix timestamp for the time when the task last went into CONNECTED status.

container_instance_arn

The ARN of the container instances that host the task.

cpu

The number of CPU units used by the task as expressed in a task definition.

created_at

The Unix timestamp for the time when the task was created. More specifically, it’s for the time when the task entered the PENDING state.

desired_status

The desired status of the task.

enable_execute_command

Determines whether execute command functionality is enabled for this task.

execution_stopped_at

The Unix timestamp for the time when the task execution stopped.

group

The name of the task group that’s associated with the task.

health_status

The health status for the task.

last_status

The last known status for the task.

launch_type

The infrastructure where your task runs on.

memory

The amount of memory (in MiB) that the task uses as expressed in a task definition.

platform_version

The platform version where your task runs on.

platform_family

The operating system that your tasks are running on.

pull_started_at

The Unix timestamp for the time when the container image pull began.

pull_stopped_at

The Unix timestamp for the time when the container image pull completed.

started_at

The Unix timestamp for the time when the task started. More specifically, it’s for the time when the task transitioned from the PENDING state to the RUNNING state.

started_by

The tag specified when a task is started. If an Amazon ECS service started the task, the startedBy parameter contains the deployment ID of that service.

stop_code

The stop code indicating why a task was stopped.

stopped_at

The Unix timestamp for the time when the task was stopped. More specifically, it’s for the time when the task transitioned from the RUNNING state to the STOPPED state.

stopped_reason

The reason that the task was stopped.

stopping_at

The Unix timestamp for the time when the task stops. More specifically, it’s for the time when the task transitions from the RUNNING state to STOPPED.

task_definition_arn

The ARN of the task definition that creates the task.

version

The version counter for the task.

ephemeral_storage_size_in_gib

The total amount, in GiB, of ephemeral storage to set for the task.

+
+

Relationships

+
    +
  • ECSClusters have ECSTasks

    +
    ```
    +(ECSCluster)-[HAS_TASK]->(ECSTask)
    +```
    +
    +
    +
  • +
  • ECSContainerInstances have ECSTasks

    +
    ```
    +(ECSContainerInstance)-[HAS_TASK]->(ECSTask)
    +```
    +
    +
    +
  • +
  • ECSTasks have ECSTaskDefinitions

    +
    ```
    +(ECSTask)-[HAS_TASK_DEFINITION]->(ECSTaskDefinition)
    +```
    +
    +
    +
  • +
+
+
+
+

ECSContainer

+

Representation of an AWS ECS Container

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The ARN of the container

region

The region of the container.

arn

The arn of the container.

task_arn

The ARN of the task.

name

The name of the container.

image

The image used for the container.

image_digest

The container image manifest digest.

runtime_id

The ID of the Docker container.

last_status

The last known status of the container.

exit_code

The exit code returned from the container.

reason

A short (255 max characters) human-readable string to provide additional details about a running or stopped container.

health_status

The health status of the container.

cpu

The number of CPU units set for the container.

memory

The hard limit (in MiB) of memory set for the container.

memory_reservation

The soft limit (in MiB) of memory set for the container.

gpu_ids

The IDs of each GPU assigned to the container.

+
+

Relationships

+
    +
  • ECSTasks have ECSContainers

    +
    ```
    +(ECSTask)-[HAS_CONTAINER]->(ECSContainer)
    +```
    +
    +
    +
  • +
+
+
+
+

SSMInstanceInformation

+

Representation of an AWS SSM InstanceInformation

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The ARN of the instance information

region

The region of the instance information.

instance_id

The managed node ID.

ping_status

Connection status of SSM Agent.

last_ping_date_time

The date and time when the agent last pinged the Systems Manager service.

agent_version

The version of SSM Agent running on your Linux managed node.

is_latest_version

Indicates whether the latest version of SSM Agent is running on your Linux managed node. This field doesn’t indicate whether or not the latest version is installed on Windows managed nodes, because some older versions of Windows Server use the EC2Config service to process Systems Manager requests.

platform_type

The operating system platform type.

platform_name

The name of the operating system platform running on your managed node.

platform_version

The version of the OS platform running on your managed node.

activation_id

The activation ID created by AWS Systems Manager when the server or virtual machine (VM) was registered.

iam_role

The AWS Identity and Access Management (IAM) role assigned to the on-premises Systems Manager managed node. This call doesn’t return the IAM role for Amazon Elastic Compute Cloud (Amazon EC2) instances.

registration_date

The date the server or VM was registered with AWS as a managed node.

resource_type

The type of instance. Instances are either EC2 instances or managed instances.

name

The name assigned to an on-premises server, edge device, or virtual machine (VM) when it is activated as a Systems Manager managed node. The name is specified as the DefaultInstanceName property using the CreateActivation command.

ip_address

The IP address of the managed node.

computer_name

The fully qualified host name of the managed node.

association_status

The status of the association.

last_association_execution_date

The date the association was last run.

last_successful_association_execution_date

The last date the association was successfully run.

source_id

The ID of the source resource. For AWS IoT Greengrass devices, SourceId is the Thing name.

source_type

The type of the source resource. For AWS IoT Greengrass devices, SourceType is AWS::IoT::Thing.

+
+

Relationships

+
    +
  • SSMInstanceInformation is a resource under the AWS Account.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(SSMInstanceInformation)
    +```
    +
    +
    +
  • +
  • SSMInstanceInformation is a resource of an EC2Instance

    +
    ```
    +(EC2Instance)-[HAS_INFORMATION]->(SSMInstanceInformation)
    +```
    +
    +
    +
  • +
+
+
+
+

SSMInstancePatch

+

Representation of an AWS SSM PatchComplianceData

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The ARN of the instance patch

region

The region of the instance patch.

instance_id

The managed node ID.

title

The title of the patch.

kb_id

The operating system-specific ID of the patch.

classification

The classification of the patch, such as SecurityUpdates, Updates, and CriticalUpdates.

severity

The severity of the patch such as Critical, Important, and Moderate.

state

The state of the patch on the managed node, such as INSTALLED or FAILED.

installed_time

The date/time the patch was installed on the managed node. Not all operating systems provide this level of information.

cve_ids

The IDs of one or more Common Vulnerabilities and Exposure (CVE) issues that are resolved by the patch.

+
+

Relationships

+
    +
  • SSMInstancePatch is a resource under the AWS Account.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(SSMInstancePatch)
    +```
    +
    +
    +
  • +
  • EC2Instances have SSMInstancePatches

    +
    ```
    +(EC2Instance)-[HAS_INFORMATION]->(SSMInstancePatch)
    +```
    +
    +
    +
  • +
+
+
+
+ + +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/modules/azure/config.html b/modules/azure/config.html new file mode 100644 index 0000000000..c9ee5cf0c7 --- /dev/null +++ b/modules/azure/config.html @@ -0,0 +1,581 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Azure Configuration — cartography documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+

Azure Configuration

+

Follow these steps to analyze Microsoft Azure assets with Cartography:

+
    +
  1. Set up an Azure identity for Cartography to use, and ensure that this identity has the built-in Azure Reader role attached:

    +
      +
    • Authenticate: $ az login

    • +
    • Create a Service Principal: $ az ad sp create-for-rbac --name cartography --role Reader

    • +
    • Note the values of the tenant, appId, and password fields

    • +
    +
  2. +
  3. Populate environment variables with the values generated in the previous step (e.g., AZURE_TENANT_ID, AZURE_CLIENT_ID, AZURE_CLIENT_SECRET)

  4. +
  5. Call the cartography CLI with: +.. code-block:: bash

    +
    +

    –azure-sp-auth –azure-sync-all-subscriptions –azure-tenant-id ${AZURE_TENANT_ID} –azure-client-id ${AZURE_CLIENT_ID} –azure-client-secret-env-var AZURE_CLIENT_SECRET

    +
    +
  6. +
+
+ + +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/modules/azure/index.html b/modules/azure/index.html new file mode 100644 index 0000000000..fb41ce8c30 --- /dev/null +++ b/modules/azure/index.html @@ -0,0 +1,572 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Microsoft Azure — cartography documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+

Microsoft Azure

+

The azure module has the following coverage:

+
    +
  • CosmosDB

  • +
  • SQL

  • +
  • Storage

  • +
  • Virtual Machine

  • +
+
+
+
+ + +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/modules/azure/schema.html b/modules/azure/schema.html new file mode 100644 index 0000000000..83555310d3 --- /dev/null +++ b/modules/azure/schema.html @@ -0,0 +1,3656 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Azure Schema — cartography documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+

Azure Schema

+
+

AzureTenant

+

Representation of an Azure Tenant.

+ ++++ + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The Azure Tenant ID number

+
+

Relationships

+
    +
  • Azure Principal is part of the Azure Account.

    +
    ```
    +(AzureTenant)-[RESOURCE]->(AzurePrincipal)
    +```
    +
    +
    +
  • +
+
+
+
+

AzurePrincipal

+

Representation of an Azure Principal..

+ ++++ + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

email

Email of the Azure Principal

+
+

Relationships

+
    +
  • Azure Principal is part of the Azure Account.

    +
    ```
    +(AzurePrincipal)-[RESOURCE]->(AzureTenant)
    +```
    +
    +
    +
  • +
+
+
+
+

AzureSubscription

+

Representation of an Azure Subscription..

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The Azure Subscription ID number

name

The friendly name that identifies the subscription

path

The full ID for the Subscription

state

Can be one of Enabled | Disabled | Deleted | PastDue | Warned

+
+

Relationships

+
    +
  • Azure Tenant contains one or more Subscriptions.

    +
    ```
    +(AzureTenant)-[RESOURCE]->(AzureSubscription)
    +```
    +
    +
    +
  • +
+
+
+
+

VirtualMachine

+

Representation of an Azure Virtual Machine.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The Azure Virtual Machine ID number

type

The type of the resource

location

The location where Virtual Machine is created

resourcegroup

The Resource Group where Virtual Machine is created

name

The friendly name that identifies the Virtual Machine

plan

The plan associated with the Virtual Machine

size

The size of the Virtual Machine

license_type

The type of license

computer_name

The computer name

identity_type

The type of identity used for the virtual machine

zones

The Virtual Machine zones

ultra_ssd_enabled

Enables or disables a capability on the virtual machine or virtual machine scale set.

priority

Specifies the priority for the virtual machine

eviction_policy

Specifies the eviction policy for the Virtual Machine

+
+

Relationships

+
    +
  • Azure Subscription contains one or more Virtual Machines.

    +
    ```
    +(AzureSubscription)-[RESOURCE]->(VirtualMachine)
    +```
    +
    +
    +
  • +
+
+
+
+

AzureDataDisk

+

Representation of an Azure Data Disk.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The Azure Data Disk ID number

lun

Specifies the logical unit number of the data disk

name

The data disk name

vhd

The virtual hard disk associated with data disk

image

The source user image virtual hard disk

size

The size of the disk in GB

caching

Specifies the caching requirement

createoption

Specifies how the disk should be created

write_accelerator_enabled

Specifies whether writeAccelerator should be enabled or disabled on the data disk

managed_disk_storage_type

The data disk storage type

+
+

Relationships

+
    +
  • Azure Virtual Machines are attached to Data Disks.

    +
    ```
    +(VirtualMachine)-[ATTACHED_TO]->(AzureDataDisk)
    +```
    +
    +
    +
  • +
+
+
+
+

AzureDisk

+

Representation of an Azure Disk.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The Azure Disk ID number

type

The type of the resource

location

The location where Disk is created

resourcegroup

The Resource Group where Disk is created

name

The friendly name that identifies the Disk

createoption

Specifies how the disk should be created

disksizegb

The size of the disk in GB

encryption

Specifies whether the disk has encryption enabled

maxshares

Specifies how many machines can share the disk

ostype

The operating system type of the disk

tier

Performance Tier associated with the disk

sku

The disk sku name

zones

The logical zone list for disk

+
+

Relationships

+
    +
  • Azure Subscription contains one or more Disks.

    +
    ```
    +(AzureSubscription)-[RESOURCE]->(AzureDisk)
    +```
    +
    +
    +
  • +
+
+
+
+

AzureSnapshot

+

Representation of an Azure Snapshot.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The Azure Snapshot ID number

type

The type of the resource

location

The location where snapshot is created

resourcegroup

The Resource Group where snapshot is created

name

The friendly name that identifies the snapshot

createoption

Specifies how the disk should be created

disksizegb

The size of the snapshot in GB

encryption

Specifies whether the snapshot has encryption enabled

incremental

Indicates whether a snapshot is incremental or not

network_access_policy

Policy for accessing the snapshot via network

ostype

The operating system type of the snapshot

tier

Performance Tier associated with the snapshot

sku

The snapshot sku name

zones

The logical zone list for snapshot

+
+

Relationships

+
    +
  • Azure Subscription contains one or more Snapshots.

    +
    ```
    +(AzureSubscription)-[RESOURCE]->(AzureSnapshot)
    +```
    +
    +
    +
  • +
+
+
+
+

AzureSQLServer

+

Representation of an AzureSQLServer.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The resource ID

location

The location where the resource is created

resourcegroup

The Resource Group where SQL Server is created

name

The friendly name that identifies the SQL server

kind

Specifies the kind of SQL server

state

The state of the server

version

The version of the server

+
+

Relationships

+
    +
  • Azure Subscription contains one or more SQL Servers.

    +
    ```
    +(AzureSubscription)-[RESOURCE]->(AzureSQLServer)
    +```
    +
    +
    +
  • +
  • Azure SQL Server can be used by one or more Azure Server DNS Aliases.

    +
    ```
    +(AzureSQLServer)-[USED_BY]->(AzureServerDNSAlias)
    +```
    +
    +
    +
  • +
  • Azure SQL Server can be administered by one or more Azure Server AD Administrators.

    +
    ```
    +(AzureSQLServer)-[ADMINISTERED_BY]->(AzureServerADAdministrator)
    +```
    +
    +
    +
  • +
  • Azure SQL Server has one or more Azure Recoverable Database.

    +
    ```
    +(AzureSQLServer)-[RESOURCE]->(AzureRecoverableDatabase)
    +```
    +
    +
    +
  • +
  • Azure SQL Server has one or more Azure Restorable Dropped Database.

    +
    ```
    +(AzureSQLServer)-[RESOURCE]->(AzureRestorableDroppedDatabase)
    +```
    +
    +
    +
  • +
  • Azure SQL Server has one or more Azure Failover Group.

    +
    ```
    +(AzureSQLServer)-[RESOURCE]->(AzureFailoverGroup)
    +```
    +
    +
    +
  • +
  • Azure SQL Server has one or more Azure Elastic Pool.

    +
    ```
    +(AzureSQLServer)-[RESOURCE]->(AzureElasticPool)
    +```
    +
    +
    +
  • +
  • Azure SQL Server has one or more Azure SQL Database.

    +
    ```
    +(AzureSQLServer)-[RESOURCE]->(AzureSQLDatabase)
    +```
    +
    +
    +
  • +
+
+
+
+

AzureServerDNSAlias

+

Representation of an AzureServerDNSAlias.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The resource ID

name

The name of the server DNS alias

dnsrecord

The fully qualified DNS record for alias.

+
+

Relationships

+
    +
  • Azure SQL Server can be used by one or more Azure Server DNS Aliases.

    +
    ```
    +(AzureSQLServer)-[USED_BY]->(AzureServerDNSAlias)
    +```
    +
    +
    +
  • +
+
+
+
+

AzureServerADAdministrator

+

Representation of an AzureServerADAdministrator.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The resource ID

name

The name of the resource.

administratortype

The type of the server administrator.

login

The login name of the server administrator.

+
+

Relationships

+
    +
  • Azure SQL Server can be administered by one or more Azure Server AD Administrators.

    +
    ```
    +(AzureSQLServer)-[ADMINISTERED_BY]->(AzureServerADAdministrator)
    +```
    +
    +
    +
  • +
+
+
+
+

AzureRecoverableDatabase

+

Representation of an AzureRecoverableDatabase.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The resource ID

name

The name of the resource.

edition

The edition of the database.

servicelevelobjective

The service level objective name of the database.

lastbackupdate

The last available backup date of the database (ISO8601 format).

+
+

Relationships

+
    +
  • Azure SQL Server has one or more Azure Recoverable Database.

    +
    ```
    +(AzureSQLServer)-[RESOURCE]->(AzureRecoverableDatabase)
    +```
    +
    +
    +
  • +
+
+
+
+

AzureRestorableDroppedDatabase

+

Representation of an AzureRestorableDroppedDatabase.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The resource ID

name

The name of the resource.

location

The geo-location where the resource lives.

databasename

The name of the database.

creationdate

The creation date of the database (ISO8601 format).

deletiondate

The deletion date of the database (ISO8601 format).

restoredate

The earliest restore date of the database (ISO8601 format).

edition

The edition of the database.

servicelevelobjective

The service level objective name of the database.

maxsizebytes

The max size in bytes of the database.

+
+

Relationships

+
    +
  • Azure SQL Server has one or more Azure Restorable Dropped Database.

    +
    ```
    +(AzureSQLServer)-[RESOURCE]->(AzureRestorableDroppedDatabase)
    +```
    +
    +
    +
  • +
+
+
+
+

AzureFailoverGroup

+

Representation of an AzureFailoverGroup.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The resource ID

name

The name of the resource.

location

The geo-location where the resource lives.

replicationrole

Local replication role of the failover group instance.

replicationstate

Replication state of the failover group instance.

+
+

Relationships

+
    +
  • Azure SQL Server has one or more Azure Failover Group.

    +
    ```
    +(AzureSQLServer)-[RESOURCE]->(AzureFailoverGroup)
    +```
    +
    +
    +
  • +
+
+
+
+

AzureElasticPool

+

Representation of an AzureElasticPool.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The resource ID

name

The name of the resource.

location

The location of the resource.

kind

The kind of elastic pool.

creationdate

The creation date of the elastic pool (ISO8601 format).

state

The state of the elastic pool.

maxsizebytes

The storage limit for the database elastic pool in bytes.

licensetype

The license type to apply for this elastic pool.

zoneredundant

Specifies whether or not this elastic pool is zone redundant, which means the replicas of this elastic pool will be spread across multiple availability zones.

+
+

Relationships

+
    +
  • Azure SQL Server has one or more Azure Elastic Pool.

    +
    ```
    +(AzureSQLServer)-[RESOURCE]->(AzureElasticPool)
    +```
    +
    +
    +
  • +
+
+
+
+

AzureSQLDatabase

+

Representation of an AzureSQLDatabase.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The resource ID

name

The name of the resource.

location

The location of the resource.

kind

The kind of database.

creationdate

The creation date of the database (ISO8601 format).

databaseid

The ID of the database.

maxsizebytes

The max size of the database expressed in bytes.

licensetype

The license type to apply for this database.

secondarylocation

The default secondary region for this database.

elasticpoolid

The resource identifier of the elastic pool containing this database.

collation

The collation of the database.

failovergroupid

Failover Group resource identifier that this database belongs to.

zoneredundant

Whether or not this database is zone redundant, which means the replicas of this database will be spread across multiple availability zones.

restorabledroppeddbid

The resource identifier of the restorable dropped database associated with create operation of this database.

recoverabledbid

The resource identifier of the recoverable database associated with create operation of this database.

+
+

Relationships

+
    +
  • Azure SQL Server has one or more Azure SQL Database.

    +
    ```
    +(AzureSQLServer)-[RESOURCE]->(AzureSQLDatabase)
    +```
    +
    +
    +
  • +
  • Azure SQL Database contains one or more Azure Replication Links.

    +
    ```
    +(AzureSQLDatabase)-[CONTAINS]->(AzureReplicationLink)
    +```
    +
    +
    +
  • +
  • Azure SQL Database contains a Database Threat Detection Policy.

    +
    ```
    +(AzureSQLDatabase)-[CONTAINS]->(AzureDatabaseThreatDetectionPolicy)
    +```
    +
    +
    +
  • +
  • Azure SQL Database contains one or more Restore Points.

    +
    ```
    +(AzureSQLDatabase)-[CONTAINS]->(AzureRestorePoint)
    +```
    +
    +
    +
  • +
  • Azure SQL Database contains Transparent Data Encryption.

    +
    ```
    +(AzureSQLDatabase)-[CONTAINS]->(AzureTransparentDataEncryption)
    +```
    +
    +
    +
  • +
+
+
+ +
+

AzureDatabaseThreatDetectionPolicy

+

Representation of an AzureDatabaseThreatDetectionPolicy.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The resource ID

name

The name of the resource.

location

The geo-location where the resource lives.

kind

The kind of the resource.

emailadmins

Specifies that the alert is sent to the account administrators.

emailaddresses

Specifies the semicolon-separated list of e-mail addresses to which the alert is sent.

retentiondays

Specifies the number of days to keep in the Threat Detection audit logs.

state

Specifies the state of the policy.

storageendpoint

Specifies the blob storage endpoint.

useserverdefault

Specifies whether to use the default server policy.

disabledalerts

Specifies the semicolon-separated list of alerts that are disabled, or empty string to disable no alerts.

+
+

Relationships

+
    +
  • Azure SQL Database contains a Database Threat Detection Policy.

    +
    ```
    +(AzureSQLDatabase)-[CONTAINS]->(AzureDatabaseThreatDetectionPolicy)
    +```
    +
    +
    +
  • +
+
+
+
+

AzureRestorePoint

+

Representation of an AzureRestorePoint.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The resource ID

name

The name of the resource.

location

The geo-location where the resource lives.

restoredate

The earliest time to which this database can be restored.

restorepointtype

The type of restore point.

creationdate

The time the backup was taken.

+
+

Relationships

+
    +
  • Azure SQL Database contains one or more Restore Points.

    +
    ```
    +(AzureSQLDatabase)-[CONTAINS]->(AzureRestorePoint)
    +```
    +
    +
    +
  • +
+
+
+
+

AzureTransparentDataEncryption

+

Representation of an AzureTransparentDataEncryption.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The resource ID

name

The name of the resource.

location

The resource location.

status

The status of the database transparent data encryption.

+
+

Relationships

+
    +
  • Azure SQL Database contains Transparent Data Encryption.

    +
    ```
    +(AzureSQLDatabase)-[CONTAINS]->(AzureTransparentDataEncryption)
    +```
    +
    +
    +
  • +
+
+
+
+

AzureStorageAccount

+

Representation of an AzureStorageAccount.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

Fully qualified resource ID for the resource.

type

The type of the resource.

location

The geo-location where the resource lives.

resourcegroup

The Resource Group where the storage account is created

name

The name of the resource.

kind

Gets the Kind of the resource.

creationtime

Gets the creation date and time of the storage account in UTC.

hnsenabled

Specifies if the Account HierarchicalNamespace is enabled.

primarylocation

Gets the location of the primary data center for the storage account.

secondarylocation

Gets the location of the geo-replicated secondary for the storage account.

provisioningstate

Gets the status of the storage account at the time the operation was called.

statusofprimary

Gets the status availability status of the primary location of the storage account.

statusofsecondary

Gets the status availability status of the secondary location of the storage account.

supportshttpstrafficonly

Allows https traffic only to storage service if sets to true.

+
+

Relationships

+
    +
  • Azure Subscription contains one or more Storage Accounts.

    +
    ```
    +(AzureSubscription)-[RESOURCE]->(AzureStorageAccount)
    +```
    +
    +
    +
  • +
  • Azure Storage Accounts uses one or more Queue Services.

    +
    ```
    +(AzureStorageAccount)-[USES]->(AzureStorageQueueService)
    +```
    +
    +
    +
  • +
  • Azure Storage Accounts uses one or more Table Services.

    +
    ```
    +(AzureStorageAccount)-[USES]->(AzureStorageTableService)
    +```
    +
    +
    +
  • +
  • Azure Storage Accounts uses one or more File Services.

    +
    ```
    +(AzureStorageAccount)-[USES]->(AzureStorageFileService)
    +```
    +
    +
    +
  • +
  • Azure Storage Accounts uses one or more Blob Services.

    +
    ```
    +(AzureStorageAccount)-[USES]->(AzureStorageBlobService)
    +```
    +
    +
    +
  • +
+
+
+
+

AzureStorageQueueService

+

Representation of an AzureStorageQueueService.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

Fully qualified resource ID for the resource.

type

The type of the resource.

name

The name of the queue service.

+
+

Relationships

+
    +
  • Azure Storage Accounts uses one or more Queue Services.

    +
    ```
    +(AzureStorageAccount)-[USES]->(AzureStorageQueueService)
    +```
    +
    +
    +
  • +
  • Queue Service contains one or more queues.

    +
    ```
    +(AzureStorageQueueService)-[CONTAINS]->(AzureStorageQueue)
    +```
    +
    +
    +
  • +
+
+
+
+

AzureStorageTableService

+

Representation of an AzureStorageTableService.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

Fully qualified resource ID for the resource.

type

The type of the resource.

name

The name of the table service.

+
+

Relationships

+
    +
  • Azure Storage Accounts uses one or more Table Services.

    +
    ```
    +(AzureStorageAccount)-[USES]->(AzureStorageTableService)
    +```
    +
    +
    +
  • +
  • Table Service contains one or more tables.

    +
    ```
    +(AzureStorageTableService)-[CONTAINS]->(AzureStorageTable)
    +```
    +
    +
    +
  • +
+
+
+
+

AzureStorageFileService

+

Representation of an AzureStorageFileService.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

Fully qualified resource ID for the resource.

type

The type of the resource.

name

The name of the file service.

+
+

Relationships

+
    +
  • Azure Storage Accounts uses one or more File Services.

    +
    ```
    +(AzureStorageAccount)-[USES]->(AzureStorageFileService)
    +```
    +
    +
    +
  • +
  • Table Service contains one or more file shares.

    +
    ```
    +(AzureStorageFileService)-[CONTAINS]->(AzureStorageFileShare)
    +```
    +
    +
    +
  • +
+
+
+
+

AzureStorageBlobService

+

Representation of an AzureStorageBlobService.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

Fully qualified resource ID for the resource.

type

The type of the resource.

name

The name of the blob service.

+
+

Relationships

+
    +
  • Azure Storage Accounts uses one or more Blob Services.

    +
    ```
    +(AzureStorageAccount)-[USES]->(AzureStorageBlobService)
    +```
    +
    +
    +
  • +
  • Blob Service contains one or more blob containers.

    +
    ```
    +(AzureStorageBlobService)-[CONTAINS]->(AzureStorageBlobContainer)
    +```
    +
    +
    +
  • +
+
+
+
+

AzureStorageQueue

+

Representation of an AzureStorageQueue.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

Fully qualified resource ID for the resource.

type

The type of the resource.

name

The name of the queue.

+
+

Relationships

+
    +
  • Queue Service contains one or more queues.

    +
    ```
    +(AzureStorageQueueService)-[CONTAINS]->(AzureStorageQueue)
    +```
    +
    +
    +
  • +
+
+
+
+

AzureStorageTable

+

Representation of an AzureStorageTable.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

Fully qualified resource ID for the resource.

type

The type of the resource.

name

The name of the table resource.

tablename

Table name under the specified account.

+
+

Relationships

+
    +
  • Table Service contains one or more tables.

    +
    ```
    +(AzureStorageTableService)-[CONTAINS]->(AzureStorageTable)
    +```
    +
    +
    +
  • +
+
+
+
+

AzureStorageFileShare

+

Representation of an AzureStorageFileShare.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

Fully qualified resource ID for the resource.

type

The type of the resource.

name

The name of the resource.

lastmodifiedtime

Specifies the date and time the share was last modified.

sharequota

The maximum size of the share, in gigabytes.

accesstier

Specifies the access tier for the share.

deleted

Indicates whether the share was deleted.

accesstierchangetime

Indicates the last modification time for share access tier.

accesstierstatus

Indicates if there is a pending transition for access tier.

deletedtime

The deleted time if the share was deleted.

enabledprotocols

The authentication protocol that is used for the file share.

remainingretentiondays

Remaining retention days for share that was soft deleted.

shareusagebytes

The approximate size of the data stored on the share.

version

The version of the share.

+
+

Relationships

+
    +
  • File Service contains one or more file shares.

    +
    ```
    +(AzureStorageTableService)-[CONTAINS]->(AzureStorageFileShare)
    +```
    +
    +
    +
  • +
+
+
+
+

AzureStorageBlobContainer

+

Representation of an AzureStorageBlobContainer.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

Fully qualified resource ID for the resource.

type

The type of the resource.

name

The name of the resource.

deleted

Indicates whether the blob container was deleted.

deletedtime

Blob container deletion time.

defaultencryptionscope

Default the container to use specified encryption scope for all writes.

publicaccess

Specifies whether data in the container may be accessed publicly and the level of access.

leasestatus

The lease status of the container.

leasestate

Lease state of the container.

lastmodifiedtime

Specifies the date and time the container was last modified.

remainingretentiondays

Specifies the remaining retention days for soft deleted blob container.

version

The version of the deleted blob container.

hasimmutabilitypolicy

Specifies the if the container has an ImmutabilityPolicy or not.

haslegalhold

Specifies if the container has any legal hold tags.

leaseduration

Specifies whether the lease on a container is of infinite or fixed duration, only when the container is leased.

+
+

Relationships

+
    +
  • Blob Service contains one or more blob containers.

    +
    ```
    +(AzureStorageBlobService)-[CONTAINS]->(AzureStorageBlobContainer)
    +```
    +
    +
    +
  • +
+
+
+
+

AzureCosmosDBAccount

+

Representation of an AzureCosmosDBAccount.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The unique resource identifier of the ARM resource.

location

The location of the resource group to which the resource belongs.

resourcegroup

The Resource Group where the database account is created.

name

The name of the ARM resource.

kind

Indicates the type of database account.

type

The type of Azure resource.

ipranges

List of IpRules.

capabilities

List of Cosmos DB capabilities for the account.

documentendpoint

The connection endpoint for the Cosmos DB database account.

virtualnetworkfilterenabled

Flag to indicate whether to enable/disable Virtual Network ACL rules.

enableautomaticfailover

Enables automatic failover of the write region in the rare event that the region is unavailable due to an outage.

provisioningstate

The status of the Cosmos DB account at the time the operation was called.

multiplewritelocations

Enables the account to write in multiple locations.

accountoffertype

The offer type for the Cosmos DB database account.

publicnetworkaccess

Whether requests from Public Network are allowed.

enablecassandraconnector

Enables the cassandra connector on the Cosmos DB C* account.

connectoroffer

The cassandra connector offer type for the Cosmos DB database C* account.

disablekeybasedmetadatawriteaccess

Disable write operations on metadata resources (databases, containers, throughput) via account keys.

keyvaulturi

The URI of the key vault.

enablefreetier

Flag to indicate whether Free Tier is enabled.

enableanalyticalstorage

Flag to indicate whether to enable storage analytics.

defaultconsistencylevel

The default consistency level and configuration settings of the Cosmos DB account.

maxstalenessprefix

When used with the Bounded Staleness consistency level, this value represents the number of stale requests tolerated.

maxintervalinseconds

When used with the Bounded Staleness consistency level, this value represents the time amount of staleness (in seconds) tolerated.

+
+

Relationships

+
    +
  • Azure Subscription contains one or more database accounts.

    +
    ```
    +(AzureSubscription)-[RESOURCE]->(AzureCosmosDBAccount)
    +```
    +
    +
    +
  • +
  • Azure Database Account can be read from, written from and is associated with Azure CosmosDB Locations.

    +
    ```
    +(AzureCosmosDBAccount)-[CAN_WRITE_FROM]->(AzureCosmosDBLocation)
    +```
    +(AzureCosmosDBAccount)-[CAN_READ_FROM]->(AzureCosmosDBLocation)
    +```
    +(AzureCosmosDBAccount)-[ASSOCIATED_WITH]->(AzureCosmosDBLocation)
    +```
    +
    +
    +
  • +
  • Azure Database Account contains one or more Cors Policy.

    +
    ```
    +(AzureCosmosDBAccount)-[CONTAINS]->(AzureCosmosDBCorsPolicy)
    +```
    +
    +
    +
  • +
  • Azure Database Account contains one or more failover policies.

    +
    ```
    +(AzureCosmosDBAccount)-[CONTAINS]->(AzureCosmosDBAccountFailoverPolicy)
    +```
    +
    +
    +
  • +
  • Azure Database Account is configured with one or more private endpoint connections.

    +
    ```
    +(AzureCosmosDBAccount)-[CONFIGURED_WITH]->(AzureCDBPrivateEndpointConnection)
    +```
    +
    +
    +
  • +
  • Azure Database Account is configured with one or more virtual network rules.

    +
    ```
    +(AzureCosmosDBAccount)-[CONFIGURED_WITH]->(AzureCosmosDBVirtualNetworkRule)
    +```
    +
    +
    +
  • +
  • Azure Database Account contains one or more SQL databases.

    +
    ```
    +(AzureCosmosDBAccount)-[CONTAINS]->(AzureCosmosDBSqlDatabase)
    +```
    +
    +
    +
  • +
  • Azure Database Account contains one or more Cassandra keyspace.

    +
    ```
    +(AzureCosmosDBAccount)-[CONTAINS]->(AzureCosmosDBCassandraKeyspace)
    +```
    +
    +
    +
  • +
  • Azure Database Account contains one or more MongoDB Database.

    +
    ```
    +(AzureCosmosDBAccount)-[CONTAINS]->(AzureCosmosDBMongoDBDatabase)
    +```
    +
    +
    +
  • +
  • Azure Database Account contains one or more table resource.

    +
    ```
    +(AzureCosmosDBAccount)-[CONTAINS]->(AzureCosmosDBTableResource)
    +```
    +
    +
    +
  • +
+
+
+
+

AzureCosmosDBLocation

+

Representation of an Azure CosmosDB Location.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The unique identifier of the region within the database account.

locationname

The name of the region.

documentendpoint

The connection endpoint for the specific region.

provisioningstate

The status of the Cosmos DB account at the time the operation was called.

failoverpriority

The failover priority of the region.

iszoneredundant

Flag to indicate whether or not this region is an AvailabilityZone region.

+
+

Relationships

+
    +
  • Azure Database Account has write permissions from, read permissions from and is associated with Azure CosmosDB Locations.

    +
    ```
    +(AzureCosmosDBAccount)-[CAN_WRITE_FROM]->(AzureCosmosDBLocation)
    +```
    +(AzureCosmosDBAccount)-[CAN_READ_FROM]->(AzureCosmosDBLocation)
    +```
    +(AzureCosmosDBAccount)-[ASSOCIATED_WITH]->(AzureCosmosDBLocation)
    +```
    +
    +
    +
  • +
+
+
+
+

AzureCosmosDBCorsPolicy

+

Representation of an Azure Cosmos DB Cors Policy.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The unique resource identifier for Cors Policy.

allowedorigins

The origin domains that are permitted to make a request against the service via CORS.

allowedmethods

The methods (HTTP request verbs) that the origin domain may use for a CORS request.

allowedheaders

The request headers that the origin domain may specify on the CORS request.

exposedheaders

The response headers that may be sent in the response to the CORS request and exposed by the browser to the request issuer.

maxageinseconds

The maximum amount time that a browser should cache the preflight OPTIONS request.

+
+

Relationships

+
    +
  • Azure Database Account contains one or more Cors Policy.

    +
    ```
    +(AzureCosmosDBAccount)-[CONTAINS]->(AzureCosmosDBCorsPolicy)
    +```
    +
    +
    +
  • +
+
+
+
+

AzureCosmosDBAccountFailoverPolicy

+

Representation of an Azure Database Account Failover Policy.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The unique identifier of the region in which the database account replicates to.

locationname

The name of the region in which the database account exists.

failoverpriority

The failover priority of the region. A failover priority of 0 indicates a write region.

+
+

Relationships

+
    +
  • Azure Database Account contains one or more failover policies.

    +
    ```
    +(AzureCosmosDBAccount)-[CONTAINS]->(AzureCosmosDBAccountFailoverPolicy)
    +```
    +
    +
    +
  • +
+
+
+
+

AzureCDBPrivateEndpointConnection

+

Representation of an Azure Cosmos DB Private Endpoint Connection.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

Fully qualified resource Id for the resource.

name

The name of the resource.

privateendpointid

Resource id of the private endpoint.

status

The private link service connection status.

actionrequired

Any action that is required beyond basic workflow (approve/ reject/ disconnect).

+
+

Relationships

+
    +
  • Azure Database Account is configured with one or more private endpoint connections.

    +
    ```
    +(AzureCosmosDBAccount)-[CONFIGURED_WITH]->(AzureCDBPrivateEndpointConnection)
    +```
    +
    +
    +
  • +
+
+
+
+

AzureCosmosDBVirtualNetworkRule

+

Representation of an Azure Cosmos DB Virtual Network Rule.

+ ++++ + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

Resource ID of a subnet.

ignoremissingvnetserviceendpoint

Create firewall rule before the virtual network has vnet service endpoint enabled.

+
+

Relationships

+
    +
  • Azure Database Account is configured with one or more virtual network rules.

    +
    ```
    +(AzureCosmosDBAccount)-[CONFIGURED_WITH]->(AzureCosmosDBVirtualNetworkRule)
    +```
    +
    +
    +
  • +
+
+
+
+

AzureCosmosDBSqlDatabase

+

Representation of an AzureCosmosDBSqlDatabase.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The unique resource identifier of the ARM resource.

name

The name of the ARM resource.

type

The type of Azure resource.

location

The location of the resource group to which the resource belongs.

throughput

Value of the Cosmos DB resource throughput or autoscaleSettings.

maxthroughput

Represents maximum throughput, the resource can scale up to.

+
+

Relationships

+
    +
  • Azure Database Account contains one or more SQL databases.

    +
    ```
    +(AzureCosmosDBAccount)-[CONTAINS]->(AzureCosmosDBSqlDatabase)
    +```
    +
    +
    +
  • +
  • SQL Databases contain one or more SQL containers.

    +
    ```
    +(AzureCosmosDBSqlDatabase)-[CONTAINS]->(AzureCosmosDBSqlContainer)
    +```
    +
    +
    +
  • +
+
+
+
+

AzureCosmosDBCassandraKeyspace

+

Representation of an AzureCosmosDBCassandraKeyspace.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The unique resource identifier of the ARM resource.

name

The name of the ARM resource.

type

The type of Azure resource.

location

The location of the resource group to which the resource belongs.

throughput

Value of the Cosmos DB resource throughput or autoscaleSettings.

maxthroughput

Represents maximum throughput, the resource can scale up to.

+
+

Relationships

+
    +
  • Azure Database Account contains one or more Cassandra keyspace.

    +
    ```
    +(AzureCosmosDBAccount)-[CONTAINS]->(AzureCosmosDBCassandraKeyspace)
    +```
    +
    +
    +
  • +
  • Cassandra Keyspace contains one or more Cassandra tables.

    +
    ```
    +(AzureCosmosDBCassandraKeyspace)-[CONTAINS]->(AzureCosmosDBCassandraTable)
    +```
    +
    +
    +
  • +
+
+
+
+

AzureCosmosDBMongoDBDatabase

+

Representation of an AzureCosmosDBMongoDBDatabase.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The unique resource identifier of the ARM resource.

name

The name of the ARM resource.

type

The type of Azure resource.

location

The location of the resource group to which the resource belongs.

throughput

Value of the Cosmos DB resource throughput or autoscaleSettings.

maxthroughput

Represents maximum throughput, the resource can scale up to.

+
+

Relationships

+
    +
  • Azure Database Account contains one or more MongoDB Database.

    +
    ```
    +(AzureCosmosDBAccount)-[CONTAINS]->(AzureCosmosDBMongoDBDatabase)
    +```
    +
    +
    +
  • +
  • MongoDB database contains one or more MongoDB collections.

    +
    ```
    +(AzureCosmosDBMongoDBDatabase)-[CONTAINS]->(AzureCosmosDBMongoDBCollection)
    +```
    +
    +
    +
  • +
+
+
+
+

AzureCosmosDBTableResource

+

Representation of an AzureCosmosDBTableResource.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The unique resource identifier of the ARM resource.

name

The name of the ARM resource.

type

The type of Azure resource.

location

The location of the resource group to which the resource belongs.

throughput

Value of the Cosmos DB resource throughput or autoscaleSettings.

maxthroughput

Represents maximum throughput, the resource can scale up to.

+
+

Relationships

+
    +
  • Azure Database Account contains one or more table resource.

    +
    ```
    +(AzureCosmosDBAccount)-[CONTAINS]->(AzureCosmosDBTableResource)
    +```
    +
    +
    +
  • +
+
+
+
+

AzureCosmosDBSqlContainer

+

Representation of an AzureCosmosDBSqlContainer.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The unique resource identifier of the ARM resource.

name

The name of the ARM resource.

type

The type of Azure resource.

location

The location of the resource group to which the resource belongs.

throughput

Value of the Cosmos DB resource throughput or autoscaleSettings.

maxthroughput

Represents maximum throughput, the resource can scale up to.

container

Name of the Cosmos DB SQL container.

defaultttl

Default time to live.

analyticalttl

Specifies the Analytical TTL.

isautomaticindexingpolicy

Indicates if the indexing policy is automatic.

indexingmode

Indicates the indexing mode.

conflictresolutionpolicymode

Indicates the conflict resolution mode.

+
+

Relationships

+
    +
  • SQL Databases contain one or more SQL containers.

    +
    ```
    +(AzureCosmosDBSqlDatabase)-[CONTAINS]->(AzureCosmosDBSqlContainer)
    +```
    +
    +
    +
  • +
+
+
+
+

AzureCosmosDBCassandraTable

+

Representation of an AzureCosmosDBCassandraTable.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The unique resource identifier of the ARM resource.

name

The name of the ARM resource.

type

The type of Azure resource.

location

The location of the resource group to which the resource belongs.

throughput

Value of the Cosmos DB resource throughput or autoscaleSettings.

maxthroughput

Represents maximum throughput, the resource can scale up to.

container

Name of the Cosmos DB Cassandra table.

defaultttl

Time to live of the Cosmos DB Cassandra table.

analyticalttl

Specifies the Analytical TTL.

+
+

Relationships

+
    +
  • Cassandra Keyspace contains one or more Cassandra tables.

    +
    ```
    +(AzureCosmosDBCassandraKeyspace)-[CONTAINS]->(AzureCosmosDBCassandraTable)
    +```
    +
    +
    +
  • +
+
+
+
+

AzureCosmosDBMongoDBCollection

+

Representation of an AzureCosmosDBMongoDBCollection.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The unique resource identifier of the ARM resource.

name

The name of the ARM resource.

type

The type of Azure resource.

location

The location of the resource group to which the resource belongs.

throughput

Value of the Cosmos DB resource throughput or autoscaleSettings.

maxthroughput

Represents maximum throughput, the resource can scale up to.

collectionname

Name of the Cosmos DB MongoDB collection.

analyticalttl

Specifies the Analytical TTL.

+
+

Relationships

+
    +
  • MongoDB database contains one or more MongoDB collections.

    +
    ```
    +(AzureCosmosDBMongoDBDatabase)-[CONTAINS]->(AzureCosmosDBMongoDBCollection)
    +```
    +
    +
    +
  • +
+
+
+
+ + +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/modules/bigfix/config.html b/modules/bigfix/config.html new file mode 100644 index 0000000000..a5d67c02d0 --- /dev/null +++ b/modules/bigfix/config.html @@ -0,0 +1,571 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + BigFix Configuration — cartography documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+

BigFix Configuration

+

Follow these steps to analyze BigFix objects with Cartography.

+
    +
  1. Prepare a read-only BigFix username and password.

  2. +
  3. Pass the BigFix username to the --bigfix-username CLI arg.

  4. +
  5. Populate an environment variable with the password.

  6. +
  7. Pass that env var name to the --bigfix_password_env_var CLI arg.

  8. +
+
+ + +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/modules/bigfix/index.html b/modules/bigfix/index.html new file mode 100644 index 0000000000..d35ff2e293 --- /dev/null +++ b/modules/bigfix/index.html @@ -0,0 +1,569 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Lastpass — cartography documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+

Lastpass

+

The BigFix module has the following coverage:

+
    +
  • Computers

  • +
+
+
+
+ + +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/modules/bigfix/schema.html b/modules/bigfix/schema.html new file mode 100644 index 0000000000..19114c4b6f --- /dev/null +++ b/modules/bigfix/schema.html @@ -0,0 +1,703 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + BigFix Schema — cartography documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+

BigFix Schema

+
+

BigfixComputer

+

Represents a computer tracked by BigFix.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first created this node

lastupdated

Timestamp of the last time the node was updated

id

String. Internal BigFix ID.

activedirectorypath

Example: CN=my-server-2,CN=Computers,DC=example-corp,DC=net

agenttype

Example: Native

agentversion

Version of the BigFix agent. Example: 10.0.7.52

averageevaluationcycle

Example: 106 (integer)

besrelayselectionmethod

Example: Manual

besrootserver

Example: bigfixroot.example.com (0)

bios

String value. Example: 06/25/2021

computername

Example: my-server-2

computertype

Example: Virtual, Physical

cpu

Example: 2300 MHz Xeon Gold 5218

devicetype

Example: Server

dnsname

Example: my-server-2.example.com

enrollmentdatetime

The date time this asset was enrolled in BigFix. Example: 2022-04-06T18:54:01-07:00

ipaddress

Example: 192.168.128.215

ipv6address

Example: fe80:0:0:0:abcd:abcd:abcd:abcd

islocked

Boolean - whether this asset is locked

lastreporttime

Last reported datetime of this asset 2023-04-19T15:55:23Z

locationbyiprange

Example: SF

loggedonuser

Currently logged on username. Example: , bartsimpson

macaddress

Example: 00-50-ab-cd-ab-cd

os

Example: Win2019 10.0.17763.3406 (1809)

providername

Example: VMware, On Premises

ram

Example: 16384 MB

relay

Example: mybigfixrelay.example.com

remotedesktopisenabled

Boolean - whether remote desktop is enabled

subnetaddress

Example: 192.168.128.0

username

Example: , bartsimpson

+
+

Relationships

+
    +
  • A BigfixComputer is a resource of a BigfixRoot.

    +
    (:BigfixRoot)-[:RESOURCE]->(:BigfixComputer)
    +
    +
    +
  • +
+
+
+
+ + +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/modules/crowdstrike/config.html b/modules/crowdstrike/config.html new file mode 100644 index 0000000000..5b170e8203 --- /dev/null +++ b/modules/crowdstrike/config.html @@ -0,0 +1,575 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Crowdstrike Configuration — cartography documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+

Crowdstrike Configuration

+

Follow these steps to analyze Crowdstrike falcon objects in Cartography.

+
    +
  1. Prepare an API key for crowdstrike falcon

    +
      +
    1. Crowdstrike’s documentation is private, so please see your instance’s documentation on how to generate an API key.

    2. +
    3. Populate an environment variable with the Client ID. You can pass the environment variable name via CLI with the --crowdstrike-client-id-env-var parameter.

    4. +
    5. Populate an environment variable with the Client Secret. You can pass the environment variable name via CLI with the --crowdstrike-client-secret-env-var parameter.

    6. +
    7. If you are using a self-hosted version of crowdstrike, you can change the API url, by passing it into the CLI with the --crowdstrike-api-url parameter.

    8. +
    +
  2. +
+
+ + +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/modules/crowdstrike/index.html b/modules/crowdstrike/index.html new file mode 100644 index 0000000000..0d473159b2 --- /dev/null +++ b/modules/crowdstrike/index.html @@ -0,0 +1,571 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Crowdstrike — cartography documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+

Crowdstrike

+

The crowdstrike module has the following coverage:

+
    +
  • Hosts

  • +
  • Spotlight Vulnerabilities

  • +
  • CVEs

  • +
+
+
+
+ + +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/modules/crowdstrike/schema.html b/modules/crowdstrike/schema.html new file mode 100644 index 0000000000..512ad10b07 --- /dev/null +++ b/modules/crowdstrike/schema.html @@ -0,0 +1,855 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Crowdstrike Schema — cartography documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+ +
+
+ +
+
+ +
+

Crowdstrike Schema

+
+

CrowdstrikeHost

+

Representation of a Crowdstrike Host

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The device ID for this host

cid

The customer ID

instance_id

The AWS instance ID associated with this host

status

Containment Status of the machine. “Normal” denotes good operations; other values might mean reduced functionality or support.

hostname

The name of the machine.

machine_domain

Active Directory domain name.

crowdstrike_first_seen

Timestamp of device’s first connection to Falcon

crowdstrike_last_seen

Timestamp of device’s most recent connection to Falcon

local_ip

The device’s local IP address.

external_ip

External IP of the device, as seen by CrowdStrike.

cpu_signature

The CPU signature of the device.

bios_manufacturer

Bios manufacture name.

bios_version

Bios version.

mac_address

The MAC address of the device

os_version

Operating system version.

os_build

The build of the OS

platform_id

CrowdStrike agent configuration notes

platform_name

Operating system platform.

service_provider

The service provider for the device.

service_provider_account_id

The service provider account ID associated with this device

agent_version

CrowdStrike agent configuration notes

system_manufacturer

Name of system manufacturer

system_product_name

Name of system product

product_type

The product type

product_type_desc

Name of product type.

provision_status

The provision status of the device

reduced_functionality_mode

Reduced functionality mode (RFM) status

kernel_version

Kernel version of the host OS.

major_version

Major version of the Operating System

minor_version

Minor version of the Operating System

tags

Grouping tags for the device

modified_timestamp

The last time that the machine record was updated. Can include status like containment status changes or configuration group changes

+
+

Relationships

+
    +
  • CrowdstrikeHost has SpotlightVulnerability

    +
    (CrowdstrikeHost)-[HAS_VULNERABILITY]->(SpotlightVulnerability)
    +
    +
    +
  • +
+
+
+
+

SpotlightVulnerability

+

Representation of a Crowdstrike Vulnerability

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The ID for this vulnerability

cid

The customer ID

aid

The unique identifier (agent ID) of the sensor where the vulnerability was found.

status

The vulnerability’s current status. One of open, closed, reopen, or expired.

created_timestamp

The UTC date and time that the vulnerability was created in Spotlight.

closed_timestamp

The date and time a vulnerability was set to a status of “closed”

updated_timestamp

The UTC date and time of the last update made on a vulnerability.

cve_id

The ID of the CVE.

host_info_local_ip

The device’s local IP address.

remediation_ids

The unique IDs of the remediations.

app_product_name_version

The name and version of the product associated with the vulnerability.

+
+

Relationships

+
    +
  • CrowdstrikeHost has SpotlightVulnerability

    +
    (CrowdstrikeHost)-[HAS_VULNERABILITY]->(SpotlightVulnerability)
    +
    +
    +
  • +
  • SpotlightVulnerability has CVE

    +
    (SpotlightVulnerability)-[HAS_CVE]->(CVE)
    +
    +
    +
  • +
+
+
+
+

CVE::CrowdstrikeFinding

+

Representation of a CVE

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The ID for this CVE

base_score

Base score of the CVE (float value between 1 and 10).

severity

Severity of the CVE. One of CRITICAL, HIGH, MEDIUM, LOW, UNKNOWN, or NONE.

exploitability_score

Numeric value of the most severe known exploit. 0=UNPROVEN; 30=AVAILABLE; 60=EASILY_ACCESSIBLE; 90=ACTIVELY_USED

+
+

Relationships

+
    +
  • SpotlightVulnerability has CVE

    +
    (SpotlightVulnerability)-[HAS_CVE]->(CVE)
    +
    +
    +
  • +
+
+
+
+ + +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/modules/crxcavator/config.html b/modules/crxcavator/config.html new file mode 100644 index 0000000000..b1c5ec2f26 --- /dev/null +++ b/modules/crxcavator/config.html @@ -0,0 +1,578 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Crxcavator Configuration — cartography documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+

Crxcavator Configuration

+

Follow these steps to analyze Chrome Extensions with Cartography.

+
    +
  1. Prepare your CRXcavator API key

    +
      +
    1. Generate an API key from your CRXcavator user page

    2. +
    3. Add the required commandline arguments when calling Cartography

      +
        +
      1. --crxcavator-api-base-url - the full URL to the CRXcavator API. https://api.crxcavator.io/v1 as of 01/16/2020 (this value will be used if not provided)

      2. +
      3. --crxcavator-api-key-env-var - Name of environment variable holding your API key generated in the previous step. Note this is a credential and should be stored in an appropriate secret store to be populated securely into your runtime environment.

      4. +
      +
    4. +
    +
  2. +
+
+ + +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/modules/crxcavator/index.html b/modules/crxcavator/index.html new file mode 100644 index 0000000000..e43bf8c8d9 --- /dev/null +++ b/modules/crxcavator/index.html @@ -0,0 +1,570 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Duo CRXcavator — cartography documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+

Duo CRXcavator

+

The crxcavator module has the following coverage:

+
    +
  • Chrome extensions

  • +
  • GSuite users

  • +
+
+
+
+ + +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/modules/crxcavator/schema.html b/modules/crxcavator/schema.html new file mode 100644 index 0000000000..93b0a43372 --- /dev/null +++ b/modules/crxcavator/schema.html @@ -0,0 +1,759 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Crxcavtor Schema — cartography documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+

Crxcavtor Schema

+
+

GSuiteUser

+

Placeholder representation of a single G Suite user object. This node is the minimal data necessary to map who has extensions installed until full G Suite data is imported.

+ ++++ + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The user’s email address, will change to actual G Suite id in future

email

The user’s email address

+
+

Relationships

+
    +
  • GSuiteUsers install ChromeExtensions.

    +
    (GSuiteUser)-[INSTALLS]->(ChromeExtension)
    +
    +
    +
  • +
+
+
+
+

ChromeExtension

+
+

Representation of a CRXcavator Chrome Extension Report.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The combined extension name and version e.g. "Docs|1.0"

extension_id

CRXcavator id for extension.

version

The versions of the extension in this report

risk_total

CRXcavator risk score for the extension

risk_metadata

Additional data provided by CRXcavator on the risk score

risk_permissions_score

Sum of the permissions component of the risk score

risk_webstore_score

Sum of the webstore component of the risk score

risk_csp_score

Sum of the CSP component of the risk score

risk_optional_permissions_score

Sum of the optional permissions component of the risk score

risk_extcalls_score

Sum of the external calls component of the risk score

risk_vuln_score

Sum of the RetireJS vulnerability component of the risk score

address

Physical address of extension developer

email

Email address of extension developer

icon

URL of the extension icon

crxcavator_last_updated

Date the extension was last updated in the webstore

name

Full name of the extension

offered_by

Name of the extension developer

permissions_warnings

Concatenated list of permissions warnings for the extension

privacy_policy

URL of privacy policy for extension

rating

Current webstore rating for extension

rating_users

How many users have provided a rating for the extension

short_description

Summary of what extension does

size

Size of extension download

support_site

URL of developer support site

users

Webstore count of extension users

website

Developer URL for extension

type

Extension categorization

price

Extension price in webstore if applicable

report_link

URL of full extension report on crxcavator.io

+
+

Relationships

+
    +
  • GSuiteUsers install ChromeExtensions.

    +
    (GSuiteUser)-[INSTALLS]->(ChromeExtension)
    +
    +
    +
  • +
+
+
+
+ + +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/modules/cve/config.html b/modules/cve/config.html new file mode 100644 index 0000000000..f58879912a --- /dev/null +++ b/modules/cve/config.html @@ -0,0 +1,569 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + CVE Configuration — cartography documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+

CVE Configuration

+

Follow these steps to analyze CVE objects with Cartography.

+
    +
  1. Call cartography with the --enable-cve flag.

  2. +
  3. If you are mirroring the CVE data, and wish to change the base url, you can pass the base url into the cli with the --nist-cve-url flag.

  4. +
+
+ + +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/modules/cve/index.html b/modules/cve/index.html new file mode 100644 index 0000000000..65a2eeb90a --- /dev/null +++ b/modules/cve/index.html @@ -0,0 +1,569 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + CVE — cartography documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+

CVE

+

The CVE module has the following coverage:

+
    +
  • CVE data, as defined by the v4 JSON CVE format

  • +
+
+
+
+ + +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/modules/cve/schema.html b/modules/cve/schema.html new file mode 100644 index 0000000000..7863cc4f6d --- /dev/null +++ b/modules/cve/schema.html @@ -0,0 +1,673 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + CVE Schema — cartography documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+

CVE Schema

+
+

CVE

+

Representation of a CVE

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The CVE ID

assigner

The assigner of the CVE (email address)

description_en

The english description of the issue.

references

This is reference data in the form of URLs

problem_types

A list of CWE identifiers

vector_string

The CVSSv3 scoring data.

attack_vector

The attack vector

attack_complexity

The attack complexity

privileges_required

The privileges required

user_interaction

The user interaction

scope

The scope

confidentiality_impact

The confidentiality impact

integrity_impact

The integrity impact

availability_impact

The availability impact

base_score

The CVSSv3 score

base_severity

The severity

exploitability_score

The exploitability score

impact_score

The impact score

published_date

The date the CVE was published

last_modified_date

The date the CVE was last updated

+
+

Relationships

+

None

+
+
+
+ + +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/modules/digitalocean/config.html b/modules/digitalocean/config.html new file mode 100644 index 0000000000..4bf8524757 --- /dev/null +++ b/modules/digitalocean/config.html @@ -0,0 +1,579 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Configuration — cartography documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+

Configuration

+

Follow these steps to analyze GitHub repos and other objects with Cartography.

+
    +
  1. Prepare your DigitalOcean credentials. Visit official docs for +more up to date info.

    +
      +
    1. Login into your DigitalOcean Account

    2. +
    3. Visit Account -> API -> Tokens section

    4. +
    5. Click on Generate New Token to create a personal access token

    6. +
    7. Make sure the scope of the token is set to READ

    8. +
    +
  2. +
  3. Populate an environment variable of your choice with the access token generated in the previous step.

  4. +
  5. Call the cartography CLI with --digitalocean-token-env-var YOUR_ENV_VAR_HERE.

  6. +
  7. Cartography will then load your graph with data from the account linked to the token you specified.

  8. +
+
+ + +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/modules/digitalocean/index.html b/modules/digitalocean/index.html new file mode 100644 index 0000000000..013375bf65 --- /dev/null +++ b/modules/digitalocean/index.html @@ -0,0 +1,571 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + DigitalOcean — cartography documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+

DigitalOcean

+

The digitalocean module has the following coverage:

+
    +
  • Accounts

  • +
  • Projects

  • +
  • Compute - Droplets

  • +
+
+
+
+ + +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/modules/digitalocean/schema.html b/modules/digitalocean/schema.html new file mode 100644 index 0000000000..98ea948bd5 --- /dev/null +++ b/modules/digitalocean/schema.html @@ -0,0 +1,802 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + DigitalOcean Schema — cartography documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+

DigitalOcean Schema

+
+

DOAccount

+

Representation of a DigitalOcean Account object.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The UUID of the account

uuid

The UUID of the account (same value as id)

droplet_limit

Total number of droplets that the account can have at one time

floating_ip_limit

Total number of floating IPs the account may have

status

Status of the account

+
+

Relationships

+
    +
  • DOAccount contains DOProjects.

    +
    (DOAccount)-[RESOURCE]->(DOProjects)
    +
    +
    +
  • +
+
+
+
+

DOProject

+

Representation of a DigitalOcean Project object.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The unique universal identifier of the project

account_id

Id of the DOAccount where this project belongs to

description

The description of the project

environment

The environment of the project’s resources

is_default

If true, all resources will be added to this project if no project is specified

name

The human-readable name for the project

owner_uuid

The unique universal identifier of the project’s owner

created_at

A time value given in ISO8601 combined date and time format that represents when the project was created

updated_at

A time value given in ISO8601 combined date and time format that represents when the project was updated

+
+

Relationships

+
    +
  • DOProject has DODroplets as resource.

    +
    (DOProject)-[RESOURCE]->(DODroplet)
    +
    +
    +
  • +
+
+
+
+

DODroplet

+

Representation of a DigitalOcean Droplet object.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

A unique identifier for each Droplet instance

account_id

Id of the DOAccount where this Droplet belongs to

features

An array of features enabled on this Droplet

locked

A boolean value indicating whether the Droplet has been locked, preventing actions by users

image

The slug of the base image used to create the Droplet instance

ip_address

The v4 external ip address of this Droplet

ip_v6_address

The v6 external ip address of this Droplet

kernel

The current kernel image id

name

The human-readable name set for the Droplet instance

private_ip_address

The v4 internal ip address of this Droplet

project_id

Id of the DOProject where this Droplet belongs to

region

The region that the Droplet instance is deployed in

size

The current size object describing the Droplet

status

A status string indicating the state of the Droplet instance.This may be “new”, “active”, “off”, or “archive”

tags

An array of Tags the Droplet has been tagged with

volumes

A flat array including the unique identifier for each Block Storage volume attached to the Droplet

created_at

A time value given in ISO8601 combined date and time format that represents when the Droplet was created

+
+

Relationships

+
    +
  • DODroplet is a resource of a DOProject.

    +
    (DODroplet)<-[RESOURCE]-(DOProject)
    +
    +
    +
  • +
+
+
+
+ + +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/modules/duo/config.html b/modules/duo/config.html new file mode 100644 index 0000000000..ab23ba6822 --- /dev/null +++ b/modules/duo/config.html @@ -0,0 +1,571 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Duo Configuration — cartography documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+

Duo Configuration

+

Follow these steps to analyze Duo objects with Cartography.

+
    +
  1. Prepare a admin api creds.

  2. +
  3. Pass the Duo api host name to the --duo-api-hostname CLI arg.

  4. +
  5. Populate environment variables with the api key and api secret.

  6. +
  7. Pass that those var names to the --duo-api-key-env-var and --duo-api-secret-env-var CLI args.

  8. +
+
+ + +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/modules/duo/index.html b/modules/duo/index.html new file mode 100644 index 0000000000..006db4dddc --- /dev/null +++ b/modules/duo/index.html @@ -0,0 +1,571 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Duo — cartography documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+

Duo

+

The okta module has the following coverage:

+
    +
  • Users

  • +
  • Groups

  • +
  • Endpoints

  • +
+
+
+
+ + +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/modules/duo/schema.html b/modules/duo/schema.html new file mode 100644 index 0000000000..eb601e8206 --- /dev/null +++ b/modules/duo/schema.html @@ -0,0 +1,1242 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Duo Schema — cartography documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+

Duo Schema

+
+

DuoApiHost

+

Represents a Duo API Host to conain Duo resources.

+ ++++ + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The hostname

+
+

Relationships

+
    +
  • An DuoApiHost contains DuoUsers

    +
    (DuoApiHost)-[RESOURCE]->(DuoUser)
    +
    +
    +
  • +
  • An DuoApiHost contains DuoGroups

    +
    (DuoApiHost)-[RESOURCE]->(DuoGroup)
    +
    +
    +
  • +
  • An DuoApiHost contains DuoEndpoints

    +
    (DuoApiHost)-[RESOURCE]->(DuoEndpoint)
    +
    +
    +
  • +
  • An DuoApiHost contains DuoPhones

    +
    (DuoApiHost)-[RESOURCE]->(DuoPhone)
    +
    +
    +
  • +
  • An DuoApiHost contains DuoTokens

    +
    (DuoApiHost)-[RESOURCE]->(DuoToken)
    +
    +
    +
  • +
  • An DuoApiHost contains DuoWebAuthnCredentials

    +
    (DuoApiHost)-[RESOURCE]->(DuoWebAuthnCredential)
    +
    +
    +
  • +
+
+
+
+

DuoGroup

+

Represents a group in Duo.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The user_id

desc

The group’s description.

group_id

The group’s ID.

mobile_otp_enabled

Legacy parameter; no effect if specified and always returns false.

name

The group’s name. If managed by directory sync, then the name returned here also indicates the source directory.

push_enabled

Legacy parameter; no effect if specified and always returns false.

sms_enabled

Legacy parameter; no effect if specified and always returns false

status

The group’s authentication status. May be one of: “Active”, “Bypass”, “Disabled”

voice_enabled

Legacy parameter; no effect if specified and always returns false

+
+

Relationships

+
    +
  • An DuoApiHost contains DuoGroups

    +
    (DuoApiHost)-[RESOURCE]->(DuoGroup)
    +
    +
    +
  • +
  • A DuoUser is part of multiple DuoGroups.

    +
    (DuoUser)-[MEMBER_OF_DUO_GROUP]->(DuoGroup)
    +
    +
    +
  • +
+
+
+
+

DuoUser

+

Represents a user in Duo.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The user_id

alias1

The user’s username alias1.

alias2

The user’s username alias2.

alias3

The user’s username alias3.

alias4

The user’s username alias4.

aliases

Map of the user’s username alias(es). Up to eight aliases may exist.

created

The user’s creation date as a UNIX timestamp.

email

The user’s email address.

firstname

The user’s given name.

groups

List of groups to which this user belongs. See Retrieve Groups for response info.

is_enrolled

Is true if the user has a phone, hardware token, U2F token, WebAuthn security key, or other WebAuthn method available for authentication. Otherwise, false.

last_directory_sync

An integer indicating the last update to the user via directory sync as a Unix timestamp, or null if the user has never synced with an external directory or if the directory that originally created the user has been deleted from Duo.

last_login

An integer indicating the last time this user logged in, as a Unix timestamp, or null if the user has not logged in.

lastname

The user’s surname.

notes

Notes about this user. Viewable in the Duo Admin Panel.

realname

The user’s real name (or full name).

status

The user’s status. One of: “active”, “bypass”, “disabled”, “locked out”, “pending deletion”.

tokens

A list of tokens that this user can use. A list of JSON strings

u2f_tokens

A list of U2F tokens that this user can use. A list of JSON strings

user_id

The user’s ID.

username

The user’s username.

webauthncredentials

A list of WebAuthn authenticators that this user can use. A list of JSON strings

+
+

Relationships

+
    +
  • An DuoApiHost contains DuoUsers

    +
    (DuoApiHost)-[RESOURCE]->(DuoUser)
    +
    +
    +
  • +
  • A DuoUser is part of multiple DuoGroups.

    +
    (DuoUser)-[MEMBER_OF_DUO_GROUP]->(DuoGroup)
    +
    +
    +
  • +
  • A DuoUser has multiple DuoEndpoints

    +
    (DuoUser)-[HAS_DUO_ENDPOINT]->(DuoEndpoint)
    +
    +
    +
  • +
  • A DuoUser has multiple DuoPhones

    +
    (DuoUser)-[HAS_DUO_PHONE]->(DuoPhone)
    +
    +
    +
  • +
  • A DuoUser has multiple DuoTokens

    +
    (DuoUser)-[HAS_DUO_TOKEN]->(DuoToken)
    +
    +
    +
  • +
  • A DuoUser has multiple WebAuthnCredentials

    +
    (DuoUser)-[HAS_DUO_WEB_AUTHN_CREDENTIAL]->(WebAuthnCredential)
    +
    +
    +
  • +
  • A DuoUser is an identity to a Human

    +
    (DuoUser)<-[IDENTITY_DUO]-(Human)
    +
    +
    +
  • +
+
+
+
+

DuoEndpoint

+

Represents a endpoint in Duo.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The epkey

browsers

Collected information about all detected browsers on an individual endpoint. A list of JSON strings

computer_sid

The machine security identifier of a Windows endpoint.

cpu_id

The CPU ID of a Windows endpoint.

device_id

Custom device identifier of a Meraki-managed iOS endpoint. Returned for Duo Premier customers only.

device_identifier

The unique device attribute value that identifies the endpoint. Returned for Duo Premier customers only. This property will be deprecated in a future release.

device_identifier_type

The device attribute used to identify a unique endpoint. One of “hardware_uuid”, “fqdn”, “hardware_serial”, “device_udid”, or none. This property will be deprecated in a future release.

device_name

The endpoint’s hostname.

device_udid

The unique device identifier for iOS endpoints managed by Workspace ONE, MobileIron Cloud or Core, or Sophos Mobile via certificates. Returned for Duo Premier customers only.

device_username

The unique attribute value that identifies the endpoint’s associated user in the management system. Returned for Duo Premier customers only.

device_username_type

The management system attribute used to identify the user associated with the unique endpoint. One of “os_username”, “upn”, “username”, “email”, or none. Returned for Duo Premier customers only.

disk_encryption_status

The hard drive encryption status of the endpoint as detected by the Duo Device Health app. One of “On”, “Off”, or “Unknown”.

domain_sid

The Active Directory domain security identifier for a domain-joined Windows endpoint. Empty if the Windows endpoint is not joined to a domain.

email

The email address, if present, of the user associated with an endpoint.

epkey

The endpoint’s unique identifier.

firewall_status

Status of the endpoint’s local firewall as detected by the Duo Device Health app. One of “On”, “Off”, or “Unknown”.

hardware_uuid

The universally unique identifier for a Mac endpoint.

health_app_client_version

The version of the Duo Device Health app installed on the endpoint.

health_data_last_collected

The last time the Duo Device Health app performed a device health check, as a Unix timestamp.

last_updated

The last time the endpoint accessed Duo, as a Unix timestamp.

machine_guid

The globally unique identifier for a Windows endpoint.

model

The device model of a 2FA endpoint.

os_build

The endpoint’s operating system build number.

os_family

The endpoint’s operating system platform.

os_version

The endpoint’s operating system version.

password_status

Whether the local admin password is set on the endpoint as detected by the Duo Device Health app. One of “Set”, “Unset”, or “Unknown”

security_agents

Information about security agents present on the endpoint as detected by the Duo Device Health app. Returned for Duo Premier customers only. a list of JSON strings

trusted_endpoint

Whether the endpoint is a Duo managed endpoint. One of “yes”, “no”, or “unknown”. Returned for Duo Premier customers only.

type

The endpoint’s device class.

username

The Duo username of the user associated with an endpoint.

+
+

Relationships

+
    +
  • An DuoApiHost contains DuoEndpoints

    +
    (DuoApiHost)-[RESOURCE]->(DuoEndpoint)
    +
    +
    +
  • +
  • A DuoUser has multiple DuoEndpoints

    +
    (DuoUser)-[HAS_DUO_ENDPOINT]->(DuoEndpoint)
    +
    +
    +
  • +
+
+
+
+

DuoPhone

+

Represents a phone in Duo.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The phone_id

activated

Has this phone been activated for Duo Mobile yet? Either true or false.

capabilities

List of strings, each a factor that can be used with the device. Any of “auto”, “push”, “pphone”, “sms”, “mobile_otp”

encrypted

The encryption status of an Android or iOS device file system. One of: “Encrypted”, “Unencrypted”, or “Unknown”. Blank for other platforms.

extension

An extension, if necessary.

fingerprint

Whether an Android or iOS phone is configured for biometric verification. One of: “Configured”, “Disabled”, or “Unknown”. Blank for other platforms.

last_seen

An integer indicating the timestamp of the last contact between Duo’s service and the activated Duo Mobile app installed on the phone. Blank if the device has never activated Duo Mobile or if the platform does not support it.

model

The phone’s model.

name

Free-form label for the phone.

phone_id

The phone’s ID.

platform

The phone platform. One of: “unknown”, “google android”, “apple ios”, “windows phone 7”, “rim blackberry”, “java j2me”, “palm webos”, “symbian os”, “windows mobile”, or “generic smartphone”

postdelay

The time (in seconds) to wait after the extension is dialed and before the speaking the prompt.

predelay

The time (in seconds) to wait after the number picks up and before dialing the extension.

screenlock

Whether screen lock is enabled on an Android or iOS phone. One of: “Locked”, “Unlocked”, or “Unknown”. Blank for other platforms.

sms_passcodes_sent

Have SMS passcodes been sent to this phone? Either true or false.

tampered

Whether an iOS or Android device is jailbroken or rooted. One of: “Not Tampered”, “Tampered”, or “Unknown”. Blank for other platforms.

type

The type of phone. One of: “unknown”, “mobile”, or “landline”.

+
+

Relationships

+
    +
  • An DuoApiHost contains DuoPhone

    +
    (DuoApiHost)-[RESOURCE]->(DuoPhone)
    +
    +
    +
  • +
  • A DuoUser has multiple DuoPhones

    +
    (DuoUser)-[HAS_DUO_PHONE]->(DuoPhone)
    +
    +
    +
  • +
+
+
+
+

DuoToken

+

Represents a token in Duo.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The token_id

admins

A list of administrators associated with this hardware token. See Retrieve Administrators for descriptions of the response fields. A list of JSON strings

serial

The serial number of the hardware token; used to uniquely identify the hardware token when paired with type.

token_id

The hardware token’s unique ID.

totp_step

Value is null for all supported token types.

type

The type of hardware token.

+
+

Relationships

+
    +
  • An DuoApiHost contains DuoTokens

    +
    (DuoApiHost)-[RESOURCE]->(DuoToken)
    +
    +
    +
  • +
  • A DuoUser has multiple DuoTokens

    +
    (DuoUser)-[HAS_DUO_TOKEN]->(DuoToken)
    +
    +
    +
  • +
+
+
+
+

DuoWebAuthnCredential

+

Represents a web authn credential in Duo.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The webauthnkey

admin

Selected information about the administrator attached to the WebAuthn credential. Returns null if attached to an end user. Not returned if the API application does not have sufficient permission to manage administrators. A JSON string

credential_name

Free-form label for the WebAuthn credential.

date_added

The date the WebAuthn credential was registered in Duo.

label

Indicates the type of WebAuthn credential. One of: “Security Key” or “Touch ID”. Present when attached to a user.

webauthnkey

The WebAuthn credential’s registration identifier.

+
+

Relationships

+
    +
  • An DuoApiHost contains DuoWebAuthnCredentials

    +
    (DuoApiHost)-[RESOURCE]->(DuoWebAuthnCredential)
    +
    +
    +
  • +
  • A DuoUser has multiple DuoWebAuthnCredentials

    +
    (DuoUser)-[HAS_DUO_WEB_AUTHN_CREDENTIAL]->(DuoWebAuthnCredential)
    +
    +
    +
  • +
+
+
+
+ + +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/modules/gcp/config.html b/modules/gcp/config.html new file mode 100644 index 0000000000..dbb62c576f --- /dev/null +++ b/modules/gcp/config.html @@ -0,0 +1,604 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + GCP Configuration — cartography documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+

GCP Configuration

+

Follow these steps to analyze GCP projects with Cartography.

+
    +
  1. Prepare your GCP credential(s).

    +
      +
    1. Create an identity - either a User Account or a Service Account - for Cartography to run as

    2. +
    3. Ensure that this identity has the following roles (https://cloud.google.com/iam/docs/understanding-roles) attached to it:

      +
        +
      • roles/iam.securityReviewer

      • +
      • roles/resourcemanager.organizationViewer: needed to list/get GCP Organizations

      • +
      • roles/resourcemanager.folderViewer: needed to list/get GCP Folders

      • +
      +
    4. +
    5. Ensure that the machine you are running Cartography on can authenticate to this identity.

      +
        +
      • Method 1: You can do this by setting your GOOGLE_APPLICATION_CREDENTIALS environment variable to point to a json file containing your credentials. As per SecurityCommonSense™️, please ensure that only the user account that runs Cartography has read-access to this sensitive file.

      • +
      • Method 2: If you are running Cartography on a GCE instance or other GCP service, you can make use of the credential management provided by the default service accounts on these services. See the official docs on Application Default Credentials for more details.

      • +
      +
    6. +
    +
  2. +
+
+

Multiple GCP Project Setup

+

In order for Cartography to be able to pull all assets from all GCP Projects within an Organization, the User/Service Account assigned to Cartography needs to be created at the Organization level. +This is because IAM access control policies applied on the Organization resource apply throughout the hierarchy on all resources in the organization.

+
+
+ + +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/modules/gcp/index.html b/modules/gcp/index.html new file mode 100644 index 0000000000..fb282ac6ab --- /dev/null +++ b/modules/gcp/index.html @@ -0,0 +1,573 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Google Cloud Compute (GCP) — cartography documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+

Google Cloud Compute (GCP)

+

The gcp module has the following coverage:

+
    +
  • Cloud Resource Manager

  • +
  • Compute

  • +
  • DNS

  • +
  • Storage

  • +
  • Google Kubernetes Engine

  • +
+
+
+
+ + +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/modules/gcp/schema.html b/modules/gcp/schema.html new file mode 100644 index 0000000000..80dfc6be08 --- /dev/null +++ b/modules/gcp/schema.html @@ -0,0 +1,1944 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + GCP Schema — cartography documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+ + +
+
+ +
+

GCP Schema

+
+

GCPOrganization

+

Representation of a GCP Organization object.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The name of the GCP Organization, e.g. “organizations/1234”

displayname

The “friendly name”, e.g. “My Company”

lifecyclestate

The organization’s current lifecycle state. Assigned by the server. See the official docs.

+
+

Relationships

+
    +
  • GCPOrganizations contain GCPFolders.

    +
    (GCPOrganization)-[RESOURCE]->(GCPFolder)
    +
    +
    +
  • +
  • GCPOrganizations can contain GCPProjects.

    +
    (GCPOrganization)-[RESOURCE]->(GCPProjects)
    +
    +
    +
  • +
+
+
+
+

GCPFolder

+
+

Representation of a GCP Folder. An additional helpful reference is the Google Compute Platform resource hierarchy.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The name of the folder, e.g. “folders/1234”

displayname

A friendly name of the folder, e.g. “My Folder”.

lifecyclestate

The folder’s current lifecycle state. Assigned by the server. See the official docs.

+
+

Relationships

+
    +
  • GCPOrganizations are parents of GCPFolders.

    +
    (GCPOrganization)<-[PARENT]-(GCPFolder)
    +
    +
    +
  • +
  • GCPFolders can contain GCPProjects

    +
    (GCPFolder)-[RESOURCE]->(GCPProject)
    +
    +
    +
  • +
  • GCPFolders can contain other GCPFolders.

    +
    (GCPFolder)-[RESOURCE]->(GCPFolder)
    +
    +
    +
  • +
+
+
+
+

GCPProject

+
+

Representation of a GCP Project. An additional helpful reference is the Google Compute Platform resource hierarchy.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The ID of the project, e.g. “sys-12345”

projectnumber

The number uniquely identifying the project, e.g. ‘987654’

displayname

A friendly name of the project, e.g. “MyProject”.

lifecyclestate

The project’s current lifecycle state. Assigned by the server. See the official docs.

+
+
+

Relationships

+
    +
  • GCPOrganizations contain GCPProjects.

    +
    (GCPOrganization)-[RESOURCE]->(GCPProjects)
    +
    +
    +
      +
    • GCPFolders can contain GCPProjects

      +
      (GCPFolder)-[RESOURCE]->(GCPProject)
      +
      +
      +
    • +
    +
  • +
  • GCPVpcs are part of GCPProjects

    +
    (GCPProject)-[RESOURCE]->(GCPVpc)
    +
    +
    +
  • +
+
+
+

GCPBucket

+

Representation of a GCP Storage Bucket.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The ID of the storage bucket, e.g. “bucket-12345”

projectnumber

The number uniquely identifying the project associated with the storage bucket, e.g. ‘987654’

self_link

The URI of the storage bucket

kind

The kind of item this is. For storage buckets, this is always storage#bucket

location

The location of the bucket. Object data for objects in the bucket resides in physical storage within this region. Defaults to US. See Cloud Storage bucket locations for the authoritative list.

location_type

The type of location that the bucket resides in, as determined by the location property

meta_generation

The metadata generation of this bucket

storage_class

The bucket’s default storage class, used whenever no storageClass is specified for a newly-created object. For more information, see storage classes

time_created

The creation time of the bucket in RFC 3339 format

retention_period

The period of time, in seconds, that objects in the bucket must be retained and cannot be deleted, overwritten, or archived

iam_config_bucket_policy_only

The bucket’s Bucket Policy Only configuration

owner_entity

The entity, in the form project-owner-projectId

owner_entity_id

The ID for the entity

versioning_enabled

The bucket’s versioning configuration (if set to True, versioning is fully enabled for this bucket)

log_bucket

The destination bucket where the current bucket’s logs should be placed

requester_pays

The bucket’s billing configuration (if set to true, Requester Pays is enabled for this bucket)

default_kms_key_name

A Cloud KMS key that will be used to encrypt objects inserted into this bucket, if no encryption method is specified

+
+

Relationships

+
    +
  • GCPBuckets are part of GCPProjects.

    +
    (GCPProject)-[RESOURCE]->(GCPBucket)
    +
    +
    +
  • +
  • GCPBuckets can be labelled with GCPBucketLabels.

    +
    (GCPBucket)<-[LABELLED]-(GCPBucketLabels)
    +
    +
    +
  • +
+
+
+
+

GCPDNSZone

+

Representation of a GCP DNS Zone.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

created_at

The date and time the zone was created

description

An optional description of the zone

dns_name

The DNS name of this managed zone, for instance “example.com.”.

firstseen

Timestamp of when a sync job first discovered this node

id

Unique identifier

name

The name of the zone

nameservers

Virtual name servers the zone is delegated to

visibility

The zone’s visibility: public zones are exposed to the Internet, while private zones are visible only to Virtual Private Cloud resources.

+
+

Relationships

+
    +
  • GKEClusters are resources of GCPProjects.

    +
    (GCPProject)-[RESOURCE]->(GCPDNSZone)
    +
    +
    +
  • +
+
+
+
+

Label: GCPBucketLabel

+

Representation of a GCP Storage Bucket Label. This node contains a key-value pair.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The ID of the bucket label. Takes the form “GCPBucketLabel_{key}.”

key

The key of the bucket label.

value

The value of the bucket label.

+
    +
  • GCPBuckets can be labeled with GCPBucketLabels.

    +
    (GCPBucket)<-[LABELED]-(GCPBucketLabels)
    +
    +
    +
  • +
+
+
+

GCPInstance

+

Representation of a GCP Instance. Additional references can be found in the official documentation.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The partial resource URI representing this instance. Has the form projects/{project_name}/zones/{zone_name}/instances/{instance_name}.

partial_uri

Same as id above.

self_link

The full resource URI representing this instance. Has the form https://www.googleapis.com/compute/v1/{partial_uri}

instancename

The name of the instance, e.g. “my-instance”

zone_name

The zone that the instance is installed on

hostname

If present, the hostname of the instance

exposed_internet

Set to True with exposed_internet_type = 'direct' if there is an ‘allow’ IPRule attached to one of the instance’s ingress firewalls with the following conditions: The ‘allow’ IpRule allows traffic from one or more TCP ports, and the ‘allow’ IpRule is not superceded by a ‘deny’ IPRule (in GCP, a firewall rule of priority 1 gets applied ahead of a firewall rule of priority 100, and ‘deny’ rules of the same priority are applied ahead of ‘allow’ rules)

status

The GCP Instance Lifecycle state of the instance

+
+

Relationships

+
    +
  • GCPInstances are resources of GCPProjects.

    +
    (GCPProject)-[RESOURCE]->(GCPInstance)
    +
    +
    +
  • +
  • GCPNetworkInterfaces are attached to GCPInstances

    +
    (GCPInstance)-[NETWORK_INTERFACE]->(GCPNetworkInterface)
    +
    +
    +
  • +
  • GCP Instances may be members of one or more GCP VPCs.

    +
       (GCPInstance)-[:MEMBER_OF_GCP_VPC]->(GCPVpc)
    +
    +Also note that this relationship is a shortcut for:
    +
    +
    +
    (GCPInstance)-[:NETWORK_INTERFACE]->(:GCPNetworkInterface)-[:PART_OF_SUBNET]->(GCPSubnet)<-[:RESOURCE]-(GCPVpc)
    +
    +
    +
  • +
  • GCP Instances may have GCP Tags defined on them for use in network firewall routing.

    +
    (GCPInstance)-[:TAGGED]->(GCPNetworkTag)
    +
    +
    +
  • +
  • GCP Firewalls allow ingress to GCP instances.

    +
       (GCPFirewall)-[:FIREWALL_INGRESS]->(GCPInstance)
    +
    +Note that this relationship is a shortcut for:
    +
    +
    +
       (vpc:GCPVpc)<-[MEMBER_OF_GCP_VPC]-(GCPInstance)-[TAGGED]->(GCPNetworkTag)-[TARGET_TAG]-(GCPFirewall{direction: 'INGRESS'})<-[RESOURCE]-(vpc)
    +
    +as well as
    +
    +
    +
    MATCH (fw:GCPFirewall{direction: 'INGRESS', has_target_service_accounts: False}})
    +WHERE NOT (fw)-[TARGET_TAG]->(GCPNetworkTag)
    +MATCH (GCPInstance)-[MEMBER_OF_GCP_VPC]->(GCPVpc)-[RESOURCE]->(fw)
    +
    +
    +
  • +
+
+
+
+

GCPNetworkTag

+

Representation of a Tag defined on a GCP Instance or GCP Firewall. Tags are defined on GCP instances for use in network firewall routing.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

GCP doesn’t define a resource URI for Tags so we define this as {instance resource URI}/tags/{tag value}

tag_id

same as id

value

The actual value of the tag

+
+

Relationships

+
    +
  • GCP Instances can be labeled with tags.

    +
    (GCPInstance)-[:TAGGED]->(GCPNetworkTag)
    +
    +
    +
  • +
  • GCP Firewalls can be labeled with tags to direct traffic to or deny traffic to labeled GCPInstances

    +
    (GCPFirewall)-[:TARGET_TAG]->(GCPNetworkTag)
    +
    +
    +
  • +
  • GCPNetworkTags are defined on a VPC and only have effect on assets in that VPC

    +
    (GCPVpc)-[DEFINED_IN]->(GCPNetworkTag)
    +
    +
    +
  • +
+
+
+
+

GCPVpc

+

Representation of a GCP VPC. In GCP documentation this is also known simply as a “Network” object.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The partial resource URI representing this VPC. Has the form projects/{project_name}/global/networks/{vpc name}.

partial_uri

Same as id

self_link

The full resource URI representing this VPC. Has the form https://www.googleapis.com/compute/v1/{partial_uri}

name

The name of the VPC

project_id

The project ID that this VPC belongs to

auto_create_subnetworks

When set to true, the VPC network is created in “auto” mode. When set to false, the VPC network is created in “custom” mode. An auto mode VPC network starts with one subnet per region. Each subnet has a predetermined range as described in Auto mode VPC network IP ranges.

routing_confg_routing_mode

The network-wide routing mode to use. If set to REGIONAL, this network’s Cloud Routers will only advertise routes with subnets of this network in the same region as the router. If set to GLOBAL, this network’s Cloud Routers will advertise routes with all subnets of this network, across regions.

description

A description for the VPC

+
+

Relationships

+
    +
  • GCPVpcs are part of projects

    +
    (GCPProject)-[RESOURCE]->(GCPVpc)
    +
    +
    +
  • +
  • GCPVpcs contain GCPSubnets

    +
    (GCPVpc)-[RESOURCE]->(GCPSubnet)
    +
    +
    +
  • +
  • GCPSubnets are part of GCP VPCs

    +
    (GCPVpc)-[RESOURCE]->(GCPSubnet)
    +
    +
    +
  • +
  • GCPNetworkTags are defined on a VPC and only have effect on assets in that VPC

    +
    (GCPVpc)-[DEFINED_IN]->(GCPNetworkTag)
    +
    +
    +
  • +
  • GCP Instances may be members of one or more GCP VPCs.

    +
       (GCPInstance)-[:MEMBER_OF_GCP_VPC]->(GCPVpc)
    +
    +Also note that this relationship is a shortcut for:
    +
    +
    +
    (GCPInstance)-[:NETWORK_INTERFACE]->(:GCPNetworkInterface)-[:PART_OF_SUBNET]->(GCPSubnet)<-[:RESOURCE]-(GCPVpc)
    +
    +
    +
  • +
+
+
+
+

GCPNetworkInterface

+

Representation of a GCP Instance’s network interface (scroll down to the fields on “networkInterface”).

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

A partial resource URI representing this network interface. Note: GCP does not define a partial resource URI for network interfaces, so we create one so we can uniquely identify GCP network interfaces. Has the form projects/{project_name}/zones/{zone_name}/instances/{instance_name}/networkinterfaces/{network interface name}.

nic_id

Same as id

name

The name of the network interface

private_ip

The private IP address of this network interface. This IP is valid on the network interface’s VPC.

+
+

Relationships

+
    +
  • GCPNetworkInterfaces are attached to GCPInstances

    +
    (GCPInstance)-[NETWORK_INTERFACE]->(GCPNetworkInterface)
    +
    +
    +
  • +
  • GCPNetworkInterfaces are connected to GCPSubnets

    +
    (GCPNetworkInterface)-[PART_OF_SUBNET]->(GCPSubnet)
    +
    +
    +
  • +
  • GCPNetworkInterfaces have GCPNicAccessConfig objects defined on them

    +
    (GCPNetworkInterface)-[RESOURCE]->(GCPNicAccessConfig)
    +
    +
    +
  • +
+
+
+
+

GCPNicAccessConfig

+

Representation of the AccessConfig object on a GCP Instance’s network interface (scroll down to the fields on “networkInterface”).

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

A partial resource URI representing this AccessConfig. Note: GCP does not define a partial resource URI for AccessConfigs, so we create one so we can uniquely identify GCP network interface access configs. Has the form projects/{project_name}/zones/{zone_name}/instances/{instance_name}/networkinterfaces/{network interface name}/accessconfigs/{access config type}.

partial_uri

Same as id

type

The type of configuration. GCP docs say: “The default and only option is ONE_TO_ONE_NAT.”

name

The name of this access configuration. The default and recommended name is External NAT, but you can use any arbitrary string, such as My external IP or Network Access.

public_ip

The external IP associated with this instance

set_public_ptr

Specifies whether a public DNS ‘PTR’ record should be created to map the external IP address of the instance to a DNS domain name.

public_ptr_domain_name

The DNS domain name for the public PTR record. You can set this field only if the setPublicPtr field is enabled.

network_tier

This signifies the networking tier used for configuring this access configuration and can only take the following values: PREMIUM, STANDARD.

+
+

Relationships

+
    +
  • GCPNetworkInterfaces have GCPNicAccessConfig objects defined on them

    +
    (GCPNetworkInterface)-[RESOURCE]->(GCPNicAccessConfig)
    +
    +
    +
  • +
+
+
+
+

GCPRecordSet

+

Representation of a GCP Resource Record Set.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

data

Data contained in the record

firstseen

Timestamp of when a sync job first discovered this node

id

Same as name

name

The name of the Resource Record Set

type

The identifier of a supported record type. See the list of Supported DNS record types.

ttl

Number of seconds that this ResourceRecordSet can be cached by resolvers.

+
+

Relationships

+
    +
  • GCPRecordSets are records of GCPDNSZones.

    +
    (GCPDNSZone)-[HAS_RECORD]->(GCPRecordSet)
    +
    +
    +
  • +
+
+
+
+

GCPSubnet

+

Representation of a GCP Subnetwork.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

A partial resource URI representing this Subnet. Has the form projects/{project}/regions/{region}/subnetworks/{subnet name}.

partial_uri

Same as id

self_link

The full resource URI representing this subnet. Has the form https://www.googleapis.com/compute/v1/{partial_uri}

project_id

The project ID that this Subnet belongs to

name

The name of this Subnet

region

The region of this Subnet

gateway_address

Gateway IP address of this Subnet

ip_cidr_range

The CIDR range covered by this Subnet

vpc_partial_uri

The partial URI of the VPC that this Subnet is a part of

private_ip_google_access

Whether the VMs in this subnet can access Google services without assigned external IP addresses. This field can be both set at resource creation time and updated using setPrivateIpGoogleAccess.

+
+

Relationships

+
    +
  • GCPSubnets are part of GCP VPCs

    +
    (GCPVpc)-[RESOURCE]->(GCPSubnet)
    +
    +
    +
  • +
  • GCPNetworkInterfaces are connected to GCPSubnets

    +
    (GCPNetworkInterface)-[PART_OF_SUBNET]->(GCPSubnet)
    +
    +
    +
  • +
+
+
+
+

GCPFirewall

+

Representation of a GCP Firewall.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

A partial resource URI representing this Firewall.

partial_uri

Same as id

direction

Either ‘INGRESS’ for inbound or ‘EGRESS’ for outbound

disabled

Whether this firewall object is disabled

priority

The priority of this firewall rule from 1 (apply this first)-65535 (apply this last)

self_link

The full resource URI to this firewall

has_target_service_accounts

Set to True if this Firewall has target service accounts defined. This field is currently a placeholder for future functionality to add GCP IAM objects to Cartography. If True, this firewall rule will only apply to GCP instances that use the specified target service account.

+
+

Relationships

+
    +
  • Firewalls belong to VPCs

    +
    (GCPVpc)-[RESOURCE]->(GCPFirewall)
    +
    +
    +
  • +
  • Firewalls define rules that allow traffic

    +
    (GcpIpRule)-[ALLOWED_BY]->(GCPFirewall)
    +
    +
    +
  • +
  • Firewalls define rules that deny traffic

    +
    (GcpIpRule)-[DENIED_BY]->(GCPFirewall)
    +
    +
    +
  • +
  • GCP Firewalls can be labeled with tags to direct traffic to or deny traffic to labeled GCPInstances

    +
    (GCPFirewall)-[:TARGET_TAG]->(GCPNetworkTag)
    +
    +
    +
  • +
  • GCP Firewalls allow ingress to GCP instances.

    +
       (GCPFirewall)-[:FIREWALL_INGRESS]->(GCPInstance)
    +
    +Note that this relationship is a shortcut for:
    +
    +
    +
       (vpc:GCPVpc)<-[MEMBER_OF_GCP_VPC]-(GCPInstance)-[TAGGED]->(GCPNetworkTag)-[TARGET_TAG]-(GCPFirewall{direction: 'INGRESS'})<-[RESOURCE]-(vpc)
    +
    +as well as
    +
    +
    +
    MATCH (fw:GCPFirewall{direction: 'INGRESS', has_target_service_accounts: False}})
    +WHERE NOT (fw)-[TARGET_TAG]->(GCPNetworkTag)
    +MATCH (GCPInstance)-[MEMBER_OF_GCP_VPC]->(GCPVpc)-[RESOURCE]->(fw)
    +
    +
    +
  • +
+
+
+
+

GCPForwardingRule

+

Representation of GCP Forwarding Rules and Global Forwarding Rules.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

A partial resource URI representing this Forwarding Rule

partial_uri

Same as id

ip_address

IP address that this Forwarding Rule serves

ip_protocol

IP protocol to which this rule applies

load_balancing_scheme

Specifies the Forwarding Rule type

name

Name of the Forwarding Rule

network

A partial resource URI of the network this Forwarding Rule belongs to

port_range

Port range used in conjunction with a target resource. Only packets addressed to ports in the specified range will be forwarded to target configured

ports

Ports to forward to a backend service. Only packets addressed to these ports are forwarded to the backend services configured

project_id

The project ID that this Forwarding Rule belongs to

region

The region of this Forwarding Rule

self_link

Server-defined URL for the resource

subnetwork

A partial resource URI of the subnetwork this Forwarding Rule belongs to

target

A partial resource URI of the target resource to receive the traffic

+
+

Relationships

+
    +
  • GCPForwardingRules can be a resource of a GCPVpc.

    +
    (GCPVpc)-[RESOURCE]->(GCPForwardingRule)
    +
    +
    +
  • +
  • GCPForwardingRules can be a resource of a GCPSubnet.

    +
    (GCPSubnet)-[RESOURCE]->(GCPForwardingRule)
    +
    +
    +
  • +
+
+
+
+

GKECluster

+

Representation of a GCP GKE Cluster.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

basic_auth

Set to True if both masterauth_username and masterauth_password are set

created_at

The date and time the cluster was created

cluster_ipv4cidr

The IP address range of the container pods in the cluster

current_master_version

The current software version of the master endpoint

database_encryption

Configuration of etcd encryption

description

An optional description of the cluster

endpoint

The IP address of the cluster’s master endpoint. The endpoint can be accessed from the internet at https://username:password@endpoint/

exposed_internet

Set to True if at least among private_nodes, private_endpoint_enabled, or master_authorized_networks are disabled

firstseen

Timestamp of when a sync job first discovered this node

id

Same as self_link

initial_version

The initial Kubernetes version for the cluster

location

The name of the Google Compute Engine zone or region in which the cluster resides

logging_service

The logging service used to write logs. Available options: logging.googleapis.com/kubernetes, logging.googleapis.com, none

master_authorized_networks

If enabled, it disallows all external traffic to access Kubernetes master through HTTPS except traffic from the given CIDR blocks, Google Compute Engine Public IPs and Google Prod IPs

masterauth_username

The username to use for HTTP basic authentication to the master endpoint. For clusters v1.6.0 and later, basic authentication can be disabled by leaving username unspecified (or setting it to the empty string)

masterauth_password

The password to use for HTTP basic authentication to the master endpoint. If a password is provided for cluster creation, username must be non-empty

monitoring_service

The monitoring service used to write metrics. Available options: monitoring.googleapis.com/kubernetes, monitoring.googleapis.com, none

name

The name of the cluster

network

The name of the Google Compute Engine network to which the cluster is connected

network_policy

Set to True if a network policy provider has been enabled

private_endpoint_enabled

Whether the master’s internal IP address is used as the cluster endpoint

private_endpoint

The internal IP address of the cluster’s master endpoint

private_nodes

If enabled, all nodes are given only private addresses and communicate with the master via private networking

public_endpoint

The external IP address of the cluster’s master endpoint

self_link

Server-defined URL for the resource

services_ipv4cidr

The IP address range of the Kubernetes services in the cluster

shielded_nodes

Whether Shielded Nodes are enabled

status

The current status of the cluster

subnetwork

The name of the Google Compute Engine subnetwork to which the cluster is connected

zone

The name of the Google Compute Engine zone in which the cluster resides

+
+

Relationships

+
    +
  • GKEClusters are resources of GCPProjects.

    +
    (GCPProject)-[RESOURCE]->(GKECluster)
    +
    +
    +
  • +
+
+
+
+

IpRule::IpPermissionInbound::GCPIpRule

+

An IpPermissionInbound node is a specific type of IpRule. It represents a generic inbound IP-based rules. The creation of this node is currently derived from ingesting AWS EC2 Security Group rules.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

ruleid

{firewall_partial_uri}/{rule_type}/{port_range}{protocol}

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

protocol

The protocol this rule applies to

fromport

Lowest port in the range defined by this rule

toport

Highest port in the range defined by this rule

+
+

Relationships

+
    +
  • GCP Firewall rules are defined on IpRange objects.

    +
    (GCPIpRule, IpRule, IpPermissionInbound)<-[MEMBER_OF_IP_RULE)-(:IpRange)
    +
    +
    +
  • +
  • Firewalls define rules that allow traffic

    +
    (GcpIpRule)-[ALLOWED_BY]->(GCPFirewall)
    +
    +
    +
  • +
  • Firewalls define rules that deny traffic

    +
    (GcpIpRule)-[DENIED_BY]->(GCPFirewall)
    +
    +
    +
  • +
+
+
+
+

IpRange

+

Representation of an IP range or subnet.

+ ++++ + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

CIDR notation for the IP range. E.g. “0.0.0.0/0” for the whole internet.

+
+

Relationships

+
    +
  • GCP Firewall rules are defined on IpRange objects.

    +
    (GCPIpRule, IpRule, IpPermissionInbound)<-[MEMBER_OF_IP_RULE)-(:IpRange)
    +
    +
    +
  • +
+
+
+
+ + +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/modules/github/config.html b/modules/github/config.html new file mode 100644 index 0000000000..543097b3de --- /dev/null +++ b/modules/github/config.html @@ -0,0 +1,613 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Github Configuration — cartography documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+

Github Configuration

+

Follow these steps to analyze GitHub repos and other objects with Cartography.

+
    +
  1. Prepare your GitHub credentials.

    +
      +
    1. Prepare a GitHub token; the following scopes are required, at minimum: repo, read:org, read:user, user:email

    2. +
    3. GitHub ingest supports multiple endpoints, such as a public instance and an enterprise instance by taking a base64-encoded config object structured as +.. code-block:: json

      +
      +
      +
      {
      +
      “organization”: [
      +
      {

      “token”: “faketoken”, +“url”: “https://api.github.com/graphql”, +“name”: “fakeorg”

      +
      +
      +

      }, +{

      +
      +

      “token”: “stillfake”, +“url”: “https://github.example.com/api/graphql”, +“name”: “fakeorg”

      +
      +

      }]

      +
      +
      +
      +
      +

      }

      +
      +
    4. +
    5. For each GitHub instance you want to ingest, generate an API token as documented in the API reference

    6. +
    7. Create your auth config as shown above using the token obtained in the previous step. If you are configuring only the public GitHub instance, you can just use the first config block and delete the second. The name field is for the organization name you want to ingest.

    8. +
    9. Base64 encode the auth object. You can encode the above sample in Python using +.. code-block:: python

      +
      +

      import json +import base64 +auth_json = json.dumps({“organization”:[{“token”:”faketoken”,”url”:”https://api.github.com/graphql”,”name”:”fakeorg”},{“token”:”stillfake”,”url”:”https://github.example.com/api/graphql”,”name”:”fakeorg”}]}) +base64.b64encode(auth_json.encode())

      +
      +

      and the resulting environment variable would be eyJvcmdhbml6YXRpb24iOiBbeyJ0b2tlbiI6ICJmYWtldG9rZW4iLCAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vZ3JhcGhxbCIsICJuYW1lIjogImZha2VvcmcifSwgeyJ0b2tlbiI6ICJzdGlsbGZha2UiLCAidXJsIjogImh0dHBzOi8vZ2l0aHViLmV4YW1wbGUuY29tL2FwaS9ncmFwaHFsIiwgIm5hbWUiOiAiZmFrZW9yZyJ9XX0=

      +
    10. +
    +
  2. +
  3. Populate an environment variable of your choice with the contents of the base64 output from the previous step.

  4. +
  5. Call the cartography CLI with --github-config-env-var YOUR_ENV_VAR_HERE.

  6. +
  7. cartography will then load your graph with data from all the organizations you specified.

  8. +
+
+ + +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/modules/github/index.html b/modules/github/index.html new file mode 100644 index 0000000000..ac22bc4dc9 --- /dev/null +++ b/modules/github/index.html @@ -0,0 +1,571 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Github — cartography documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+

Github

+

The github module has the following coverage:

+
    +
  • Repos

  • +
  • Branches

  • +
  • Users

  • +
+
+
+
+ + +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/modules/github/schema.html b/modules/github/schema.html new file mode 100644 index 0000000000..d3b907e8df --- /dev/null +++ b/modules/github/schema.html @@ -0,0 +1,1037 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Github Schema — cartography documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+ + +
+
+ +
+

Github Schema

+
+

GitHubRepository

+

Representation of a single GitHubRepository (repo) repository object. This node contains all data unique to the repo.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first created this node

lastupdated

Timestamp of the last time the node was updated

id

The GitHub repo id. These are not unique across GitHub instances, so are prepended with the API URL the id applies to

createdat

GitHub timestamp from when the repo was created

name

Name of the repo

fullname

Name of the organization and repo together

description

Text describing the repo

primarylanguage

The primary language used in the repo

homepage

The website used as a homepage for project information

defaultbranch

The default branch used by the repo, typically master

defaultbranchid

The unique identifier of the default branch

private

True if repo is private

disabled

True if repo is disabled

archived

True if repo is archived

locked

True if repo is locked

giturl

URL used to access the repo from git commandline

url

Web URL for viewing the repo

sshurl

URL for access the repo via SSH

updatedat

GitHub timestamp for last time repo was modified

+
+

Relationships

+
    +
  • GitHubUsers or GitHubOrganizations own GitHubRepositories.

    +
    (GitHubUser)-[OWNER]->(GitHubRepository)
    +(GitHubOrganization)-[OWNER]->(GitHubRepository)
    +
    +
    +
  • +
  • GitHubRepositories in an organization can have outside collaborators with different permissions, including ADMIN, +WRITE, MAINTAIN, TRIAGE, and READ (Reference).

    +
    (GitHubUser)-[:OUTSIDE_COLLAB_{ACTION}]->(GitHubRepository)
    +
    +
    +
  • +
  • GitHubRepositories use ProgrammingLanguages

    +
    (GitHubRepository)-[:LANGUAGE]->(ProgrammingLanguage)
    +
    +
    +
  • +
  • GitHubRepositories have GitHubBranches

    +
    (GitHubRepository)-[:BRANCH]->(GitHubBranch)
    +
    +
    +
  • +
  • GitHubTeams can have various levels of access to GitHubRepositories.

    +
    (GitHubTeam)-[ADMIN|READ|WRITE|TRIAGE|MAINTAIN]->(GitHubRepository)
    +
    +
    +
  • +
+
+
+
+

GitHubOrganization

+

Representation of a single GitHubOrganization organization object. This node contains minimal data for the GitHub Organization.

+ ++++ + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first created this node

lastupdated

Timestamp of the last time the node was updated

id

The URL of the GitHub organization

username

Name of the organization

+
+

Relationships

+
    +
  • GitHubOrganizations own GitHubRepositories.

    +
    (GitHubOrganization)-[OWNER]->(GitHubRepository)
    +
    +
    +
  • +
  • GitHubTeams are resources under GitHubOrganizations

    +
    (GitHubOrganization)-[RESOURCE]->(GitHubTeam)
    +
    +
    +
  • +
+
+
+
+

GitHubTeam

+

A GitHubTeam organization object.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first created this node

lastupdated

Timestamp of the last time the node was updated

id

The URL of the GitHub Team

name

The name (a.k.a URL slug) of the GitHub Team

description

Description of the GitHub team

+
+

Relationships

+
    +
  • GitHubTeams can have various levels of access to GitHubRepositories.

    +
    (GitHubTeam)-[ADMIN|READ|WRITE|TRIAGE|MAINTAIN]->(GitHubRepository)
    +
    +
    +
  • +
  • GitHubTeams are resources under GitHubOrganizations

    +
    (GitHubOrganization)-[RESOURCE]->(GitHubTeam)
    +
    +
    +
  • +
+
+
+
+

GitHubUser

+

Representation of a single GitHubUser user object. This node contains minimal data for the GitHub User.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first created this node

lastupdated

Timestamp of the last time the node was updated

id

The URL of the GitHub user

username

Name of the user

fullname

The full name

has_2fa_enabled

Whether the user has 2-factor authentication enabled

role

Either ‘ADMIN’ (denoting that the user is an owner of a Github organization) or ‘MEMBER’

is_site_admin

Whether the user is a site admin

permission

Only present if the user is an outside collaborator of this repo.

+

permission is either ADMIN, MAINTAIN, READ, TRIAGE, or WRITE (ref). +| email | The user’s publicly visible profile email. +| company | The user’s public profile company.

+
+

Relationships

+
    +
  • GitHubUsers own GitHubRepositories.

    +
    (GitHubUser)-[OWNER]->(GitHubRepository)
    +
    +
    +
  • +
  • GitHubRepositories in an organization can have outside collaborators with different permissions, including ADMIN, +WRITE, MAINTAIN, TRIAGE, and READ (Reference).

    +
    (GitHubUser)-[:OUTSIDE_COLLAB_{ACTION}]->(GitHubRepository)
    +
    +
    +
  • +
+
+
+
+

GitHubBranch

+

Representation of a single GitHubBranch ref object. This node contains minimal data for a repository branch.

+ ++++ + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first created this node

lastupdated

Timestamp of the last time the node was updated

id

The GitHub branch id. These are not unique across GitHub instances, so are prepended with the API URL the id applies to

name

Name of the branch

+
+

Relationships

+
    +
  • GitHubRepositories have GitHubBranches.

    +
    (GitHubBranch)<-[BRANCH]-(GitHubRepository)
    +
    +
    +
  • +
+
+
+
+

ProgrammingLanguage

+

Representation of a single Programming Language language object. This node contains programming language information.

+ ++++ + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first created this node

lastupdated

Timestamp of the last time the node was updated

id

Language ids need not be tracked across instances, so defaults to the name

name

Name of the language

+
+

Relationships

+
    +
  • GitHubRepositories use ProgrammingLanguages.

    +
    (ProgrammingLanguage)<-[LANGUAGE]-(GitHubRepository)
    +
    +
    +
  • +
+
+
+
+

Dependency::PythonLibrary

+

Representation of a Python library as listed in a requirements.txt +or setup.cfg file. +Within a setup.cfg file, cartography will load everything from install_requires, setup_requires, and extras_require.

+ ++++ + + + + + + + + + + + + + + + + +

Field

Description

id

The canonicalized name of the library. If the library was pinned in a requirements file using the == operator, then id has the form {canonical name}|{pinned_version}.

name

The canonicalized name of the library.

version

The exact version of the library. This field is only present if the library was pinned in a requirements file using the == operator.

+
+

Relationships

+
    +
  • Software on Github repos can import Python libraries by optionally specifying a version number.

    +
    (GitHubRepository)-[:REQUIRES{specifier}]->(PythonLibrary)
    +
    +
    +
      +
    • specifier: A string describing this library’s version e.g. “<4.0,>=3.0” or “==1.0.2”. This field is only present on the :REQUIRES edge if the repo’s requirements file provided a version pin.

    • +
    +
  • +
+
+
+
+ + +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/modules/gsuite/config.html b/modules/gsuite/config.html new file mode 100644 index 0000000000..148872180c --- /dev/null +++ b/modules/gsuite/config.html @@ -0,0 +1,675 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + GSuite Configuration — cartography documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+

GSuite Configuration

+

This module allows authentication from a service account or via OAuth tokens.

+

Method 1: Using service account (legacy)

+

Ingesting GSuite Users and Groups utilizes the Google Admin SDK.

+
    +
  1. Enable Google API access

  2. +
  3. Create a new G Suite user account and accept the Terms of Service. This account will be used as the domain-wide delegated access.

  4. +
  5. Perform G Suite Domain-Wide Delegation of Authority

  6. +
  7. Download the service account’s credentials

  8. +
  9. Export the environmental variables:

    +
      +
    1. GSUITE_GOOGLE_APPLICATION_CREDENTIALS - location of the credentials file.

    2. +
    3. GSUITE_DELEGATED_ADMIN - email address that you created in step 2

    4. +
    +
  10. +
+
+
+

Method 2: Using OAuth

+
    +
  1. Create an App on Google Cloud Console

  2. +
  3. Refer to follow documentation if needed:

    +
      +
    1. https://developers.google.com/admin-sdk/directory/v1/quickstart/python

    2. +
    3. https://developers.google.com/workspace/guides/get-started

    4. +
    5. https://support.google.com/a/answer/7281227?hl=fr

    6. +
    +
  4. +
  5. Download credentials file

  6. +
  7. Use helper script below for OAuth flow to obtain refresh_token

  8. +
  9. Serialize needed secret +.. code-block:: python

    +
    +

    import json +import base64 +auth_json = json.dumps({“client_id”:”xxxxx.apps.googleusercontent.com”,”client_secret”:”ChangeMe”, “refresh_token”:”ChangeMe”, “token_uri”: “https://oauth2.googleapis.com/token”}) +base64.b64encode(auth_json.encode())

    +
    +
  10. +
  11. Populate an environment variable of your choice with the contents of the base64 output from the previous step.

  12. +
  13. Call the cartography CLI with --gsuite-tokens-env-var YOUR_ENV_VAR_HERE and --gsuite-auth-method oauth.

  14. +
+

Google Oauth Helper :

+
from __future__ import print_function
+import json
+import os
+
+from google_auth_oauthlib.flow import InstalledAppFlow
+from googleapiclient.discovery import build
+
+
+scopes = ["https://www.googleapis.com/auth/admin.directory.userreadonly", "https://www.googleapis.com/auth/admin.directory.group.readonly", "https://www.googleapis.com/auth/admin.directory.group.member"]
+
+print('Go to https://console.cloud.google.com/ > API & Services > Credentials and download secrets')
+project_id = input('Provide your project ID:')
+client_id = input('Provide your client ID:')
+client_secret = input('Provide your client secret:')
+with open('credentials.json', 'w', encoding='utf-8') as fc:
+    data = {
+        "installed": {
+            "client_id": client_id,
+            "project_id": project_id,
+            "auth_uri":"https://accounts.google.com/o/oauth2/auth",
+            "token_uri":"https://oauth2.googleapis.com/token",
+            "auth_provider_x509_cert_url":"https://www.googleapis.com/oauth2/v1/certs",
+            "client_secret":"client_secret",
+            "redirect_uris":["http://localhost"]
+        }}
+    json.dump(data, fc)
+flow = InstalledAppFlow.from_client_secrets_file(
+    'credentials.json', scopes)
+flow.redirect_uri = 'http://localhost'
+auth_url, _ = flow.authorization_url(prompt='consent')
+print(f'Please go to this URL: {auth_url}')
+code = input('Enter the authorization code: ')
+flow.fetch_token(code=code)
+creds = flow.credentials
+print('Testing your credentials by gettings first 10 users in the domain ...')
+service = build('admin', 'directory_v1', credentials=creds)
+print('Getting the first 10 users in the domain')
+results = service.users().list(customer='my_customer', maxResults=10,
+                                orderBy='email').execute()
+users = results.get('users', [])
+if not users:
+    print('No users in the domain.')
+else:
+    print('Users:')
+    for user in users:
+        print(u'{0} ({1})'.format(user['primaryEmail'],
+                                    user['name']['fullName']))
+print('Your credentials:')
+print(json.dumps(creds.to_json(), indent=2))
+os.remove('credentials.json')
+
+
+
+ + +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/modules/gsuite/index.html b/modules/gsuite/index.html new file mode 100644 index 0000000000..d907fffbbf --- /dev/null +++ b/modules/gsuite/index.html @@ -0,0 +1,577 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Google GSuite — cartography documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+

Google GSuite

+

The gsuite module has the following coverage:

+
    +
  • Users

  • +
  • Groups

  • +
+
+
+
+ + +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/modules/gsuite/schema.html b/modules/gsuite/schema.html new file mode 100644 index 0000000000..1815ccb080 --- /dev/null +++ b/modules/gsuite/schema.html @@ -0,0 +1,751 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + GSuite Schema — cartography documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+

GSuite Schema

+
+

GSuiteUser

+

Reference: +https://developers.google.com/admin-sdk/directory/v1/reference/users#resource

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

id

The unique ID for the user as a string. A user id can be used as a user request URI’s userKey

user_id

duplicate of id.

agreed_to_terms

This property is true if the user has completed an initial login and accepted the Terms of Service agreement.

change_password_at_next_login

Indicates if the user is forced to change their password at next login. This setting doesn’t apply when the user signs in via a third-party identity provider.

creation_time

The time the user’s account was created. The value is in ISO 8601 date and time format. The time is the complete date plus hours, minutes, and seconds in the form YYYY-MM-DDThh:mm:ssTZD. For example, 2010-04-05T17:30:04+01:00.

customer_id

The customer ID to retrieve all account users. You can use the alias my_customer to represent your account’s customerId. As a reseller administrator, you can use the resold customer account’s customerId. To get a customerId, use the account’s primary domain in the domain parameter of a users.list request.

etag

ETag of the resource

include_in_global_address_list

Indicates if the user’s profile is visible in the G Suite global address list when the contact sharing feature is enabled for the domain. For more information about excluding user profiles, see the administration help center.

ip_whitelisted

If true, the user’s IP address is white listed.

is_admin

Indicates a user with super admininistrator privileges. The isAdmin property can only be edited in the Make a user an administrator operation (makeAdmin method). If edited in the user insert or update methods, the edit is ignored by the API service.

is_delegated_admin

Indicates if the user is a delegated administrator. Delegated administrators are supported by the API but cannot create or undelete users, or make users administrators. These requests are ignored by the API service. Roles and privileges for administrators are assigned using the Admin console.

is_enforced_in_2_sv

Is 2-step verification enforced (Read-only)

is_enrolled_in_2_sv

Is enrolled in 2-step verification (Read-only)

is_mailbox_setup

Indicates if the user’s Google mailbox is created. This property is only applicable if the user has been assigned a Gmail license.

kind

The type of the API resource. For Users resources, the value is admin#directory#user.

last_login_time

The last time the user logged into the user’s account. The value is in ISO 8601 date and time format. The time is the complete date plus hours, minutes, and seconds in the form YYYY-MM-DDThh:mm:ssTZD. For example, 2010-04-05T17:30:04+01:00.

name

First name + Last name

family_name

The user’s last name. Required when creating a user account.

given_name

The user’s first name. Required when creating a user account.

org_unit_path

The full path of the parent organization associated with the user. If the parent organization is the top-level, it is represented as a forward slash (/).

primary_email

The user’s primary email address. This property is required in a request to create a user account. The primaryEmail must be unique and cannot be an alias of another user.

suspended

Indicates if user is suspended

thumbnail_photo_etag

ETag of the user’s photo

thumbnail_photo_url

Photo Url of the user

lastupdated

Timestamp of when a sync job last updated this node

firstseen

Timestamp of when a sync job first discovered this node

+
+

Relationships

+
    +
  • GSuiteUser is an identity for a Human

    +
    (Human)-[IDENTITY_GSUITE]->(GSuiteUser)
    +
    +
    +
  • +
+
+
+
+

GSuiteGroup

+

Reference: +https://developers.google.com/admin-sdk/directory/v1/reference/groups

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

id

The unique ID of a group. A group id can be used as a group request URI’s groupKey.

admin_created

Value is true if this group was created by an administrator rather than a user.

description

An extended description to help users determine the purpose of a group. For example, you can include information about who should join the group, the types of messages to send to the group, links to FAQs about the group, or related groups. Maximum length is 4,096 characters.

direct_members_count

The number of users that are direct members of the group. If a group is a member (child) of this group (the parent), members of the child group are not counted in the directMembersCount property of the parent group

email

The group’s email address. If your account has multiple domains, select the appropriate domain for the email address. The email must be unique. This property is required when creating a group. Group email addresses are subject to the same character usage rules as usernames, see the administration help center for the details.

etag

ETag of the resource

kind

The type of the API resource. For Groups resources, the value is admin#directory#group.

name

The group’s display name.

lastupdated

Timestamp of when a sync job last updated this node

firstseen

Timestamp of when a sync job first discovered this node

+
+
+ + +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/modules/index.html b/modules/index.html new file mode 100644 index 0000000000..f9c7508376 --- /dev/null +++ b/modules/index.html @@ -0,0 +1,535 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <no title> — cartography documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+
+ + +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/modules/jamf/index.html b/modules/jamf/index.html new file mode 100644 index 0000000000..edeca58816 --- /dev/null +++ b/modules/jamf/index.html @@ -0,0 +1,567 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Jamf — cartography documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+ +
+
+
+
+ + + + + \ No newline at end of file diff --git a/modules/jamf/schema.html b/modules/jamf/schema.html new file mode 100644 index 0000000000..53167abce2 --- /dev/null +++ b/modules/jamf/schema.html @@ -0,0 +1,611 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Jamf Schema — cartography documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+

Jamf Schema

+
+

JamfComputerGroup

+

Representation of a Jamf computer group.

+ ++++ + + + + + + + + + + + + + + + + +

Field

Description

id

The group id

name

The friendly name of the group

is_smart

Whether the group is smart

+
+

Relationships

+
    +
  • Coming soon!

  • +
+
+
+
+ + +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/modules/kubernetes/config.html b/modules/kubernetes/config.html new file mode 100644 index 0000000000..8e2a9ed0be --- /dev/null +++ b/modules/kubernetes/config.html @@ -0,0 +1,573 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Kubernetes Configuration — cartography documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+

Kubernetes Configuration

+

Follow these steps to analyze Kubernetes objects in Cartography.

+
    +
  1. Configure a kubeconfig file specifying access to one or mulitple clusters.

    +
      +
    • Access to mutliple K8 clusters can be organized in a single kubeconfig file. Intel module of Kubernetes will automatically detect that and attempt to sync each cluster.

    • +
    +
  2. +
  3. Note down the path of configured kubeconfig file and pass it to cartography CLI with --k8s-kubeconfig parameter.

  4. +
+
+ + +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/modules/kubernetes/index.html b/modules/kubernetes/index.html new file mode 100644 index 0000000000..1103c9508f --- /dev/null +++ b/modules/kubernetes/index.html @@ -0,0 +1,574 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Kubernetes — cartography documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+

Kubernetes

+

The kubernetes module has the following coverage:

+
    +
  • Cluster

  • +
  • Namespace

  • +
  • Secret

  • +
  • Service

  • +
  • Pod

  • +
  • Container

  • +
+
+
+
+ + +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/modules/kubernetes/schema.html b/modules/kubernetes/schema.html new file mode 100644 index 0000000000..186eb1bdfa --- /dev/null +++ b/modules/kubernetes/schema.html @@ -0,0 +1,955 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Kubernetes Schema — cartography documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+ + +
+
+ +
+

Kubernetes Schema

+
+

KubernetesCluster

+

Representation of a Kubernetes Cluster.

+ ++++ + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

Identifier for the cluster i.e. UID of kube-system namespace

name

Name assigned to the cluster which is derived from kubeconfig context

+
+

Relationships

+
    +
  • KubernetesCluster has KubernetesNamespaces.

    +
    (KubernetesCluster)-[HAS_NAMESPACE]->(KubernetesNamespace)
    +
    +
    +
  • +
  • KubernetesCluster can have KubernetesPods.

    +
    (KubernetesCluster)-[HAS_POD]->(KubernetesPod)
    +
    +
    +
  • +
+
+
+
+

KubernetesNamespace

+

Representation of a Kubernetes Namespace.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

UID of the kubernetes namespace

name

Name of the kubernetes namespace

created_at

Timestamp of the creation time of the kubernetes namespace

deleted_at

Timestamp of the deletion time of the kubernetes namespace

+
+

Relationships

+
    +
  • KubernetesNamespace can have KubernetesPods.

    +
    (KubernetesNamespace)-[HAS_POD]->(KubernetesPod)
    +
    +
    +
  • +
  • KubernetesNamespace can have KubernetesServices.

    +
    (KubernetesNamespace)-[HAS_SERVICE]->(KubernetesService)
    +
    +
    +
  • +
  • KubernetesNamespace can have KubernetesSecrets.

    +
    (KubernetesNamespace)-[HAS_SECRET]->(KubernetesSecret)
    +
    +
    +
  • +
+
+
+
+

KubernetesPod

+

Representation of a Kubernetes Pod.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

UID of the kubernetes pod

name

Name of the kubernetes pod

status_phase

The phase of a Pod is a simple, high-level summary of where the Pod is in its lifecycle.

created_at

Timestamp of the creation time of the kubernetes pod

deleted_at

Timestamp of the deletion time of the kubernetes pod

+
+

Relationships

+
    +
  • KubernetesPod has KubernetesContainers.

    +
    (KubernetesPod)-[HAS_CONTAINER]->(KubernetesContainer)
    +
    +
    +
  • +
+
+
+
+

KubernetesContainer

+

Representation of a Kubernetes Container.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

Identifier for the container which is derived from the UID of pod and the name of container

name

Name of the container in kubernetes pod

image

Docker image used in the container

status_image_id

ImageID of the container’s image.

status_image_sha

The SHA portion of the status_image_id

status_ready

Specifies whether the container has passed its readiness probe.

status_started

Specifies whether the container has passed its startup probe.

statys_state

State of the container (running, terminated, waiting)

+
+

Relationships

+
    +
  • KubernetesPod has KubernetesContainers.

    +
    (KubernetesPod)-[HAS_CONTAINER]->(KubernetesContainer)
    +
    +
    +
  • +
+
+
+
+

KubernetesService

+

Representation of a Kubernetes Service.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

UID of the kubernetes service

name

Name of the kubernetes service

created_at

Timestamp of the creation time of the kubernetes service

deleted_at

Timestamp of the deletion time of the kubernetes service

type

Type of kubernetes service e.g. ClusterIP

load_balancer_ip

IP of the load balancer when service type is LoadBalancer

ingress_host

Hostname of the ingress endpoint, if any

ingress_ip

IP of the ingress endpoint, if any

+
+

Relationships

+
    +
  • KubernetesService can serve KubernetesPods.

    +
    (KubernetesService)-[SERVES_POD]->(KubernetesPod)
    +
    +
    +
  • +
+
+
+
+

KubernetesSecret

+

Representation of a Kubernetes Secret.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

UID of the kubernetes secret

name

Name of the kubernetes secret

created_at

Timestamp of the creation time of the kubernetes secret

deleted_at

Timestamp of the deletion time of the kubernetes secret

type

Type of kubernetes secret e.g. Opaque

+
+

Relationships

+
    +
  • KubernetesNamespace can have KubernetesSecrets.

    +
    (KubernetesNamespace)-[HAS_SECRET]->(KubernetesSecret)
    +
    +
    +
  • +
+
+
+
+ + +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/modules/lastpass/config.html b/modules/lastpass/config.html new file mode 100644 index 0000000000..0379cb160a --- /dev/null +++ b/modules/lastpass/config.html @@ -0,0 +1,573 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Lastpass Configuration — cartography documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+

Lastpass Configuration

+

Follow these steps to analyze Lastpass objects with Cartography.

+
    +
  1. Prepare your Lastpass CID & ProvHash key.

    +
      +
    1. Get your CID (account number) and ProvHash from Lastpass Where can I find the CID and API secret?

    2. +
    3. Populate an environment variable with the CID and Provhash. You can pass the environment variable name via CLI with the --lastpass-cid-env-var and --lastpass-provhash-env-var parameter.

    4. +
    +
  2. +
+
+ + +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/modules/lastpass/index.html b/modules/lastpass/index.html new file mode 100644 index 0000000000..5206832c65 --- /dev/null +++ b/modules/lastpass/index.html @@ -0,0 +1,569 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Lastpass — cartography documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+

Lastpass

+

The lastpass module has the following coverage:

+
    +
  • Users

  • +
+
+
+
+ + +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/modules/lastpass/schema.html b/modules/lastpass/schema.html new file mode 100644 index 0000000000..fbf415c94c --- /dev/null +++ b/modules/lastpass/schema.html @@ -0,0 +1,682 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Lastpass Schema — cartography documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+

Lastpass Schema

+
+

Human

+

Lastpass use Human node as pivot with other Identity Providers (GSuite, GitHub …)

+

Human nodes are not created by Lastpass module, link is made using analysis job.

+
+

Relationships

+
    +
  • Human as an access to Lastpass

    +
    (Human)-[IDENTITY_LASTPASS]->(LastpassUser)
    +
    +
    +
  • +
+
+
+
+

LastpassUser

+

Representation of a single User in Lastpass

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first created this node

lastupdated

Timestamp of the last time the node was updated

id

Lastpass ID

name

Full name of the user

email

User email

created

Timestamp of when the account was created

last_pw_change

Timestamp of the last master password change

last_login

Timestamp of the last login

neverloggedin

Flag indicating the user never logged in

disabled

Flag indicating accout is disabled

admin

Flag for admin account

totalscore

Lastpass security score (max 100)

mpstrength

Master password strenght (max 100)

sites

Number of site credentials stored

notes

Number of secured notes stored

formfills

Number of forms stored

applications

Number of applications (mobile) stored

attachments

Number of file attachments stored

password_reset_required

Flag indicating user requested password reset

multifactor

MFA method (null if None)

+
+
+ + +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/modules/okta/config.html b/modules/okta/config.html new file mode 100644 index 0000000000..3f75c0ad0b --- /dev/null +++ b/modules/okta/config.html @@ -0,0 +1,579 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Okta Configuration — cartography documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+

Okta Configuration

+

Follow these steps to analyze Okta objects with Cartography.

+
    +
  1. Prepare your Okta API token.

    +
      +
    1. Generate your API token by following the steps from the Okta Create An API Token documentation

    2. +
    3. Populate an environment variable with the API token. You can pass the environment variable name via CLI with the --okta-api-key-env-var parameter.

    4. +
    5. Use the CLI --okta-org-id parameter with the organization ID that you wish to query. The organization ID is the first part of the Okta URL for your organization.

    6. +
    7. If you are using Okta to administer AWS as a SAML provider then the module will automatically match OktaGroups to the AWSRole they control access for.

      +
        +
      • If you are using a regex other than the standard okta group to role regex ^aws\#\S+\#(?{{role}}[\w\-]+)\#(?{{accountid}}\d+)$ defined in Step 5: Enabling Group Based Role Mapping in Okta then you can specify your regex with the --okta-saml-role-regex parameter.

      • +
      +
    8. +
    +
  2. +
+
+ + +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/modules/okta/index.html b/modules/okta/index.html new file mode 100644 index 0000000000..9ae61e45a5 --- /dev/null +++ b/modules/okta/index.html @@ -0,0 +1,576 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Okta — cartography documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+

Okta

+

The okta module has the following coverage:

+
    +
  • Users

  • +
  • Groups

  • +
  • Organizations

  • +
  • Roles

  • +
  • Applications

  • +
  • Factors

  • +
  • Trusted Origins

  • +
  • Reply URIs

  • +
+
+
+
+ + +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/modules/okta/schema.html b/modules/okta/schema.html new file mode 100644 index 0000000000..8b964b9eec --- /dev/null +++ b/modules/okta/schema.html @@ -0,0 +1,1180 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Okta Schema — cartography documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+ +
+
+ +
+
+ +
+

Okta Schema

+
+

OktaOrganization

+

Representation of an Okta Organization.

+ ++++ + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The name of the Okta Organization, e.g. “lyft”

name

The name of the Okta Organization, e.g. “lyft”

+
+

Relationships

+
    +
  • An OktaOrganization contains OktaUsers

    +
    (OktaOrganization)-[RESOURCE]->(OktaUser)
    +
    +
    +
  • +
  • An OktaOrganization contains OktaGroups.

    +
    (OktaOrganization)-[RESOURCE]->(OktaGroup)
    +
    +
    +
  • +
  • An OktaOrganization contains OktaApplications

    +
    (OktaOrganization)-[RESOURCE]->(OktaApplication)
    +
    +
    +
  • +
  • An OktaOrganization has OktaTrustedOrigins

    +
    (OktaOrganization)-[RESOURCE]->(OktaTrustedOrigin)
    +
    +
    +
  • +
  • An OktaOrganization has OktaAdministrationRoles

    +
    (OktaOrganization)-[RESOURCE]->(OktaAdministrationRole)
    +
    +
    +
  • +
+
+
+
+

OktaUser

+

Representation of an Okta User.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

id

user id

first_name

user first name

last_name

user last name

login

user usernmae used to login (usually email)

email

user email

second_email

user secondary email

mobile_phone

user mobile phone

created

date and time of creation

activated

date and time of activation

status_changed

date and time of the last state change

last_login

date and time of last login

okta_last_updated

date and time of last user property changes

password_changed

date and time of last password change

transition_to_status

date and time of last state transition change

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

+
+

Relationships

+
    +
  • An OktaOrganization contains OktaUsers

    +
    (OktaUser)<-[RESOURCE]->(OktaOrganization)
    +
    +
    +
  • +
  • OktaUsers are assigned OktaApplication

    +
    (OktaUser)-[APPLICATION]->(OktaApplication)
    +
    +
    +
  • +
  • OktaUser is an identity for a Human

    +
    (OktaUser)<-[IDENTITY_OKTA]-(Human)
    +
    +
    +
  • +
  • An OktaUser can be a member of an OktaGroup

    +
    (OktaUser)-[MEMBER_OF_OKTA_GROUP]->(OktaGroup)
    +
    +
    +
  • +
  • An OktaUser can be a member of an OktaAdministrationRole

    +
    (OktaUser)-[MEMBER_OF_OKTA_ROLE]->(OktaAdministrationRole)
    +
    +
    +
  • +
  • OktaUsers can have authentication factors

    +
    (OktaUser)-[FACTOR]->(OktaUserFactor)
    +
    +
    +
  • +
+
+
+
+

OktaGroup

+

Representation of an Okta Group.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

id

application id

name

group name

description

group description

sam_account_name

windows SAM account name mapped

dn

group dn

windows_domain_qualified_name

windows domain name

external_id

group foreign id

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

+
+

Relationships

+
    +
  • OktaOrganizations contain OktaGroups

    +
    (OktaGroup)<-[RESOURCE]->(OktaOrganizations)
    +
    +
    +
  • +
  • OktaApplications can be assigned to OktaGroups

    +
    (OktaGroup)-[APPLICATION]->(OktaApplication)
    +
    +
    +
  • +
  • An OktaUser can be a member of an OktaGroup

    +
    (OktaUser)-[MEMBER_OF_OKTA_GROUP]->(OktaGroup)
    +
    +
    +
  • +
  • An OktaGroup can be a member of an OktaAdministrationRole

    +
    (OktaGroup)-[MEMBER_OF_OKTA_ROLE]->(OktaAdministrationRole)
    +
    +
    +
  • +
+
+
+
+

OktaApplication

+

Representation of an Okta Application.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

id

application id

name

application name

label

application label

created

application creation date

okta_last_updated

date and time of last application property changes

status

application status

activated

application activation state

features

application features

sign_on_mode

application signon mode

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

+
+

Relationships

+
    +
  • OktaApplication is a resource of an OktaOrganization

    +
    (OktaApplication)<-[RESOURCE]->(OktaOrganization)
    +
    +
    +
      +
    • OktaGroups can be assigned OktaApplications

    • +
    +
    (OktaGroup)-[APPLICATION]->(OktaApplication)
    +
    +
    +
      +
    • OktaUsers are assigned OktaApplications

    • +
    +
    (OktaUser)-[APPLICATION]->(OktaApplication)
    +
    +
    +
      +
    • OktaApplications have ReplyUris

    • +
    +
    (ReplyUri)-[REPLYURI]->(OktaApplication)
    +
    +
    +
  • +
+
+
+
+

OktaUserFactor

+

Representation of Okta User authentication Factors.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

id

factor id

factor_type

factor type

provider

factor provider

status

factor status

created

factor creation date and time

okta_last_updated

date and time of last property changes

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

+
+

Relationships

+
    +
  • OktaUsers can have authentication Factors

    +
    (OktaUser)-[FACTOR]->(OktaUserFactor)
    +
    +
    +
  • +
+
+
+
+

OktaTrustedOrigin

+

Representation of an Okta Trusted Origin for login/logout or recovery operations.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

id

trusted origin id

name

name

scopes

array of scope

status

status

created

date & time of creation in okta

create_by

id of user who created the trusted origin

okta_last_updated

date and time of last property changes

okta_last_updated_by

id of user who last updated the trusted origin

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

+
+

Relationships

+
    +
  • An OktaOrganization has OktaTrustedOrigins.

    +
    (OktaOrganization)-[RESOURCE]->(OktaTrustedOrigin)
    +
    +
    +
  • +
+
+
+
+

OktaAdministrationRole

+

Representation of an Okta Administration Role.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

id

role id mapped to the type

type

role type

label

role label

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

+
+

Relationships

+
    +
  • OktaUsers can be members of OktaAdministrationRoles

    +
    (OktaUser)-[MEMBER_OF_OKTA_ROLE]->(OktaAdministrationRole)
    +
    +
    +
  • +
  • An OktaGroup can be a member of an OktaAdministrationRolee

    +
    (OktaGroup)-[MEMBER_OF_OKTA_ROLE]->(OktaAdministrationRole)
    +
    +
    +
      +
    • An OktaOrganization contains OktaAdministrationRoles

      +
      (OktaOrganization)-[RESOURCE]->(OktaAdministrationRole)
      +
      +
      +
    • +
    +
  • +
+
+
+
+

Reply Uri

+

Representation of Okta Application ReplyUri.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

id

uri the app can send the reply to

uri

uri the app can send the reply to

valid

is the DNS of the reply uri valid. Invalid replyuris can lead to oath phishing

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

+
+

Relationships

+
    +
  • OktaApplications have ReplyUris

    +
    (ReplyUri)-[REPLYURI]->(OktaApplication)
    +
    +
    +
  • +
+
+
+
+ + +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/modules/pagerduty/config.html b/modules/pagerduty/config.html new file mode 100644 index 0000000000..fd68e7b148 --- /dev/null +++ b/modules/pagerduty/config.html @@ -0,0 +1,574 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Pagerduty Configuration — cartography documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+

Pagerduty Configuration

+

Follow these steps to analyze PagerDuty objects with Cartography.

+
    +
  1. Prepare your PagerDuty API key.

    +
      +
    1. Generate your API token by following the steps from the PagerDuty Generating API Keys documentation

    2. +
    3. Populate an environment variable with the API key. You can pass the environment variable name via CLI with the --pagerduty-api-key-env-var parameter.

    4. +
    5. You can set the timeout for pagerduty requests via the CLI with --pagerduty-request-timeout parameter.

    6. +
    +
  2. +
+
+ + +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/modules/pagerduty/index.html b/modules/pagerduty/index.html new file mode 100644 index 0000000000..d8fb7103dd --- /dev/null +++ b/modules/pagerduty/index.html @@ -0,0 +1,575 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + PagerDuty — cartography documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+

PagerDuty

+

The pagerduty module has the following coverage:

+
    +
  • Users

  • +
  • Teams

  • +
  • Services

  • +
  • Schedules

  • +
  • Escalation Policies

  • +
  • Integrations

  • +
  • Vendors

  • +
+
+
+
+ + +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/modules/pagerduty/schema.html b/modules/pagerduty/schema.html new file mode 100644 index 0000000000..cd65ba1a24 --- /dev/null +++ b/modules/pagerduty/schema.html @@ -0,0 +1,1117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Pagerduty Schema — cartography documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+ + +
+
+ +
+

Pagerduty Schema

+
+

PagerDutyEscalationPolicy

+

Representation of a PagerDuty Escalation Policy

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The ID of the escalation policy

html_url

the API show URL at which the object is accessible

type

The type of this pagerduty object (escalation_policy)

summary

A short-form, server-generated string that provides succinct, important information about an object suitable for primary labeling of an entity in a client. In many cases, this will be identical to name, though it is not intended to be an identifier.

on_call_handoff_notifications

Determines how on call handoff notifications will be sent for users on the escalation policy. Defaults to “if_has_services”.

name

The name of the escalation policy.

num_loops

The number of times the escalation policy will repeat after reaching the end of its escalation.

+
+

Relationships

+
    +
  • A PagerDutyEscalationPolicy has PagerDutyEscalationPolicyRules

    +
    (PagerDutyEscalationPolicy)-[HAS\_RULE]->(PagerDutyEscalationPolicyRule)
    +
    +
    +
  • +
  • A PagerDutyEscalationPolicy is associated with PagerDutyUsers

    +
    (PagerDutyEscalationPolicy)-[ASSOCIATED\_WITH]->(PagerDutyUser)
    +
    +
    +
  • +
  • A PagerDutyEscalationPolicy is associated with PagerDutySchedules

    +
    (PagerDutyEscalationPolicy)-[ASSOCIATED\_WITH]->(PagerDutySchedule)
    +
    +
    +
  • +
  • A PagerDutyEscalationPolicy is associated with PagerDutyServices

    +
    (PagerDutyEscalationPolicy)-[ASSOCIATED\_WITH]->(PagerDutyService)
    +
    +
    +
  • +
  • A PagerDutyEscalationPolicy is associated with PagerDutyTeams

    +
    (PagerDutyEscalationPolicy)-[ASSOCIATED\_WITH]->(PagerDutyTeam)
    +
    +
    +
  • +
+
+
+
+

PagerDutySchedule

+

Representation of a PagerDuty Schedule

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The ID of the schedule

html_url

the API show URL at which the object is accessible

type

The type of this pagerduty object (schedule)

summary

A short-form, server-generated string that provides succinct, important information about an object suitable for primary labeling of an entity in a client. In many cases, this will be identical to name, though it is not intended to be an identifier.

name

The name of the schedule.

time_zone

The time zone of the schedule

description

The description of the schedule

+
+

Relationships

+
    +
  • A PagerDutySchedule has PagerDutyScheduleLayers

    +
    (PagerDutySchedule)-[HAS\_LAYER]->(PagerDutyScheduleLayer)
    +
    +
    +
  • +
+
+
+
+

PagerDutyScheduleLayer

+

Representation of a layer in a PagerDuty Schedule

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The ID of the schedule layer

schedule_id

The ID of the schedule this layer is attached to.

start

The start time of this layer

end

The end time of this layer. If null, the layer does not end.

rotation_virtual_start

The effective start time of the layer. This can be before the start time of the schedule.

rotation_turn_length_seconds

The duration of each on-call shift in seconds.

+
+

Relationships

+

No relationships originating from PagerDutyScheduleLayer

+
+
+
+

PagerDutyService

+

Representation of a PagerDuty Service

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The ID of the service

html_url

the API show URL at which the object is accessible

type

The type of this pagerduty object (service)

summary

A short-form, server-generated string that provides succinct, important information about an object suitable for primary labeling of an entity in a client. In many cases, this will be identical to name, though it is not intended to be an identifier.

name

The name of this service

description

The user-provided description of the service.

auto_resolve_timeout

Time in seconds that an incident is automatically resolved if left open for that long. Value is null if the feature is disabled. Value must not be negative. Setting this field to 0, null (or unset in POST request) will disable the feature.

acknowledgement_timeout

Time in seconds that an incident changes to the Triggered State after being Acknowledged. Value is null if the feature is disabled. Value must not be negative. Setting this field to 0, null (or unset in POST request) will disable the feature.

created_at

The date/time when this service was created

status

The current state of the Service.

alert_creation

Whether a service creates only incidents, or both alerts and incidents. A service must create alerts in order to enable incident merging.

alert_grouping_parameters_type

The type of Alert Grouping.

incident_urgency_rule_type

The type of incident urgency: whether it’s constant, or it’s dependent on the support hours.

incident_urgency_rule_during_support_hours_type

The type of incident urgency: whether it’s constant, or it’s dependent on the support hours.

incident_urgency_rule_during_support_hours_urgency

The incidents’ urgency, if type is constant.

incident_urgency_rule_outside_support_hours_type

The type of incident urgency: whether it’s constant, or it’s dependent on the support hours.

incident_urgency_rule_outside_support_hours_urgency

The incidents’ urgency, if type is constant.

support_hours_type

The type of support hours

support_hours_time_zone

The time zone for the support hours

support_hours_start_time

The support hours’ starting time of day (date portion is ignored)

support_hours_end_time

support_hours_end_time

support_hours_days_of_week

(no description)

+
+

Relationships

+
    +
  • A PagerDutyService has PagerDutyIntegrations

    +
    (PagerDutyService)-[HAS\_INTEGRATION]->(PagerDutyIntegration)
    +
    +
    +
  • +
+
+
+
+

PagerDutyIntegration

+

Representation of a PagerDuty Integration

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The ID of the integration

html_url

the API show URL at which the object is accessible

type

The type of this pagerduty object (integration)

summary

A short-form, server-generated string that provides succinct, important information about an object suitable for primary labeling of an entity in a client. In many cases, this will be identical to name, though it is not intended to be an identifier.

name

The name of this integration

created_at

The date/time when this integration was created.

+
+

Relationships

+
    +
  • A PagerDutyIntegration has PagerDutyVendors

    +
    (PagerDutyIntegration)-[HAS\_VENDOR]->(PagerDutyVendor)
    +
    +
    +
  • +
+
+
+
+

PagerDutyTeam

+

Representation of a PagerDuty Team

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The ID of the team

html_url

the API show URL at which the object is accessible

type

The type of this pagerduty object (team)

summary

A short-form, server-generated string that provides succinct, important information about an object suitable for primary labeling of an entity in a client. In many cases, this will be identical to name, though it is not intended to be an identifier.

name

The name of the team

description

The description of the team

default_role

(no description, but returned by API)

+
+

Relationships

+
    +
  • A PagerDutyTeam is associated with PagerDutyServices

    +
    (PagerDutyTeam)-[ASSOCIATED\_WITH]->(PagerDutyServices)
    +
    +
    +
  • +
+
+
+
+

PagerDutyUser

+

Representation of a PagerDuty User

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The ID of the user

html_url

the API show URL at which the object is accessible

type

The type of this pagerduty object (user)

summary

A short-form, server-generated string that provides succinct, important information about an object suitable for primary labeling of an entity in a client. In many cases, this will be identical to name, though it is not intended to be an identifier.

name

The name of the user

email

The user’s email address

time_zone

The preferred time zone name. If null, the account’s time zone will be used.

color

The schedule color

role

The user role. Account must have the read_only_users ability to set a user as a read_only_user or a read_only_limited_user, and must have advanced permissions abilities to set a user as observer or restricted_access.

avatar_url

The URL of the user’s avatar.

description

The user’s bio.

invitation_sent

If true, the user has an outstanding invitation.

job_title

The user’s title

+
+

Relationships

+
    +
  • A PagerDutyUser is a member of PagerDutySchedules

    +
    (PagerDutyUser)-[MEMBER\_OF]->(PagerDutySchedule)
    +
    +
    +
  • +
  • A PagerDutyUser is a member of PagerDutyScheduleLayers

    +
    (PagerDutyUser)-[MEMBER\_OF]->(PagerDutyScheduleLayer)
    +
    +
    +
  • +
  • A PagerDutyUser is a member of PagerDutyTeams

    +
    (PagerDutyUser)-[MEMBER\_OF]->(PagerDutyTeam)
    +
    +
    +
  • +
+
+
+
+ + +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/modules/semgrep/config.html b/modules/semgrep/config.html new file mode 100644 index 0000000000..a7131041c1 --- /dev/null +++ b/modules/semgrep/config.html @@ -0,0 +1,570 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Semgrep Configuration — cartography documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+

Semgrep Configuration

+

Follow these steps to ingest Semgrep findings with Cartography.

+
    +
  1. Create a token with Agent (CI) and Web API scopes Creating a SEMGREP_APP_TOKEN.

  2. +
  3. Populate an environment variable with the secrets value of the token

  4. +
  5. Pass the environment variable name to the --semgrep-app-token-env-var CLI arg.

  6. +
+
+ + +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/modules/semgrep/index.html b/modules/semgrep/index.html new file mode 100644 index 0000000000..4af9a1a393 --- /dev/null +++ b/modules/semgrep/index.html @@ -0,0 +1,570 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Semgrep — cartography documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+

Semgrep

+

The Semgrep module has the following coverage:

+
    +
  • Deployment

  • +
  • SCA Findings

  • +
+
+
+
+ + +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/modules/semgrep/schema.html b/modules/semgrep/schema.html new file mode 100644 index 0000000000..d8de95af4e --- /dev/null +++ b/modules/semgrep/schema.html @@ -0,0 +1,788 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Semgrep Schema — cartography documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+

Semgrep Schema

+
+

SemgrepDeployment

+

Represents a Semgrep Deployment, a unit encapsulating a security organization inside Semgrep Cloud. Works as the parent of all other Semgrep resources.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

Unique integer id representing the deployment

slug

Lowercase string id representing the deployment to query the API

name

Name of security organization connected to the deployment

+
+

Relationships

+
    +
  • A SemgrepDeployment contains SemgrepSCAFinding’s

    +
    (SemgrepDeployment)-[RESOURCE]->(SemgrepSCAFinding)
    +
    +
    +
  • +
  • A SemgrepDeployment contains SemgrepSCALocation’s

  • +
+
```
+(SemgrepDeployment)-[RESOURCE]->(SemgrepSCALocation)
+```
+
+```
+
+
+
+
+
+

SemgrepSCAFinding

+

Represents a Semgre Supply Chain finding. This is, a vulnerability in a dependency of a project discovered by Semgrep performing software composition analysis (SCA) and code reachability analysis. Before ingesting this node, make sure you have run Semgrep CI and that it’s connected to Semgrep Cloud Platform Running Semgrep CI with Semgrep Cloud Platform.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

A composed id based using the repository path and the rule that triggered the finding

rule_id

The rule that triggered the finding

repository

The repository path where the finding was discovered

summary

A short title summarizing of the finding

description

Description of the vulnerability.

package_manager

The ecosystem of the dependency where the finding was discovered (e.g. pypi, npm, maven)

severity

Severity of the finding (e.g. CRITICAL, HIGH, MEDIUM, LOW)

cve_id

CVE id of the vulnerability from NVD. Check cve_schema

reachability_check

Whether the vulnerability reachability is confirmed, not confirmed or needs to be manually confirmed

reachability_condition

Description of the reachability condition (e.g. reachable if code is used in X way)

reachability

Whether the vulnerability is reachable or not

transitivity

Whether the vulnerability is transitive or not (e.g. dependency, transitive)

dependency

Dependency where the finding was discovered. Includes dependency name and version

dependency_fix

Dependency version that fixes the vulnerability

ref_urls

List of reference urls for the finding

dependency_file

Path of the file where the finding was discovered (e.g. lock.json, requirements.txt)

dependency_file_url

URL of the file where the finding was discovered

scan_time

Date and time when the finding was discovered in UTC

+
+

Relationships

+
    +
  • An SemgrepSCAFinding connected to a GithubRepository (optional)

    +
    (SemgrepSCAFinding)-[FOUND_IN]->(GithubRepository)
    +
    +
    +
  • +
  • A SemgrepSCAFinding vulnerable dependency usage at SemgrepSCALocation (optional)

    +
    (SemgrepSCAFinding)-[USAGE_AT]->(SemgrepSCALocation)
    +
    +
    +
  • +
+
+
+
+

SemgrepSCALocation

+

Represents the location in a repository where a vulnerable dependency is used in a way that can trigger the vulnerability.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

Unique id identifying the location of the finding

path

Path of the file where the usage was discovered

start_line

Line where the usage starts

start_col

Column where the usage starts

end_line

Line where the usage ends

end_col

Column where the usage ends

url

URL of the file where the usage was discovered

+
+
+ + +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/objects.inv b/objects.inv new file mode 100644 index 0000000000000000000000000000000000000000..d661d8cb6d0664dbf408495984408448d6d3b501 GIT binary patch literal 7968 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Cartography operations guide — cartography documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+ + +
+
+ +
+

Cartography operations guide

+

This document contains tips for running Cartography in production.

+
+

Maintaining a up-to-date picture of your infrastructure

+

Running cartography ensures that your Neo4j instance contains the most recent snapshot of your infrastructure. Here’s +how that process works.

+
+

Update tags

+

Each sync run has an update_tag associated with it, +which is the Unix timestamp of when the sync started. +See our docs for more details.

+
+
+

Cleanup jobs

+

Each node and relationship created or updated during the sync will have their lastupdated field set to the +update_tag. At the end of a sync run, nodes and relationships with out-of-date lastupdated fields are considered +stale and will be deleted via a cleanup job.

+
+
+

Sync frequency

+

To keep data updated, you can run cartography as part of a periodic script (cronjobs in Linux, scheduled tasks in +Windows). Determine your needs for data freshness and adjust accordingly.

+
+
+
+

Observability

+
+

statsd

+

Cartography can be configured to send metrics to a statsd server. Specify the +--statsd-enabled flag when running cartography for sync execution times to be recorded and sent to +127.0.0.1:8125 by default (these options are also configurable with the --statsd-host and --statsd-port options). +You can also provide your own --statsd-prefix to make these metrics easier to find in your own environment.

+
+
+
+

Docker image

+

A production-ready docker image is available in GitHub Container Registry. We recommend that you avoid using the :latest tag and instead +use the tag or digest associated with your desired release version, e.g.

+
docker pull ghcr.io/lyft/cartography:0.61.0
+
+
+

This image can then be ran with any of your desired command line flags:

+
docker run --rm ghcr.io/lyft/cartography:0.61.0 --help
+
+
+
+
+ + +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/search.html b/search.html new file mode 100644 index 0000000000..3f856197f5 --- /dev/null +++ b/search.html @@ -0,0 +1,522 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Search — cartography documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +

Search

+
+ +

+ Please activate JavaScript to enable the search + functionality. +

+
+ +
+ +
+ +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/searchindex.js b/searchindex.js new file mode 100644 index 0000000000..928cb6e68b --- /dev/null +++ b/searchindex.js @@ -0,0 +1 @@ +Search.setIndex({docnames:["contact","dev/developer-guide","dev/index","dev/testing-with-docker","dev/writing-analysis-jobs","dev/writing-intel-modules","index","info","install","modules/_cartography-metadata/schema","modules/aws/config","modules/aws/index","modules/aws/permissions-mapping","modules/aws/schema","modules/azure/config","modules/azure/index","modules/azure/schema","modules/bigfix/config","modules/bigfix/index","modules/bigfix/schema","modules/crowdstrike/config","modules/crowdstrike/index","modules/crowdstrike/schema","modules/crxcavator/config","modules/crxcavator/index","modules/crxcavator/schema","modules/cve/config","modules/cve/index","modules/cve/schema","modules/digitalocean/config","modules/digitalocean/index","modules/digitalocean/schema","modules/duo/config","modules/duo/index","modules/duo/schema","modules/gcp/config","modules/gcp/index","modules/gcp/schema","modules/github/config","modules/github/index","modules/github/schema","modules/gsuite/config","modules/gsuite/index","modules/gsuite/schema","modules/index","modules/jamf/index","modules/jamf/schema","modules/kubernetes/config","modules/kubernetes/index","modules/kubernetes/schema","modules/lastpass/config","modules/lastpass/index","modules/lastpass/schema","modules/okta/config","modules/okta/index","modules/okta/schema","modules/pagerduty/config","modules/pagerduty/index","modules/pagerduty/schema","modules/semgrep/config","modules/semgrep/index","modules/semgrep/schema","ops","usage/drift-detect","usage/index","usage/samplequeries","usage/schema","usage/tutorial"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":4,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":3,"sphinx.domains.rst":2,"sphinx.domains.std":2,sphinx:56},filenames:["contact.md","dev/developer-guide.md","dev/index.rst","dev/testing-with-docker.md","dev/writing-analysis-jobs.md","dev/writing-intel-modules.md","index.rst","info.md","install.md","modules/_cartography-metadata/schema.md","modules/aws/config.md","modules/aws/index.rst","modules/aws/permissions-mapping.md","modules/aws/schema.md","modules/azure/config.md","modules/azure/index.rst","modules/azure/schema.md","modules/bigfix/config.md","modules/bigfix/index.rst","modules/bigfix/schema.md","modules/crowdstrike/config.md","modules/crowdstrike/index.rst","modules/crowdstrike/schema.md","modules/crxcavator/config.md","modules/crxcavator/index.rst","modules/crxcavator/schema.md","modules/cve/config.md","modules/cve/index.rst","modules/cve/schema.md","modules/digitalocean/config.md","modules/digitalocean/index.rst","modules/digitalocean/schema.md","modules/duo/config.md","modules/duo/index.rst","modules/duo/schema.md","modules/gcp/config.md","modules/gcp/index.rst","modules/gcp/schema.md","modules/github/config.md","modules/github/index.rst","modules/github/schema.md","modules/gsuite/config.md","modules/gsuite/index.rst","modules/gsuite/schema.md","modules/index.rst","modules/jamf/index.rst","modules/jamf/schema.md","modules/kubernetes/config.md","modules/kubernetes/index.rst","modules/kubernetes/schema.md","modules/lastpass/config.md","modules/lastpass/index.rst","modules/lastpass/schema.md","modules/okta/config.md","modules/okta/index.rst","modules/okta/schema.md","modules/pagerduty/config.md","modules/pagerduty/index.rst","modules/pagerduty/schema.md","modules/semgrep/config.md","modules/semgrep/index.rst","modules/semgrep/schema.md","ops.md","usage/drift-detect.md","usage/index.rst","usage/samplequeries.md","usage/schema.md","usage/tutorial.md"],objects:{},objnames:{},objtypes:{},terms:{"0":[4,13,16,19,22,25,37,40,41,58,62,63,66,67],"00":[19,43,66,67],"01":[19,23,43,66],"04":[19,43,66],"05":67,"05t17":[43,66],"06":19,"0652c2b6dede589e805156925353bffc72da6c2b":5,"06t18":19,"07":19,"096":[43,66],"1":[1,4,5,10,13,22,25,35,37,40,41,62,63,66,67],"10":[10,19,22,41,63,67],"100":[4,5,37,52,66],"1000":4,"106":19,"11":[1,8],"123":67,"1234":[37,66],"12345":[37,66],"127":62,"128":[13,19,66],"1569022981":1,"16":23,"160":[13,66],"16384":19,"1652400141863":67,"168":19,"1688605272":67,"17":10,"17763":19,"1809":19,"192":19,"19t15":19,"2":[1,4,5,10,13,19,35,40,43,63,66],"200":65,"2010":[43,66],"2012":10,"2019":[6,7],"2020":23,"2021":19,"2022":[19,67],"2023":19,"215":19,"22":67,"2300":19,"23z":19,"25":19,"250":63,"251":63,"252":63,"253":63,"254":63,"255":[13,63,66],"2fa":34,"3":[4,5,8,40,63,65,66],"30":[22,43,66],"3339":[37,66],"3406":19,"4":[1,5,8,40,43,63,66],"4217":[13,66],"5":[5,8,53,63],"50":19,"52":[19,67],"5218":19,"53":[13,66],"54":19,"55":19,"6":[37,66],"60":22,"61":62,"65535":[37,66],"7":[19,34],"7281227":41,"7474":67,"758":[9,66],"7687":[1,3,5,8,67],"8":[8,41],"8125":62,"8601":[13,43,66],"8d60311a10156cd8aa16de7e1fe3e109cc3eca0f":5,"90":22,"987654":[37,66],"\u2139":[1,5,64],"boolean":[13,19,31,66],"byte":[13,16,66],"case":[5,13,58,63,66],"catch":5,"class":[5,13,34,37,66],"const":67,"default":[1,3,4,8,10,12,13,16,35,37,40,58,62,66],"do":[4,5,10,13,35,64,66],"export":[1,3,8,41],"final":[4,5,8,63],"float":[22,31,66],"function":[1,4,5,11,13,22,37,66],"import":[1,2,13,25,38,40,41,58,63,66],"int":5,"long":[1,8,58,66],"new":[2,10,13,29,31,41,63,66,67],"null":[4,5,13,34,52,58,66],"public":[4,13,16,37,38,40,66,67],"return":[1,4,5,13,34,58,63,65,66,67],"short":[5,13,58,61,66],"super":[43,66],"switch":67,"throw":65,"true":[4,5,13,16,31,34,37,40,43,58,63,65,66,67],"try":[1,63],"var":[3,14,17,20,23,29,32,38,41,50,53,56,59],"while":[1,13,37,66],A:[5,13,16,19,28,31,34,37,40,43,58,61,62,64,66,67],AND:4,AS:[5,65,67],And:[5,67],As:[4,5,12,13,35,43,63,66],At:62,BY:65,But:4,By:[1,5],For:[1,5,8,9,10,13,37,38,43,66,67],IN:4,IS:[4,5],If:[1,4,5,8,12,13,20,26,31,34,35,37,38,40,43,53,58,65,66,67],In:[4,5,10,13,35,37,58,63,66,67],Is:[34,43,66],It:[5,6,7,10,12,13,37,63,66],Its:[9,66],NOT:[4,5,37,66],No:[41,58,66],Not:[13,34,66],ON:5,ONE:34,On:[3,5,10,13,19,34,66],One:[4,8,13,22,34,66],Or:8,The:[1,2,8,9,10,11,12,13,15,16,18,19,21,22,24,25,27,28,30,31,33,34,36,37,38,39,40,42,43,46,48,49,51,53,54,55,57,58,60,61,63,66,67],Then:67,There:[4,5,10],These:[5,13,40,43,66,67],To:[1,4,5,13,43,62,63,66,67],WITH:[4,5,13,66],With:[5,65],_:[4,5,9,13,41,66],__comment:4,__comment__:4,__future__:41,__main__:1,__name__:1,_blank:67,_integr:[58,66],_layer:[58,66],_of:[58,66],_process_access_polici:[13,66,67],_rule:[58,66],_sync_one_account:1,_vendor:[58,66],_with:[58,66],ab:19,abcd:19,abil:[58,66],abl:[1,4,5,35,67],about:[5,6,7,9,13,34,43,58,65,66,67],abov:[1,4,5,13,37,38,66,67],absract:12,accept:[5,13,41,43,66],accepter_cidr:[13,66],accepter_region:[13,66],accepter_vpc:[13,66],access:[2,5,10,11,12,13,16,29,34,35,37,40,41,47,52,53,58,63,64,66],accessconfig:[37,66],accesskeyid:[13,66],accessti:[16,66],accesstierchangetim:[16,66],accesstierstatu:[16,66],accomplish:5,accord:[13,66],accordingli:62,account:[5,8,9,13,16,22,29,30,31,35,37,41,43,50,52,55,58,63,64,66],account_id:[13,31,66],accountaccesskei:64,accountid:[5,10,53],accountname1:10,accountname2:10,accountoffertyp:[16,66],accout:52,acknowledg:[58,66],acknowledgement_timeout:[58,66],acl:[11,13,16,66],acp:[13,66],across:[1,5,13,16,37,40,64,66],act:[13,66],action:[4,10,13,16,31,40,66],actionrequir:[16,66],activ:[13,22,31,34,55,66],activation_id:[13,66],activedirectorypath:19,actively_us:22,actual:[1,4,5,9,25,37,66,67],ad:[4,5,13,14,16,31,63,66,67],add:[1,4,5,10,23,37,63,66,67],add_stag:1,addit:[1,2,13,25,37,66],address:[13,16,22,25,28,31,34,37,41,43,58,66,67],adjust:[13,62,66,67],admin:[32,34,40,41,43,52,66],admin_cr:[43,66],admininistr:[43,66],administ:[16,53,66],administered_bi:[16,66],administr:[16,34,43,55,66],administratortyp:[16,66],advanc:[58,66],advertis:[13,37,66],aes256:67,affect:[13,66],afford:5,after:[1,3,4,13,34,58,66],ag:[13,66],again:[4,13,66],against:[1,13,16,66],agent:[13,19,22,34,59,66],agent_connect:[13,66],agent_update_statu:[13,66],agent_vers:[13,22,66],agenttyp:19,agentvers:19,aggreg:67,agreed_to_term:[43,66],agreement:[43,66],ahead:[37,66],aid:22,aim:[6,7],alert:[16,58,66],alert_cr:[58,66],alert_grouping_parameters_typ:[58,66],algorithm:[13,66],alia:[13,16,34,43,66],alias1:34,alias2:34,alias3:34,alias4:34,alias:[11,13,16,34,63,66],aliasnam:[13,66],all:[1,2,4,6,7,8,10,12,13,14,16,31,34,35,37,38,40,43,61,63,64,66],alloc:[13,66],allocated_storag:[13,66],allocatedstorag:[13,66],allocation_id:[13,66],allow:[4,5,10,12,13,16,37,41,63,66,67],allow_dns_resolution_from_remote_vpc:[13,66],allow_egress_from_local_classic_link_to_remote_vpc:[13,66],allow_egress_from_local_vpc_to_remote_classic_link:[13,66],allowed_bi:[37,66],allowedhead:[16,66],allowedmethod:[16,66],allowedorigin:[16,66],alreadi:[1,4,5,67],also:[3,4,5,10,12,13,34,37,62,66,67],although:4,alwai:[13,34,37,63,66],amazon:[8,13,66],amazonaw:63,amazoncustomerbyemail:[13,66],amazonecr:[13,66],amazoninspector2readonlyaccess:10,ami:[11,13,66],among:[13,37,66],amount:[13,16,66],an:[1,2,3,6,7,8,10,12,13,14,16,17,20,23,29,31,34,35,37,38,40,41,43,50,52,53,55,56,58,59,61,62,63,65,66,67],analysi:[2,52,61,63,64],analyt:[16,66],analyticalttl:[16,66],analyz:[10,14,17,20,23,26,29,32,35,38,47,50,53,56,67],android:34,angri:4,ani:[1,2,5,12,13,16,34,37,49,62,63,64,66],anonym:[13,64,66],anonymous_access:[13,65,66,67],anonymous_act:[13,66,67],anoth:[5,13,43,63,66],answer:[41,67],anyon:[4,6,7],anyth:10,api:[5,6,7,10,11,13,20,23,29,32,34,38,40,41,43,50,53,56,58,59,61,66,67],api_describeimagescanfind:[13,66],api_imageidentifi:[13,66],apigatewayclientcertif:64,apigatewayresourc:64,apigatewayrestapi:64,apigatewaystag:64,apirefer:[13,66],app:[13,34,41,55,59,66],app_product_name_vers:22,apparmor:[13,66],appear:[13,66],append:67,appid:14,appl:34,appli:[4,13,16,35,37,40,43,66,67],applic:[13,25,34,35,43,52,54,55,64,66,67],applied_on:[13,66],applies_to:[13,66],appropri:[5,23,43,66],approv:[16,66],approxim:[16,66],ar:[0,1,4,5,8,10,12,13,16,20,26,35,37,38,40,43,52,53,55,62,63,64,66],arbitrari:[37,66],architectur:[13,66],archiv:[13,31,37,40,66],area:[6,7],arg:[2,17,32,59,67],argument:[2,8,23],argv:1,arm:[8,16,66],arn:[5,10,13,66,67],around:[5,8],arrai:[13,31,55,63,66],arriv:[13,66],articl:[13,66,67],ask:[5,63,67],asset:[4,6,7,8,10,14,19,35,37,66,67],assign:[13,28,35,37,43,49,55,66],assignipv6addressoncr:[13,66],associ:[5,13,16,22,34,37,43,58,62,66],associate_public_ip_address:[13,66],associated_with:[13,16,66],association_id:[13,66],association_statu:[13,66],assum:[5,10,11,13,66],assumerol:10,assumpt:[6,7,13,66],asynchron:[13,66],attach:[10,13,14,16,31,34,35,37,52,58,66,67],attached_to:[13,16,66],attached_to_ec2_inst:[13,66],attachments_statu:[13,66],attack:[6,7,28],attack_complex:28,attack_vector:28,attempt:[5,47],attribut:[4,5,34,67],audit:[13,16,66],audit_log:[13,66],augment:[13,66,67],aurora:[13,66],auth:[1,14,38,41],auth_en:[1,8],auth_json:[38,41],auth_provider_x509_cert_url:41,auth_uri:41,auth_url:41,authent:[8,13,14,16,34,35,37,40,41,55,66,67],authn:34,author:[5,41],authorit:[37,66],authorization_url:41,auto:[13,34,37,66],auto_create_subnetwork:[37,66],auto_enable_control:[13,66],auto_minor_version_upgrad:[13,66],auto_resolve_timeout:[58,66],auto_termin:[13,66],autom:[2,6,7,13,66],automat:[5,13,16,47,53,58,63,66],autosc:11,autoscaleset:[16,66],autoscaling_rol:[13,66],autoscalinggroup:[4,64],avail:[13,16,22,28,34,37,62,66,67],availability_impact:28,availability_zon:[13,66],availability_zone_id:[13,66],availabilityzon:[13,16,66],available_ip_address_count:[13,66],avatar:[58,66],avatar_url:[58,66],averageevaluationcycl:19,avoid:[62,67],aw:[1,3,4,5,8,22,37,53,63,64],awar:5,aws_access_kei:[13,66],aws_config_fil:[8,10],aws_ec2_asset_exposur:4,aws_id:5,aws_max_attempt:10,aws_profil:8,aws_retry_mod:10,aws_update_tag:5,awsaccount:[5,9,64,65,67],awscidrblock:64,awsconfigdeliverychannel:64,awsconfigrul:64,awsconfigurationrecord:64,awsdnsrecord:[64,67],awsdnszon:[64,67],awsgroup:64,awsinspectorfind:64,awsinspectorpackag:64,awsinternetgatewai:64,awsipv4cidrblock:64,awsipv6cidrblock:64,awslambda:64,awslambdaeventsourcemap:64,awslambdafunctionalia:64,awslambdalay:64,awspeeringconnect:64,awspolici:[12,64],awspolicystat:[12,64],awsprincip:[12,64],awsrol:[53,64],awssecretsmanag:[13,66],awstag:64,awstransitgatewai:64,awstransitgatewayattach:64,awsus:64,awsvpc:64,az:[13,14,66],azur:64,azure_client_id:14,azure_client_secret:14,azure_tenant_id:14,azurecdbprivateendpointconnect:64,azurecosmosdbaccount:64,azurecosmosdbaccountfailoverpolici:64,azurecosmosdbcassandrakeyspac:64,azurecosmosdbcassandrat:64,azurecosmosdbcorspolici:64,azurecosmosdbloc:64,azurecosmosdbmongodbcollect:64,azurecosmosdbmongodbdatabas:64,azurecosmosdbsqlcontain:64,azurecosmosdbsqldatabas:64,azurecosmosdbtableresourc:64,azurecosmosdbvirtualnetworkrul:64,azuredatabasethreatdetectionpolici:64,azuredatadisk:64,azuredisk:64,azureelasticpool:64,azurefailovergroup:64,azureprincip:64,azurerecoverabledatabas:64,azurereplicationlink:64,azurerestorabledroppeddatabas:64,azurerestorepoint:64,azureserveradadministr:64,azureserverdnsalia:64,azuresnapshot:64,azuresqldatabas:64,azuresqlserv:64,azurestorageaccount:64,azurestorageblobcontain:64,azurestorageblobservic:64,azurestoragefileservic:64,azurestoragefileshar:64,azurestoragequeu:64,azurestoragequeueservic:64,azurestoraget:64,azurestoragetableservic:64,azuresubscript:64,azureten:64,azuretransparentdataencrypt:64,b64encod:[38,41],back:[4,13,66,67],backend:[37,66],background:[9,66],backtrack:[13,66],backtrack_consumed_change_record:[13,66],backtrack_window:[13,66],backup:[13,16,66],backup_retention_period:[13,66],backupretentionperiod:[13,66],balanc:[11,13,49,64,66,67],bar:67,bartsimpson:19,base64:[38,41],base64encodedkei:3,base:[1,5,8,13,22,23,26,31,37,53,61,64,66],base_scor:[22,28],base_sever:28,baselin:63,bash:[3,14],basic:[4,5,11,13,16,37,66],basic_auth:[37,66],batch:[13,66],batchgetitem:12,batchsiz:[13,66],bear:8,becaus:[4,5,13,35,66,67],been:[5,13,31,34,37,43,66,67],befor:[2,13,16,34,58,61,66],began:[13,66],begin:[13,66],behalf:[13,66],behind:[6,7],being:[3,6,7,13,58,66],believ:5,belong:[13,16,31,34,37,66],below:[1,5,13,41,63,66],benefici:1,benefit:[5,6,7],besrelayselectionmethod:19,besrootserv:19,best:[2,13,66],better:[5,6,7],between:[4,5,6,7,12,13,22,34,66,67],beyond:[16,66],bi:65,bigfix:18,bigfix_password_env_var:17,bigfixroot:19,bill:[13,37,66],bind:3,bio:[19,22,58,66],biometr:34,bios_manufactur:22,bios_vers:22,bisectbatchonfunctionerror:[13,66],bit:[13,66],blackberri:34,blank:[13,34,66],blob:[5,16,66],block:[13,14,31,37,38,41,66],block_associ:[13,66],block_public_acl:[13,66,67],block_public_polici:67,block_stat:[13,66],blue:[6,7],bold:66,bolt:[1,3,8,67],bookmark:[63,67],bookmarklet:64,boot:[13,66],bootmod:[13,66],both:[5,8,12,37,58,66],boto3:65,botocor:1,bottom:67,bound:[5,13,16,66],branch:[39,40,66],breaker:[13,66],bridg:[13,66],broad:[6,7],browser:[16,34,66,67],bsidessf:[6,7],bubbl:5,bucket:[11,13,37,64,66],bucket_key_en:[13,66,67],build:[3,8,13,22,34,41,66,67],build_custom_sync:1,build_default_sync:4,build_ingestion_queri:5,built:[5,10,12,13,14,66],bunch:4,bypass:34,c4:63,c:[16,66],ca:[13,66],ca_certificate_identifi:[13,66],cach:[13,16,37,66],cacheclusteren:[13,66],cacheclusterstatu:[13,66],calcul:[12,13,66],call:[4,5,6,7,10,13,14,16,23,25,26,29,38,41,58,66],came:5,can:[1,3,4,5,6,7,8,10,12,13,16,20,22,26,31,34,35,37,38,40,43,47,49,50,53,55,56,58,61,62,63,64,66],can_queri:12,can_read:12,can_read_from:[16,66],can_write_from:[16,66],cannot:[13,37,43,66],canon:[40,66],canonic:[40,66],canonicalhostedzonenam:[13,66],canonicalhostedzonenameid:[13,66],canonicalus:[13,66],capabl:[16,34,66],capac:[13,66],capacity_provid:[13,66],capacity_provider_nam:[13,66],capacityrebal:[13,66],caption:67,car:66,card:67,carri:5,carrier:[13,66],carrier_ip:[13,66],cartographi:[0,2,3,10,12,13,14,17,20,23,26,29,32,35,37,38,40,41,47,50,53,56,59,63,64],cartographyassumerolepolici:10,cartographynodeproperti:5,cartographynodeschema:5,cartographyrelproperti:5,cartographyrelschema:5,cassandra:[16,66],categor:[25,66],caus:[5,13,66],cd:[1,19],center:[16,43,66],cert:41,certain:[1,63],certif:[11,13,34,66],cfg:[40,66],chain:61,chang:[1,3,5,13,20,22,25,26,43,52,55,58,63,66,67],change_password_at_next_login:[43,66],changem:41,channel:[11,13,66],charact:[13,43,66],character_set_nam:[13,66],check:[13,34,61,66],child:[43,66],choic:[5,29,38,41],chrome:[23,24,25,64,66],chromeextens:[64,65],ci:[59,61],cid:[22,50],cidr:[13,37,66],cidr_block:[13,66],cidrblock:[13,66],cipher:[13,66],circuit:[13,66],clarif:5,clarifi:5,classic:[13,66],classiclink:[13,66],classif:[13,66],claus:[4,67],clean:2,cleanup:2,cleanup_job:5,cli:[1,5,8,13,14,17,20,26,29,32,38,41,47,50,53,56,59,66],click:[29,67],client:[5,13,14,20,41,58,66],client_id:41,client_secret:41,clientcertificateid:[13,66],clone:[1,13,66],clone_group_id:[13,66],close:22,closed_timestamp:22,cloud:[13,34,35,37,41,61,66],cloudtrail:[13,66],cloudwatch:[13,66],cluster:[5,11,13,37,47,48,49,66],cluster_arn:[13,66],cluster_create_tim:[13,66],cluster_data:5,cluster_identifi:[13,66],cluster_ipv4cidr:[37,66],cluster_revision_numb:[13,66],cluster_statu:[13,66],clusterarn:5,clusterip:[49,66],cmd:67,cmk:[13,66],cn:19,cname:[13,66],coalesc:4,code:[1,4,5,8,13,14,38,41,61,66,67],codebas:1,codes:[13,66],codesha256:[13,66],collabor:[40,66],collat:[16,66],collect:[16,34,66],collectionnam:[16,66],color:[58,66,67],column:61,com:[1,4,5,9,13,19,35,37,38,41,43,63,66,67],combin:[12,13,25,31,66],come:[13,46,66],comma:[13,66],command:[2,3,8,12,13,62,63,66],commandlin:[2,23,40,66],comment:[1,13,66],commit:[1,13,66],common:[13,66],common_job_paramet:5,commun:[1,8,13,37,66],compani:[37,40,66],compar:[13,63,66],compat:[13,66],complet:[1,5,13,16,43,66],complex:[4,28],complianceresourceid:[13,66],compon:[25,66],compos:[1,2,61],composit:61,compress:[13,66],comput:[5,13,16,18,19,30,37,46,63,66],computer_nam:[13,16,66],computer_sid:34,computernam:19,computertyp:19,conain:34,concaten:[13,25,66],concept:[2,4],concret:[13,66],concurr:[13,66],condit:[13,37,61,66],conf:[1,8],confidenti:28,confidentiality_impact:28,config:[3,5,8,10,11,13,37,38,66],config_snapshot_delivery_properties_delivery_frequ:[13,66],configur:[2,8,11,13,16,22,34,37,62,66],configured_with:[16,66],confirm:61,conflict:[16,66],conflictresolutionpolicymod:[16,66],conjunct:[37,66],connect:[4,5,13,16,22,37,61,64,66],connectivity_at:[13,66],connector:[16,66],connectoroff:[16,66],connecturl:67,consent:41,consid:[13,62,66],consist:[5,12,13,16,66],consol:[13,41,43,66,67],consolid:[6,7],constant:[58,66],constraint:[13,66],constructor:5,contact:[34,43,66],contain:[5,8,10,12,13,16,22,31,34,35,37,40,48,49,55,61,62,63,65,66],container:[13,66],container_instance_arn:[13,66],containerinsight:[13,66],content:[13,38,41,63,66,67],content_based_dedupl:[13,66],context:[49,66],continu:[5,13,63,66,67],contoso:67,contrast:[13,66],control:[13,35,53,66],convei:[9,66],convent:5,cooldown:[13,66],coordin:[13,66],copi:[5,13,66],cor:[16,66],core:[5,6,7,13,34,66],coretto:8,corp:19,correct:3,correctli:10,cosmo:[16,66],cosmosdb:[15,16,66],could:[13,66],count:[4,13,25,43,65,66,67],counter:[13,66],coupl:[63,67],cover:[4,10,37,66],coverag:[11,15,18,21,24,27,30,33,36,39,42,48,51,54,57,60],cpu:[13,19,22,34,66],cpu_id:34,cpu_signatur:22,creat:[1,4,5,10,12,13,14,16,19,22,29,31,34,35,37,38,40,41,43,52,53,55,58,59,62,63,66],create_bi:[55,66],create_index:1,create_tim:[13,66],createactiv:[13,66],created:[13,66],created_at:[13,31,37,49,58,66],created_bi:[13,66],created_d:[13,66],created_from:[13,66],created_tim:[13,66],created_timestamp:[13,22,66],createdat:[40,66],createdbinstancereadreplica:[13,66],createdbsnapshot:[13,66],createdd:[13,66],createdtim:[13,66],createopt:[16,66],createtim:[13,66],creation:[5,13,16,34,37,49,55,66],creation_tim:[43,66],creationd:[13,16,66,67],creationtim:[16,66],cred:[32,41],credenti:[1,2,3,10,23,29,34,35,38,41,52],credential_nam:34,credential_sourc:10,critic:[13,22,61,65,66],criticalupd:[13,66],cronjob:62,cross:[13,66],crowdstrike_first_seen:22,crowdstrike_last_seen:22,crxcavat:[25,64,66],crxcavator_last_upd:[25,66],crxcavtor:64,csp:[25,66],cumbersom:63,currenc:[13,66],currencycod:[13,66],current:[0,4,5,13,19,22,25,31,37,58,66],current_aws_account_id:5,current_master_vers:[37,66],custom:[2,3,4,13,22,34,37,41,43,64,66],custom_ami_id:[13,66],custom_sync:1,customer_id:[43,66],customer_owned_ip:[13,66],customer_owned_ipv4_pool:[13,66],customerid:[43,66],cve:[21,61,64],cve_id:[13,22,61,66],cve_schema:61,cvssv3:28,cwe:28,cypher:[2,63,67],d:[1,3,5,53,67],daemon:[13,66],dai:[13,16,58,63,66],daili:[13,66],data:[4,5,8,10,13,16,25,26,27,28,29,37,38,40,41,62,64,65,66],databas:[4,6,7,8,13,16,66],database_encrypt:[37,66],database_nam:[13,66],databaseid:[16,66],databasenam:[16,66],dataclass:5,dataencryptionkeyid:[13,66],date:[4,13,16,19,22,25,28,29,31,34,37,43,55,58,61,66],date_ad:34,datetim:[13,19,66],db:[13,16,66],db_cluster_identifi:[13,66],db_cluster_resource_id:[13,66],db_instance_class:[13,66],db_instance_identifi:[13,66],db_instance_port:[13,66],db_name:[13,66],db_parameter_group:[13,66],db_snapshot_identifi:[13,66],dbcluster:[13,66],dbi_resource_id:[13,66],dbinstanc:[13,66],dbm:[1,8],dbname:[13,66],dbserver1:[13,66],dbsnapshot:[13,66],dbsubnetgroup:64,dc:19,ddthh:[43,66],dead:[11,13,66],debug:5,decid:5,decis:5,declar:4,decor:[66,67],decrypt:[13,66],dedic:[13,66],dedupl:[13,66],deduplication_scop:[13,66],def:[1,5],default_encrypt:[13,66,67],default_for_az:[13,66],default_kms_key_nam:[37,66],default_rol:[58,66],default_vers:[13,66],default_version_numb:[13,66],defaultbranch:[40,66],defaultbranchid:[40,66],defaultconsistencylevel:[16,66],defaultcooldown:[13,66],defaultencryptionscop:[16,66],defaultinstancenam:[13,66],defaultttl:[16,66],defin:[2,3,8,12,13,27,37,53,64,66],defined_in:[37,66],definit:[5,13,66],delai:[13,66],delay_second:[13,66],deleg:[37,41,43,66],delet:[1,5,13,16,34,37,38,49,62,66],deleteautoscalinggroup:[13,66],deleted_at:[49,66],deleted_d:[13,66],deletedtim:[16,66],deleteontermin:[13,66],deletesecret:[13,66],deletion_protect:[13,66],deletiond:[16,66],deliv:[13,66],deliveri:[11,13,66],deni:[13,37,66],denied_bi:[37,66],denot:[4,22,40,66],dep:65,depend:[3,6,7,13,58,61,64],dependency_fil:61,dependency_file_url:61,dependency_fix:61,deploi:[13,31,66],deploy:[13,60,61,66],deployment_config_circuit_breaker_en:[13,66],deployment_config_circuit_breaker_rollback:[13,66],deployment_config_maximum_perc:[13,66],deployment_config_minimum_healthy_perc:[13,66],deploymentid:[13,66],deprec:34,depth:67,deregist:[13,66],deregistered_at:[13,66],deriv:[5,13,37,49,66],desc:34,describ:[4,5,13,31,37,40,63,66,67],describe_image_scan_find:[13,66],describeregion:10,describesnapshot:[13,66],descript:[9,13,16,19,22,25,28,31,34,37,40,43,46,49,52,55,58,61,66],description_en:28,design:5,desir:[13,62,66],desired_count:[13,66],desired_statu:[13,66],desiredcapac:[13,66],desktop:19,destin:[13,37,66],detach:[5,13,66],detail:[1,8,10,11,13,35,43,62,66],detect:[16,34,47,64,66],detectdrift:63,determin:[4,13,37,43,58,62,66,67],dev:[13,66],devdev:[13,66],develop:[2,5,25,41,43,66],devic:[13,22,34,66],device_id:34,device_identifi:34,device_identifier_typ:34,device_nam:34,device_udid:34,device_usernam:34,device_username_typ:34,devicetyp:19,diagnos:[13,66],dial:34,dict:5,dictlist:5,did:[9,66],diff:64,differ:[1,5,10,12,13,40,66],differenti:[6,7],difficult:5,digest:[13,62,66],digitalocean:[29,64],direct:[4,5,13,37,43,63,66],direct_members_count:[43,66],direction:5,directli:[1,5,13,64,66],directmemberscount:[43,66],directori:[3,4,13,22,34,41,43,63,66],directory_v1:41,disabl:[1,3,13,16,34,37,40,52,58,66],disable_api_termin:[13,66],disable_network:[13,66],disabledalert:[16,66],disableexecuteapiendpoint:[13,66],disablekeybasedmetadatawriteaccess:[16,66],disallow:[37,66],discard:[13,66],disconnect:[5,16,66],discov:[5,6,7,13,16,22,25,28,31,34,37,43,49,55,58,61,66],discoveri:41,discuss:5,disk:[13,16,66],disk_encryption_statu:34,disksizegb:[16,66],displai:[13,43,66],displaynam:[13,37,66],distinct:[65,67],distribut:[13,66],distro:[13,66],dn:[13,16,36,37,55,66,67],dns_name:[37,66],dns_points_to:[13,66],dns_search_domain:[13,66],dns_server:[13,66],dnsname:[13,19,65,66],dnsrecord:[16,64,67],dnszone:[64,67],doaccount:64,doc:[3,4,5,8,13,25,29,35,37,62,66,67],docker:[1,2,8,13,49,66],docker_security_opt:[13,66],document:[3,4,5,13,20,37,38,41,53,56,62,66,67],documentendpoint:[16,66],dodroplet:64,doe:[5,8,10,25,34,37,58,66],doesn:[1,4,13,37,43,66],domain:[11,13,16,22,34,37,41,43,55,66,67],domain_sid:34,domainid:[13,66],don:[1,4,5,13,66,67],doproject:64,down:[13,37,47,66],download:[8,25,41,66],drain:[13,66],draw:5,drift:64,drift_detection_directori:63,drive:34,drop:[13,16,66],droplet:[30,31,66],droplet_limit:[31,66],due:[16,66],dumb:5,dump:[38,41],duplic:[5,43,66],duplicate_keyfingerprint:[13,66],durat:[13,16,58,66],dure:[13,62,66],dynamodb:[11,12],dynamodbt:[12,64],e6ada9a1a741b83a34c1c3207515a1863debeeb9:5,e:[1,3,5,10,13,14,16,25,37,40,49,55,61,62,63,65,66],each:[4,5,8,10,12,13,31,34,37,38,47,58,62,63,66],earlier:67,earliest:[13,16,66],earliest_backtrack_tim:[13,66],earliest_restorable_tim:[13,66],easi:65,easier:[1,5,62,63],easiest:4,easili:4,easily_access:22,east:10,eb:[11,13,66],ebs_optim:[13,66],ebsoptim:[13,66],ebssnapshot:64,ebsvolum:64,ec2:[2,5,10,11,13,37,64,66],ec2_instance_id:[13,66],ec2config:[13,66],ec2imag:64,ec2inst:[4,63,64,65,67],ec2instancemetadata:10,ec2keypair:64,ec2privateip:64,ec2reserv:64,ec2reservedinst:64,ec2securitygroup:[4,64,67],ec2subnet:64,ec:[13,66],ecc_kms_key_id:[13,66],ecc_log:[13,66],ecc_log_configuration_cloud_watch_encryption_en:[13,66],ecc_log_configuration_cloud_watch_log_group_nam:[13,66],ecc_log_configuration_s3_bucket_nam:[13,66],ecc_log_configuration_s3_encryption_en:[13,66],ecc_log_configuration_s3_key_prefix:[13,66],ecosystem:61,ecr:[13,66],ecrimag:64,ecrrepositori:64,ecrrepositoryimag:64,ecrscanfind:64,ecsclust:64,ecscontain:64,ecscontainerdefinit:64,ecscontainerinst:64,ecsservic:64,ecstask:64,ecstaskdefinit:64,edg:[13,40,65,66],edit:[1,8,16,43,66,67],efa:[13,66],effect:[10,13,34,37,58,66],egress:[37,66],eight:34,either:[5,13,34,35,37,40,66,67],ek:[13,66],eksclust:64,elast:[11,13,16,66,67],elastic_ip_address:[13,66],elasticipaddress:64,elasticpoolid:[16,66],elasticsearch:[11,13,66,67],elasticsearch_cluster_config_dedicatedmastercount:[13,66],elasticsearch_cluster_config_dedicatedmasteren:[13,66],elasticsearch_cluster_config_dedicatedmastertyp:[13,66],elasticsearch_cluster_config_instancetyp:[13,66],elasticsearch_cluster_config_zoneawarenessen:[13,66],elasticsearch_vers:[13,66],elasticsearchdomainconfig:[13,66],elb:[13,63,64,66],elb_listen:[13,66],elblisten:[64,65],elbv2:[13,64,66,67],elbv2_listen:[13,66],elbv2listen:[64,65],element:[13,66],elev:[13,66],els:[8,41],email:[16,25,28,34,38,40,41,43,52,55,58,65,66],emailaddress:[16,66],emailadmin:[16,66],empti:[13,16,34,37,63,66],emr:[5,13,66],emrclust:[5,64],emrclusternodeproperti:5,emrclusterschema:5,emrclustertoawsaccount:5,emrclustertoawsaccountrelproperti:5,ena:[13,66],enabl:[5,6,7,13,16,19,26,31,34,37,40,41,43,53,58,62,65,66,67],enable_ecs_managed_tag:[13,66],enable_execute_command:[13,66],enableanalyticalstorag:[16,66],enableautomaticfailov:[16,66],enablecassandraconnector:[16,66],enabledprotocol:[16,66],enablefreeti:[16,66],enasupport:[13,66],encapsul:61,encod:[38,41],encourag:5,encrypt:[13,16,34,37,64,66],encryption_algorithm:[13,66,67],encryption_at_rest_options_en:[13,66],encryption_key_id:[13,66],end:[13,34,58,61,62,63,66],end_col:61,end_lin:61,endpoint:[16,33,34,37,38,49,64],endpoint_address:[13,66],endpoint_hostedzoneid:[13,66],endpoint_port:[13,66],endpoint_public_access:[13,66],enforc:[43,66],engin:[13,36,37,66],engine_mod:[13,66],engine_vers:[13,66],english:[2,28],enhanc:[4,13,66],enhanced_monitoring_resource_arn:[13,66],enjoi:4,enough:[4,6,7],enrich:64,enrol:[19,43,66],enrollmentdatetim:19,ensur:[1,4,5,10,14,35,62],enter:[13,41,66],enterpris:38,entir:[13,66],entiti:[37,58,66],entri:[4,13,66],entry_point:[13,66],entrypoint:3,env:[3,8,14,17,20,23,29,32,38,41,50,53,56,59],environ:[1,3,5,8,10,13,14,17,20,23,29,31,32,35,38,41,50,53,56,59,62,66],environment:41,ephemer:[13,66],ephemeral_storage_size_in_gib:[13,66],epkei:34,epoch:5,equival:5,error:[2,10,13,66],es:[13,34,66],escal:[57,58,66],escalation_polici:[58,66],esdomain:[64,67],essenti:[4,13,66],estim:[13,66],etag:[43,66],etc:[3,10],etcd:[37,66],evalu:[13,66],even:63,event:[13,16,66],eventsourcearn:[13,66],ever:[13,66],everi:[1,5,13,66],everyth:[40,66,67],evict:[16,66],eviction_polici:[16,66],evid:65,exact:[40,66],exampl:[1,2,5,8,9,12,13,19,37,38,43,64,65,66,67],exce:[13,66],exceed:[13,66],except:[4,5,13,37,66],exclud:[43,66],execut:[4,13,41,62,63,66,67],execution_role_arn:[13,66],execution_stopped_at:[13,66],exist:[1,5,9,16,34,66],exit:[1,13,66],exit_cod:[13,66],expect:[1,5],expir:[13,22,66],expirationd:[13,66],explain:[5,13,66],explan:5,explicitli:[4,5,8,13,66],exploit:[22,28],exploitability_scor:[22,28],explor:[6,7,13,66],expos:[4,6,7,13,16,37,64,66],exposed_internet:[4,13,37,63,65,66,67],exposed_internet_typ:[4,37,63,66],exposedhead:[16,66],exposur:[4,6,7,13,63,66],express:[13,16,66],ext:65,extend:[2,43,64,66],extens:[6,7,23,24,25,34,64,66],extension_id:[25,66],extern:[13,22,25,31,34,37,66],external_id:[55,66],external_ip:22,extra_index:5,extras_requir:[40,66],eyjvcmdhbml6yxrpb24ioibbeyj0b2tlbii6icjmywtldg9rzw4ilcaidxjsijogimh0dhbzoi8vyxbplmdpdgh1yi5jb20vz3jhcghxbcisicjuyw1lijogimzha2vvcmcifswgeyj0b2tlbii6icjzdglsbgzha2uilcaidxjsijogimh0dhbzoi8vz2l0ahvilmv4yw1wbguuy29tl2fwas9ncmfwahfsiiwgim5hbwuioiaizmfrzw9yzyj9xx0:38,f:[5,41],fabric:[13,66],face:[13,66,67],fact:4,factor:[34,40,54,55,66],factor_typ:[55,66],fail:[5,13,66],failov:[13,16,66],failovergroupid:[16,66],failoverprior:[16,66],fake:[5,67],fakeorg:38,faketoken:38,falcon:[20,22],fals:[1,13,34,37,65,66,67],famili:[13,66],family_nam:[43,66],faq:[43,66],far:8,fargat:[13,66],fashion:[6,7],fast:[2,13,66],faster:[5,66,67],fastrestor:[13,66],fc:41,fe80:19,featur:[1,6,7,31,43,55,58,66],fetch:10,fetch_token:41,few:4,field:[2,4,9,13,14,16,19,22,25,28,31,34,37,38,40,43,46,49,52,55,58,61,62,63,66,67],fifo:[13,66],fifo_queu:[13,66],fifo_throughput_limit:[13,66],file:[1,3,4,5,8,10,13,16,34,35,40,41,47,52,61,64,66],filenam:64,fill:[63,67],filter:[65,67],find:[1,4,5,13,50,59,60,61,62,66,67],fingerprint:[13,34,66],finish:1,firewal:[16,34,37,66],firewall_ingress:[37,66],firewall_partial_uri:[37,66],firewall_statu:34,first:[2,13,19,22,25,28,31,34,37,38,40,41,43,49,52,53,55,58,61,63,66,67],first_nam:[55,66],firstnam:34,firstseen:[2,13,16,19,22,25,28,31,34,37,40,43,49,52,55,58,61,66,67],fix:[13,16,61,66],fixedpric:[13,66],flag:[13,16,26,52,62,66,67],flat:[31,66],fleet:[13,66],flexibl:[6,7],floating_ip_limit:[31,66],flow:41,focus:[4,6,7],folder:[4,13,35,37,63,66],folderview:35,follow:[1,4,5,8,10,11,14,15,17,18,20,21,23,24,26,27,29,30,32,33,35,36,37,38,39,41,42,47,48,50,51,53,54,56,57,59,60,63,66,67],forc:[43,66],forcefulli:[13,66],foreign:[13,55,66],form:[28,34,37,40,43,52,58,66],format:[3,13,16,27,31,37,41,43,63,66],former:5,formfil:52,forward:[5,13,37,43,66],found:[1,4,13,22,37,66],found_in:61,fqdn:34,fr:41,free:[16,34,66],frequenc:[13,66],fresh:62,friendli:[13,16,37,46,66],from:[2,4,5,6,7,8,10,13,16,23,29,34,35,37,38,40,41,49,50,53,56,58,61,63,66,67],from_client_secrets_fil:41,from_node_schema:5,from_port:[13,66],fromport:[13,37,66],frontend:[6,7],frozen:5,fruit:4,fulfil:[13,66],full:[5,8,13,16,23,25,34,37,40,43,52,66,67],full_control:[13,66],fulli:[6,7,13,16,37,66],fullnam:[40,41,66],functionvers:[13,66],futur:[25,34,37,66],fw:[37,66],g:[5,10,13,14,25,37,40,41,43,49,55,61,62,65,66,67],gatewai:[11,13,37,66],gateway_address:[37,66],gather:[13,66],gb:[16,66],gce:35,gcp:[5,64],gcpbucket:64,gcpbucketlabel:64,gcpbucketlabel_:[37,66],gcpdnszone:64,gcpfirewal:64,gcpfolder:64,gcpforwardingrul:64,gcpinstanc:64,gcpiprul:64,gcpnetworkinterfac:64,gcpnetworktag:[5,64],gcpnicaccessconfig:64,gcporgan:64,gcpproject:[5,64],gcprecordset:64,gcpsubnet:64,gcpvpc:[5,64],gener:[4,5,6,7,13,14,20,23,29,34,37,38,53,56,58,63,66],genericnod:66,geo:[16,66],get:[1,2,4,8,16,35,37,41,43,50,63,66,67],getitem:12,getobject:12,getrecord:12,ghcr:62,gib:[13,66],gibibyt:[13,66],gigabyt:[16,66],git:[1,3,13,40,66],github:[1,3,5,9,13,29,52,62,64,67],github_kei:3,githubbranch:64,githuborgan:64,githubrepositori:[61,64,65],githubteam:64,githubus:64,giturl:[40,66],give:[5,13,63,66],given:[5,13,31,34,37,64,66],given_nam:[43,66],gke:[37,66],gkeclust:64,global:[5,11,13,34,37,43,66],gmail:[43,66],go:[8,10,12,41,63,67],goal:2,gold:19,good:[6,7,13,22,66],googl:[34,35,37,41,43,66],google_application_credenti:35,google_auth_oauthlib:41,googleapi:[37,41,66],googleapicli:41,googleusercont:41,gotten:5,gpu:[13,66],gpu_id:[13,66],grant:[10,11,12,13,64,66],grante:[13,66],granteeid:[13,66],granteeprincip:[13,66],granular:1,graph:[1,4,5,6,7,8,12,29,38,67],graphjob:5,graphql:38,greengrass:[13,66],group:[4,5,10,11,13,16,22,33,34,37,41,42,43,46,53,54,55,58,66,67],group_id:[9,13,34,66],group_typ:[9,66],groupid:[9,13,66],groupkei:[43,66],grouptyp:[9,66],gsuit:[24,52,64],gsuite_delegated_admin:41,gsuite_google_application_credenti:41,gsuitegroup:64,gsuiteus:[64,65],guarante:[4,13,66],guid:[2,5,8,10,41],guidelin:5,ha:[4,5,8,10,11,12,13,14,15,16,18,21,22,24,25,27,30,31,33,34,35,36,37,39,40,42,43,48,49,51,54,55,57,58,60,62,63,65,66,67],hand:5,handhold:67,handl:2,handler:[13,66],handoff:[58,66],happen:[9,66],hard:[13,16,34,66],hardwar:[13,34,66],hardware_seri:34,hardware_uuid:34,has_2fa_en:[40,66],has_certif:[13,66],has_contain:[13,49,66],has_container_definit:[13,66],has_container_inst:[13,66],has_cv:22,has_deadletter_queu:[13,66],has_duo_endpoint:34,has_duo_phon:34,has_duo_token:34,has_duo_web_authn_credenti:34,has_inform:[13,66],has_launch_config:[13,66],has_launch_templ:[13,66],has_namespac:[49,66],has_patch:[13,66],has_pod:[49,66],has_record:[37,66],has_secret:[49,66],has_servic:[13,49,66],has_target_service_account:[37,66],has_task:[13,66],has_task_definit:[13,66],has_vulner:22,hash:[13,66],hasimmutabilitypolici:[16,66],haslegalhold:[16,66],hasn:[13,66],have:[1,4,5,8,10,12,13,25,31,34,37,40,49,55,58,61,62,63,64,66],he:[13,66],header:[16,66,67],health:[13,34,66],health_app_client_vers:34,health_check_grace_period_second:[13,66],health_data_last_collect:34,health_statu:[13,66],healthcheckgraceperiod:[13,66],healthchecktyp:[13,66],healthi:[13,66],help:[4,6,7,8,10,13,37,43,62,63,66],helper:41,here:[0,1,4,5,8,9,13,34,62,63,66,67],hibern:[13,66],hibernationopt:[13,66],hidden:[6,7],hierarchi:[13,35,37,66],hierarchicalnamespac:[16,66],high:[13,22,49,61,65,66],higher:8,highest:[13,37,66],highli:65,histori:[3,13,66],hl:41,hnsenabl:[16,66],hold:[16,23,66],homepag:[40,66],hop:4,hope:4,host:[2,13,16,20,21,22,32,34,62,66],host_info_local_ip:22,hosted_zone_id:[13,66],hostedzon:[13,66],hostnam:[13,22,32,34,37,49,66],hostresourcegrouparn:[13,66],hour:[13,43,58,66],hourli:[13,66],how:[2,13,16,20,25,58,62,64,66],howev:[13,66],html:[13,66],html_url:[58,66],http:[4,5,9,13,16,23,35,37,38,41,43,66,67],hub:[10,11,13,66],human:[13,31,34,43,55,66],hypervisor:[13,66],i:[5,13,49,50,63,64,66],iam:[1,10,11,12,13,35,37,66,67],iam_config_bucket_policy_onli:[37,66],iam_database_authentication_en:[13,66],iam_instance_profil:[13,66],iam_instance_profile_arn:[13,66],iam_instance_profile_nam:[13,66],iam_password_polici:[13,66],iam_rol:[13,66],iaminstanceprofil:[13,66],icon:[25,66,67],id:[4,5,9,13,14,16,19,20,22,25,28,31,34,37,40,41,43,46,49,52,53,55,58,61,65,66,67],idea:[4,5],idempot:5,ident:[10,13,14,16,34,35,43,52,55,58,66,67],identif:[13,66],identifi:[5,6,7,13,16,22,28,31,34,37,40,49,58,61,63,66],identity_duo:34,identity_gsuit:[43,66],identity_lastpass:52,identity_okta:[55,66],identity_typ:[16,66],if_has_servic:[58,66],ignor:[3,13,43,58,66],ignore_public_acl:[13,66,67],ignoremissingvnetserviceendpoint:[16,66],imag:[3,8,13,16,31,49,66],image_digest:[13,66],image_id:[13,66],imageid:[13,49,66],immut:[13,66],immutabilitypolici:[16,66],impact:28,impact_scor:28,implement:[2,13,66,67],improv:[6,7],inact:[13,66],inbound:[4,13,37,66,67],inbound_account:[13,66],inbound_block:[13,66],inbound_group:[13,66],inbound_rang:[13,66],inbound_rul:[13,66],inbound_vpc:[13,66],incid:[58,66],incident_urgency_rule_during_support_hours_typ:[58,66],incident_urgency_rule_during_support_hours_urg:[58,66],incident_urgency_rule_outside_support_hours_typ:[58,66],incident_urgency_rule_outside_support_hours_urg:[58,66],incident_urgency_rule_typ:[58,66],includ:[1,2,4,5,12,13,22,31,40,43,61,66,67],include_in_global_address_list:[43,66],incomplet:5,increment:[5,16,66],indent:41,index:[1,2,4,11,13,16,66],indexingmod:[16,66],indic:[9,13,16,31,34,43,52,66,67],indirect:[13,66],indirectli:64,individu:[2,13,34,66],infeas:12,infinit:[16,66],info:[1,5,29,34,65],inform:[4,5,9,13,34,37,40,43,58,63,65,66],infrastructur:[6,7,13,63,66,67],ingest:[1,4,5,8,13,37,38,41,59,61,65,66],ingress:[37,49,66,67],ingress_host:[49,66],ingress_ip:[49,66],inherit:5,initi:[3,13,37,43,66],initial_vers:[37,66],inlin:[10,11,13,66],inline_polici:[13,66],innertext:67,input:41,input_paramet:[13,66],inscop:[13,66],insert:[37,43,66],insid:[13,61,66],insight:[13,66],inspector2:10,inspector:[13,66],instal:[1,13,25,34,37,41,64,66],install_requir:[40,66],installed_tim:[13,66],installedappflow:41,instanc:[1,2,5,8,10,11,13,16,20,22,31,35,37,38,40,62,64,66],instance_collection_typ:[13,66],instance_create_tim:[13,66],instance_fleet:[13,66],instance_group:[13,66],instance_id:[13,22,66],instance_initiated_shutdown_behavior:[13,66],instance_monitoring_en:[13,66],instance_nam:[37,66],instance_port:[13,66],instance_protocol:[13,66],instance_ten:[13,66],instance_typ:[13,66],instanceid:[13,65,66,67],instanceinform:[13,66],instancelifecycl:[13,66],instancenam:[37,66],instanceprivateipaddress:[13,66],instanceten:[13,66],instancetyp:[13,63,66],instanti:[13,66],instead:[13,62,64,66,67],instruct:[8,13,66],integ:[13,19,34,61,66],integr:[1,5,28,57,58,66],integrity_impact:28,intel:[2,3,4,8,13,47,66,67],intend:[58,66],inter:[13,66],interact:[13,28,66,67],interest:[1,63,67],interfac:[4,6,7,11,13,37,66,67],interface_typ:[13,66],intern:[13,19,31,37,65,66],internet:[2,11,13,37,64,66],intervent:[13,66],introduc:5,introduct:[13,66],intuit:[6,7],invalid:[55,66],invit:[58,66],invitation_s:[58,66],invoc:[13,66],invok:[1,13,66],inward:5,io:[23,25,34,62,66],iop:[13,66],iot:[13,66],ip:[4,11,22,31,37,43,49,64,67],ip_address:[13,31,37,66],ip_cidr_rang:[37,66],ip_owner_id:[13,66],ip_protocol:[37,66],ip_v6_address:[31,66],ip_whitelist:[43,66],ipaddress:19,ipc:[13,66],ipc_mod:[13,66],ippermissioninbound:[4,64],iprang:[4,13,16,64],iprul:[16,64],ipv4:[13,66],ipv6:[13,66],ipv6address:19,is_admin:[43,66],is_cluster_member_of:[13,66],is_default:[31,66],is_delegated_admin:[43,66],is_enforced_in_2_sv:[43,66],is_enrol:34,is_enrolled_in_2_sv:[43,66],is_latest_vers:[13,66],is_mailbox_setup:[43,66],is_read_replica_of:[13,66],is_site_admin:[40,66],is_smart:[46,66],is_snapshot_sourc:[13,66],isadmin:[43,66],isautomaticindexingpolici:[16,66],islock:19,isn:[13,66],isntanc:[13,66],iso8601:[16,31,66],iso:[13,43,66],isol:[13,66],ispubl:[13,66],issu:[5,9,13,28,66],issuer:[16,66],iszoneredund:[16,66],item:[5,13,37,66,67],iter:4,iterations:4,its:[5,13,49,58,66,67],itself:[3,6,7,9,66],j2me:34,j:5,jailbroken:34,jamf:64,jamfcomputergroup:[45,64],java:34,java_hom:8,javascript:67,jdk:8,job:[2,5,9,13,16,19,22,25,28,31,34,37,40,43,49,52,55,58,61,63,64,66],job_titl:[58,66],join:[0,34,43,66],jre:8,json:[4,10,13,27,34,35,38,41,61,63,66],just:[4,5,8,38,65,67],justifi:5,jvm:[1,8],k8:47,k:[40,66],kb_id:[13,66],keep:[5,8,13,16,62,66],kei:[5,11,13,16,20,23,32,34,37,50,53,56,66],kernel:[13,22,31,66],kernel_id:[13,66],kernel_vers:22,key_nam:[13,66],keyerror:5,keyfingerprint:[13,66],keynam:[13,66],keypair:[13,66],keyspac:[16,66],keyvaulturi:[16,66],keyword:5,kill:[13,66],kind:[16,37,43,66],kinda:4,km:[11,13,37,66],kms_data_key_reuse_period_second:[13,66],kms_key_id:[13,66],kms_master_key_id:[13,66],kmsalia:64,kmsgrant:64,kmskei:64,kmskeyarn:[13,66],kmskeyid:[13,66],know:[4,5,67],known:[13,22,37,66],known_a:[13,66],kube:[49,66],kubeconfig:[47,49,66],kubernet:[11,13,36,37,64],kubernetesclust:64,kubernetescontain:64,kubernetesnamespac:64,kubernetespod:64,kubernetessecret:64,kubernetesservic:64,l103:5,l216:5,l228:5,l230:5,l237:5,l2:5,l37:5,l451:5,l91:5,l94:5,l98:5,label:[4,5,9,12,13,34,55,58,64],labor:4,lag:[13,66],lambda:[11,13,66],lancini:67,landlin:34,lang:65,languag:[40,64,66],larg:[4,63],last:[4,13,16,19,22,25,28,31,34,37,40,43,49,52,55,58,61,63,66],last_accessed_d:[13,66],last_association_execution_d:[13,66],last_changed_d:[13,66],last_directory_sync:34,last_login:[34,52,55,66],last_login_tim:[43,66],last_modified_d:28,last_modified_timestamp:[13,66],last_nam:[55,66],last_ping_date_tim:[13,66],last_pw_chang:52,last_rotated_d:[13,66],last_seen:34,last_statu:[13,66],last_successful_association_execution_d:[13,66],last_upd:34,lastbackupd:[16,66],lastmodifi:[13,66],lastmodifiedtim:[16,66],lastnam:34,lastprocessingresult:[13,66],lastreporttim:19,lastupd:[2,13,16,19,22,25,28,31,34,37,40,43,49,52,55,58,61,62,66,67],lastupdatestatu:[13,66],lastupdatestatusreason:[13,66],lastupdatestatusreasoncod:[13,66],lastusedd:[13,66],lastusedregion:[13,66],lastusedservic:[13,66],later:[4,13,37,66],latest:[13,62,66],latest_restorable_tim:[13,66],latest_version_numb:[13,66],latter:5,launch:[11,13,66],launch_typ:[13,66],launchconfigur:64,launchconfigurationnam:[13,66],launchtempl:64,launchtemplateid:[13,66],launchtemplatenam:[13,66],launchtemplatevers:64,launchtim:[13,66],launchtimeunix:[13,66],layer:[11,13,58,66],lead:[55,66],learn:[4,5,6,7,64],leas:[16,66],leasedur:[16,66],leasest:[16,66],leasestatu:[16,66],least:[37,66],leav:[37,63,66],left:[58,66],legaci:[16,34,41,66],legal:[16,66],len:5,length:[13,43,66],less:5,let:[4,63,67],letter:[11,13,66],level:[13,16,35,40,43,49,64,66],libexec:8,librari:[13,40,65,66,67],licens:[13,16,43,66],license_model:[13,66],license_typ:[16,66],licensetyp:[16,66],life:[13,66],lifecycl:[37,49,66],lifecyclest:[37,66],lightweight:5,like:[1,4,5,6,7,8,10,22,63,67],limit:[4,10,13,16,66,67],limit_s:4,line:[1,4,12,13,61,62,66],link:[6,7,13,16,29,43,52,66],linkdirect:5,lint:[1,5],linux:[8,10,13,62,66],list:[4,5,8,12,13,16,25,28,34,35,37,40,41,43,61,63,65,66,67],list_imag:[13,66],listen:[1,13,65,66,67],littl:5,live:[16,66],ll:10,load:[2,11,13,29,38,40,49,64,66,67],load_balancer_ip:[49,66],load_balancing_schem:[37,66],load_emr_clust:5,loadbalanc:[4,49,64,67],loadbalancerv2:[64,67],local:[1,8,13,16,22,34,66],local_ip:22,localhost:[1,5,8,41,67],locat:[3,5,13,16,37,41,61,66],location_typ:[37,66],locationbyiprang:19,locationnam:[16,66],lock:[13,19,31,34,40,61,66],log:[3,13,16,19,34,37,43,52,66,67],log_bucket:[37,66],log_encryption_kms_key_id:[13,66],log_uri:[13,66],loggedonus:19,logger:5,logging_servic:[37,66],logic:[2,5,13,16,66],login:[14,16,29,43,52,55,66],logout:[55,66],longer:5,look:[1,5,10,63,67],lookup:5,lot:[8,67],low:[22,61],lower:[13,66],lowercas:61,lowest:[13,37,66],lun:[16,66],lyft:[0,1,3,5,9,10,55,62,65,66],m1:8,m:[13,66],mac:[8,13,22,34,66],mac_address:[13,22,66],macaddress:19,machin:[1,8,13,15,16,22,34,35,63,66],machine_domain:22,machine_guid:34,made:[13,22,52,66,67],mai:[1,4,5,6,7,8,13,16,31,34,37,66,67],mail:[16,66],mailbox:[43,66],main:[1,13,66],maintain:[40,66],mainten:[13,66],major:22,major_vers:22,make:[1,2,3,4,6,7,8,13,16,29,35,43,61,62,63,66,67],make_target_node_match:5,makeadmin:[43,66],malform:5,manag:[1,2,11,13,34,35,36,37,66],managed_disk_storage_typ:[16,66],mani:[5,10,12,13,16,25,58,64,66],manifest:[13,66],manipul:5,manual:[2,4,6,7,8,13,19,61,66],manufactur:22,map:[0,3,11,13,25,34,37,53,55,64,66],map_customer_owned_ip_on_launch:[13,66],map_public_ip_on_launch:[13,66],marco:67,mariadb:[13,66],mark:[4,13,63,66],master:[13,37,40,52,66],master_authorized_network:[37,66],master_public_dns_nam:[13,66],master_usernam:[13,66],masterarn:[13,66],masterauth_password:[37,66],masterauth_usernam:[37,66],match:[4,5,13,37,53,63,65,66,67],matching_fingerprint:[13,66],maven:61,max:[13,16,52,66],maxageinsecond:[16,66],maximum:[13,16,43,66],maximum_execution_frequ:[13,66],maximum_message_s:[13,66],maximumbatchingwindowinsecond:[13,66],maximumrecordag:[13,66],maximumretryattempt:[13,66],maxinstancelifetim:[13,66],maxintervalinsecond:[16,66],maxreceivecount:[13,66],maxresult:41,maxshar:[16,66],maxsiz:[13,66],maxsizebyt:[16,66],maxstalenessprefix:[16,66],maxthroughput:[16,66],mb:19,md5:[13,66],mean:[4,13,16,22,66],medium:[22,61],member:[4,13,37,40,41,43,55,58,66],member_auto_scale_group:[13,66],member_aws_group:[13,66],member_of_aws_vpc:[13,66],member_of_db_subnet_group:[13,66],member_of_dns_zon:[13,66],member_of_duo_group:34,member_of_ec2_reserv:[13,66],member_of_ec2_security_group:[4,13,66],member_of_gcp_vpc:[37,66],member_of_ip_rul:[4,13,37,66],member_of_okta_group:[55,66],member_of_okta_rol:[55,66],membership:[11,13,66],memori:[13,66],memory_reserv:[13,66],mention:67,menu:67,meraki:34,merg:[4,5,58,63,66],mesh:[13,66],messag:[13,43,63,66],message_retention_period:[13,66],meta_gener:[37,66],metadata:[10,16,37,64],method:[13,16,34,35,37,43,52,66],metric:[13,37,62,66],mfa:[13,52,66],mfa_delet:[13,66],mhz:19,mib:[13,66],micro:63,microsoft:[13,14,66],midnight:[13,66],might:[8,22,63,67],millisecond:5,mind:8,minim:[25,40,66],minimum:[13,38,66],minimumcompressions:[13,66],minor:[13,22,66],minor_vers:22,minsiz:[13,66],minut:[0,43,66],mirror:26,miss:63,mm:[43,66],mobil:[34,52,55,66],mobile_otp:34,mobile_otp_en:34,mobile_phon:[55,66],mobileiron:34,mock:5,mode:[13,16,22,37,55,66],model:[5,13,34,66],moder:[13,66],modif:[16,66],modifi:[5,13,16,40,66],modified_timestamp:22,modifiedd:[13,66],modul:[2,3,4,8,9,11,15,18,21,24,27,30,33,36,39,41,42,47,48,51,52,53,54,57,60,63,66],modulesyncmetadata:64,mongodb:[16,66],monitor:[13,37,63,66],monitoring_en:[13,66],monitoring_role_arn:[13,66],monitoring_servic:[37,66],monitoringst:[13,66],monthli:0,more:[1,4,5,6,7,8,9,10,13,16,29,35,37,43,62,63,64,65,66],most:[5,13,22,62,63,66,67],mount:3,move:[13,66],mpstrength:52,much:5,mulitpl:47,multi:[13,66],multi_az:[13,66],multiattachen:[13,66],multifactor:52,multimast:[13,66],multipl:[13,16,34,38,43,66],multiplewriteloc:[16,66],must:[13,37,43,58,66],mutlipl:47,my:[2,19,37,64,66],my_custom:[41,43,66],mybigfixrelai:19,myproject:[37,66],myrepo:65,mysql:[13,66],n:[4,63,67],name:[4,5,10,12,13,14,16,17,20,22,23,25,31,32,34,37,38,40,41,43,46,49,50,52,53,55,56,58,59,61,63,64,65,66],nameserv:[37,64,67],namespac:[13,48,49,66],narrowest:5,nat:[37,66],nativ:19,nearest:[13,66],neat:4,necessari:[3,5,25,34,66],need:[1,2,3,4,10,13,35,40,41,61,62,66,67],neg:[58,66],neither:3,neo4j:[1,2,3,5,6,7,8,62,63,66,67],neo4j_auth:8,neo4j_password:3,neo4j_path:8,neo4j_sess:5,neo4j_url:1,net:[19,67],network:[4,11,13,16,37,66,67],network_access_polici:[16,66],network_border_group:[13,66],network_interfac:[4,13,37,66],network_interface_id:[13,66],network_mod:[13,66],network_polici:[37,66],network_ti:[37,66],networkinterfac:[4,37,64,67],networkinterfaceid:[13,66],never:[34,52],neverloggedin:52,newinstancesprotectedfromscalein:[13,66],newli:[13,37,66],newurl:67,next:[4,43,66,67],nic_id:[37,66],nist:26,nlb:[13,66],node:[1,2,4,9,12,13,16,19,22,25,28,31,34,37,40,43,49,52,55,58,61,62,64,66],node_typ:[13,66],nodetyp:66,nodetype:66,nodetypea:66,nodetypeb:66,nodetypec:66,non:[37,66],none:[5,8,13,22,28,34,37,52,66],noopen:67,nor:3,normal:[1,13,22,66],notact:[13,66],notat:[37,64,67],note:[2,14,22,23,34,37,47,52,63,64],notic:[4,67],notif:[13,58,66],now:[1,4,5,63,67],npm:61,ns:[13,66],nullabl:[13,66],num_loop:[58,66],number:[4,10,13,16,31,34,37,40,43,50,52,58,66],number_of_nod:[13,66],numer:22,nutshel:4,nvd:61,o:[3,13,41,66],oath:[55,66],oauth2:41,object:[1,5,13,16,17,20,25,26,29,31,32,37,38,40,47,50,53,56,58,66],observ:[58,66],obtain:[13,38,41,66],obviou:5,occur:[4,13,66],off:[8,31,34,64,66],offer:[5,13,16,66],offered_bi:[25,66],offeringclass:[13,66],offeringtyp:[13,66],offici:[8,10,29,35,37,66],ok:[1,5],okta:[5,33,64],okta_api_kei:5,okta_last_upd:[55,66],okta_last_updated_bi:[55,66],oktaadministrationrol:64,oktaadministrationrole:[55,66],oktaappl:64,oktagroup:[53,64],oktaorgan:64,oktatrustedorigin:64,oktaus:64,oktauserfactor:64,old:5,older:[5,8,13,66],omit:5,on_call_handoff_notif:[58,66],onc:[3,63,67],one:[5,6,7,8,10,12,13,16,31,34,37,47,63,66,67],one_to_one_nat:[37,66],ones:5,onli:[1,2,3,4,6,7,8,10,12,13,16,17,34,35,37,38,40,43,58,63,66,67],opaqu:[49,66],open:[4,13,22,41,58,66,67],oper:[4,8,13,16,22,34,40,43,55,63,66,67],oppos:[5,67],optim:[13,66],option:[1,2,8,10,13,16,25,37,40,61,62,66,67],option_group_nam:[13,66],oracl:[13,66],order:[4,35,58,65,66],orderbi:41,org:[38,53],org_unit_path:[43,66],organ:[35,37,38,40,43,47,53,54,55,61,66],organizationview:35,origin:[13,16,34,54,55,58,66],original_snapshot_create_tim:[13,66],originalsnapshotcreatetim:[13,66],os:[8,13,19,22,34,41,66],os_build:[22,34],os_famili:34,os_usernam:34,os_vers:[22,34],oss:0,ostyp:[16,66],other:[2,4,6,7,8,10,13,22,29,34,35,37,38,52,53,61,64,66],other_relationship:5,otherwis:[5,6,7,8,13,34,66,67],our:[0,1,2,5,6,7,8,13,62,63,65,66,67],out:[1,4,6,7,34,62,67],outag:[16,66],outbound:[37,66],outbound_account:[13,66],outpost:[13,66],outpost_arn:[13,66],outpostarn:[13,66],output:[5,10,13,38,41,66,67],outsid:[40,66],outside_collab_:[40,66],outstand:[58,66],over:[4,5,13,63,66],overview:2,overwritten:[37,66],own:[4,5,12,13,40,62,63,66,67],owner:[6,7,13,31,37,40,66],owner_ent:[37,66],owner_entity_id:[37,66],owner_id:[13,66],owner_uuid:[31,66],ownerid:[13,66],ownership:[13,66],owning_servic:[13,66],p:[13,66],packag:[1,64],package_manag:61,packagetyp:[13,66],packet:[37,66],page:[8,23],pagerduti:64,pagerdutyescalationpolici:64,pagerdutyescalationpolicyrul:[58,66],pagerdutyintegr:64,pagerdutyschedul:64,pagerdutyschedulelay:64,pagerdutyservic:64,pagerdutyteam:64,pagerdutyus:64,pagerdutyvendor:[58,66],pai:[37,66],paid:[13,66],pair:[11,13,34,37,66],palm:34,panel:34,parallelizationfactor:[13,66],parallelqueri:[13,66],paramet:[4,12,13,20,34,43,47,50,53,56,66],parent:[9,13,37,43,61,66],parentid:[13,66],part:[1,4,5,13,16,34,37,53,62,66,67],part_of_subnet:[13,37,66],parti:[43,66],partial:[5,37,66],partial_uri:[5,37,66],particular:[5,9,13,66],particularli:[6,7],partner:[16,66],partnerdatabas:[16,66],partnerloc:[16,66],partnerrol:[16,66],partnerserv:[16,66],pass:[3,13,17,20,26,32,47,49,50,53,56,59,66],passcod:34,password:[3,5,13,14,17,34,37,43,52,55,66],password_chang:[55,66],password_reset_requir:52,password_statu:34,passwordlastus:[13,66],pastdu:[16,66],patch:[13,66],patchcompliancedata:[13,66],path:[1,4,6,7,8,13,16,43,47,61,66,67],pathpart:[13,66],pattern:5,paus:[13,66],peer:[11,13,66],peeringconnect:[13,66],pend:[13,16,34,66],pending_count:[13,66],pendingaccept:[13,66],per:[13,35,37,66],percent:[13,66],percent_progress:[13,66],percentag:[13,16,66],percentcomplet:[16,66],perform:[2,4,8,13,16,34,41,61,66,67],performance_insights_en:[13,66],perhap:10,period:[1,13,37,62,66],permalink:64,permiss:[10,13,16,25,34,40,58,64,66],permissions_warn:[25,66],permit:[13,16,66],person:29,perspect:5,phase:[4,49,66],phish:[55,66],phone:[34,55,66],phone_id:34,photo:[43,66],physic:[19,25,37,66],pick:[10,34,67],pid_mod:[13,66],pin:[40,66],ping:[13,66],ping_statu:[13,66],pinned_vers:[40,66],pip:[1,8],pivot:52,place:[13,37,66],placehold:[25,37,63,66],placement_ten:[13,66],plai:8,plain:2,plan:[16,66],plane:[13,66],platform:[6,7,13,22,34,37,61,66],platform_famili:[13,66],platform_id:22,platform_nam:[13,22,66],platform_typ:[13,66],platform_vers:[13,66],pleas:[13,20,35,41,66],plu:[13,43,66],pod:[37,48,49,66],point:[5,13,16,35,66,67],polici:[10,11,13,16,25,35,37,57,58,64,66],policy_id:[13,66],policy_nam:[13,66],policy_stat:[13,66],policy_vers:[13,66],policynam:[13,66],policyunivers:[13,66,67],pool:[13,16,66],pop:63,popul:[14,17,20,23,29,32,38,41,50,53,56,59],port:[1,13,37,62,65,66,67],port_rang:[37,66],portion:[49,58,66],posit:[13,66],possibl:[3,5,64],post:[0,58,66],postdelai:34,postgresql:[13,66],power:[4,6,7],pphone:34,pr:5,practic:5,pre:1,precis:5,predefin:[13,66,67],predelai:34,predetermin:[37,66],prefer:[5,8,58,66],preferred_backup_window:[13,66],preferred_maintenance_window:[13,66],prefix:[13,62,66],preflight:[16,66],premier:34,premis:[13,19,66],premium:[37,66],prepar:[17,20,23,29,32,35,38,50,53,56],prepend:[40,66],present:[5,6,7,12,13,34,37,40,66],preserv:4,prevent:[13,31,66],previou:[4,14,23,29,38,41],previous:5,price:[13,25,66],pricip:12,primari:[13,16,40,43,58,66],primary_cidr_block:[13,66],primary_email:[43,66],primary_region:[13,66],primaryemail:[41,43,66],primarylanguag:[40,66],primaryloc:[16,66],princip:[10,11,12,13,14,16,66,67],principl:2,print:41,print_funct:41,prioriti:[16,37,66],privaci:[25,66],privacy_polici:[25,66],privat:[13,16,20,37,40,66],private_dns_nam:[13,66],private_endpoint:[37,66],private_endpoint_en:[37,66],private_ip:[37,66],private_ip_address:[13,31,66],private_ip_google_access:[37,66],private_nod:[37,66],privateendpointid:[16,66],privateipaddress:[13,63,66],privatezon:[13,66],privileg:[13,28,43,66],privileges_requir:28,probabl:8,probe:[49,66],problem:5,problem_typ:28,procedur:1,process:[4,5,8,13,62,66],processor_featur:[13,66],prod:[13,37,66],product:[8,13,22,62,66],product_typ:22,product_type_desc:22,productdescript:[13,66],profil:[8,10,13,40,43,66],prog:1,program:[40,66],programminglanguag:[64,65],progress:[13,66],project:[0,30,31,37,40,41,61,66],project_id:[31,37,41,66],project_nam:[37,66],projectid:[37,66],projectnumb:[37,66],promot:[13,66],prompt:[10,34,41],propag:[13,66],propagate_tag:[13,66],proper:[13,66],properli:[4,5],properti:[2,8,13,34,37,43,55,63,64,66],propertyref:5,protect:[13,66],protip:64,protocol:[13,16,37,66],provhash:50,provid:[5,13,22,23,25,35,37,40,41,43,52,53,55,58,62,66],providernam:19,provis:[13,22,66],provision_statu:22,provisioningst:[16,66],proxi:[13,66],proxy_configuration_container_nam:[13,66],proxy_configuration_typ:[13,66],pseudo_termin:[13,66],ptr:[37,66],public_endpoint:[37,66],public_ip:[13,37,66],public_ipv4_pool:[13,66],public_ptr_domain_nam:[37,66],publicaccess:[16,66],publicdnsnam:[13,63,65,66,67],publicipaddress:[13,66],publicli:[13,16,40,66],publicly_access:[13,66],publicnetworkaccess:[16,66],publish:28,published_d:28,pull:[8,10,13,35,62,66],pull_started_at:[13,66],pull_stopped_at:[13,66],purchas:[13,66],purpos:[43,66],push:34,push_en:34,put:4,py:[1,5,9,66],pypi:61,pytest:1,python:[1,4,5,6,7,8,38,40,41,65,66,67],pythonlibrari:[64,65],q:5,qualifi:[13,16,66],queri:[2,4,12,13,53,61,63,64,66,67],query_directori:63,querybuild:5,queryselectoral:67,queue:[11,13,16,66],quick:64,quickest:63,quickli:[63,67],quickstart:41,quota:[13,66],r:[1,5,13,65,66,67],racecar:66,rai:[13,66],rais:5,ram:[13,19,66],ramdisk_id:[13,66],ran:62,rang:[13,37,66,67],rare:[16,66],rate:[10,25,66],rather:[3,6,7,43,66],rating_us:[25,66],rbac:14,rd:[5,11,13,64,66],rdscluster:64,rdsinstanc:[64,65,67],rdssnapshot:64,re:[0,1,8,13,66,67],reach:[13,58,66],reachability_check:61,reachability_condit:61,reachabl:61,read:[4,5,10,11,12,13,16,17,29,35,38,40,43,63,66,67],read_acp:[13,66],read_only_limited_us:[58,66],read_only_us:[58,66],readabl:[13,31,66],reader:[13,14,66],reader_endpoint:[13,66],readi:[49,62,66],readonli:41,readonly_root_filesystem:[13,66],real:34,realnam:34,reason:[13,66],rebalanc:[13,66],recap:2,receiv:[5,13,37,66],receive_message_wait_time_second:[13,66],receivecount:[13,66],receivemessag:[13,66],recent:[13,22,62,63,66,67],recommend:[4,5,37,62,65,66],reconnect:[13,66],record:[0,4,11,13,16,22,37,62,66],recording_group_all_support:[13,66],recording_group_include_global_resource_typ:[13,66],recording_group_resource_typ:[13,66],recov:[13,66],recover:[16,66],recoverabledbid:[16,66],recoveri:[13,55,66],recoverywindowindai:[13,66],red:[6,7],redirect:[13,66],redirect_uri:41,redrive_policy_dead_letter_target_arn:[13,66],redrive_policy_max_receive_count:[13,66],redshift:[11,13,66],redshiftclust:64,reduc:22,reduced_functionality_mod:22,redund:[16,66],reenabl:3,ref:[40,66],ref_url:61,refer:[5,13,28,37,38,40,41,43,61,63,66,67],referenc:[13,66],refresh_token:41,regardless:[6,7],regex:53,region:[5,10,13,16,31,37,66],regist:[13,34,66],registered_at:[13,66],registered_bi:[13,66],registr:[13,34,66],registration_d:[13,66],registri:[13,62,66],reject:[13,16,66],rel_label:5,relabel:67,relai:19,relat:[10,13,43,66,67],relationship:[2,4,6,7,10,11,12,45,62,64,67],relationship_nam:12,relationship_r:66,relationshipnam:12,releas:[13,34,62,66],release_label:[13,66],relev:8,relproperti:5,remain:[13,16,66],remainingretentiondai:[16,66],remedi:[4,22],remediation_id:22,remot:19,remotedesktopisen:19,remov:[4,5,41,63],reopen:22,repeat:[58,66],replac:67,replaceal:67,repli:[54,64],replic:[16,66],replica:[11,13,16,66],replicationrol:[16,66],replicationst:[16,66],replyuri:[55,66],repo:[13,29,38,39,40,64,66],repo_imag:[13,66],repo_upgrade_on_boot:[13,66],report:[6,7,19,25,65,66],report_link:[25,66],repositori:[13,40,61,64,66],repres:[5,9,13,16,19,31,34,37,43,61,66],represent:[5,13,16,22,25,28,31,37,40,46,49,52,55,58,66,67],req:65,request:[13,16,37,43,52,56,58,66],requested_ami_vers:[13,66],requester_cidr:[13,66],requester_id:[13,66],requester_manag:[13,66],requester_pai:[37,66],requester_region:[13,66],requester_vpc:[13,66],requesterid:[13,66],requir:[1,2,8,13,16,23,28,38,40,43,61,65,66],requires_compat:[13,66],resel:[43,66],reserv:[11,13,66],reservationid:[13,66],reset:[3,52],resid:[13,37,66],resiz:[13,66],resold:[43,66],resolut:[16,66],resolv:[5,13,37,58,66,67],resourc:[5,10,11,12,13,16,19,31,34,35,36,37,40,43,55,61,65,66,67],resource_typ:[13,66],resourcegroup:[16,66],resourcemanag:35,resourcerecordset:[13,37,66],resourcetyp:12,respons:[5,16,34,66],rest:[11,13,66],restor:[13,16,66],restorabledroppeddbid:[16,66],restored:[16,66],restorepointtyp:[16,66],restrict:[13,66],restrict_public_bucket:[13,66,67],restricted_access:[58,66],result:[2,4,10,13,38,41,63,66,67],retain:[13,37,66],retent:[16,66],retention_period:[37,66],retentiondai:[16,66],retirej:[25,66],retri:[5,10,13,66],retriev:[5,13,34,43,66],reus:[13,66],revis:[13,66],revisionid:[13,66],rfc:[37,66],rfm:22,right:4,rim:34,risk:[6,7,25,64,65],risk_csp_scor:[25,66],risk_extcalls_scor:[25,66],risk_metadata:[25,66],risk_optional_permissions_scor:[25,66],risk_permissions_scor:[25,66],risk_tot:[25,65,66],risk_vuln_scor:[25,66],risk_webstore_scor:[25,66],riski:64,rm:62,road:0,role:[10,11,13,14,16,35,40,43,53,54,55,58,66],role_arn:[10,13,66],rolearn:[13,66],roleid:[13,66],roll:[13,66],rollingback:[13,66],root:[10,13,34,66],rootdevicenam:[13,66],rootdevicetyp:[13,66],rotat:[13,66],rotatesecret:[13,66],rotation_en:[13,66],rotation_lambda_arn:[13,66],rotation_rules_automatically_after_dai:[13,66],rotation_turn_length_second:[58,66],rotation_virtual_start:[58,66],round:[13,66],rout:[13,37,66],route53:[11,13,66],router:[37,66],routing_confg_routing_mod:[37,66],row:67,rpr:12,rule:[4,11,13,16,37,43,61,66,67],rule_id:[13,61,66],rule_typ:[13,37,66],ruleid:[13,37,66],run:[2,3,8,10,13,35,49,61,62,64,66,67],runinst:[13,66],running_ami_vers:[13,66],running_count:[13,66],runtim:[13,23,66],runtime_id:[13,66],runtime_platform_cpu_architectur:[13,66],runtime_platform_operating_system_famili:[13,66],s3:[11,12,13,64,66],s3_bucket_nam:[13,66],s3_key_prefix:[13,66],s3_kms_key_arn:[13,66],s3acl:[64,67],s3bucket:[9,12,64,65,67],s3policystat:64,s:[1,2,3,6,7,8,9,10,13,20,22,25,31,34,35,37,40,41,43,49,53,58,61,62,63,65,66,67],sai:[4,37,63,66,67],sake:5,sam:[55,66],sam_account_nam:[55,66],same:[4,5,13,31,37,43,66],saml:53,sampl:[38,64,67],save:[1,63],sca:[60,61],scalar:4,scale:[13,16,66],scale_down_behavior:[13,66],scaling_configuration_info_auto_paus:[13,66],scaling_configuration_info_max_capac:[13,66],scaling_configuration_info_min_capac:[13,66],scan:[13,66],scan_tim:61,scenario:[6,7,10],schedul:[13,57,58,62,66],schedule_id:[58,66],schema:[2,45,64,67],scheme:[13,66,67],scope:[13,16,28,29,38,41,55,59,66],scope_compliance_resource_typ:[13,66],scope_tag_compliance_resource_id:[13,66],scope_tag_kei:[13,66],scope_tag_valu:[13,66],score:[22,25,28,52,64,66],screen:34,screenlock:34,script:[1,3,41,62],scroll:[37,66],sda1:[13,66],sdk:[41,43,66],search:[13,66],searchparam:67,second:[13,16,34,37,38,43,58,63,66],second_email:[55,66],secondari:[11,16,55,66],secondaryloc:[16,66],secret:[11,13,14,20,23,32,41,48,49,50,59,66],secretbinari:[13,66],secretsmanagersecret:64,secretstr:[13,66],section:[1,4,5,8,12,29],secur:[1,4,5,6,7,8,10,11,13,23,34,37,52,61,66,67],security_ag:34,security_configur:[5,13,66],security_group:[13,66],security_group_id:[13,66],securityaudit:10,securitycommonsens:35,securityconfigur:5,securitygroup:[13,66],securityhub:64,securityreview:35,securityupd:[13,66],see:[0,1,3,4,5,8,9,10,13,20,34,35,37,43,62,63,66,67],seed:[16,66],seen:[5,13,22,66],select:[34,43,66,67],self:20,self_link:[37,66],selinux:[13,66],semgr:61,semgrep_app_token:59,semicolon:[16,66],send:[13,43,55,62,66],sens:5,sensit:35,sensor:22,sent:[16,34,58,62,66],separ:[8,13,16,66],serial:[34,41],serv:[13,37,49,66],server:[8,10,13,16,19,37,58,62,66,67],serverless:[13,66],serves_pod:[49,66],servic:[4,6,7,10,13,14,16,22,34,35,37,41,43,48,49,57,58,66],service_provid:22,service_provider_account_id:22,servicelevelobject:[16,66],servicerol:[13,66],services_ipv4cidr:[37,66],session:5,set:[3,4,5,6,7,8,10,13,14,16,22,29,31,34,35,37,43,56,58,62,63,66,67],set_in_kwarg:5,set_public_ptr:[37,66],setprivateipgoogleaccess:[37,66],setpublicptr:[37,66],settings_container_insight:[13,66],setup:[1,5,40,64,66],setup_requir:[40,66],sever:[13,22,28,61,66],sf:19,sg:[13,66],sha256:[13,66],sha:[13,49,66],shape:5,shard:[13,66],share:[1,13,16,43,66],shared_with:[13,66],sharequota:[16,66],shareusagebyt:[16,66],shield:[37,66],shielded_nod:[37,66],shift:[58,66],short_descript:[25,66],shortcut:[4,37,64,66],shorten:66,should:[1,3,4,5,8,9,10,12,13,16,23,37,43,63,66],show:[10,13,58,63,66,67],shown:[4,13,38,63,66],shutdown:[13,66],sid:[13,66],sign:[13,43,66],sign_on_mod:[55,66],signatur:22,signifi:[37,66],signingjobarn:[13,66],signingprofileversionarn:[13,66],signon:[55,66],similar:[4,13,66,67],simpl:[49,66],simpli:[37,63,66,67],sinc:[5,13,66],singl:[4,5,13,25,40,47,52,66],site:[25,40,52,66],size:[13,16,25,31,66,67],skeleton:2,sketch:4,skip:4,sku:[16,66],slack:0,slash:[13,43,66],slightli:63,slow:8,slug:[31,40,61,66],sm:34,small:67,smart:[46,66],smartphon:34,sms_enabl:34,sms_passcodes_s:34,sn:[13,66],snapshot:[11,13,16,62,66],snapshot_create_tim:[13,66],snapshot_database_tim:[13,66],snapshot_target:[13,66],snapshot_typ:[13,66],snapshotdatabasetim:[13,66],snapshotid:[13,66],sns_topic_arn:[13,66],so:[1,3,4,5,6,7,8,10,20,37,40,66,67],soft:[13,16,66],softwar:[13,37,40,61,66],some:[5,9,12,13,63,66,67],somefield:5,someth:[5,10],sometim:5,soon:[46,66],sopho:34,sourc:[2,4,5,8,9,11,13,16,34,66,67],source_db_snapshot_identifi:[13,66],source_dest_check:[13,66],source_detail:[13,66],source_id:[13,66],source_identifi:[13,66],source_own:[13,66],source_region:[13,66],source_security_group:[13,66],source_typ:[13,66],sourceid:[13,66],sourcetyp:[13,66],sp:14,span:67,speak:34,spec:[13,66],specif:[1,5,8,12,13,16,37,66,67],specifi:[5,8,12,13,16,29,31,34,37,38,40,47,49,53,62,63,65,66,67],specificnod:66,split:[13,66],spoke:10,spot:[13,66],spot_pric:[13,66],spotlight:[21,22],spread:[16,66],sq:[11,13,66],sql:[13,15,16,66,67],sqsqueue:64,sse:[13,66],ssh:[11,40,66],ssh_login_to:[13,66],sshurl:[40,66],ssl:[13,66],ssl_polici:[13,66],ssm:[13,66],ssminstanceinform:64,ssminstancepatch:64,sstzd:[43,66],st:[10,11],stabl:[13,66],stack:[3,65],stage:[1,2,11,13,66],stale:[4,5,16,62,66],stamp:[13,66],standard:[1,13,37,53,66],start:[1,2,3,13,16,37,41,58,61,62,63,66],start_aws_ingest:1,start_col:61,start_lin:61,start_timeout:[13,66],started_at:[13,66],started_bi:[13,66],startedbi:[13,66],startingposit:[13,66],startingpositiontimestamp:[13,66],starttim:[13,16,66],startup:[49,66],state:[13,16,31,37,49,55,58,63,66],statement:[4,10,13,66,67],statemessag:[13,66],statereason:[13,66],statereasoncod:[13,66],statu:[13,16,22,31,34,37,55,58,66],status_chang:[55,66],status_cod:[13,66],status_image_id:[49,66],status_image_sha:[49,66],status_messag:[13,66],status_phas:[49,66],status_readi:[49,66],status_reason:[13,66],status_start:[49,66],statusofprimari:[16,66],statusofsecondari:[16,66],statys_st:[49,66],stdin:[13,66],step:[1,4,5,10,13,14,17,20,23,26,29,32,35,38,41,43,47,50,53,56,59,66,67],still:[5,13,66],stillfak:38,stop:[13,66],stop_cod:[13,66],stop_timeout:[13,66],stopped_at:[13,66],stopped_reason:[13,66],stopping_at:[13,66],storag:[13,15,16,31,36,37,66],storage_class:[37,66],storage_encrypt:[13,65,66,67],storage_throughput:[13,66],storage_typ:[13,66],storageclass:[37,66],storageencrypt:[13,66],storageendpoint:[16,66],store:[12,13,16,23,52,66,67],stori:[6,7],str:5,stream:[13,66],strenght:52,string:[5,12,13,16,19,31,34,37,40,43,58,61,66],structur:[4,5,38,63],sts_assume_role_allow:[13,66],sts_assumerole_allow:[13,66],style:67,sub:[5,9,66],sub_resource_relationship:5,subject:[43,66],submit:5,subnet:[4,11,13,16,37,66,67],subnet_arn:[13,66],subnetaddress:19,subnetid:[13,66],subnetwork:[37,66],subscribed_at:[13,66],subscript:[14,16,66],subzon:[13,66],successfulli:[5,13,63,66],succinct:[58,66],suffici:34,suit:[1,25,41,43,66],suitabl:[58,66],sum:[25,66],summar:61,summari:[25,49,58,61,66,67],superced:[37,66],suppli:[2,13,61,66],support:[2,8,11,13,22,25,34,37,38,41,43,58,63,66],support_hours_days_of_week:[58,66],support_hours_end_tim:[58,66],support_hours_start_tim:[58,66],support_hours_time_zon:[58,66],support_hours_typ:[58,66],support_sit:[25,66],supportshttpstrafficonli:[16,66],suppos:67,sure:[5,8,29,61,67],surnam:34,suspend:[43,66],sy:[1,37,66],symbian:34,sync:[2,3,4,8,9,10,13,14,16,19,22,25,28,31,34,37,40,43,47,49,52,55,58,61,66,67],sync_:1,synced_typ:[9,66],syncedtyp:[9,66],syncmetadata:64,syntax:[2,66],system:[13,16,22,34,49,66],system_manufactur:22,system_product_nam:22,t2:63,t:[1,3,4,5,10,13,37,43,66,67],tab:67,tabl:[11,12,13,16,66,67],tablenam:[16,66],tag:[1,5,11,16,22,31,37,64],tag_id:[37,66],tagkei:[13,66],tagvalu:[13,66],take:[1,4,8,37,38,66],taken:[13,16,66],talk:0,tamper:34,target:[13,37,66],target_label:12,target_node_label:5,target_node_match:5,target_tag:[37,66],targetgroup:67,targetgrouparn:[13,66],targetkeyid:[13,66],targetnodematch:5,task:[13,62,66],task_arn:[13,66],task_definit:[13,66],task_definition_arn:[13,66],task_role_arn:[13,66],tcp:[13,37,66],tcp_udp:[13,66],tde:[13,66],tde_credential_arn:[13,66],team:[40,57,58,66],teamer:[6,7],tell:[4,5],templat:[11,13,63,66],temporarili:3,tenanc:[13,66],tenant:[13,14,16,66],term:[41,43,66],termin:[1,13,16,49,66],termination_protect:[13,66],terminationallow:[16,66],test:[2,8,41],test_iam:1,test_integr:1,test_lint:1,test_load_group:1,test_unit:1,testabl:1,text:[40,66],tgw:[13,66],tgw_id:[13,66],than:[3,5,6,7,8,10,13,43,53,66],thei:[5,6,7,12,13,53,66],them:[4,5,6,7,10,13,37,65,66,67],therefor:[5,13,66],thi:[1,3,4,5,8,9,10,12,13,14,16,19,22,23,25,28,31,34,35,37,40,41,43,49,52,55,58,61,62,63,65,66,67],thing:[4,10,13,66,67],third:[43,66],those:[5,10,13,32,66],though:[5,13,58,66],thread:[13,66],threat:[16,66],throttl:10,through:[3,4,5,6,7,37,63,66,67],throughout:35,throughput:[13,16,66],thu:[13,66],thumbnail_photo_etag:[43,66],thumbnail_photo_url:[43,66],tier:[16,37,66],time:[1,4,5,8,13,16,19,22,25,28,31,34,37,40,43,49,52,55,58,61,62,63,66,67],time_cr:[37,66],time_zon:[58,66],timeout:[13,56,66],timestamp:[5,13,16,19,22,25,28,31,34,37,40,43,49,52,55,58,61,62,63,66],timezon:[13,66],tip:[8,62],titl:[13,58,61,66],tl:[13,66],to_json:41,to_port:[13,66],todo:3,togeth:[4,13,40,66],token:[29,34,38,41,53,56,59],token_id:34,token_uri:41,toler:[16,66],too:[4,5],tool:[6,7,13,65,66],toomanyrequestexcept:10,top:[43,65,66,67],topic:[13,66],toport:[13,37,66],total:[13,31,66],totalcomplet:4,totallyfak:64,totalscor:52,totp_step:34,touch:34,toward:5,trace:[5,13,66],tracingconfigmod:[13,66],tracingen:[13,66],track:[19,40,64,66],traffic:[4,13,16,37,66],trail:[13,66],transact:[13,66],transfer:[13,66],transform:2,transit:[13,16,55,61,66],transition_to_statu:[55,66],translat:2,transpar:[16,66],travers:5,tree:4,triag:[40,66],trigger:[13,58,61,66],trivial:5,truncat:[13,66],trust:[10,11,13,54,55,66],trusted_endpoint:34,trusts_aws_princip:[13,66],ttl:[16,37,66],tty:[13,66],tumblingwindowinsecond:[13,66],turn:[8,64],tutori:[4,64],two:[5,13,63,66],tx:5,txt:[1,40,61,66],type:[1,4,5,9,13,16,22,25,34,37,43,49,55,58,63,66,67],typehint:5,typic:[40,66],u2f:34,u2f_token:34,u:[41,65],udp:[13,66],ui:3,uid:[49,66],ultra_ssd_en:[16,66],unavail:[13,16,66],unavoid:5,undelet:[43,66],under:[13,16,40,66],understand:[4,5,6,7,35],unencrypt:[34,64],unencryptedinst:[65,67],unhealthi:[13,66],uniform:[13,66],uniqu:[5,13,16,22,31,34,37,40,43,61,66],unit:[1,5,13,16,61,66],univers:[13,31,34,66],unix:[5,13,34,62,63,66],unix_timestamp_1:63,unix_timestamp_2:63,unknown:[22,34],unless:[13,66,67],unlock:34,unnecessari:1,unproven:22,unset:[34,58,66],unspecifi:[37,66],until:[13,25,66],unus:[13,66],unwind:5,up:[2,3,5,8,10,13,14,16,29,34,63,66,67],updat:[1,2,5,13,16,19,22,25,28,31,34,37,40,43,49,52,55,58,61,66],update_tag:[2,62],updated_at:[31,66],updated_timestamp:22,updatedat:[40,66],upgrad:[13,66],upload:[13,66],upn:34,upper:[13,66],urgenc:[58,66],uri:[1,3,5,8,13,16,37,43,54,63,64],url:[20,23,25,26,28,37,38,40,41,43,53,58,61,66,67],urlsearchparam:67,us:[0,1,2,4,5,6,7,8,9,10,13,14,16,20,23,31,34,35,37,38,40,43,49,52,53,55,58,61,62,64,66,67],usag:[2,43,61,64,66],usage_at:61,usageoper:[13,66],used_bi:[16,66],user:[3,5,10,11,13,16,23,24,25,28,31,33,34,35,38,39,40,41,42,43,51,52,54,55,57,58,64,66,67],user_id:[34,43,66],user_interact:28,user_upload:[13,66],userid:[13,66],userkei:[43,66],usernam:[13,17,19,34,37,40,43,66],usernma:[55,66],userprofil:10,userreadonli:41,useserverdefault:[16,66],usr:8,usual:[1,5,8,55,66],utc:[13,16,22,61,66],utf:41,util:[9,41,66],uuid:[31,66],v1:[11,23,37,41,43,66],v2:[11,13,66],v4:[27,31,66],v6:[31,66],valid:[2,6,7,13,37,55,66],validation_queri:63,valu:[5,13,14,16,19,22,23,31,34,37,43,58,59,66],variabl:[1,3,5,8,10,13,14,17,20,23,29,32,35,38,41,50,53,56,59,66,67],variou:[40,66],vault:[16,66],ve:[4,5,8,13,66],vector:[6,7,28],vector_str:28,vendor:57,verb:[16,66],veri:[5,8],verif:[34,43,66],version:[8,10,13,16,19,20,22,25,34,37,40,61,62,65,66],version_descript:[13,66],version_info_agent_docker_vers:[13,66],version_info_agent_hash:[13,66],version_info_agent_vers:[13,66],version_numb:[13,66],versioning_en:[37,66],versioning_statu:[13,66,67],versu:2,vhd:[16,66],via:[1,3,4,5,8,13,16,20,34,37,40,41,43,50,53,56,62,66],video:0,view:[5,6,7,8,13,40,63,64,66],viewabl:34,virtual:[13,15,16,19,37,66],virtualenv:1,virtualizationtyp:[13,66],virtualmachin:64,virtualnetworkfilteren:[16,66],virutalenvwrapp:1,visibility_timeout:[13,66],visibl:[13,37,40,43,66],visible_to_all_us:[13,66],visit:29,vm:[13,37,66],vmware:19,vnet:[16,66],voice_en:34,volum:[3,11,13,31,66],volumeid:[13,66],volumes:[13,66],vpc:[5,11,13,37,66],vpc_id:[13,66],vpc_identifi:[13,66],vpc_partial_uri:[37,66],vpcid:[13,66],vpcpeeringconnect:[13,66],vpcpeeringconnectionid:[13,66],vpn:[13,66],vulner:[13,21,22,25,61,66],w:[41,53],wa:[5,13,16,19,22,25,28,31,34,37,40,43,49,52,55,58,61,63,66],wai:[2,4,10,13,61,63,66,67],wait:[13,34,49,66],want:[1,4,5,8,10,13,38,63,65,66,67],warn:[16,25,66],wasn:[13,66],wavelength:[13,66],we:[0,1,4,5,8,9,10,13,37,62,63,66,67],web:[6,7,13,34,40,59,66,67],webacl:[13,66],webaclarn:[13,66],webauthn:34,webauthncredenti:34,webauthnkei:34,webo:34,websit:[25,40,66],webstor:[25,66],weekli:[13,66],well:[37,66],went:[13,66],were:[5,13,63,66],west:10,what:[0,4,5,12,25,64,66],whatev:[4,63],when:[5,10,13,16,19,22,23,25,28,31,34,37,40,43,49,52,55,58,61,62,63,66,67],whenev:[13,37,66],where:[1,4,5,13,16,22,31,37,49,50,61,63,65,66,67],whether:[13,16,19,31,34,37,40,46,49,58,61,66,67],which:[1,2,3,5,12,13,16,34,37,49,58,62,63,64,66],white:[43,66],who:[25,43,55,66],whole:[37,66],why:[5,13,66],wide:[37,41,66],wildcard:[13,66],win2019:19,window:[8,10,13,34,55,62,66,67],windows_domain_qualified_nam:[55,66],wish:[26,53],within:[4,13,16,35,37,40,66],without:[4,5,8,13,37,63,66,67],word:66,work:[0,5,8,13,61,62,66],workflow:[16,66],working_directori:[13,66],workload:[13,66],workspac:[34,41],worri:5,would:[1,12,13,38,66,67],write:[2,4,9,13,16,37,40,63,66,67],write_accelerator_en:[16,66],write_acp:[13,66],writeacceler:[16,66],written:[5,16,66],www:[37,41,66],x:[8,13,61,66],xeon:19,xxxxx:41,y:67,yaml:12,ye:[1,34],yet:[6,7,8,10,34,63],yield:[13,66],you:[1,3,4,5,6,7,8,10,12,13,20,26,29,35,37,38,41,43,50,53,56,61,62,63,65,66,67],your:[1,2,4,6,7,8,10,12,13,20,23,29,35,38,41,43,50,53,56,63,64,66],your_env_var_her:[29,38,41],your_neo4j_instance_bolt_url:1,your_neo4j_instance_port:1,your_neo4j_uri:63,yyyi:[43,66],zero:[13,66],zone:[11,13,16,37,58,66],zone_nam:[37,66],zoneid:[13,66],zoneredund:[16,66]},titles:["Contact","Cartography Developer Guide","<no title>","Testing with docker","How to extend Cartography with Analysis Jobs","How to write a new intel module","What is Cartography?","What is Cartography?","Cartography Installation","Cartography metadata schema","AWS Configuration","Amazon Web Services (AWS)","Permissions Mapping","AWS Schema","Azure Configuration","Microsoft Azure","Azure Schema","BigFix Configuration","Lastpass","BigFix Schema","Crowdstrike Configuration","Crowdstrike","Crowdstrike Schema","Crxcavator Configuration","Duo CRXcavator","Crxcavtor Schema","CVE Configuration","CVE","CVE Schema","Configuration","DigitalOcean","DigitalOcean Schema","Duo Configuration","Duo","Duo Schema","GCP Configuration","Google Cloud Compute (GCP)","GCP Schema","Github Configuration","Github","Github Schema","GSuite Configuration","Google GSuite","GSuite Schema","<no title>","Jamf","Jamf Schema","Kubernetes Configuration","Kubernetes","Kubernetes Schema","Lastpass Configuration","Lastpass","Lastpass Schema","Okta Configuration","Okta","Okta Schema","Pagerduty Configuration","PagerDuty","Pagerduty Schema","Semgrep Configuration","Semgrep","Semgrep Schema","Cartography operations guide","How to use Drift-Detection","<no title>","Sample queries","Cartography Schema","Usage Tutorial"],titleterms:{"2":41,"\u2139":[66,67],"do":[65,67],"import":5,"new":[1,5],A:63,The:[4,5],access:[4,65,67],account:[10,65,67],accountaccesskei:[13,66],across:65,addit:5,all:[5,65,67],amazon:11,an:[4,5],analysi:[4,67],ani:[4,65,67],anonym:[65,67],apigatewayclientcertif:[13,66],apigatewayresourc:[13,66],apigatewayrestapi:[13,66],apigatewaystag:[13,66],applic:65,ar:[65,67],arg:5,argument:5,autom:1,autoscalinggroup:[13,66],aw:[10,11,13,65,66,67],awsaccount:[13,66],awscidrblock:[13,66],awsconfigdeliverychannel:[13,66],awsconfigrul:[13,66],awsconfigurationrecord:[13,66],awsdnsrecord:[13,66],awsdnszon:[13,66],awsgroup:[13,66],awsinspectorfind:[13,66],awsinspectorpackag:[13,66],awsinternetgatewai:[13,66],awsipv4cidrblock:[13,66],awsipv6cidrblock:[13,66],awslambda:[13,66],awslambdaeventsourcemap:[13,66],awslambdafunctionalia:[13,66],awslambdalay:[13,66],awspeeringconnect:[13,66],awspolici:[13,66],awspolicystat:[13,66],awsprincip:[13,66],awsrol:[13,66],awstag:[13,66],awstransitgatewai:[13,66],awstransitgatewayattach:[13,66],awsus:[13,66],awsvpc:[13,66],azur:[14,15,16,66],azurecdbprivateendpointconnect:[16,66],azurecosmosdbaccount:[16,66],azurecosmosdbaccountfailoverpolici:[16,66],azurecosmosdbcassandrakeyspac:[16,66],azurecosmosdbcassandrat:[16,66],azurecosmosdbcorspolici:[16,66],azurecosmosdbloc:[16,66],azurecosmosdbmongodbcollect:[16,66],azurecosmosdbmongodbdatabas:[16,66],azurecosmosdbsqlcontain:[16,66],azurecosmosdbsqldatabas:[16,66],azurecosmosdbtableresourc:[16,66],azurecosmosdbvirtualnetworkrul:[16,66],azuredatabasethreatdetectionpolici:[16,66],azuredatadisk:[16,66],azuredisk:[16,66],azureelasticpool:[16,66],azurefailovergroup:[16,66],azureprincip:[16,66],azurerecoverabledatabas:[16,66],azurereplicationlink:[16,66],azurerestorabledroppeddatabas:[16,66],azurerestorepoint:[16,66],azureserveradadministr:[16,66],azureserverdnsalia:[16,66],azuresnapshot:[16,66],azuresqldatabas:[16,66],azuresqlserv:[16,66],azurestorageaccount:[16,66],azurestorageblobcontain:[16,66],azurestorageblobservic:[16,66],azurestoragefileservic:[16,66],azurestoragefileshar:[16,66],azurestoragequeu:[16,66],azurestoragequeueservic:[16,66],azurestoraget:[16,66],azurestoragetableservic:[16,66],azuresubscript:[16,66],azureten:[16,66],azuretransparentdataencrypt:[16,66],balanc:65,base:65,befor:5,best:5,bigfix:[17,19],bigfixcomput:19,bookmarklet:67,bucket:[65,67],can:67,cartographi:[1,4,5,6,7,8,9,62,66,67],chrome:65,chromeextens:[25,66],clean:4,cleanup:[5,62],cloud:36,command:1,commandlin:5,commun:0,compos:3,comput:36,concept:5,configur:[3,5,10,14,17,20,23,26,29,32,35,38,41,47,50,53,56,59],connect:67,contact:0,credenti:5,crowdstrik:[20,21,22],crowdstrikefind:22,crowdstrikehost:22,crxcavat:[23,24,65],crxcavtor:[25,66],custom:[1,67],cve:[13,22,26,27,28,66],cypher:[4,5],data:67,date:62,dbsubnetgroup:[13,66],defin:[5,67],depend:[40,65,66],detect:63,develop:1,diff:63,digitalocean:[30,31,66],directli:[65,67],dnsrecord:[13,66],dnszone:[13,66],doaccount:[31,66],docker:[3,62],dodroplet:[31,66],doproject:[31,66],drift:63,duo:[24,32,33,34],duoapihost:34,duoendpoint:34,duogroup:34,duophon:34,duotoken:34,duouser:34,duowebauthncredenti:34,dynamodbt:[13,66],ebssnapshot:[13,66],ebsvolum:[13,66],ec2:[4,63,65,67],ec2imag:[13,66],ec2inst:[13,66],ec2keypair:[13,66],ec2privateip:[13,66],ec2reserv:[13,66],ec2reservedinst:[13,66],ec2securitygroup:[13,66],ec2subnet:[13,66],ecrimag:[13,66],ecrrepositori:[13,66],ecrrepositoryimag:[13,66],ecrscanfind:[13,66],ecsclust:[13,66],ecscontain:[13,66],ecscontainerdefinit:[13,66],ecscontainerinst:[13,66],ecsservic:[13,66],ecstask:[13,66],ecstaskdefinit:[13,66],eksclust:[13,66],elasticipaddress:[13,66],elb:65,elblisten:[13,66],elbv2:65,elbv2listen:[13,66],emrclust:[13,66],encrypt:[65,67],endpoint:[13,66],english:4,enrich:67,error:5,esdomain:[13,66],exampl:[3,4,63],expos:[63,65,67],extend:[4,67],extens:65,fast:5,field:5,file:[12,63],filenam:63,first:4,firstseen:5,frequenc:62,from:1,gcp:[35,36,37,66],gcpbucket:[37,66],gcpbucketlabel:[37,66],gcpdnszone:[37,66],gcpfirewal:[37,66],gcpfolder:[37,66],gcpforwardingrul:[37,66],gcpinstanc:[37,66],gcpiprul:[37,66],gcpnetworkinterfac:[37,66],gcpnetworktag:[37,66],gcpnicaccessconfig:[37,66],gcporgan:[37,66],gcpproject:[37,66],gcprecordset:[37,66],gcpsubnet:[37,66],gcpvpc:[37,66],get:5,github:[38,39,40,65,66],githubbranch:[40,66],githuborgan:[40,66],githubrepositori:[40,66],githubteam:[40,66],githubus:[40,66],given:[65,67],gkeclust:[37,66],goal:4,googl:[36,42],grant:[65,67],gsuit:[41,42,43,66],gsuitegroup:[43,66],gsuiteus:[25,43,66],guid:[1,62],handl:5,have:[65,67],host:4,how:[1,4,5,12,63,65,67],human:52,i:[65,67],imag:62,implement:1,includ:3,index:5,indirectli:65,individu:1,infrastructur:62,instal:[8,65,67],instanc:[4,63,65,67],instead:63,intel:[1,5],internet:[4,63,65,67],ip:[13,66],ippermissioninbound:[13,37,66],iprang:[37,66],iprul:[13,37,66],jamf:[45,46,66],jamfcomputergroup:[46,66],job:[4,62,67],kmsalia:[13,66],kmsgrant:[13,66],kmskei:[13,66],kubernet:[47,48,49,66],kubernetesclust:[49,66],kubernetescontain:[49,66],kubernetesnamespac:[49,66],kubernetespod:[49,66],kubernetessecret:[49,66],kubernetesservic:[49,66],label:[37,66,67],languag:65,lastpass:[18,50,51,52],lastpassus:52,lastupd:5,launchconfigur:[13,66],launchtempl:[13,66],launchtemplatevers:[13,66],learn:67,level:[65,67],load:[5,65],loadbalanc:[13,65,66],loadbalancerv2:[13,65,66],logic:4,maintain:62,make:5,manag:5,mani:[65,67],manual:1,map:[12,67],meet:0,metadata:[9,66],method:41,microsoft:15,modul:[1,5],modulesyncmetadata:[9,66],more:67,multipl:[10,35],my:[4,65,67],name:67,nameserv:[13,66],need:5,neo4j:4,networkinterfac:[13,66],node:[5,67],notat:66,note:[3,5,66],oauth:41,observ:62,off:[65,67],okta:[53,54,55,66],oktaadministrationrol:[55,66],oktaappl:[55,66],oktagroup:[55,66],oktaorgan:[55,66],oktatrustedorigin:[55,66],oktaus:[55,66],oktauserfactor:[55,66],onli:5,oper:62,option:5,other:[5,67],our:4,overview:4,packag:[13,66],pagerduti:[56,57,58,66],pagerdutyescalationpolici:[58,66],pagerdutyintegr:[58,66],pagerdutyschedul:[58,66],pagerdutyschedulelay:[58,66],pagerdutyservic:[58,66],pagerdutyteam:[58,66],pagerdutyus:[58,66],perform:5,permalink:67,permiss:[12,67],pictur:62,plain:4,polici:[65,67],possibl:67,principl:5,programminglanguag:[40,66],project:35,properti:[5,67],protip:67,pythonlibrari:[40,66],queri:[5,65],quick:[63,66],rd:[65,67],rdscluster:[13,66],rdsinstanc:[13,66],rdssnapshot:[13,66],recap:4,redshiftclust:[13,66],relationship:[5,13,16,19,22,25,28,31,34,37,40,43,46,49,52,55,58,61,66],repli:[55,66],repo:65,repositori:65,requir:5,result:5,risk:[13,66],riski:65,run:[1,4,5,63],s3:[65,67],s3acl:[13,66],s3bucket:[13,66],s3policystat:[13,66],s:[4,5],sampl:65,schema:[5,9,13,16,19,22,25,28,31,34,37,40,43,46,49,52,55,58,61,66],score:65,secretsmanagersecret:[13,66],securityhub:[13,66],semgrep:[59,60,61],semgrepdeploy:61,semgrepscafind:61,semgrepscaloc:61,servic:11,setup:[10,35,63],shortcut:63,singl:10,skeleton:4,sourc:1,spotlightvulner:22,sqsqueue:[13,66],ssminstanceinform:[13,66],ssminstancepatch:[13,66],stage:4,start:5,statsd:62,suppli:5,support:3,sync:[1,5,62],syncmetadata:[9,66],syntax:4,tag:[13,62,66],test:[1,3,5],totallyfak:65,track:63,transform:5,translat:4,turn:[65,67],tutori:67,unencrypt:[65,67],up:[4,62],updat:[4,62],update_tag:5,uri:[55,66],us:[3,12,41,63,65],usag:[3,67],user:65,valid:5,versu:5,view:67,virtualmachin:[16,66],wai:5,web:11,what:[6,7,65,67],which:[4,65,67],why:[6,7],write:[1,5],your:[5,62,67]}}) \ No newline at end of file diff --git a/usage/drift-detect.html b/usage/drift-detect.html new file mode 100644 index 0000000000..832d881bea --- /dev/null +++ b/usage/drift-detect.html @@ -0,0 +1,753 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + How to use Drift-Detection — cartography documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+ + +
+
+ +
+

How to use Drift-Detection

+

Drift-Detection is a Cartography module that allows you to track changes of query results over time.

+
+

A Quick Example: Tracking internet-exposed EC2 instances

+

The quickest way to get started using drift-detection is through an example. We showed you how we mark EC2 instances as internet-exposed with Cartography analysis jobs, and now we can use drift-detection to monitor when these instances are added or removed from our accounts over time!

+
+

Setup

+
    +
  1. Specify a ${DRIFT_DETECTION_DIRECTORY} on the machine that runs cartography. This can be any folder where you have read and write access to.

  2. +
  3. Set up a folder structure that looks like this:

    +
       ${DRIFT_DETECTION_DIRECTORY}/
    +   |
    +   |----internet-exposure-query/
    +   |
    +   |----another-query-youre-interested-in/
    +   |
    +   |----yet-another-query-to-track-over-time/
    +
    +As shown here, your ``${DRIFT_DETECTION_DIRECTORY}`` contains one or more ``${QUERY_DIRECTORY}s``.
    +
    +
    +
  4. +
  5. Create a template file

    +
    +

    Save the below contents as ${DRIFT_DETECTION_DIRECTORY}/internet-exposure-query/template.json:

    +
    +
    {
    +  "name": "Internet Exposed EC2 Instances",
    +  "validation_query": "match (n:EC2Instance) where n.exposed_internet = True return n.instancetype, n.privateipaddress, n.publicdnsname, n.exposed_internet_type"
    +  "properties": [],
    +  "results": []
    +}
    +
    +
    +
      +
    • name is a helpful name describing the query.

    • +
    • validation_query is the neo4j Cypher query to track over time. In this case, we have simply asked Neo4j to return instancetype, privateipaddress, publicdnsname, and exposed_internet_type from EC2Instances that Cartography has identified as accessible from the internet. When writing your own queries, note that drift-detection only supports MATCH queries (i.e. read operations). MERGE queries (write operations) are not supported.

    • +
    • properties: Leave this as an empty array. This field is a placeholder that will be filled.

    • +
    • results: Leave this as an empty array. This field is a placeholder that will be filled.

    • +
    +
  6. +
  7. Create a shortcut file

    +
    +

    Save the below contents as ${DRIFT_DETECTION_DIRECTORY}/internet-exposure-query/shortcut.json:

    +
    +
       {
    +     "name": "Internet Exposed EC2 Instances",
    +     "shortcuts": {}
    +   }
    +
    +``name`` should match the ``name`` you specified in ``template.json``.
    +
    +
    +
  8. +
+

All set 👍

+
+
+

Running drift-detection

+
    +
  1. Run ``get-state`` to save results of a query to json

    +
    +

    Run cartography-detectdrift get-state --neo4j-uri <your_neo4j_uri> --drift-detection-directory ${DRIFT_DETECTION_DIRECTORY}

    +

    The internet exposure query might return results that look like this:

    +
    +
       | n.instancetype    | n.privateipaddress    | n.publicdnsname               | n.exposed_internet_type   |
    +   |----------------   |--------------------   |-----------------------------  |-------------------------  |
    +   | c4.large          | 10.255.255.251        | ec2.1.compute.amazonaws.com   | [direct]                  |
    +   | t2.micro          | 10.255.255.252        | ec2.2.compute.amazonaws.com   | [direct]                  |
    +   | c4.large          | 10.255.255.253        | ec2.3.compute.amazonaws.com   | [direct, elb]                 |
    +   | t2.micro          | 10.255.255.254        | ec2.4.compute.amazonaws.com   | [direct, elb]                 |
    +
    +and we should now see a new JSON file ``<unix_timestamp_1>.json`` saved with information in this format:
    +
    +
    +
       {
    +     "name": "Internet Exposed EC2 Instances",
    +     "validation_query": "match (n:EC2Instance) where n.exposed_internet = True return n.instancetype, n.privateipaddress, n.publicdnsname, n.exposed_internet_type"
    +     "properties": ["n.instancetype", "n.privateipaddress", "n.publicdnsname", "n.exposed_internet_type"],
    +     "results": [
    +       ["c4.large", "10.255.255.251", "ec2.1.compute.amazonaws.com", "direct"],
    +       ["t2.micro", "10.255.255.252", "ec2.2.compute.amazonaws.com", "direct"],
    +       ["c4.large", "10.255.255.253", "ec2.3.compute.amazonaws.com", "direct|elb"],
    +       ["t2.micro", "10.255.255.254", "ec2.4.compute.amazonaws.com", "direct|elb"]
    +     ]
    +   }
    +
    +You can continually run ``get-state`` to save the results of a query to json. Each json state file will be named with the Unix timestamp of the time drift-detection was run.
    +
    +
    +
  2. +
  3. Comparing state files

    +
    +

    Now let’s say a couple days go by and some new EC2 Instances were added to our AWS account. We run the get-state command once more and get another file <unix_timestamp_2>.json which looks like this:

    +
    +
       {
    +     "name": "Internet Exposed EC2 Instances",
    +     "validation_query": "match (n:EC2Instance) where n.exposed_internet = True return n.instancetype, n.privateipaddress, n.publicdnsname, n.exposed_internet_type""
    +     "properties": ["n.instancetype", "n.privateipaddress", "n.publicdnsname", "n.exposed_internet_type"],
    +     "results": [
    +       ["t2.micro", "10.255.255.250", "ec2.0.compute.amazonaws.com", "direct"],
    +       ["c4.large", "10.255.255.251", "ec2.1.compute.amazonaws.com", "direct"],
    +       ["t2.micro", "10.255.255.252", "ec2.2.compute.amazonaws.com", "direct"],
    +       ["c4.large", "10.255.255.253", "ec2.3.compute.amazonaws.com", "direct|elb"],
    +       ["c4.large", "10.255.255.255", "ec2.5.compute.amazonaws.com", "direct|elb"]
    +     ]
    +   }
    +
    +It looks like our results list has slightly changed. We can use ``drift-detection`` to quickly diff the two files:
    +
    +
    +
  4. +
+
`cartography-detectdrift get-drift --query-directory ${DRIFT_DETECTION_DIRECTORY}/internet-exposure-query --start-state <unix_timestamp_1>.json --end-state <unix_timestamp_2>.json`
+
+Finally, we should see the following messages pop up:
+
+```
+Query Name: Internet Exposed EC2 Instances
+Query Properties: ["n.instancetype", "n.privateipaddress", "n.publicdnsname", "n.exposed_internet_type"]
+
+New Query Results:
+
+n.instancetype: t2.micro
+n.privateipaddress: 10.255.255.250
+n.publicdnsname: ec2.0.compute.amazonaws.com
+n.exposed_internet_type: ['direct']
+
+n.instancetype: c4.large
+n.privateipaddress: 10.255.255.255
+n.publicdnsname: ec2.5.compute.amazonaws.com
+n.exposed_internet_type: ['direct', 'elb']
+
+Missing Query Results:
+
+n.instancetype: t2.micro
+n.privateipaddress: 10.255.255.253
+n.publicdnsname: ec2.4.compute.amazonaws.com
+n.exposed_internet_type: ['direct', 'elb']
+```
+
+This gives us a quick way to view infrastructure changes!
+
+
+
+
+

Using shortcuts instead of filenames to diff files

+

It can be cumbersome to always type Unix timestamp filenames. To make this easier we can add shortcuts to diff two files without specifying the filename. This lets us bookmark certain states with whatever name we want.

+
    +
  1. Adding shortcuts

    +
    +

    Let’s try adding shortcuts. We will name the first state “first-run” and the second state “second-run” with

    +

    cartography-detectdrift add-shortcut --shortcut first-run --file <unix_timestamp_1>.json

    +

    cartography-detectdrift add-shortcut --shortcut second-run --file <unix_timestamp_2>.json

    +

    We can even use aliases instead of filenames when adding shortcuts!

    +

    cartography-detectdrift add-shortcut --shortcut baseline --file most-recent

    +
    +
  2. +
  3. Comparing state files with shortcuts

    +
    +

    Now that we have shortcuts, we can now simply run

    +

    cartography-detectdrift get-drift --query-directory ${DRIFT_DETECTION_DIRECTORY}/internet-exposure-query --start-state first-run --end-state second-run

    +
    +
  4. +
+

Important note: Each execution of get-state will automatically generate a shortcut in each query directory, most-recent, which will refer to the last state file successfully created in that directory.

+
+
+
+ + +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/usage/index.html b/usage/index.html new file mode 100644 index 0000000000..21f1d55635 --- /dev/null +++ b/usage/index.html @@ -0,0 +1,1351 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <no title> — cartography documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+ +
+ + +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/usage/samplequeries.html b/usage/samplequeries.html new file mode 100644 index 0000000000..5250e7467b --- /dev/null +++ b/usage/samplequeries.html @@ -0,0 +1,816 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Sample queries — cartography documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+ + +
+
+ +
+

Sample queries

+
+

What RDS instances are installed in my AWS accounts?

+
MATCH (aws:AWSAccount)-[r:RESOURCE]->(rds:RDSInstance)
+return *
+
+
+
+
+

Which RDS instances have encryption turned off?

+
MATCH (a:AWSAccount)-[:RESOURCE]->(rds:RDSInstance{storage_encrypted:false})
+return a.name, rds.id
+
+
+
+
+

Which EC2 instances are exposed (directly or indirectly) to the internet?

+
MATCH (instance:EC2Instance{exposed_internet: true})
+RETURN instance.instanceid, instance.publicdnsname
+
+
+
+
+

Which ELB LoadBalancers are internet accessible?

+
MATCH (elb:LoadBalancer{exposed_internet: true})—->(listener:ELBListener)
+RETURN elb.dnsname, listener.port
+ORDER by elb.dnsname, listener.port
+
+
+
+
+

Which ELBv2 LoadBalancerV2s (Application Load Balancers) are internet accessible?

+
MATCH (elbv2:LoadBalancerV2{exposed_internet: true})—->(listener:ELBV2Listener)
+RETURN elbv2.dnsname, listener.port
+ORDER by elbv2.dnsname, listener.port
+
+
+
+
+

Which S3 buckets have a policy granting any level of anonymous access to the bucket?

+
MATCH (s:S3Bucket)
+WHERE s.anonymous_access = true
+RETURN s
+
+
+
+
+

How many unencrypted RDS instances do I have in all my AWS accounts?

+
MATCH (a:AWSAccount)-[:RESOURCE]->(rds:RDSInstance)
+WHERE rds.storage_encrypted = false
+return a.name as AWSAccount, count(rds) as UnencryptedInstances
+
+
+
+
+

What users have the TotallyFake Chrome extension installed?

+
MATCH (u:GSuiteUser)-[r:INSTALLS]->(ext:ChromeExtension)
+WHERE ext.name CONTAINS 'TotallyFake'
+return ext.name, ext.version, u.email
+
+
+
+
+

What users have installed extensions that are risky based on CRXcavator scoring?

+

Risk > 200 is evidence of 3 or more critical risks or many high risks in the extension.

+
MATCH (u:GSuiteUser)-[r:INSTALLS]->(ext:ChromeExtension)
+WHERE ext.risk_total > 200
+return ext.name, ext.version, u.email
+
+
+
+
+

What languages are used in a given GitHub repository?

+
MATCH (:GitHubRepository{name:"myrepo"})-[:LANGUAGE]->(lang:ProgrammingLanguage)
+RETURN lang.name
+
+
+
+
+

What are the dependencies used in a given GitHub repository?

+
MATCH (:GitHubRepository{name:"myrepo"})-[edge:REQUIRES]->(dep:Dependency)
+RETURN dep.name, edge.specifier, dep.version
+
+
+

If you want to filter to just e.g. Python libraries:

+
MATCH (:GitHubRepository{name:"myrepo"})-[edge:REQUIRES]->(dep:Dependency:PythonLibrary)
+RETURN dep.name, edge.specifier, dep.version
+
+
+
+
+

Given a dependency, which GitHub repos depend on it?

+

Using boto3 as an example dependency:

+
MATCH (dep:Dependency:PythonLibrary{name:"boto3"})<-[req:REQUIRES]-(repo:GitHubRepository)
+RETURN repo.name, req.specifier, dep.version
+
+
+
+
+

What are all the dependencies used across all GitHub repos?

+

Just the list of dependencies and their versions:

+
MATCH (dep:Dependency)
+RETURN DISTINCT dep.name AS name, dep.version AS version
+ORDER BY dep.name
+
+
+

With info about which repos are using them:

+
MATCH (repo:GitHubRepository)-[edge:REQUIRES]->(dep:Dependency)
+RETURN repo.name, dep.name, edge.specifier, dep.version
+
+
+

Lyft ingests this information into our internal data stack, +which has enabled us to throw BI tooling on top for easy reporting - +this is highly recommended!

+
+
+ + +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/usage/schema.html b/usage/schema.html new file mode 100644 index 0000000000..dad0897362 --- /dev/null +++ b/usage/schema.html @@ -0,0 +1,15589 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Cartography Schema — cartography documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+

Cartography Schema

+
+

ℹ️ Quick notes on notation

+
    +
  • Bolded words in the schema tables indicate that this field is indexed, so your queries will run faster if you use these fields.

  • +
  • This isn’t proper Neo4j syntax, but for the purpose of this document we will use this notation:

    +
       (NodeTypeA)-[RELATIONSHIP_R]->(NodeTypeB, NodeTypeC, NodeTypeD, NodeTypeE)
    +
    +to mean a shortened version of this:
    +
    +
    +
       (NodeTypeA)-[RELATIONSHIP_R]->(NodeTypeB)
    +   (NodeTypeA)-[RELATIONSHIP_R]->(NodeTypeC)
    +   (NodeTypeA)-[RELATIONSHIP_R]->(NodeTypeD)
    +   (NodeTypeA)-[RELATIONSHIP_R]->(NodeTypeE)
    +
    +In words, this means that ``NodeTypeA`` has ``RELATIONSHIP_R`` pointing to ``NodeTypeB``\ , and ``NodeTypeA`` has ``RELATIONSHIP_R`` pointing to ``NodeTypeC``.
    +
    +
    +
  • +
  • In these docs, more specific nodes will be decorated with GenericNode::SpecificNode notation. For example, if we have a Car node and a RaceCar node, we will refer to the RaceCar as Car::RaceCar.

  • +
+
+
+

Cartography metadata schema

+

Some Cartography sync jobs write nodes to convey information about the job itself. See https://github.com/lyft/cartography/issues/758 for more background on this.

+
+

SyncMetadata:ModuleSyncMetadata

+

This is a node to represent metadata about the sync job of a particular module. Its existence indicates that a particular sync job did happen. +The ‘types’ used here should be actual node labels. For example, if we did sync a particular AWSAccount’s S3Buckets, +the grouptype is ‘AWSAccount’, the groupid is the particular account’s id, and the syncedtype is ‘S3Bucket’.

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

Source

id

{group_type}_{group_id}_{synced_type}

util.py

grouptype

The parent module’s type

util.py

groupid

The parent module’s id

util.py

syncedtype

The sub-module’s type

util.py

+
+
+
+

AWS Schema

+
+

AWSAccount

+

Representation of an AWS Account.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

name

The name of the account

inscope

Indicates that the account is part of the sync scope (true or false).

foreign

Indicates if the account is not part of the sync scope (true or false). One such example is an account that is trusted as part of cross-account AWSRole trust not in scope for sync.

lastupdated

Timestamp of the last time the node was updated

id

The AWS Account ID number

+
+

Relationships

+
    +
  • Many node types belong to an AWSAccount.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(AWSDNSZone,
    +                      AWSGroup,
    +                      AWSInspectorFinding,
    +                      AWSInspectorPackage,
    +                      AWSLambda,
    +                      AWSPrincipal,
    +                      AWSUser,
    +                      AWSVpc,
    +                      AutoScalingGroup,
    +                      DNSZone,
    +                      DynamoDBTable,
    +                      EBSSnapshot,
    +                      EBSVolume,
    +                      EC2Image,
    +                      EC2Instance,
    +                      EC2Reservation,
    +                      EC2ReservedInstance,
    +                      EC2SecurityGroup,
    +                      ElasticIPAddress,
    +                      ESDomain,
    +                      LaunchConfiguration,
    +                      LaunchTemplate,
    +                      LaunchTemplateVersion,
    +                      LoadBalancer,
    +                      RDSCluster,
    +                      RDSInstance,
    +                      RDSSnapshot,
    +                      SecretsManagerSecret,
    +                      SecurityHub,
    +                      SQSQueue
    +                      SSMInstanceInformation,
    +                      SSMInstancePatch)
    +```
    +
    +
    +
  • +
  • An AWSPolicy node is defined for an AWSAccount.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(AWSPolicy)
    +```
    +
    +
    +
  • +
  • AWSRole nodes are defined in AWSAccount nodes.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(AWSRole)
    +```
    +
    +
    +
  • +
+
+
+
+

AWSCidrBlock

+
+

AWSIpv4CidrBlock

+
+
+

AWSIpv6CidrBlock

+

Representation of an AWS CidrBlock used in VPC configuration. +The AWSCidrBlock defines the base label +type for AWSIpv4CidrBlock and AWSIpv6CidrBlock

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

cidr_block

The CIDR block

block_state

The state of the block

association_id

the association id if the block is associated to a VPC

lastupdated

Timestamp of the last time the node was updated

id

Unique identifier defined with the VPC association and the cidr_block

+
+
+

Relationships

+
    +
  • AWSVpc association

    +
    (AWSVpc)-[BLOCK_ASSOCIATION]->(AWSCidrBlock)
    +
    +
    +
  • +
  • Peering connection where AWSCidrBlock is an accepter or requester cidr.

    +
    (AWSCidrBlock)<-[REQUESTER_CIDR]-(AWSPeeringConnection)
    +(AWSCidrBlock)<-[ACCEPTER_CIDR]-(AWSPeeringConnection)
    +
    +
    +

    Example of high level view of peering (without security group permissions)

    +
    MATCH p=(:AWSAccount)-[:RESOURCE|BLOCK_ASSOCIATION*..]->(:AWSCidrBlock)<-[:ACCEPTER_CIDR]-(:AWSPeeringConnection)-[:REQUESTER_CIDR]->(:AWSCidrBlock)<-[:RESOURCE|BLOCK_ASSOCIATION*..]-(:AWSAccount)
    +RETURN p
    +
    +
    +

    Exploring detailed inbound peering rules

    +
    MATCH (outbound_account:AWSAccount)-[:RESOURCE|BLOCK_ASSOCIATION*..]->(:AWSCidrBlock)<-[:ACCEPTER_CIDR]-(:AWSPeeringConnection)-[:REQUESTER_CIDR]->(inbound_block:AWSCidrBlock)<-[:BLOCK_ASSOCIATION]-(inbound_vpc:AWSVpc)<-[:RESOURCE]-(inbound_account:AWSAccount)
    +WITH inbound_vpc, inbound_block, outbound_account, inbound_account
    +MATCH (inbound_range:IpRange{id: inbound_block.cidr_block})-[:MEMBER_OF_IP_RULE]->(inbound_rule:IpPermissionInbound)-[:MEMBER_OF_EC2_SECURITY_GROUP]->(inbound_group:EC2SecurityGroup)<-[:MEMBER_OF_EC2_SECURITY_GROUP]-(inbound_vpc)
    +RETURN outbound_account.name, inbound_account.name, inbound_range.range, inbound_rule.fromport, inbound_rule.toport, inbound_rule.protocol, inbound_group.name, inbound_vpc.id
    +
    +
    +
  • +
+
+
+
+

AWSGroup

+

Representation of AWS IAM Groups.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

path

The path to the group (IAM identifier, see linked docs above for details)

groupid

Unique string identifying the group

name

The friendly name that identifies the group

createdate

ISO 8601 date-time string when the group was created

arn

The AWS-global identifier for this group

+
+

Relationships

+
    +
  • Objects part of an AWSGroup may assume AWSRoles.

    +
    ```
    +(AWSGroup)-[STS_ASSUMEROLE_ALLOW]->(AWSRole)
    +```
    +
    +
    +
  • +
  • AWSUsers and AWSPrincipals can be members of AWSGroups.

    +
    ```
    +(AWSUser, AWSPrincipal)-[MEMBER_AWS_GROUP]->(AWSGroup)
    +```
    +
    +
    +
  • +
  • AWSGroups belong to AWSAccounts.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(AWSGroup)
    +```
    +
    +
    +
  • +
+
+
+
+

AWSInspectorFinding

+

Representation of an AWS Inspector Finding

+
+

Relationships

+
    +
  • AWSInspectorFinding may affect EC2 Instances

    +
    (AWSInspectorFinding)-[:AFFECTS]->(EC2Instance)
    +
    +
    +
  • +
  • AWSInspectorFinding may affect ECR Repositories

    +
    (AWSInspectorFinding)-[:AFFECTS]->(ECRRepository)
    +
    +
    +
  • +
  • AWSInspectorFinding may affect ECR Images

    +
    (AWSInspectorFinding)-[:AFFECTS]->(ECRImage)
    +
    +
    +
  • +
  • AWSInspectorFindings belong to AWSAccounts.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(AWSInspectorFinding)
    +```
    +
    +
    +
  • +
+
+
+
+

AWSInspectorPackage

+

Representation of an AWS Inspector Finding Package

+
+

Relationships

+
    +
  • AWSInspectorFindings have AWSInspectorPackages.

    +
    ```
    +(AWSInspectorFindings)-[HAS]->(AWSInspectorPackages)
    +```
    +
    +
    +
  • +
  • AWSInspectorPackages belong to AWSAccounts.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(AWSInspectorPackages)
    +```
    +
    +
    +
  • +
+
+
+
+

AWSLambda

+

Representation of an AWS Lambda Function.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The arn of the lambda function

name

The name of the lambda function

modifieddate

Timestamp of the last time the function was last updated

runtime

The runtime environment for the Lambda function

description

The description of the Lambda function

timeout

The amount of time in seconds that Lambda allows a function to run before stopping it

memory

The memory that’s allocated to the function

codesize

The size of the function’s deployment package, in bytes.

handler

The function that Lambda calls to begin executing your function.

version

The version of the Lambda function.

tracingconfigmode

The function’s AWS X-Ray tracing configuration mode.

revisionid

The latest updated revision of the function or alias.

state

The current state of the function.

statereason

The reason for the function’s current state.

statereasoncode

The reason code for the function’s current state.

lastupdatestatus

The status of the last update that was performed on the function.

lastupdatestatusreason

The reason for the last update that was performed on the function.

lastupdatestatusreasoncode

The reason code for the last update that was performed on the function.

packagetype

The type of deployment package.

signingprofileversionarn

The ARN of the signing profile version.

signingjobarn

The ARN of the signing job.

codesha256

The SHA256 hash of the function’s deployment package.

architectures

The instruction set architecture that the function supports. Architecture is a string array with one of the valid values.

masterarn

For Lambda@Edge functions, the ARN of the main function.

kmskeyarn

The KMS key that’s used to encrypt the function’s environment variables. This key is only returned if you’ve configured a customer managed key.

+
+

Relationships

+
    +
  • AWSLambda function are resources in an AWS Account.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(AWSLambda)
    +```
    +
    +
    +
  • +
  • AWSLambda functions may act as AWSPrincipals via role assumption.

    +
    ```
    +(AWSLambda)-[STS_ASSUME_ROLE_ALLOW]->(AWSPrincipal)
    +```
    +
    +
    +
  • +
  • AWSLambda functions may also have aliases.

    +
    ```
    +(AWSLambda)-[KNOWN_AS]->(AWSLambdaFunctionAlias)
    +```
    +
    +
    +
  • +
  • AWSLambda functions may have the resource AWSLambdaEventSourceMapping.

    +
    ```
    +(AWSLambda)-[RESOURCE]->(AWSLambdaEventSourceMapping)
    +```
    +
    +
    +
  • +
  • AWSLambda functions has AWS Lambda Layers.

    +
    ```
    +(AWSLambda)-[HAS]->(AWSLambdaLayer)
    +```
    +
    +
    +
  • +
  • AWSLambda functions has AWS ECR Images.

    +
    ```
    +(AWSLambda)-[HAS]->(ECRImage)
    +```
    +
    +
    +
  • +
+
+
+
+

AWSLambdaFunctionAlias

+

Representation of an AWSLambdaFunctionAlias.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The arn of the lambda function alias

name

The name of the lambda function alias

functionversion

The function version that the alias invokes.

revisionid

A unique identifier that changes when you update the alias.

description

The description of the alias.

+
+

Relationships

+
    +
  • AWSLambda functions may also have aliases.

    +
    ```
    +(AWSLambda)-[KNOWN_AS]->(AWSLambdaFunctionAlias)
    +```
    +
    +
    +
  • +
+
+
+
+

AWSLambdaEventSourceMapping

+

Representation of an AWSLambdaEventSourceMapping.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The id of the event source mapping

batchsize

The maximum number of items to retrieve in a single batch.

startingposition

The position in a stream from which to start reading.

startingpositiontimestamp

The time from which to start reading.

parallelizationfactor

The number of batches to process from each shard concurrently.

maximumbatchingwindowinseconds

The maximum amount of time to gather records before invoking the function, in seconds.

eventsourcearn

The Amazon Resource Name (ARN) of the event source.

lastmodified

The date that the event source mapping was last updated, or its state changed.

state

The state of the event source mapping.

maximumrecordage

Discard records older than the specified age.

bisectbatchonfunctionerror

If the function returns an error, split the batch in two and retry.

maximumretryattempts

Discard records after the specified number of retries.

tumblingwindowinseconds

The duration in seconds of a processing window.

lastprocessingresult

The result of the last AWS Lambda invocation of your Lambda function.

+
+

Relationships

+
    +
  • AWSLambda functions may have the resource AWSLambdaEventSourceMapping.

    +
    ```
    +(AWSLambda)-[RESOURCE]->(AWSLambdaEventSourceMapping)
    +```
    +
    +
    +
  • +
+
+
+
+

AWSLambdaLayer

+

Representation of an AWSLambdaLayer.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The arn of the lambda function layer

codesize

The size of the layer archive in bytes.

signingprofileversionarn

The Amazon Resource Name (ARN) for a signing profile version.

signingjobarn

The Amazon Resource Name (ARN) of a signing job.

+
+

Relationships

+
    +
  • AWSLambda functions has AWS Lambda Layers.

    +
    ```
    +(AWSLambda)-[HAS]->(AWSLambdaLayer)
    +```
    +
    +
    +
  • +
+
+
+
+

AWSPolicy

+

Representation of an AWS Policy.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

name

The friendly name (not ARN) identifying the policy

createdate

ISO 8601 date-time when the policy was created

type

“inline” or “managed” - the type of policy it is

arn

The arn for this object

id

The unique identifer for a policy. If the policy is managed this will be the Arn. If the policy is inline this will calculated as AWSPrincipal/inline_policy/PolicyName

+
+

Relationships

+
    +
  • AWSPrincipal contains AWSPolicy

    +
    ```
    +(AWSPrincipal)-[POLICY]->(AWSPolicy)
    +```
    +
    +
    +
  • +
  • AWSPolicy contains AWSPolicyStatement

    +
    ```
    +(AWSPolicy)-[STATEMENTS]->(AWSPolicyStatement)
    +```
    +
    +
    +
  • +
+
+
+
+

AWSPolicyStatement

+

Representation of an AWS Policy Statement.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

resources

(array) The resources the statement is applied to. Can contain wildcards

actions

(array) The permissions allowed or denied by the statement. Can contain wildcards

notactions

(array) The permission explicitly not matched by the statement

effect

“Allow” or “Deny” - the effect of this statement

id

The unique identifier for a statement.
If the statement has an Sid the id will be calculated as AWSPolicy.id/statements/Sid.
If the statement has no Sid the id will be calculated as AWSPolicy.id/statements/index of statement in statement list

+
+

Relationships

+
    +
  • AWSPolicy contains AWSPolicyStatement

    +
    ```
    +(AWSPolicy)-[STATEMENTS]->(AWSPolicyStatement)
    +```
    +
    +
    +
  • +
+
+
+
+

AWSPrincipal

+

Representation of an AWSPrincipal.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

path

The path to the principal

name

The friendly name of the principal

createdate

ISO 8601 date-time when the principal was created

arn

AWS-unique identifier for this object

userid

The stable and unique string identifying the principal.

passwordlastused

Datetime when this principal’s password was last used

+
+

Relationships

+
    +
  • AWS Principals can be members of AWS Groups.

    +
    ```
    +(AWSPrincipal)-[MEMBER_AWS_GROUP]->(AWSGroup)
    +```
    +
    +
    +
  • +
  • This AccountAccessKey is used to authenticate to this AWSPrincipal.

    +
    ```
    +(AWSPrincipal)-[AWS_ACCESS_KEY]->(AccountAccessKey)
    +```
    +
    +
    +
  • +
  • AWS Roles can trust AWS Principals.

    +
    (AWSRole)-[TRUSTS_AWS_PRINCIPAL]->(AWSPrincipal)
    +
    +
    +
  • +
  • AWS Accounts contain AWS Principals.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(AWSPrincipal)
    +```
    +
    +
    +
  • +
  • Redshift clusters may assume IAM roles. See this article.

    +
    (RedshiftCluster)-[STS_ASSUMEROLE_ALLOW]->(AWSPrincipal)
    +
    +
    +
  • +
+
+
+
+

AWSPrincipal::AWSUser

+

Representation of an AWSUser. An AWS User is a type of AWS Principal.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

path

The path to the user

name

The friendly name of the user

createdate

ISO 8601 date-time when the user was created

arn

AWS-unique identifier for this object

userid

The stable and unique string identifying the user.

passwordlastused

Datetime when this user’s password was last used

+
+

Relationships

+
    +
  • AWS Users can be members of AWS Groups.

    +
    ```
    +(AWSUser)-[MEMBER_AWS_GROUP]->(AWSGroup)
    +```
    +
    +
    +
  • +
  • AWS Users can assume AWS Roles.

    +
    ```
    +(AWSUser)-[STS_ASSUMEROLE_ALLOW]->(AWSRole)
    +```
    +
    +
    +
  • +
  • This AccountAccessKey is used to authenticate to this AWSUser

    +
    ```
    +(AWSUser)-[AWS_ACCESS_KEY]->(AccountAccessKey)
    +```
    +
    +
    +
  • +
  • AWS Accounts contain AWS Users.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(AWSUser)
    +```
    +
    +
    +
  • +
+
+
+
+

AWSPrincipal::AWSRole

+

Representation of an AWS IAM Role. An AWS Role is a type of AWS Principal.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

roleid

The stable and unique string identifying the role.

name

The friendly name that identifies the role.

createdate

The date and time, in ISO 8601 date-time format, when the role was created.

arn

AWS-unique identifier for this object

+
+

Relationships

+
    +
  • Some AWS Groups, Users, Principals, and EC2 Instances can assume AWS Roles.

    +
    (AWSGroup, AWSUser, EC2Instance)-[STS_ASSUMEROLE_ALLOW]->(AWSRole)
    +
    +
    +
  • +
  • Some AWS Roles can assume other AWS Roles.

    +
    (AWSRole)-[STS_ASSUMEROLE_ALLOW]->(AWSRole)
    +
    +
    +
  • +
  • Some AWS Roles trust AWS Principals.

    +
    (AWSRole)-[TRUSTS_AWS_PRINCIPAL]->(AWSPrincipal)
    +
    +
    +
  • +
  • AWS Roles are defined in AWS Accounts.

    +
    (AWSAccount)-[RESOURCE]->(AWSRole)
    +
    +
    +
  • +
+
+
+
+

AWSTransitGateway

+

Representation of an AWS Transit Gateway.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

owner_id

The ID of the AWS account that owns the transit gateway

description

Transit Gateway description

state

Can be one of pending | available | modifying | deleting | deleted

tgw_id

Unique identifier of the Transit Gateway

id

Unique identifier of the Transit Gateway

arn

AWS-unique identifier for this object (same as id)

+
+

Relationships

+
    +
  • Transit Gateways belong to one AWSAccount

    +
    (AWSAccount)-[RESOURCE]->(AWSTransitGateway)
    +
    +
    +
  • +
  • … and can be shared with other accounts

    +
    (AWSAccount)<-[SHARED_WITH]-(AWSTransitGateway)
    +
    +
    +
  • +
  • AWSTag

    +
    (AWSTransitGateway)-[TAGGED]->(AWSTag)
    +
    +
    +
  • +
+
+
+
+

AWSTransitGatewayAttachment

+

Representation of an AWS Transit Gateway Attachment.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

resource_type

Can be one of vpc | vpn | direct-connect-gateway | tgw-peering

state

Can be one of initiating | pendingAcceptance | rollingBack | pending | available | modifying | deleting | deleted | failed | rejected | rejecting | failing

id

Unique identifier of the Transit Gateway Attachment

+
+

Relationships

+
    +
  • AWSAccount

    +
    (AWSAccount)-[RESOURCE]->(AWSTransitGatewayAttachment)
    +
    +
    +
  • +
  • AWSVpc (for VPC attachments)

    +
    (AWSVpc)-[RESOURCE]->(AWSTransitGatewayAttachment {resource_type: 'vpc'})
    +
    +
    +
  • +
  • AWSTransitGateway attachment

    +
    (AWSTransitGateway)<-[ATTACHED_TO]-(AWSTransitGatewayAttachment)
    +
    +
    +
  • +
  • AWSTag

    +
    (AWSTransitGatewayAttachment)-[TAGGED]->(AWSTag)
    +
    +
    +
  • +
+
+
+
+

AWSVpc

+

Representation of an AWS CidrBlock used in VPC configuration. +More information on https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-vpcs.html

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

vpcid

The VPC unique identifier

primary_cidr_block

The primary IPv4 CIDR block for the VPC.

instance_tenancy

The allowed tenancy of instances launched into the VPC.

state

The current state of the VPC.

region

(optional) the region of this VPC. This field is only available on VPCs in your account. It is not available on VPCs that are external to your account and linked via a VPC peering relationship.

id

Unique identifier defined VPC node (vpcid)

+
+

Relationships

+
    +
  • AWSAccount resource

    +
    (AWSAccount)-[RESOURCE]->(AWSVpc)
    +
    +
    +
  • +
  • AWSVpc and AWSCidrBlock association

    +
    (AWSVpc)-[BLOCK_ASSOCIATION]->(AWSCidrBlock)
    +
    +
    +
  • +
  • AWSVpc and EC2SecurityGroup membership association

    +
    (AWSVpc)<-[MEMBER_OF_EC2_SECURITY_GROUP]-(EC2SecurityGroup)
    +
    +
    +
  • +
  • AWS VPCs can be tagged with AWSTags.

    +
    (AWSVpc)-[TAGGED]->(AWSTag)
    +
    +
    +
  • +
  • Redshift clusters can be members of AWSVpcs.

    +
    (RedshiftCluster)-[MEMBER_OF_AWS_VPC]->(AWSVpc)
    +
    +
    +
  • +
  • Peering connection where AWSVpc is an accepter or requester vpc.

    +
    (AWSVpc)<-[REQUESTER_VPC]-(AWSPeeringConnection)
    +(AWSVpc)<-[ACCEPTER_VPC]-(AWSPeeringConnection)
    +
    +
    +
  • +
+
+
+
+

Tag::AWSTag

+

Representation of an AWS Tag. AWS Tags can be applied to many objects.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

This tag’s unique identifier of the format {TagKey}:{TagValue}. We fabricated this ID.

key

One part of a key-value pair that makes up a tag.

value

One part of a key-value pair that makes up a tag.

region

The region where this tag was discovered.

+
+

Relationships

+
    +
  • AWS VPCs, DB Subnet Groups, EC2 Instances, EC2 SecurityGroups, EC2 Subnets, EC2 Network Interfaces, RDS Instances, and S3 Buckets can be tagged with AWSTags.

    +
    (AWSVpc, DBSubnetGroup, EC2Instance, EC2SecurityGroup, EC2Subnet, NetworkInterface, RDSInstance, S3Bucket)-[TAGGED]->(AWSTag)
    +
    +
    +
  • +
+
+
+
+

AccountAccessKey

+

Representation of an AWS Access Key.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

createdate

Date when access key was created

status

Active: valid for API calls. Inactive: not valid for API calls

lastuseddate

Date when the key was last used

lastusedservice

The service that was last used with the access key

lastusedregion

The region where the access key was last used

accesskeyid

The ID for this access key

+
+

Relationships

+
    +
  • Account Access Keys may authenticate AWS Users and AWS Principal objects.

    +
    ```
    +(AWSUser, AWSPrincipal)-[AWS_ACCESS_KEY]->(AccountAccessKey)
    +```
    +
    +
    +
  • +
+
+
+
+

DBSubnetGroup

+

Representation of an RDS DB Subnet Group. For more information on how RDS instances interact with these, please see this article.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

id

The ARN of the DBSubnetGroup

name

The name of DBSubnetGroup

lastupdated

Timestamp of the last time the node was updated

description

Description of the DB Subnet Group

status

The status of the group

vpc_id

The ID of the VPC (Virtual Private Cloud) that this DB Subnet Group is associated with.

value

The IP address that the DNSRecord points to

+
+

Relationships

+
    +
  • RDS Instances are part of DB Subnet Groups

    +
    (RDSInstance)-[:MEMBER_OF_DB_SUBNET_GROUP]->(DBSubnetGroup)
    +
    +
    +
  • +
  • DB Subnet Groups consist of EC2 Subnets

    +
    (DBSubnetGroup)-[:RESOURCE]->(EC2Subnet)
    +
    +
    +
  • +
  • DB Subnet Groups can be tagged with AWSTags.

    +
    ```
    +(DBSubnetGroup)-[TAGGED]->(AWSTag)
    +```
    +
    +
    +
  • +
+
+
+
+

DNSRecord

+

Representation of a generic DNSRecord.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

name

The name of the DNSRecord

lastupdated

Timestamp of the last time the node was updated

id

The name of the DNSRecord concatenated with the record type

type

The record type of the DNS record

value

The IP address that the DNSRecord points to

+
+

Relationships

+
    +
  • DNSRecords can point to IP addresses.

    +
    ```
    +(DNSRecord)-[DNS_POINTS_TO]->(Ip)
    +```
    +
    +
    +
  • +
  • DNSRecords/AWSDNSRecords can point to each other.

    +
    ```
    +(AWSDNSRecord, DNSRecord)-[DNS_POINTS_TO]->(AWSDNSRecord, DNSRecord)
    +```
    +
    +
    +
  • +
  • DNSRecords can point to LoadBalancers.

    +
    ```
    +(DNSRecord)-[DNS_POINTS_TO]->(LoadBalancer)
    +```
    +
    +
    +
  • +
  • DNSRecords can be members of DNSZones.

    +
    ```
    +(DNSRecord)-[MEMBER_OF_DNS_ZONE]->(DNSZone)
    +```
    +
    +
    +
  • +
+
+
+
+

DNSRecord::AWSDNSRecord

+

Representation of an AWS DNS ResourceRecordSet.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

name

The name of the DNSRecord

lastupdated

Timestamp of the last time the node was updated

id

The zoneid for the record, the value of the record, and the type concatenated together

type

The record type of the DNS record

value

If it is an A, ALIAS, or CNAME record, this is the IP address that the DNSRecord points to. If it is an NS record, the name is used here.

+
+

Relationships

+
    +
  • DNSRecords/AWSDNSRecords can point to each other.

    +
    ```
    +(AWSDNSRecord, DNSRecord)-[DNS_POINTS_TO]->(AWSDNSRecord, DNSRecord)
    +```
    +
    +
    +
  • +
  • AWSDNSRecords can point to LoadBalancers.

    +
    ```
    +(AWSDNSRecord)-[DNS_POINTS_TO]->(LoadBalancer, ESDomain)
    +```
    +
    +
    +
  • +
  • AWSDNSRecords can be members of AWSDNSZones.

    +
    ```
    +(AWSDNSRecord)-[MEMBER_OF_DNS_ZONE]->(AWSDNSZone)
    +```
    +
    +
    +
  • +
+
+
+
+

DNSZone

+

Representation of a generic DNS Zone.

+ ++++ + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

name

the name of the DNS zone

comment

Comments about the zone

+
+

Relationships

+
    +
  • DNSRecords can be members of DNSZones.

    +
    ```
    +(DNSRecord)-[MEMBER_OF_DNS_ZONE]->(DNSZone)
    +```
    +
    +
    +
  • +
+
+
+
+

DNSZone::AWSDNSZone

+

Representation of an AWS DNS HostedZone.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

name

the name of the DNS zone

zoneid

The zoneid defined by Amazon Route53

lastupdated

Timestamp of the last time the node was updated

comment

Comments about the zone

privatezone

Whether or not this is a private DNS zone

+
+

Relationships

+
    +
  • AWSDNSZones and DNSZones can be part of AWSAccounts.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(AWSDNSZone)
    +```
    +
    +
    +
  • +
  • AWSDNSRecords can be members of AWSDNSZones.

    +
    ```
    +(AWSDNSRecord)-[MEMBER_OF_DNS_ZONE]->(AWSDNSZone)
    +```
    +
    +
    +
  • +
  • AWSDNSZone can have subzones hosted by another AWSDNSZone

    +
    ```
    +(AWSDNSZone)<-[SUBZONE]-(AWSDNSZone)
    +```
    +
    +
    +
  • +
+
+
+
+

DynamoDBTable

+

Representation of an AWS DynamoDBTable.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

name

The name of the table

id

The ARN of the table

region

The AWS region of the table

arn

The AWS-unique identifier

+
+

Relationships

+
    +
  • DynamoDBTables belong to AWS Accounts.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(DynamoDBTable)
    +```
    +
    +
    +
  • +
+
+
+
+

EC2Instance

+

Our representation of an AWS EC2 Instance.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

Same as instanceid below.

instanceid

The instance id provided by AWS. This is globally unique

publicdnsname

The public DNS name assigned to the instance

publicipaddress

The public IPv4 address assigned to the instance if applicable

privateipaddress

The private IPv4 address assigned to the instance

imageid

The ID of the Amazon Machine Image used to launch the instance

subnetid

The ID of the EC2Subnet associated with this instance

instancetype

The instance type. See API docs linked above for specifics.

iaminstanceprofile

The IAM instance profile associated with the instance, if applicable.

launchtime

The time the instance was launched

monitoringstate

Whether monitoring is enabled. Valid Values: disabled, disabling, enabled, pending.

state

The current state of the instance.

launchtimeunix

The time the instance was launched in unix time

region

The AWS region this Instance is running in

exposed_internet

The exposed_internet flag on an EC2 instance is set to True when (1) the instance is part of an EC2 security group or is connected to a network interface connected to an EC2 security group that allows connectivity from the 0.0.0.0/0 subnet or (2) the instance is connected to an Elastic Load Balancer that has its own exposed_internet flag set to True.

availabilityzone

The Availability Zone of the instance.

tenancy

The tenancy of the instance.

hostresourcegrouparn

The ARN of the host resource group in which to launch the instances.

platform

The value is Windows for Windows instances; otherwise blank.

architecture

The architecture of the image.

ebsoptimized

Indicates whether the instance is optimized for Amazon EBS I/O.

bootmode

The boot mode of the instance.

instancelifecycle

Indicates whether this is a Spot Instance or a Scheduled Instance.

hibernationoptions

Indicates whether the instance is enabled for hibernation.

+
+

Relationships

+
    +
  • EC2 Instances can be part of subnets

    +
    ```
    +(EC2Instance)-[PART_OF_SUBNET]->(EC2Subnet)
    +```
    +
    +
    +
  • +
  • EC2 Instances can have NetworkInterfaces connected to them

    +
    ```
    +(EC2Instance)-[NETWORK_INTERFACE]->(NetworkInterface)
    +```
    +
    +
    +
  • +
  • EC2 Instances may be members of EC2 Reservations

    +
    ```
    +(EC2Instance)-[MEMBER_OF_EC2_RESERVATION]->(EC2Reservation)
    +```
    +
    +
    +
  • +
  • EC2 Instances can be part of EC2 Security Groups

    +
    ```
    +(EC2Instance)-[MEMBER_OF_EC2_SECURITY_GROUP]->(EC2SecurityGroup)
    +```
    +
    +
    +
  • +
  • Load Balancers can expose (be connected to) EC2 Instances

    +
    ```
    +(LoadBalancer)-[EXPOSE]->(EC2Instance)
    +```
    +
    +
    +
  • +
  • Package and Dependency nodes can be deployed in EC2 Instances.

    +
    ```
    +(Package, Dependency)-[DEPLOYED]->(EC2Instance)
    +```
    +
    +
    +
  • +
  • AWS Accounts contain EC2 Instances.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(EC2Instance)
    +```
    +
    +
    +
  • +
  • EC2 Instances can be tagged with AWSTags.

    +
    ```
    +(EC2Instance)-[TAGGED]->(AWSTag)
    +```
    +
    +
    +
  • +
  • AWS EBS Volumes are attached to an EC2 Instance

    +
    ```
    +(EBSVolume)-[ATTACHED_TO]->(EC2Instance)
    +```
    +
    +
    +
  • +
  • EC2 Instances can assume IAM Roles.

    +
    ```
    +(EC2Instance)-[STS_ASSUMEROLE_ALLOW]->(AWSRole)
    +```
    +
    +
    +
  • +
  • EC2Instances can have SSMInstanceInformation

    +
    ```
    +(EC2Instance)-[HAS_INFORMATION]->(SSMInstanceInformation)
    +```
    +
    +
    +
  • +
  • EC2Instances can have SSMInstancePatches

    +
    ```
    +(EC2Instance)-[HAS_PATCH]->(SSMInstancePatch)
    +```
    +
    +
    +
  • +
+
+
+
+

EC2KeyPair

+

Representation of an AWS EC2 Key Pair

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

keyname

The name of the key pair

keyfingerprint

The fingerprint of the public key

region

The AWS region

arn

AWS-unique identifier for this object

id

same as arn

user_uploaded

user_uploaded is set to True if the the KeyPair was uploaded to AWS. Uploaded KeyPairs will have 128-bit MD5 hashed keyfingerprint, and KeyPairs from AWS will have 160-bit SHA-1 hashed keyfingerprints.

duplicate_keyfingerprint

duplicate_keyfingerprint is set to True if the KeyPair has the same keyfingerprint as another KeyPair.

+
+

Relationships

+
    +
  • EC2 key pairs are contained in AWS Accounts.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(EC2KeyPair)
    +```
    +
    +
    +
  • +
  • EC2 key pairs can be used to log in to AWS EC2 isntances.

    +
    ```
    +(EC2KeyPair)-[SSH_LOGIN_TO]->(EC2Instance)
    +```
    +
    +
    +
  • +
  • EC2 key pairs have matching keyfingerprint.

    +
    ```
    +(EC2KeyPair)-[MATCHING_FINGERPRINT]->(EC2KeyPair)
    +```
    +
    +
    +
  • +
+
+
+
+

EC2PrivateIp

+

Representation of an AWS EC2 InstancePrivateIpAddress

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

network_interface_id

id of the network interface with which the IP is associated with

primary

Indicates whether this IPv4 address is the primary private IP address of the network interface.

private_ip_address

The private IPv4 address of the network interface.

public_ip

The public IP address or Elastic IP address bound to the network interface.

ip_owner_id

Id of the owner, e.g. amazon-elb for ELBs

+
+

Relationships

+
    +
  • EC2PrivateIps are connected with NetworkInterfaces.

    +
    ```
    +(NetworkInterface)-[PRIVATE_IP_ADDRESS]->(EC2PrivateIp)
    +```
    +
    +
    +
  • +
+
+
+
+

EC2Reservation

+

Representation of an AWS EC2 Reservation.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

requesterid

The ID of the requester that launched the instances on your behalf

reservationid

The ID of the reservation.

region

The AWS region

ownerid

The ID of the AWS account that owns the reservation.

+
+

Relationships

+
    +
  • EC2 reservations are contained in AWS Accounts.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(EC2Reservation)
    +```
    +
    +
    +
  • +
  • EC2 Instances are members of EC2 reservations.

    +
    ```
    +(EC2Instance)-[MEMBER_OF_EC2_RESERVATION]->(EC2Reservation)
    +```
    +
    +
    +
  • +
+
+
+
+

EC2SecurityGroup

+

Representation of an AWS EC2 Security Group.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

groupid

The ID of the security group

name

The name of the security group

description

A description of the security group

id

Same as groupid

region

The AWS region this security group is installed in

+
+

Relationships

+
    +
  • EC2 Instances, Network Interfaces, Load Balancers, Elastic Search Domains, IP Rules, IP Permission Inbound nodes, and RDS Instances can be members of EC2 Security Groups.

    +
    ```
    +(EC2Instance,
    + NetworkInterface,
    + LoadBalancer,
    + ESDomain,
    + IpRule,
    + IpPermissionInbound,
    + RDSInstance,
    + AWSVpc)-[MEMBER_OF_EC2_SECURITY_GROUP]->(EC2SecurityGroup)
    +```
    +
    +
    +
  • +
  • Load balancers can define inbound Source Security Groups.

    +
    ```
    +(LoadBalancer)-[SOURCE_SECURITY_GROUP]->(EC2SecurityGroup)
    +```
    +
    +
    +
  • +
  • AWS Accounts contain EC2 Security Groups.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(EC2SecurityGroup)
    +```
    +
    +
    +
  • +
  • EC2 SecurityGroups can be tagged with AWSTags.

    +
    ```
    +(EC2SecurityGroup)-[TAGGED]->(AWSTag)
    +```
    +
    +
    +
  • +
  • Redshift clusters can be members of EC2 Security Groups.

    +
    (RedshiftCluster)-[MEMBER_OF_EC2_SECURITY_GROUP]->(EC2SecurityGroup)
    +
    +
    +
  • +
+
+
+
+

EC2Subnet

+

Representation of an AWS EC2 Subnet.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

subnetid

The ID of the subnet

id

same as subnetid

region

The AWS region the subnet is installed on

name

The IPv4 CIDR block assigned to the subnet

cidr_block

The IPv4 CIDR block assigned to the subnet

available_ip_address_count

The number of unused private IPv4 addresses in the subnet. The IPv4 addresses for any stopped instances are considered unavailable

default_for_az

Indicates whether this is the default subnet for the Availability Zone.

map_customer_owned_ip_on_launch

Indicates whether a network interface created in this subnet (including a network interface created by RunInstances ) receives a customer-owned IPv4 address

map_public_ip_on_launch

Indicates whether instances launched in this subnet receive a public IPv4 address

subnet_arn

The Amazon Resource Name (ARN) of the subnet

availability_zone

The Availability Zone of the subnet

availability_zone_id

The AZ ID of the subnet

state

The current state of the subnet.

assignipv6addressoncreation

Indicates whether a network interface created in this subnet (including a network interface created by RunInstances ) receives an IPv6 address.

+
+

Relationships

+
    +
  • A Network Interface can be part of an EC2 Subnet.

    +
    ```
    +(NetworkInterface)-[PART_OF_SUBNET]->(EC2Subnet)
    +```
    +
    +
    +
  • +
  • An EC2 Instance can be part of an EC2 Subnet.

    +
    ```
    +(EC2Instance)-[PART_OF_SUBNET]->(EC2Subnet)
    +```
    +
    +
    +
  • +
  • A LoadBalancer can be part of an EC2 Subnet.

    +
    ```
    +(LoadBalancer)-[SUBNET]->(EC2Subnet)
    +
    +```
    +
    +
    +
  • +
  • A LoadBalancer can be part of an EC2 Subnet.

    +
    ```
    +(LoadBalancer)-[PART_OF_SUBNET]->(EC2Subnet)
    +```
    +
    +
    +
  • +
  • A LoadBalancerV2 can be part of an EC2 Subnet.

    +
    ```
    +(LoadBalancerV2)-[PART_OF_SUBNET]->(EC2Subnet)
    +```
    +
    +
    +
  • +
  • DB Subnet Groups consist of EC2 Subnets

    +
    (DBSubnetGroup)-[RESOURCE]->(EC2Subnet)
    +
    +
    +
  • +
  • EC2 Subnets can be tagged with AWSTags.

    +
    ```
    +(EC2Subnet)-[TAGGED]->(AWSTag)
    +```
    +
    +
    +
  • +
  • EC2 Subnets are member of a VPC.

    +
    ```
    +(EC2Subnet)-[MEMBER_OF_AWS_VPC]->(AWSVpc)
    +```
    +
    +
    +
  • +
  • EC2 Subnets belong to AWS Accounts

    +
    ```
    +(AWSAccount)-[RESOURCE]->(EC2Subnet)
    +```
    +
    +
    +
  • +
  • EC2PrivateIps are connected with NetworkInterfaces.

    +
    (NetworkInterface)-[PRIVATE_IP_ADDRESS]->(EC2PrivateIp)
    +
    +
    +
  • +
+
+
+
+

AWSInternetGateway

+
+

Representation of an AWS Interent Gateway.

+
+ ++++ + + + + + + + + + + + + + + + + +

Field

Description

id

Internet gateway ID

arn

Amazon Resource Name

region

The region of the gateway

+
+

Relationships

+
    +
  • Internet Gateways are attached to a VPC.

    +
    ```
    +(AWSInternetGateway)-[ATTACHED_TO]->(AWSVpc)
    +```
    +
    +
    +
  • +
  • Internet Gateways belong to AWS Accounts

    +
    ```
    +(AWSAccount)-[RESOURCE]->(AWSInternetGateway)
    +```
    +
    +
    +
  • +
+
+
+
+

ECRRepository

+

Representation of an AWS Elastic Container Registry Repository.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

id

Same as ARN

arn

The ARN of the repository

name

The name of the repository

region

The region of the repository

created_at

Date and time when the repository was created

+
+

Relationships

+
    +
  • An ECRRepository contains ECRRepositoryImages:

    +
    (:ECRRepository)-[:REPO_IMAGE]->(:ECRRepositoryImage)
    +
    +
    +
  • +
+
+
+
+

ECRRepositoryImage

+

An ECR image may be referenced and tagged by more than one ECR Repository. To best represent this, we’ve created an +ECRRepositoryImage node as a layer of indirection between the repo and the image.

+

More concretely explained, we run +``ecr.list_images()` <https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_ImageIdentifier.html>`_, and then +store the image tag on an ECRRepositoryImage node and the image digest hash on a separate ECRImage node.

+

This way, more than one ECRRepositoryImage can reference/be connected to the same ECRImage.

+ ++++ + + + + + + + + + + + + + + + + +

Field

Description

tag

The tag applied to the repository image, e.g. “latest”

uri

The URI where the repository image is stored

id

same as uri

+
+

Relationships

+
    +
  • An ECRRepository contains ECRRepositoryImages:

    +
    (:ECRRepository)-[:REPO_IMAGE]->(:ECRRepositoryImage)
    +
    +
    +
  • +
  • ECRRepositoryImages reference ECRImages

    +
    (:ECRRepositoryImage)-[:IMAGE]->(:ECRImage)
    +
    +
    +
  • +
+
+
+
+

ECRImage

+

Representation of an ECR image identified by its digest (e.g. a SHA hash). Specifically, this is the “digest part” of +``ecr.list_images()` <https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_ImageIdentifier.html>`_. Also see +ECRRepositoryImage.

+ ++++ + + + + + + + + + + + + + +

Field

Description

digest

The hash of this ECR image

id

Same as digest

+
+

Relationships

+
    +
  • ECRRepositoryImages reference ECRImages

    +
    (:ECRRepositoryImage)-[:IMAGE]->(:ECRImage)
    +
    +
    +
  • +
  • Software packages are a part of ECR Images

    +
    (:Package)-[:DEPLOYED]->(:ECRImage)
    +
    +
    +
  • +
+
+
+
+

Package

+

Representation of a software package, as found by an AWS ECR vulnerability scan.

+ ++++ + + + + + + + + + + + + + + + + +

Field

Description

id

Concatenation of {version}|{name}

version

The version of the package, includes the Linux distro that it was built for

name

The name of the package

+
+

Relationships

+
    +
  • Software packages are a part of ECR Images

    +
    (:Package)-[:DEPLOYED]->(:ECRImage)
    +
    +
    +
  • +
  • AWS ECR scans yield ECRScanFindings that affect software packages

    +
    (:ECRScanFindings)-[:AFFECTS]->(:Package)
    +
    +
    +
  • +
+
+
+
+

ECRScanFinding (:Risk:CVE)

+

Representation of a scan finding from AWS ECR. This is the result output of ``ecr.describe_image_scan_findings()` <https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_DescribeImageScanFindings.html>`_.

+ ++++ + + + + + + + + + + + + + + + + + + + +

Field

Description

name

The name of the ECR scan finding, e.g. a CVE name

id

Same as name

severity

The severity of the risk

uri

A URI link to a descriptive article on the risk

+
+

Relationships

+
    +
  • AWS ECR scans yield ECRScanFindings that affect software packages

    +
    (:ECRScanFindings)-[:AFFECTS]->(:Package)
    +
    +
    +
  • +
+
+
+
+

EKSCluster

+

Representation of an AWS EKS Cluster.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

created_at

The date and time the cluster was created

region

The AWS region

arn

AWS-unique identifier for this object

id

same as arn

name

Name of the EKS Cluster

endpoint

The endpoint for the Kubernetes API server.

endpoint_public_access

Indicates whether the Amazon EKS public API server endpoint is enabled

exposed_internet

Set to True if the EKS Cluster public API server endpoint is enabled

rolearn

The ARN of the IAM role that provides permissions for the Kubernetes control plane to make calls to AWS API

version

Kubernetes version running

platform_version

Version of EKS

status

Status of the cluster. Valid Values: creating, active, deleting, failed, updating

audit_logging

Whether audit logging is enabled

+
+

Relationships

+
    +
  • EKS Clusters belong to AWS Accounts.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(EKSCluster)
    +```
    +
    +
    +
  • +
+
+
+
+

EMRCluster

+

Representation of an AWS EMR Cluster.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

region

The AWS region

arn

AWS-unique identifier for this object

id

The Id of the EMR Cluster.

instance_collection_type

The instance group configuration of the cluster. A value of INSTANCE_GROUP indicates a uniform instance group configuration. A value of INSTANCE_FLEET indicates an instance fleets configuration.

log_encryption_kms_key_id

The KMS key used for encrypting log files.

requested_ami_version

The AMI version requested for this cluster.

running_ami_version

The AMI version running on this cluster.

release_label

The Amazon EMR release label, which determines the version of open-source application packages installed on the cluster.

auto_terminate

Specifies whether the cluster should terminate after completing all steps.

termination_protected

Indicates whether Amazon EMR will lock the cluster to prevent the EC2 instances from being terminated by an API call or user intervention, or in the event of a cluster error.

visible_to_all_users

Indicates whether the cluster is visible to IAM principals in the Amazon Web Services account associated with the cluster.

master_public_dns_name

The DNS name of the master node. If the cluster is on a private subnet, this is the private DNS name. On a public subnet, this is the public DNS name.

security_configuration

The name of the security configuration applied to the cluster.

autoscaling_role

An IAM role for automatic scaling policies.

scale_down_behavior

The way that individual Amazon EC2 instances terminate when an automatic scale-in activity occurs or an instance group is resized.

custom_ami_id

The ID of a custom Amazon EBS-backed Linux AMI if the cluster uses a custom AMI.

repo_upgrade_on_boot

Specifies the type of updates that are applied from the Amazon Linux AMI package repositories when an instance boots using the AMI.

outpost_arn

The Amazon Resource Name (ARN) of the Outpost where the cluster is launched.

log_uri

The path to the Amazon S3 location where logs for this cluster are stored.

servicerole

Service Role of the EMR Cluster

+
+

Relationships

+
    +
  • EMR Clusters belong to AWS Accounts.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(EMRCluster)
    +```
    +
    +
    +
  • +
+
+
+
+

ESDomain

+

Representation of an AWS ElasticSearch Domain (see ElasticsearchDomainConfig).

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

elasticsearch_cluster_config_instancetype

The instancetype

elasticsearch_version

The version of elasticsearch

elasticsearch_cluster_config_zoneawarenessenabled

Indicates whether multiple Availability Zones are enabled.

elasticsearch_cluster_config_dedicatedmasterenabled

Indicates whether dedicated master nodes are enabled for the cluster. True if the cluster will use a dedicated master node. False if the cluster will not.

elasticsearch_cluster_config_dedicatedmastercount

Number of dedicated master nodes in the cluster.

elasticsearch_cluster_config_dedicatedmastertype

Amazon ES instance type of the dedicated master nodes in the cluster.

domainid

Unique identifier for an Amazon ES domain.

encryption_at_rest_options_enabled

Specify true to enable encryption at rest.

deleted

Status of the deletion of an Amazon ES domain. True if deletion of the domain is complete. False if domain deletion is still in progress.

id

same as domainid

arn

Amazon Resource Name (ARN) of an Amazon ES domain.

exposed_internet

exposed_internet is set to True if the ElasticSearch domain has a policy applied to it that makes it internet-accessible. This policy determination is made by using the policyuniverse library. The code for this augmentation is implemented at cartography.intel.aws.elasticsearch._process_access_policy().

+
+

Relationships

+
    +
  • Elastic Search domains can be members of EC2 Security Groups.

    +
    ```
    +(ESDomain)-[MEMBER_OF_EC2_SECURITY_GROUP]->(EC2SecurityGroup)
    +```
    +
    +
    +
  • +
  • Elastic Search domains belong to AWS Accounts.

    +
    (AWSAccount)-[RESOURCE]->(ESDomain)
    +
    +
    +
  • +
  • DNS Records can point to Elastic Search domains.

    +
    ```
    +(DNSRecord)-[DNS_POINTS_TO]->(ESDomain)
    +```
    +
    +
    +
  • +
+
+
+
+

Endpoint

+

Representation of a generic network endpoint.

+ ++++ + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

protocol

The protocol of this endpoint

port

The port of this endpoint

+
+

Relationships

+
    +
  • Endpoints can be installed load balancers, though more specifically we would refer to these Endpoint nodes as ELBListeners.

    +
    ```
    +(LoadBalancer)-[ELB_LISTENER]->(Endpoint)
    +```
    +
    +
    +
  • +
+
+
+
+

Endpoint::ELBListener

+

Representation of an AWS Elastic Load Balancer Listener. Here, an ELBListener is a more specific type of Endpoint. Here’a good introduction.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

protocol

The protocol of this endpoint

port

The port of this endpoint

policy_names

A list of SSL policy names set on the listener.

id

The ELB ID. This is a concatenation of the DNS name, port, and protocol.

instance_port

The port open on the EC2 instance that this listener is connected to

instance_protocol

The protocol defined on the EC2 instance that this listener is connected to

+
+

Relationships

+
    +
  • A ELBListener is installed on a load balancer.

    +
    ```
    +(LoadBalancer)-[ELB_LISTENER]->(ELBListener)
    +```
    +
    +
    +
  • +
+
+
+
+

Endpoint::ELBV2Listener

+

Representation of an AWS Elastic Load Balancer V2 Listener.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

protocol

The protocol of this endpoint - One of 'HTTP''HTTPS''TCP''TLS''UDP''TCP_UDP'

port

The port of this endpoint

ssl_policy

Only set for HTTPS or TLS listener. The security policy that defines which protocols and ciphers are supported.

targetgrouparn

The ARN of the Target Group, if the Action type is forward.

+
+

Relationships

+
    +
  • A ELBV2Listener is installed on a LoadBalancerV2.

    +
    ```
    +(elbv2)-[r:ELBV2_LISTENER]->(ELBV2Listener)
    +```
    +
    +
    +
  • +
+
+
+
+

Ip

+

Represents a generic IP address.

+ ++++ + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

ip

The IPv4 address

id

Same as ip

+
+

Relationships

+
    +
  • DNSRecords can point to IP addresses.

    +
    ```
    +(DNSRecord)-[DNS_POINTS_TO]->(Ip)
    +```
    +
    +
    +
  • +
+
+
+
+

IpRule

+

Represents a generic IP rule. The creation of this node is currently derived from ingesting AWS EC2 Security Group rules.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

ruleid

{group_id}/{rule_type}/{from_port}{to_port}{protocol}

groupid

The groupid of the EC2 Security Group that this was derived from

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

protocol

The protocol this rule applies to

fromport

Lowest port in the range defined by this rule

toport

Highest port in the range defined by this rule

+
+

Relationships

+
    +
  • IpRules are defined from EC2SecurityGroups.

    +
    ```
    +(IpRule, IpPermissionInbound)-[MEMBER_OF_EC2_SECURITY_GROUP]->(EC2SecurityGroup)
    +```
    +
    +
    +
  • +
+
+
+
+

IpRule::IpPermissionInbound

+

An IpPermissionInbound node is a specific type of IpRule. It represents a generic inbound IP-based rules. The creation of this node is currently derived from ingesting AWS EC2 Security Group rules.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

ruleid

{group_id}/{rule_type}/{from_port}{to_port}{protocol}

groupid

The groupid of the EC2 Security Group that this was derived from

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

protocol

The protocol this rule applies to

fromport

Lowest port in the range defined by this rule

toport

Highest port in the range defined by this rule

+
+

Relationships

+
    +
  • IpPermissionInbound rules are defined from EC2SecurityGroups.

    +
    ```
    +(IpRule, IpPermissionInbound)-[MEMBER_OF_EC2_SECURITY_GROUP]->(EC2SecurityGroup)
    +```
    +
    +
    +
  • +
+
+
+
+

LoadBalancer

+

Represents an AWS Elastic Load Balancer. See spec for details.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

scheme

The type of load balancer. Valid only for load balancers in a VPC. If scheme is internet-facing, the load balancer has a public DNS name that resolves to a public IP address. If scheme is internal, the load balancer has a public DNS name that resolves to a private IP address.

name

The name of the load balancer

dnsname

The DNS name of the load balancer.

canonicalhostedzonename

The DNS name of the load balancer

id

Currently set to the dnsname of the load balancer.

region

The region of the load balancer

createdtime

The date and time the load balancer was created.

canonicalhostedzonenameid

The ID of the Amazon Route 53 hosted zone for the load balancer.

exposed_internet

The exposed_internet flag is set to True when the load balancer’s scheme field is set to internet-facing. This indicates that the load balancer has a public DNS name that resolves to a public IP address.

+
+

Relationships

+
    +
  • LoadBalancers can be connected to EC2Instances and therefore expose them.

    +
    ```
    +(LoadBalancer)-[EXPOSE]->(EC2Instance)
    +```
    +
    +
    +
  • +
  • LoadBalancers can have source security groups configured.

    +
    ```
    +(LoadBalancer)-[SOURCE_SECURITY_GROUP]->(EC2SecurityGroup)
    +```
    +
    +
    +
  • +
  • LoadBalancers can be part of EC2SecurityGroups.

    +
    ```
    +(LoadBalancer)-[MEMBER_OF_EC2_SECURITY_GROUP]->(EC2SecurityGroup)
    +```
    +
    +
    +
  • +
  • LoadBalancers can be part of EC2 Subnets

    +
    ```
    +(LoadBalancer)-[SUBNET]->(EC2Subnet)
    +```
    +
    +
    +
  • +
  • LoadBalancers can be part of EC2 Subnets

    +
    ```
    +(LoadBalancer)-[PART_OF_SUBNET]->(EC2Subnet)
    +```
    +
    +
    +
  • +
  • LoadBalancers can have listeners configured to accept connections from clients (good introduction).

    +
    ```
    +(LoadBalancer)-[ELB_LISTENER]->(Endpoint, ELBListener)
    +```
    +
    +
    +
  • +
  • LoadBalancers are part of AWSAccounts.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(LoadBalancer)
    +```
    +
    +
    +
  • +
  • AWSDNSRecords and DNSRecords point to LoadBalancers.

    +
    ```
    +(AWSDNSRecord, DNSRecord)-[DNS_POINTS_TO]->(LoadBalancer)
    +```
    +
    +
    +
  • +
+
+
+
+

LoadBalancerV2

+

Represents an Elastic Load Balancer V2 (Application Load Balancer or Network Load Balancer.) API reference here.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

scheme

The type of load balancer. If scheme is internet-facing, the load balancer has a public DNS name that resolves to a public IP address. If scheme is internal, the load balancer has a public DNS name that resolves to a private IP address.

name

The name of the load balancer

dnsname

The DNS name of the load balancer.

exposed_internet

The exposed_internet flag is set to True when the load balancer’s scheme field is set to internet-facing. This indicates that the load balancer has a public DNS name that resolves to a public IP address.

id

Currently set to the dnsname of the load balancer.

type

Can be application or network

region

The region of the load balancer

createdtime

The date and time the load balancer was created.

canonicalhostedzonenameid

The ID of the Amazon Route 53 hosted zone for the load balancer.

+
+

Relationships

+
    +
  • LoadBalancerV2’s can be connected to EC2Instances and therefore expose them.

    +
    ```
    +(LoadBalancerV2)-[EXPOSE]->(EC2Instance)
    +```
    +
    +
    +
  • +
  • LoadBalancerV2’s can be part of EC2SecurityGroups but only if their type = “application”. NLBs don’t have SGs.

    +
    ```
    +(LoadBalancerV2)-[MEMBER_OF_EC2_SECURITY_GROUP]->(EC2SecurityGroup)
    +```
    +
    +
    +
  • +
  • LoadBalancerV2’s can be part of EC2 Subnets

    +
    ```
    +(LoadBalancerV2)-[SUBNET]->(EC2Subnet)
    +```
    +
    +
    +
  • +
  • LoadBalancerV2’s can be part of EC2 Subnets

    +
    ```
    +(LoadBalancerV2)-[PART_OF_SUBNET]->(EC2Subnet)
    +```
    +
    +
    +
  • +
  • LoadBalancerV2’s have listeners:

    +
    ```
    +(LoadBalancerV2)-[ELBV2_LISTENER]->(ELBV2Listener)
    +```
    +
    +
    +
  • +
+
+
+
+

Nameserver

+

Represents a DNS nameserver. +| Field | Description | +|-------|————-| +| firstseen| Timestamp of when a sync job first discovered this node | +| lastupdated | Timestamp of the last time the node was updated | +| id | The address of the nameserver| +| name | The name or address of the nameserver|

+
+

Relationships

+
    +
  • Nameservers are nameservers for to DNSZone.

    +
    ```
    +(Nameserver)-[NAMESERVER]->(DNSZone)
    +```
    +
    +
    +
  • +
+
+
+
+

NetworkInterface

+

Representation of a generic Network Interface. Currently however, we only create NetworkInterface nodes from AWS EC2 Instances. The spec for an AWS EC2 network interface is here.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

mac_address

The MAC address of the network interface

description

Description of the network interface

private_ip_address

The primary IPv4 address of the network interface within the subnet

id

The ID of the network interface. (known as networkInterfaceId in EC2)

private_dns_name

The private DNS name

status

Status of the network interface. Valid Values: available | associated | attaching | in-use | detaching

subnetid

The ID of the subnet

interface_type

Describes the type of network interface. Valid values: interface | efa

requester_id

Id of the requester, e.g. amazon-elb for ELBs

requester_managed

Indicates whether the interface is managed by the requester

source_dest_check

Indicates whether to validate network traffic to or from this network interface.

public_ip

Public IPv4 address attached to the interface

+
+

Relationships

+
    +
  • EC2 Network Interfaces belong to AWS accounts.

    +
    (NetworkInterface)<-[:RESOURCE]->(:AWSAccount)
    +
    +
    +
  • +
  • Network interfaces can be connected to EC2Subnets.

    +
    ```
    +(NetworkInterface)-[PART_OF_SUBNET]->(EC2Subnet)
    +```
    +
    +
    +
  • +
  • Network interfaces can be members of EC2SecurityGroups.

    +
    ```
    +(NetworkInterface)-[MEMBER_OF_EC2_SECURITY_GROUP]->(EC2SecurityGroup)
    +```
    +
    +
    +
  • +
  • EC2Instances can have NetworkInterfaces connected to them.

    +
    ```
    +(EC2Instance)-[NETWORK_INTERFACE]->(NetworkInterface)
    +```
    +
    +
    +
  • +
  • LoadBalancers can have NetworkInterfaces connected to them.

    +
    ```
    +(LoadBalancer)-[NETWORK_INTERFACE]->(NetworkInterface)
    +```
    +
    +
    +
  • +
  • LoadBalancerV2s can have NetworkInterfaces connected to them.

    +
    ```
    +(LoadBalancerV2)-[NETWORK_INTERFACE]->(NetworkInterface)
    +```
    +
    +
    +
  • +
  • EC2PrivateIps are connected to a NetworkInterface.

    +
    ```
    +(NetworkInterface)-[PRIVATE_IP_ADDRESS]->(EC2PrivateIp)
    +```
    +
    +
    +
  • +
  • EC2 Network Interfaces can be tagged with AWSTags.

    +
    ```
    +(NetworkInterface)-[TAGGED]->(AWSTag)
    +```
    +
    +
    +
  • +
+
+
+
+

AWSPeeringConnection

+

Representation of an AWS PeeringConnection implementing an AWS VpcPeeringConnection object.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

vpcPeeringConnectionId, The ID of the VPC peering connection.

allow_dns_resolution_from_remote_vpc

Indicates whether a local VPC can resolve public DNS hostnames to private IP addresses when queried from instances in a peer VPC.

allow_egress_from_local_classic_link_to_remote_vpc

Indicates whether a local ClassicLink connection can communicate with the peer VPC over the VPC peering connection.

allow_egress_from_local_vpc_to_remote_classic_link

Indicates whether a local VPC can communicate with a ClassicLink connection in the peer VPC over the VPC peering connection.

requester_region

Peering requester region

accepter_region

Peering accepter region

status_code

The status of the VPC peering connection.

status_message

A message that provides more information about the status, if applicable.

+
+

Relationships

+
    +
  • AWSVpc is an accepter or requester vpc.

    +
    (AWSVpc)<-[REQUESTER_VPC]-(AWSPeeringConnection)
    +(AWSVpc)<-[ACCEPTER_VPC]-(AWSPeeringConnection)
    +
    +
    +
  • +
  • AWSCidrBlock is an accepter or requester cidr.

    +
    (AWSCidrBlock)<-[REQUESTER_CIDR]-(AWSPeeringConnection)
    +(AWSCidrBlock)<-[ACCEPTER_CIDR]-(AWSPeeringConnection)
    +
    +
    +
  • +
+
+
+
+

RedshiftCluster

+

Representation of an AWS RedshiftCluster.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

arn

The Amazon Resource Name (ARN) for the Redshift cluster

id

Same as arn

availability_zone

Specifies the name of the Availability Zone the cluster is located in

cluster_create_time

Provides the date and time the cluster was created

cluster_identifier

The unique identifier of the cluster.

cluster_revision_number

The specific revision number of the database in the cluster.

db_name

The name of the initial database that was created when the cluster was created. This same name is returned for the life of the cluster. If an initial database was not specified, a database named devdev was created by default.

encrypted

Specifies whether the cluster has encryption enabled

cluster_status

The current state of the cluster.

endpoint_address

DNS name of the Redshift cluster endpoint

endpoint_port

The port that the Redshift cluster’s endpoint is listening on

master_username

The master user name for the cluster. This name is used to connect to the database that is specified in the DBName parameter.

node_type

The node type for the nodes in the cluster.

number_of_nodes

The number of compute nodes in the cluster.

publicly_accessible

A boolean value that, if true, indicates that the cluster can be accessed from a public network.

vpc_id

The identifier of the VPC the cluster is in, if the cluster is in a VPC.

+
+

Relationships

+
    +
  • Redshift clusters are part of AWS Accounts.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(RedshiftCluster)
    +```
    +
    +
    +
  • +
  • Redshift clusters can be members of EC2 Security Groups.

    +
    (RedshiftCluster)-[MEMBER_OF_EC2_SECURITY_GROUP]->(EC2SecurityGroup)
    +
    +
    +
  • +
  • Redshift clusters may assume IAM roles. See this article.

    +
    (RedshiftCluster)-[STS_ASSUMEROLE_ALLOW]->(AWSPrincipal)
    +
    +
    +
  • +
  • Redshift clusters can be members of AWSVpcs.

    +
    (RedshiftCluster)-[MEMBER_OF_AWS_VPC]->(AWSVpc)
    +
    +
    +
  • +
+
+
+
+

RDSCluster

+

Representation of an AWS Relational Database Service DBCluster

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

Same as ARN

arn

The Amazon Resource Name (ARN) for the DB cluster.

allocated_storage

For all database engines except Amazon Aurora, AllocatedStorage specifies the allocated storage size in gibibytes (GiB). For Aurora, AllocatedStorage always returns 1, because Aurora DB cluster storage size isn’t fixed, but instead automatically adjusts as needed.

availability_zones

Provides the list of Availability Zones (AZs) where instances in the DB cluster can be created.

backup_retention_period

Specifies the number of days for which automatic DB snapshots are retained.

character_set_name

If present, specifies the name of the character set that this cluster is associated with.

database_name

Contains the name of the initial database of this DB cluster that was provided at create time, if one was specified when the DB cluster was created. This same name is returned for the life of the DB cluster.

db_cluster_identifier

Contains a user-supplied DB cluster identifier. This identifier is the unique key that identifies a DB cluster.

db_parameter_group

Specifies the name of the DB cluster parameter group for the DB cluster.

status

Specifies the current state of this DB cluster.

earliest_restorable_time

The earliest time to which a database can be restored with point-in-time restore.

endpoint

Specifies the connection endpoint for the primary instance of the DB cluster.

reader_endpoint

The reader endpoint for the DB cluster. The reader endpoint for a DB cluster load-balances connections across the Aurora Replicas that are available in a DB cluster. As clients request new connections to the reader endpoint, Aurora distributes the connection requests among the Aurora Replicas in the DB cluster. This functionality can help balance your read workload across multiple Aurora Replicas in your DB cluster. If a failover occurs, and the Aurora Replica that you are connected to is promoted to be the primary instance, your connection is dropped. To continue sending your read workload to other Aurora Replicas in the cluster, you can then reconnect to the reader endpoint.

multi_az

Specifies whether the DB cluster has instances in multiple Availability Zones.

engine

The name of the database engine to be used for this DB cluster.

engine_version

Indicates the database engine version.

latest_restorable_time

Specifies the latest time to which a database can be restored with point-in-time restore.

port

Specifies the port that the database engine is listening on.

master_username

Contains the master username for the DB cluster.

preferred_backup_window

Specifies the daily time range during which automated backups are created if automated backups are enabled, as determined by the BackupRetentionPeriod.

preferred_maintenance_window

Specifies the weekly time range during which system maintenance can occur, in Universal Coordinated Time (UTC).

hosted_zone_id

Specifies the ID that Amazon Route 53 assigns when you create a hosted zone.

storage_encrypted

Specifies whether the DB cluster is encrypted.

kms_key_id

If StorageEncrypted is enabled, the AWS KMS key identifier for the encrypted DB cluster. The AWS KMS key identifier is the key ARN, key ID, alias ARN, or alias name for the AWS KMS customer master key (CMK).

db_cluster_resource_id

The AWS Region-unique, immutable identifier for the DB cluster. This identifier is found in AWS CloudTrail log entries whenever the AWS KMS CMK for the DB cluster is accessed.

clone_group_id

Identifies the clone group to which the DB cluster is associated.

cluster_create_time

Specifies the time when the DB cluster was created, in Universal Coordinated Time (UTC).

earliest_backtrack_time

The earliest time to which a DB cluster can be backtracked.

backtrack_window

The target backtrack window, in seconds. If this value is set to 0, backtracking is disabled for the DB cluster. Otherwise, backtracking is enabled.

backtrack_consumed_change_records

The number of change records stored for Backtrack.

capacity

The current capacity of an Aurora Serverless DB cluster. The capacity is 0 (zero) when the cluster is paused.

engine_mode

The DB engine mode of the DB cluster, either provisioned, serverless, parallelquery, global, or multimaster.

scaling_configuration_info_min_capacity

The minimum capacity for the Aurora DB cluster in serverless DB engine mode.

scaling_configuration_info_max_capacity

The maximum capacity for an Aurora DB cluster in serverless DB engine mode.

scaling_configuration_info_auto_pause

A value that indicates whether automatic pause is allowed for the Aurora DB cluster in serverless DB engine mode.

deletion_protection

Indicates if the DB cluster has deletion protection enabled. The database can’t be deleted when deletion protection is enabled.

+
+

Relationships

+
    +
  • RDS Clusters are part of AWS Accounts.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(RDSCluster)
    +```
    +
    +
    +
  • +
  • Some RDS instances are cluster members.

    +
    (replica:RDSInstance)-[IS_CLUSTER_MEMBER_OF]->(source:RDSCluster)
    +
    +
    +
  • +
+
+
+
+

RDSInstance

+

Representation of an AWS Relational Database Service DBInstance.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

Same as ARN

arn

The Amazon Resource Name (ARN) for the DB instance.

db_instance_identifier

Contains a user-supplied database identifier. This identifier is the unique key that identifies a DB instance.

availability_zone

Specifies the name of the Availability Zone the DB instance is located in.

backup_retention_period

Specifies the number of days for which automatic DB snapshots are retained.

preferred_backup_window

Specifies the daily time range during which automated backups are created if automated backups are enabled, as determined by the BackupRetentionPeriod.

ca_certificate_identifier

The identifier of the CA certificate for this DB instance.

db_cluster_identifier

If the DB instance is a member of a DB cluster, contains the name of the DB cluster that the DB instance is a member of.

db_instance_class

Contains the name of the compute and memory capacity class of the DB instance.

db_instance_port

Specifies the port that the DB instance listens on.

dbi_resource_id

The AWS Region-unique, immutable identifier for the DB instance. This identifier is found in AWS CloudTrail log entries whenever the AWS KMS key for the DB instance is accessed.

db_name

The meaning of this parameter differs according to the database engine you use. For example, this value returns MySQL, MariaDB, or PostgreSQL information when returning values from CreateDBInstanceReadReplica since Read Replicas are only supported for these engines.

MySQL, MariaDB, SQL Server, PostgreSQL: Contains the name of the initial database of this instance that was provided at create time, if one was specified when the DB instance was created. This same name is returned for the life of the DB instance.

Oracle: Contains the Oracle System ID (SID) of the created DB instance. Not shown when the returned parameters do not apply to an Oracle DB instance.

engine

Provides the name of the database engine to be used for this DB instance.

engine_version

Indicates the database engine version.

enhanced_monitoring_resource_arn

The Amazon Resource Name (ARN) of the Amazon CloudWatch Logs log stream that receives the Enhanced Monitoring metrics data for the DB instance.

instance_create_time

Provides the date and time the DB instance was created.

kms_key_id

If StorageEncrypted is true, the AWS KMS key identifier for the encrypted DB instance.

master_username

Contains the master username for the DB instance.

monitoring_role_arn

The ARN for the IAM role that permits RDS to send Enhanced Monitoring metrics to Amazon CloudWatch Logs.

multi_az

Specifies if the DB instance is a Multi-AZ deployment.

performance_insights_enabled

True if Performance Insights is enabled for the DB instance, and otherwise false.

preferred_maintenance_window

Specifies the weekly time range during which system maintenance can occur, in Universal Coordinated Time (UTC).

publicly_accessible

Specifies the accessibility options for the DB instance. A value of true specifies an Internet-facing instance with a publicly resolvable DNS name, which resolves to a public IP address. A value of false specifies an internal instance with a DNS name that resolves to a private IP address.

storage_encrypted

Specifies whether the DB instance is encrypted.

endpoint_address

DNS name of the RDS instance

endpoint_port

The port that the RDS instance is listening on

endpoint_hostedzoneid

The AWS DNS Zone ID that is associated with the RDS instance’s DNS entry

auto_minor_version_upgrade

Specifies whether minor version upgrades are applied automatically to the DB instance during the maintenance window

iam_database_authentication_enabled

Specifies if mapping of AWS Identity and Access Management (IAM) accounts to database accounts is enabled

+
+

Relationships

+
    +
  • RDS Instances are part of AWS Accounts.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(RDSInstance)
    +```
    +
    +
    +
  • +
  • Some RDS instances are Read Replicas.

    +
    (replica:RDSInstance)-[IS_READ_REPLICA_OF]->(source:RDSInstance)
    +
    +
    +
  • +
  • RDS Instances can be members of EC2 Security Groups.

    +
    (RDSInstance)-[m:MEMBER_OF_EC2_SECURITY_GROUP]->(EC2SecurityGroup)
    +
    +
    +
  • +
  • RDS Instances are connected to DB Subnet Groups.

    +
    (RDSInstance)-[:MEMBER_OF_DB_SUBNET_GROUP]->(DBSubnetGroup)
    +
    +
    +
  • +
  • RDS Instances can be tagged with AWSTags.

    +
    ```
    +(RDSInstance)-[TAGGED]->(AWSTag)
    +```
    +
    +
    +
  • +
+
+
+
+

RDSSnapshot

+

Representation of an AWS Relational Database Service DBSnapshot.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

Same as ARN

arn

The Amazon Resource Name (ARN) for the DB snapshot.

db_snapshot_identifier

Specifies the identifier for the DB snapshot.

db_instance_identifier

Specifies the DB instance identifier of the DB instance this DB snapshot was created from.

snapshot_create_time

Specifies when the snapshot was taken in Coordinated Universal Time (UTC). Changes for the copy when the snapshot is copied.

engine

Specifies the name of the database engine.

allocated_storage

Specifies the allocated storage size in gibibytes (GiB).

status

Specifies the status of this DB snapshot.

port

Specifies the port that the database engine was listening on at the time of the snapshot.

availability_zone

Specifies the name of the Availability Zone the DB instance was located in at the time of the DB snapshot.

vpc_id

Provides the VPC ID associated with the DB snapshot.

instance_create_time

Specifies the time in Coordinated Universal Time (UTC) when the DB instance, from which the snapshot was taken, was created.

master_username

Provides the master username for the DB snapshot.

engine_version

Specifies the version of the database engine.

license_model

License model information for the restored DB instance.

snapshot_type

Provides the type of the DB snapshot.

iops

Specifies the Provisioned IOPS (I/O operations per second) value of the DB instance at the time of the snapshot.

option_group_name

Provides the option group name for the DB snapshot.

percent_progress

The percentage of the estimated data that has been transferred.

source_region

The AWS Region that the DB snapshot was created in or copied from.

source_db_snapshot_identifier

The DB snapshot Amazon Resource Name (ARN) that the DB snapshot was copied from. It only has a value in the case of a cross-account or cross-Region copy.

storage_type

Specifies the storage type associated with DB snapshot.

tde_credential_arn

The ARN from the key store with which to associate the instance for TDE encryption.

encrypted

Specifies whether the DB snapshot is encrypted.

kms_key_id

If Encrypted is true, the AWS KMS key identifier for the encrypted DB snapshot. The AWS KMS key identifier is the key ARN, key ID, alias ARN, or alias name for the KMS key.

timezone

The time zone of the DB snapshot. In most cases, the Timezone element is empty. Timezone content appears only for snapshots taken from Microsoft SQL Server DB instances that were created with a time zone specified.

iam_database_authentication_enabled

True if mapping of AWS Identity and Access Management (IAM) accounts to database accounts is enabled, and otherwise false.

processor_features

The number of CPU cores and the number of threads per core for the DB instance class of the DB instance when the DB snapshot was created.

dbi_resource_id

The identifier for the source DB instance, which can’t be changed and which is unique to an AWS Region.

original_snapshot_create_time

Specifies the time of the CreateDBSnapshot operation in Coordinated Universal Time (UTC). Doesn’t change when the snapshot is copied.

snapshot_database_time

The timestamp of the most recent transaction applied to the database that you’re backing up. Thus, if you restore a snapshot, SnapshotDatabaseTime is the most recent transaction in the restored DB instance. In contrast, originalSnapshotCreateTime specifies the system time that the snapshot completed. If you back up a read replica, you can determine the replica lag by comparing SnapshotDatabaseTime with originalSnapshotCreateTime. For example, if originalSnapshotCreateTime is two hours later than SnapshotDatabaseTime, then the replica lag is two hours.

snapshot_target

Specifies where manual snapshots are stored: AWS Outposts or the AWS Region.

storage_throughput

region

The AWS region of the snapshot

+
+

Relationships

+
    +
  • RDS Snapshots are part of AWS Accounts.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(RDSSnapshot)
    +```
    +
    +
    +
  • +
  • RDS Snapshots are connected to DB Instances.

    +
    (RDSSnapshot)-[:IS_SNAPSHOT_SOURCE]->(RDSInstance)
    +
    +
    +
  • +
  • RDS Snapshots can be tagged with AWSTags.

    +
    ```
    +(RDSSnapshot)-[TAGGED]->(AWSTag)
    +```
    +
    +
    +
  • +
+
+
+
+

S3Acl

+

Representation of an AWS S3 Access Control List.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

granteeid

The ID of the grantee as defined here

displayname

Optional display name for the ACL

permission

Valid values: FULL_CONTROL | READ | WRITE | READ_ACP | WRITE_ACP (ACP = Access Control Policy)

id

The ID of this ACL

type

The type of the grantee. Either CanonicalUser | AmazonCustomerByEmail | Group.

ownerid

The ACL’s owner ID as defined here

+
+

Relationships

+
    +
  • S3 Access Control Lists apply to S3 buckets.

    +
    ```
    +(S3Acl)-[APPLIES_TO]->(S3Bucket)
    +```
    +
    +
    +
  • +
+
+
+
+

S3Bucket

+

Representation of an AWS S3 Bucket.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

creationdate

Date-time when the bucket was created

id

Same as name, as seen below

name

The name of the bucket. This is guaranteed to be globally unique

anonymous_actions

List of anonymous internet accessible actions that may be run on the bucket. This list is taken by running policyuniverse on the policy that applies to the bucket.

anonymous_access

True if this bucket has a policy applied to it that allows anonymous access or if it is open to the internet. These policy determinations are made by using the policyuniverse library.

region

The region that the bucket is in. Only defined if the S3 bucket has a location constraint

default_encryption

True if this bucket has default encryption enabled.

encryption_algorithm

The encryption algorithm used for default encryption. Only defined if the S3 bucket has default encryption enabled.

encryption_key_id

The KMS key ID used for default encryption. Only defined if the S3 bucket has SSE-KMS enabled as the default encryption method.

bucket_key_enabled

True if a bucket key is enabled, when using SSE-KMS as the default encryption method.

versioning_status

The versioning state of the bucket.

mfa_delete

Specifies whether MFA delete is enabled in the bucket versioning configuration.

block_public_acls

Specifies whether Amazon S3 should block public access control lists (ACLs) for this bucket and objects in this bucket.

ignore_public_acls

Specifies whether Amazon S3 should ignore public ACLs for this bucket and objects in this bucket.

block_public_acls

Specifies whether Amazon S3 should block public bucket policies for this bucket.

restrict_public_buckets

Specifies whether Amazon S3 should restrict public bucket policies for this bucket.

+
+

Relationships

+
    +
  • S3Buckets are resources in an AWS Account.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(S3Bucket)
    +```
    +
    +
    +
  • +
  • S3 Access Control Lists apply to S3 buckets.

    +
    ```
    +(S3Acl)-[APPLIES_TO]->(S3Bucket)
    +```
    +
    +
    +
  • +
  • S3 Buckets can be tagged with AWSTags.

    +
    ```
    +(S3Bucket)-[TAGGED]->(AWSTag)
    +```
    +
    +
    +
  • +
+
+
+
+

S3PolicyStatement

+

Representation of an AWS S3 Bucket Policy Statements for controlling ownership of objects and ACLs of the bucket.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

policy_id

Optional string “Id” for the bucket’s policy

policy_version

Version of the bucket’s policy

id

The unique identifier for a bucket policy statement.
If the statement has an Sid the id will be calculated as S3Bucket.id/policy_statement/index of statement in statement/Sid.
If the statement has no Sid the id will be calculated as S3Bucket.id/policy_statement/index of statement in statement/

effect

Specifies “Deny” or “Allow” for the policy statement

action

Specifies permissions that policy statement applies to, as defined here

resource

Specifies the resource the bucket policy statement is based on

condition

Specifies conditions where permissions are granted: examples

sid

Optional string to label the specific bucket policy statement

+
+

Relationships

+
    +
  • S3PolicyStatements define the policy for S3 Buckets.

    +
    ```
    +(:S3Bucket)-[:POLICY_STATEMENT]->(:S3PolicyStatement)
    +```
    +
    +
    +
  • +
+
+
+
+

KMSKey

+

Representation of an AWS KMS Key.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The id of the key

name

The name of the key

description

The description of the key

enabled

Whether the key is enabled

region

The region where key is created

anonymous_actions

List of anonymous internet accessible actions that may be run on the key.

anonymous_access

True if this key has a policy applied to it that allows anonymous access or if it is open to the internet.

+
+

Relationships

+
    +
  • AWS KMS Keys are resources in an AWS Account.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(KMSKey)
    +```
    +
    +
    +
  • +
  • AWS KMS Key may also be refered as KMSAlias via aliases.

    +
    ```
    +(KMSKey)-[KNOWN_AS]->(KMSAlias)
    +```
    +
    +
    +
  • +
  • AWS KMS Key may also have KMSGrant based on grants.

    +
    ```
    +(KMSGrant)-[APPLIED_ON]->(KMSKey)
    +```
    +
    +
    +
  • +
+
+
+
+

KMSAlias

+

Representation of an AWS KMS Key Alias.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The arn of the alias

aliasname

The name of the alias

targetkeyid

The kms key id associated via this alias

+
+

Relationships

+
    +
  • AWS KMS Key may also be refered as KMSAlias via aliases.

    +
    ```
    +(KMSKey)-[KNOWN_AS]->(KMSAlias)
    +```
    +
    +
    +
  • +
+
+
+
+

KMSGrant

+

Representation of an AWS KMS Key Grant.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The id of the key grant

name

The name of the key grant

granteeprincipal

The principal associated with the key grant

creationdate

ISO 8601 date-time string when the grant was created

+
+

Relationships

+
    +
  • AWS KMS Key may also have KMSGrant based on grants.

    +
    ```
    +(KMSGrant)-[APPLIED_ON]->(KMSKey)
    +```
    +
    +
    +
  • +
+
+
+
+

APIGatewayRestAPI

+

Representation of an AWS API Gateway REST API.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The id of the REST API

createddate

The timestamp when the REST API was created

version

The version identifier for the API

minimumcompressionsize

A nullable integer that is used to enable or disable the compression of the REST API

disableexecuteapiendpoint

Specifies whether clients can invoke your API by using the default execute-api endpoint

region

The region where the REST API is created

anonymous_actions

List of anonymous internet accessible actions that may be run on the API.

anonymous_access

True if this API has a policy applied to it that allows anonymous access or if it is open to the internet.

+
+

Relationships

+
    +
  • AWS API Gateway REST APIs are resources in an AWS Account.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(APIGatewayRestAPI)
    +```
    +
    +
    +
  • +
  • AWS API Gateway REST APIs may be associated with an API Gateway Stage.

    +
    ```
    +(APIGatewayRestAPI)-[ASSOCIATED_WITH]->(APIGatewayStage)
    +```
    +
    +
    +
  • +
  • AWS API Gateway REST APIs may also have API Gateway Resource resources.

    +
    ```
    +(APIGatewayRestAPI)-[RESOURCE]->(APIGatewayResource)
    +```
    +
    +
    +
  • +
+
+
+
+

APIGatewayStage

+

Representation of an AWS API Gateway Stage.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The name of the API Gateway Stage

createddate

The timestamp when the stage was created

deploymentid

The identifier of the Deployment that the stage points to.

clientcertificateid

The identifier of a client certificate for an API stage.

cacheclusterenabled

Specifies whether a cache cluster is enabled for the stage.

cacheclusterstatus

The status of the cache cluster for the stage, if enabled.

tracingenabled

Specifies whether active tracing with X-ray is enabled for the Stage

webaclarn

The ARN of the WebAcl associated with the Stage

+
+

Relationships

+
    +
  • AWS API Gateway REST APIs may be associated with an API Gateway Stage.

    +
    ```
    +(APIGatewayRestAPI)-[ASSOCIATED_WITH]->(APIGatewayStage)
    +```
    +
    +
    +
  • +
  • AWS API Gateway Stage may also contain a Client Certificate.

    +
    ```
    +(APIGatewayStage)-[HAS_CERTIFICATE]->(APIGatewayClientCertificate)
    +```
    +
    +
    +
  • +
+
+
+
+

APIGatewayClientCertificate

+

Representation of an AWS API Gateway Client Certificate.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The identifier of the client certificate

createddate

The timestamp when the client certificate was created

expirationdate

The timestamp when the client certificate will expire

+
+

Relationships

+
    +
  • AWS API Gateway Stage may also contain a Client Certificate.

    +
    ```
    +(APIGatewayStage)-[HAS_CERTIFICATE]->(APIGatewayClientCertificate)
    +```
    +
    +
    +
  • +
+
+
+
+

APIGatewayResource

+

Representation of an AWS API Gateway Resource.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The id of the REST API

path

The timestamp when the REST API was created

pathpart

The version identifier for the API

parentid

A nullable integer that is used to enable or disable the compression of the REST API

+
+

Relationships

+
    +
  • AWS API Gateway REST APIs may also have API Gateway Resource resources.

    +
    ```
    +(APIGatewayRestAPI)-[RESOURCE]->(APIGatewayResource)
    +```
    +
    +
    +
  • +
+
+
+
+

AutoScalingGroup

+

Representation of an AWS Auto Scaling Group Resource.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

arn

The ARN of the Auto Scaling Group

name

The name of the Auto Scaling group.

createdtime

The date and time the group was created.

launchconfigurationname

The name of the associated launch configuration.

launchtemplatename

The name of the launch template.

launchtemplateid

The ID of the launch template.

launchtemplateversion

The version number of the launch template.

maxsize

The maximum size of the group.

minsize

The minimum size of the group.

defaultcooldown

The duration of the default cooldown period, in seconds.

desiredcapacity

The desired size of the group.

healthchecktype

The service to use for the health checks.

healthcheckgraceperiod

The amount of time, in seconds, that Amazon EC2 Auto Scaling waits before checking the health status of an EC2 instance that has come into service.

status

The current state of the group when the DeleteAutoScalingGroup operation is in progress.

newinstancesprotectedfromscalein

Indicates whether newly launched instances are protected from termination by Amazon EC2 Auto Scaling when scaling in.

maxinstancelifetime

The maximum amount of time, in seconds, that an instance can be in service.

capacityrebalance

Indicates whether Capacity Rebalancing is enabled.

region

The region of the auto scaling group.

+

Link to API Documentation of AWS Auto Scaling Groups

+
+

Relationships

+
    +
  • AWS Auto Scaling Groups are a resource under the AWS Account.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(AutoScalingGroup)
    +```
    +
    +
    +
  • +
  • AWS Auto Scaling Groups has one or more subnets/vpc identifiers.

    +
    ```
    +(AutoScalingGroup)-[VPC_IDENTIFIER]->(EC2Subnet)
    +```
    +
    +
    +
  • +
  • AWS EC2 Instances are members of one or more AWS Auto Scaling Groups.

    +
    ```
    +(EC2Instance)-[MEMBER_AUTO_SCALE_GROUP]->(AutoScalingGroup)
    +```
    +
    +
    +
  • +
  • AWS Auto Scaling Groups have Launch Configurations

    +
    ```
    +(AutoScalingGroup)-[HAS_LAUNCH_CONFIG]->(LaunchConfiguration)
    +```
    +
    +
    +
  • +
  • AWS Auto Scaling Groups have Launch Templates

    +
    ```
    +(AutoScalingGroup)-[HAS_LAUNCH_TEMPLATE]->(LaunchTemplate)
    +```
    +
    +
    +
  • +
+
+
+
+

EC2Image

+

Representation of an AWS EC2 Images (AMIs).

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The ID of the AMI.

name

The name of the AMI that was provided during image creation.

creationdate

The date and time the image was created.

architecture

The architecture of the image.

location

The location of the AMI.

type

The type of image.

ispublic

Indicates whether the image has public launch permissions.

platform

This value is set to windows for Windows AMIs; otherwise, it is blank.

usageoperation

The operation of the Amazon EC2 instance and the billing code that is associated with the AMI.

state

The current state of the AMI.

description

The description of the AMI that was provided during image creation.

enasupport

Specifies whether enhanced networking with ENA is enabled.

hypervisor

The hypervisor type of the image.

rootdevicename

The device name of the root device volume (for example, /dev/sda1 ).

rootdevicetype

The type of root device used by the AMI.

virtualizationtype

The type of virtualization of the AMI.

bootmode

The boot mode of the image.

region

The region of the image.

+

Link to API Documentation of EC2 Images

+
+

Relationships

+
    +
  • AWS EC2 Images (AMIs) are a resource under the AWS Account.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(EC2Image)
    +```
    +
    +
    +
  • +
+
+
+
+

EC2ReservedInstance

+

Representation of an AWS EC2 Reserved Instance.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The ID of the Reserved Instance.

availabilityzone

The Availability Zone in which the Reserved Instance can be used.

duration

The duration of the Reserved Instance, in seconds.

end

The time when the Reserved Instance expires.

start

The date and time the Reserved Instance started.

count

The number of reservations purchased.

type

The instance type on which the Reserved Instance can be used.

productdescription

The Reserved Instance product platform description.

state

The state of the Reserved Instance purchase.

currencycode

The currency of the Reserved Instance. It’s specified using ISO 4217 standard currency codes.

instancetenancy

The tenancy of the instance.

offeringclass

The offering class of the Reserved Instance.

offeringtype

The Reserved Instance offering type.

scope

The scope of the Reserved Instance.

fixedprice

The purchase price of the Reserved Instance.

region

The region of the reserved instance.

+
+

Relationships

+
    +
  • AWS EC2 Reserved Instances are a resource under the AWS Account.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(EC2ReservedInstance)
    +```
    +
    +
    +
  • +
+
+
+
+

SecretsManagerSecret

+

Representation of an AWS Secrets Manager Secret

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The arn of the secret.

created_date

The date and time when a secret was created.

deleted_date

The date and time the deletion of the secret occurred. Not present on active secrets. The secret can be recovered until the number of days in the recovery window has passed, as specified in the RecoveryWindowInDays parameter of the DeleteSecret operation.

description

The user-provided description of the secret.

kms_key_id

The ARN or alias of the AWS KMS customer master key (CMK) used to encrypt the SecretString and SecretBinary fields in each version of the secret. If you don’t provide a key, then Secrets Manager defaults to encrypting the secret fields with the default KMS CMK, the key named awssecretsmanager, for this account.

last_accessed_date

The last date that this secret was accessed. This value is truncated to midnight of the date and therefore shows only the date, not the time.

last_changed_date

The last date and time that this secret was modified in any way.

last_rotated_date

The most recent date and time that the Secrets Manager rotation process was successfully completed. This value is null if the secret hasn’t ever rotated.

name

The friendly name of the secret. You can use forward slashes in the name to represent a path hierarchy. For example, /prod/databases/dbserver1 could represent the secret for a server named dbserver1 in the folder databases in the folder prod.

owning_service

Returns the name of the service that created the secret.

primary_region

The Region where Secrets Manager originated the secret.

rotation_enabled

Indicates whether automatic, scheduled rotation is enabled for this secret.

rotation_lambda_arn

The ARN of an AWS Lambda function invoked by Secrets Manager to rotate and expire the secret either automatically per the schedule or manually by a call to RotateSecret.

rotation_rules_automatically_after_days

Specifies the number of days between automatic scheduled rotations of the secret.

+
+

Relationships

+
    +
  • AWS Secrets Manager Secrets are a resource under the AWS Account.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(SecretsManagerSecret)
    +```
    +
    +
    +
  • +
+
+
+
+

EBSVolume

+

Representation of an AWS EBS Volume.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The ID of the EBS Volume.

availabilityzone

The Availability Zone for the volume.

createtime

The time stamp when volume creation was initiated.

encrypted

Indicates whether the volume is encrypted.

size

The size of the volume, in GiBs.

state

The volume state.

outpostarn

The Amazon Resource Name (ARN) of the Outpost.

snapshotid

The snapshot ID.

iops

The number of I/O operations per second (IOPS).

type

The volume type.

fastrestored

Indicates whether the volume was created using fast snapshot restore.

multiattachenabled

Indicates whether Amazon EBS Multi-Attach is enabled.

throughput

The throughput that the volume supports, in MiB/s.

kmskeyid

The Amazon Resource Name (ARN) of the AWS Key Management Service (AWS KMS) customer master key (CMK) that was used to protect the volume encryption key for the volume.

deleteontermination

Indicates whether the volume is deleted on instance termination.

region

The region of the volume.

+
+

Relationships

+
    +
  • AWS EBS Volumes are a resource under the AWS Account.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(EBSVolume)
    +```
    +
    +
    +
  • +
  • AWS EBS Snapshots are created using EBS Volumes

    +
    ```
    +(EBSSnapshot)-[CREATED_FROM]->(EBSVolume)
    +```
    +
    +
    +
  • +
  • AWS EBS Volumes are attached to an EC2 Instance

    +
    ```
    +(EBSVolume)-[ATTACHED_TO_EC2_INSTANCE]->(EC2Instance)
    +```
    +
    +
    +
  • +
  • AWSTag

    +
    ```
    +(EBSVolume)-[TAGGED]->(AWSTag)
    +```
    +
    +
    +
  • +
+
+
+
+

EBSSnapshot

+

Representation of an AWS EBS Snapshot.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The ID of the EBS Snapshot.

description

The description of the snapshot.

progress

The progress of the snapshot, as a percentage.

encrypted

Indicates whether the snapshot is encrypted.

starttime

The time stamp when the snapshot was initiated.

state

The snapshot state.

statemessage

Encrypted Amazon EBS snapshots are copied asynchronously. If a snapshot copy operation fails (for example, if the proper AWS Key Management Service (AWS KMS) permissions are not obtained) this field displays error state details to help you diagnose why the error occurred. This parameter is only returned by DescribeSnapshots .

volumeid

The volume ID.

volumesize

The size of the volume, in GiB.

outpostarn

The ARN of the AWS Outpost on which the snapshot is stored.

dataencryptionkeyid

The data encryption key identifier for the snapshot.

kmskeyid

The Amazon Resource Name (ARN) of the AWS Key Management Service (AWS KMS) customer master key (CMK) that was used to protect the volume encryption key for the parent volume.

region

The region of the snapshot.

+
+

Relationships

+
    +
  • AWS EBS Snapshots are a resource under the AWS Account.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(EBSSnapshot)
    +```
    +
    +
    +
  • +
  • AWS EBS Snapshots are created using EBS Volumes

    +
    ```
    +(EBSSnapshot)-[CREATED_FROM]->(EBSVolume)
    +```
    +
    +
    +
  • +
+
+
+
+

SQSQueue

+

Representation of an AWS SQS Queue

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The arn of the sqs queue.

created_timestamp

The time when the queue was created in seconds

delay_seconds

The default delay on the queue in seconds.

last_modified_timestamp

The time when the queue was last changed in seconds.

maximum_message_size

The limit of how many bytes a message can contain before Amazon SQS rejects it.

message_retention_period

he length of time, in seconds, for which Amazon SQS retains a message.

policy

The IAM policy of the queue.

arn

The arn of the sqs queue.

receive_message_wait_time_seconds

The length of time, in seconds, for which the ReceiveMessage action waits for a message to arrive.

redrive_policy_dead_letter_target_arn

The Amazon Resource Name (ARN) of the dead-letter queue to which Amazon SQS moves messages after the value of maxReceiveCount is exceeded.

redrive_policy_max_receive_count

The number of times a message is delivered to the source queue before being moved to the dead-letter queue. When the ReceiveCount for a message exceeds the maxReceiveCount for a queue, Amazon SQS moves the message to the dead-letter-queue.

visibility_timeout

The visibility timeout for the queue.

kms_master_key_id

The ID of an AWS managed customer master key (CMK) for Amazon SQS or a custom CMK.

kms_data_key_reuse_period_seconds

The length of time, in seconds, for which Amazon SQS can reuse a data key to encrypt or decrypt messages before calling AWS KMS again.

fifo_queue

Whether or not the queue is FIFO.

content_based_deduplication

Whether or not content-based deduplication is enabled for the queue.

deduplication_scope

Specifies whether message deduplication occurs at the message group or queue level.

fifo_throughput_limit

Specifies whether the FIFO queue throughput quota applies to the entire queue or per message group.

+
+

Relationships

+
    +
  • AWS SQS Queues are a resource under the AWS Account.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(SQSQueue)
    +```
    +
    +
    +
  • +
  • AWS SQS Queues can have other SQS Queues configured as dead letter queues

    +
    ```
    +(SQSQueue)-[HAS_DEADLETTER_QUEUE]->(SQSQueue)
    +```
    +
    +
    +
  • +
+
+
+
+

SecurityHub

+

Representation of the configuration of AWS Security Hub

+ ++++ + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The arn of the hub resource.

subscribed_at

The date and time when Security Hub was enabled in the account.

auto_enable_controls

Whether to automatically enable new controls when they are added to standards that are enabled.

+
+

Relationships

+
    +
  • AWS Security Hub nodes are a resource under the AWS Account.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(SecurityHub)
    +```
    +
    +
    +
  • +
+
+
+
+

AWSConfigurationRecorder

+

Representation of an AWS Config Configuration Recorder

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

A combination of name:account_id:region

name

The name of the recorder.

role_arn

Amazon Resource Name (ARN) of the IAM role used to describe the AWS resources associated with the account.

recording_group_all_supported

Specifies whether AWS Config records configuration changes for every supported type of regional resource.

recording_group_include_global_resource_types

Specifies whether AWS Config includes all supported types of global resources (for example, IAM resources) with the resources that it records.

recording_group_resource_types

A comma-separated list that specifies the types of AWS resources for which AWS Config records configuration changes (for example, AWS::EC2::Instance or AWS::CloudTrail::Trail).

region

The region of the configuration recorder.

+
+

Relationships

+
    +
  • AWS Configuration Recorders are a resource under the AWS Account.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(AWSConfigurationRecorder)
    +```
    +
    +
    +
  • +
+
+
+
+

AWSConfigDeliveryChannel

+

Representation of an AWS Config Delivery Channel

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

A combination of name:account_id:region

name

The name of the delivery channel.

s3_bucket_name

The name of the Amazon S3 bucket to which AWS Config delivers configuration snapshots and configuration history files.

s3_key_prefix

The prefix for the specified Amazon S3 bucket.

s3_kms_key_arn

The Amazon Resource Name (ARN) of the AWS Key Management Service (KMS) customer managed key (CMK) used to encrypt objects delivered by AWS Config. Must belong to the same Region as the destination S3 bucket.

sns_topic_arn

The Amazon Resource Name (ARN) of the Amazon SNS topic to which AWS Config sends notifications about configuration changes.

config_snapshot_delivery_properties_delivery_frequency

The frequency with which AWS Config delivers configuration snapshots.

region

The region of the delivery channel.

+
+

Relationships

+
    +
  • AWS Config Delivery Channels are a resource under the AWS Account.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(AWSConfigDeliveryChannel)
    +```
    +
    +
    +
  • +
+
+
+
+

AWSConfigRule

+

Representation of an AWS Config Rule

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The ARN of the config rule.

name

The name of the delivery channel.

description

The description that you provide for the AWS Config rule.

arn

The ARN of the config rule.

rule_id

The ID of the AWS Config rule.

scope_compliance_resource_types

The resource types of only those AWS resources that you want to trigger an evaluation for the rule. You can only specify one type if you also specify a resource ID for ComplianceResourceId.

scope_tag_key

The tag key that is applied to only those AWS resources that you want to trigger an evaluation for the rule.

scope_tag_value

The tag value applied to only those AWS resources that you want to trigger an evaluation for the rule. If you specify a value for TagValue, you must also specify a value for TagKey.

scope_tag_compliance_resource_id

The resource types of only those AWS resources that you want to trigger an evaluation for the rule. You can only specify one type if you also specify a resource ID for ComplianceResourceId.

source_owner

Indicates whether AWS or the customer owns and manages the AWS Config rule.

source_identifier

For AWS Config managed rules, a predefined identifier from a list. For example, IAM_PASSWORD_POLICY is a managed rule.

source_details

Provides the source and type of the event that causes AWS Config to evaluate your AWS resources.

input_parameters

A string, in JSON format, that is passed to the AWS Config rule Lambda function.

maximum_execution_frequency

The maximum frequency with which AWS Config runs evaluations for a rule.

created_by

Service principal name of the service that created the rule.

region

The region of the delivery channel.

+
+

Relationships

+
    +
  • AWS Config Rules are a resource under the AWS Account.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(AWSConfigRule)
    +```
    +
    +
    +
  • +
+
+
+
+

LaunchConfiguration

+

Representation of an AWS Launch Configuration

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The ARN of the launch configuration.

name

The name of the launch configuration.

arn

The ARN of the launch configuration.

created_time

The creation date and time for the launch configuration.

image_id

The ID of the Amazon Machine Image (AMI) to use to launch your EC2 instances.

key_name

The name of the key pair.

security_groups

A list that contains the security groups to assign to the instances in the Auto Scaling group.

instance_type

The instance type for the instances.

kernel_id

The ID of the kernel associated with the AMI.

ramdisk_id

The ID of the RAM disk associated with the AMI.

instance_monitoring_enabled

If true, detailed monitoring is enabled. Otherwise, basic monitoring is enabled.

spot_price

The maximum hourly price to be paid for any Spot Instance launched to fulfill the request.

iam_instance_profile

The name or the Amazon Resource Name (ARN) of the instance profile associated with the IAM role for the instance.

ebs_optimized

Specifies whether the launch configuration is optimized for EBS I/O (true) or not (false).

associate_public_ip_address

For Auto Scaling groups that are running in a VPC, specifies whether to assign a public IP address to the group’s instances.

placement_tenancy

The tenancy of the instance, either default or dedicated. An instance with dedicated tenancy runs on isolated, single-tenant hardware and can only be launched into a VPC.

region

The region of the launch configuration.

+
+

Relationships

+
    +
  • Launch Configurations are a resource under the AWS Account.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(LaunchConfiguration)
    +```
    +
    +
    +
  • +
+
+
+
+

LaunchTemplate

+

Representation of an AWS Launch Template

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The ID of the launch template.

name

The name of the launch template.

create_time

The time launch template was created.

created_by

The principal that created the launch template.

default_version_number

The version number of the default version of the launch template.

latest_version_number

The version number of the latest version of the launch template.

region

The region of the launch template.

+
+

Relationships

+
    +
  • Launch Templates are a resource under the AWS Account.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(LaunchTemplate)
    +```
    +
    +
    +
  • +
  • Launch templates have Launch Template Versions

    +
    ```
    +(LaunchTemplate)-[VERSION]->(LaunchTemplateVersion)
    +```
    +
    +
    +
  • +
+
+
+
+

LaunchTemplateVersion

+

Representation of an AWS Launch Template Version

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The ID of the launch template version (ID-version).

name

The name of the launch template.

create_time

The time the version was created.

created_by

The principal that created the version.

default_version

Indicates whether the version is the default version.

version_number

The version number.

version_description

The description of the version.

kernel_id

The ID of the kernel, if applicable.

ebs_optimized

Indicates whether the instance is optimized for Amazon EBS I/O.

iam_instance_profile_arn

The Amazon Resource Name (ARN) of the instance profile.

iam_instance_profile_name

The name of the instance profile.

image_id

The ID of the AMI that was used to launch the instance.

instance_type

The instance type.

key_name

The name of the key pair.

monitoring_enabled

Indicates whether detailed monitoring is enabled. Otherwise, basic monitoring is enabled.

ramdisk_id

The ID of the RAM disk, if applicable.

disable_api_termination

If set to true, indicates that the instance cannot be terminated using the Amazon EC2 console, command line tool, or API.

instance_initiated_shutdown_behavior

Indicates whether an instance stops or terminates when you initiate shutdown from the instance (using the operating system command for system shutdown).

security_group_ids

The security group IDs.

security_groups

The security group names.

region

The region of the launch template.

+
+

Relationships

+
    +
  • Launch Template Versions are a resource under the AWS Account.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(LaunchTemplateVersion)
    +```
    +
    +
    +
  • +
+
+
+
+

ElasticIPAddress

+

Representation of an AWS EC2 Elastic IP address

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The Elastic IP address

instance_id

The ID of the instance that the address is associated with (if any).

public_ip

The Elastic IP address.

allocation_id

The ID representing the allocation of the address for use with EC2-VPC.

association_id

The ID representing the association of the address with an instance in a VPC.

domain

Indicates whether this Elastic IP address is for use with instances in EC2-Classic (standard) or instances in a VPC (vpc).

network_interface_id

The ID of the network interface.

private_ip_address

The private IP address associated with the Elastic IP address.

public_ipv4_pool

The ID of an address pool.

network_border_group

The name of the unique set of Availability Zones, Local Zones, or Wavelength Zones from which AWS advertises IP addresses.

customer_owned_ip

The customer-owned IP address.

customer_owned_ipv4_pool

The ID of the customer-owned address pool.

carrier_ip

The carrier IP address associated. This option is only available for network interfaces which reside in a subnet in a Wavelength Zone (for example an EC2 instance).

region

The region of the IP.

+
+

Relationships

+
    +
  • Elastic IPs are a resource under the AWS Account.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(ElasticIPAddress)
    +```
    +
    +
    +
  • +
  • Elastic IPs can be attached to EC2 instances

    +
    ```
    +(EC2Instance)-[ELASTIC_IP_ADDRESS]->(ElasticIPAddress)
    +```
    +
    +
    +
  • +
  • Elastic IPs can be attached to NetworkInterfaces

    +
    ```
    +(NetworkInterface)-[ELASTIC_IP_ADDRESS]->(ElasticIPAddress)
    +```
    +
    +
    +
  • +
+
+
+
+

ECSCluster

+

Representation of an AWS ECS Cluster

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The ARN of the cluster

region

The region of the cluster.

name

A user-generated string that you use to identify your cluster.

arn

The ARN of the cluster

ecc_kms_key_id

An AWS Key Management Service key ID to encrypt the data between the local client and the container.

ecc_logging

The log setting to use for redirecting logs for your execute command results.

ecc_log_configuration_cloud_watch_log_group_name

The name of the CloudWatch log group to send logs to.

ecc_log_configuration_cloud_watch_encryption_enabled

Determines whether to enable encryption on the CloudWatch logs.

ecc_log_configuration_s3_bucket_name

The name of the S3 bucket to send logs to.

ecc_log_configuration_s3_encryption_enabled

Determines whether to use encryption on the S3 logs.

ecc_log_configuration_s3_key_prefix

An optional folder in the S3 bucket to place logs in.

status

The status of the cluster

settings_container_insights

If enabled is specified, CloudWatch Container Insights will be enabled for the cluster, otherwise it will be disabled unless the containerInsights account setting is enabled.

capacity_providers

The capacity providers associated with the cluster.

attachments_status

The status of the capacity providers associated with the cluster.

+
+

Relationships

+
    +
  • ECSClusters are a resource under the AWS Account.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(ECSCluster)
    +```
    +
    +
    +
  • +
+
+
+
+

ECSContainerInstance

+

Representation of an AWS ECS Container Instance

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The ARN of the container instance

region

The region of the container instance.

ec2_instance_id

The ID of the container instance. For Amazon EC2 instances, this value is the Amazon EC2 instance ID. For external instances, this value is the AWS Systems Manager managed instance ID.

arn

The ARN of the container instance

capacity_provider_name

The capacity provider that’s associated with the container instance.

version

The version counter for the container instance.

version_info_agent_version

The version number of the Amazon ECS container agent.

version_info_agent_hash

The Git commit hash for the Amazon ECS container agent build on the amazon-ecs-agent GitHub repository.

version_info_agent_docker_version

The Docker version that’s running on the container instance.

status

The status of the container instance.

status_reason

The reason that the container instance reached its current status.

agent_connected

This parameter returns true if the agent is connected to Amazon ECS. Registered instances with an agent that may be unhealthy or stopped return false.

agent_update_status

The status of the most recent agent update. If an update wasn’t ever requested, this value is NULL.

registered_at

The Unix timestamp for the time when the container instance was registered.

+
+

Relationships

+
    +
  • An ECSCluster has ECSContainerInstances

    +
    ```
    +(ECSCluster)-[HAS_CONTAINER_INSTANCE]->(ECSContainerInstance)
    +```
    +
    +
    +
  • +
  • ECSContainerInstances have ECSTasks

    +
    ```
    +(ECSContainerInstance)-[HAS_TASK]->(ECSTask)
    +```
    +
    +
    +
  • +
+
+
+
+

ECSService

+

Representation of an AWS ECS Service

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The ARN of the service

region

The region of the service.

name

The name of your service.

arn

The ARN of the service

cluster_arn

The Amazon Resource Name (ARN) of the cluster that hosts the service.

status

The status of the service.

desired_count

The desired number of instantiations of the task definition to keep running on the service.

running_count

The number of tasks in the cluster that are in the RUNNING state.

pending_count

The number of tasks in the cluster that are in the PENDING state.

launch_type

The launch type the service is using.

platform_version

The platform version to run your service on. A platform version is only specified for tasks that are hosted on AWS Fargate.

platform_family

The operating system that your tasks in the service run on. A platform family is specified only for tasks using the Fargate launch type.

task_definition

The task definition to use for tasks in the service.

deployment_config_circuit_breaker_enable

Determines whether to enable the deployment circuit breaker logic for the service.

deployment_config_circuit_breaker_rollback

Determines whether to enable Amazon ECS to roll back the service if a service deployment fails.

deployment_config_maximum_percent

If a service is using the rolling update (ECS) deployment type, the maximum percent parameter represents an upper limit on the number of tasks in a service that are allowed in the RUNNING or PENDING state during a deployment, as a percentage of the desired number of tasks (rounded down to the nearest integer), and while any container instances are in the DRAINING state if the service contains tasks using the EC2 launch type.

deployment_config_minimum_healthy_percent

If a service is using the rolling update (ECS) deployment type, the minimum healthy percent represents a lower limit on the number of tasks in a service that must remain in the RUNNING state during a deployment, as a percentage of the desired number of tasks (rounded up to the nearest integer), and while any container instances are in the DRAINING state if the service contains tasks using the EC2 launch type.

role_arn

The ARN of the IAM role that’s associated with the service.

created_at

The Unix timestamp for the time when the service was created.

health_check_grace_period_seconds

The period of time, in seconds, that the Amazon ECS service scheduler ignores unhealthy Elastic Load Balancing target health checks after a task has first started.

created_by

The principal that created the service.

enable_ecs_managed_tags

Determines whether to enable Amazon ECS managed tags for the tasks in the service.

propagate_tags

Determines whether to propagate the tags from the task definition or the service to the task.

enable_execute_command

Determines whether the execute command functionality is enabled for the service.

+
+

Relationships

+
    +
  • An ECSCluster has ECSService

    +
    ```
    +(ECSCluster)-[HAS_SERVICE]->(ECSService)
    +```
    +
    +
    +
  • +
  • An ECSCluster has ECSContainerInstances

    +
    ```
    +(ECSCluster)-[HAS_CONTAINER_INSTANCE]->(ECSContainerInstance)
    +```
    +
    +
    +
  • +
+
+
+
+

ECSTaskDefinition

+

Representation of an AWS ECS Task Definition

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The ARN of the task definition

region

The region of the task definition.

family

The name of a family that this task definition is registered to.

task_role_arn

The short name or full Amazon Resource Name (ARN) of the AWS Identity and Access Management role that grants containers in the task permission to call AWS APIs on your behalf.

execution_role_arn

The Amazon Resource Name (ARN) of the task execution role that grants the Amazon ECS container agent permission to make AWS API calls on your behalf.

network_mode

The Docker networking mode to use for the containers in the task. The valid values are none, bridge, awsvpc, and host. If no network mode is specified, the default is bridge.

revision

The revision of the task in a particular family.

status

The status of the task definition.

compatibilities

The task launch types the task definition validated against during task definition registration.

runtime_platform_cpu_architecture

The CPU architecture.

runtime_platform_operating_system_family

The operating system.

requires_compatibilities

The task launch types the task definition was validated against.

cpu

The number of cpu units used by the task.

memory

The amount (in MiB) of memory used by the task.

pid_mode

The process namespace to use for the containers in the task.

ipc_mode

The IPC resource namespace to use for the containers in the task.

proxy_configuration_type

The proxy type.

proxy_configuration_container_name

The name of the container that will serve as the App Mesh proxy.

registered_at

The Unix timestamp for the time when the task definition was registered.

deregistered_at

The Unix timestamp for the time when the task definition was deregistered.

registered_by

The principal that registered the task definition.

ephemeral_storage_size_in_gib

The total amount, in GiB, of ephemeral storage to set for the task.

+
+

Relationships

+
    +
  • ECSTaskDefinition are a resource under the AWS Account.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(ECSTaskDefinition)
    +```
    +
    +
    +
  • +
  • An ECSTask has an ECSTaskDefinition.

    +
    ```
    +(ECSTask)-[HAS_TASK_DEFINITION]->(ECSTaskDefinition)
    +```
    +
    +
    +
  • +
+
+
+
+

ECSContainerDefinition

+

Representation of an AWS ECS Container Definition

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The ARN of the task definition, plus the container definition name

region

The region of the container definition.

name

The name of a container.

image

The image used to start a container. This string is passed directly to the Docker daemon.

cpu

The number of cpu units reserved for the container.

memory

The amount (in MiB) of memory to present to the container.

memory_reservation

The soft limit (in MiB) of memory to reserve for the container.

links

The links parameter allows containers to communicate with each other without the need for port mappings.

essential

If the essential parameter of a container is marked as true, and that container fails or stops for any reason, all other containers that are part of the task are stopped.

entry_point

The entry point that’s passed to the container.

command

The command that’s passed to the container.

start_timeout

Time duration (in seconds) to wait before giving up on resolving dependencies for a container.

stop_timeout

Time duration (in seconds) to wait before the container is forcefully killed if it doesn’t exit normally on its own.

hostname

The hostname to use for your container.

user

The user to use inside the container.

working_directory

The working directory to run commands inside the container in.

disable_networking

When this parameter is true, networking is disabled within the container.

privileged

When this parameter is true, the container is given elevated privileges on the host container instance (similar to the root user).

readonly_root_filesystem

When this parameter is true, the container is given read-only access to its root file system.

dns_servers

A list of DNS servers that are presented to the container.

dns_search_domains

A list of DNS search domains that are presented to the container.

docker_security_options

A list of strings to provide custom labels for SELinux and AppArmor multi-level security systems. This field isn’t valid for containers in tasks using the Fargate launch type.

interactive

When this parameter is true, you can deploy containerized applications that require stdin or a tty to be allocated.

pseudo_terminal

When this parameter is true, a TTY is allocated.

+
+

Relationships

+
    +
  • ECSTaskDefinitions have ECSContainerDefinitions

    +
    ```
    +(ECSTaskDefinition)-[HAS_CONTAINER_DEFINITION]->(ECSContainerDefinition)
    +```
    +
    +
    +
  • +
+
+
+
+

ECSTask

+

Representation of an AWS ECS Task

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The ARN of the task

region

The region of the task.

arn

The arn of the task.

availability_zone

The Availability Zone for the task.

capacity_provider_name

The capacity provider that’s associated with the task.

cluster_arn

The ARN of the cluster that hosts the task.

connectivity

The connectivity status of a task.

connectivity_at

The Unix timestamp for the time when the task last went into CONNECTED status.

container_instance_arn

The ARN of the container instances that host the task.

cpu

The number of CPU units used by the task as expressed in a task definition.

created_at

The Unix timestamp for the time when the task was created. More specifically, it’s for the time when the task entered the PENDING state.

desired_status

The desired status of the task.

enable_execute_command

Determines whether execute command functionality is enabled for this task.

execution_stopped_at

The Unix timestamp for the time when the task execution stopped.

group

The name of the task group that’s associated with the task.

health_status

The health status for the task.

last_status

The last known status for the task.

launch_type

The infrastructure where your task runs on.

memory

The amount of memory (in MiB) that the task uses as expressed in a task definition.

platform_version

The platform version where your task runs on.

platform_family

The operating system that your tasks are running on.

pull_started_at

The Unix timestamp for the time when the container image pull began.

pull_stopped_at

The Unix timestamp for the time when the container image pull completed.

started_at

The Unix timestamp for the time when the task started. More specifically, it’s for the time when the task transitioned from the PENDING state to the RUNNING state.

started_by

The tag specified when a task is started. If an Amazon ECS service started the task, the startedBy parameter contains the deployment ID of that service.

stop_code

The stop code indicating why a task was stopped.

stopped_at

The Unix timestamp for the time when the task was stopped. More specifically, it’s for the time when the task transitioned from the RUNNING state to the STOPPED state.

stopped_reason

The reason that the task was stopped.

stopping_at

The Unix timestamp for the time when the task stops. More specifically, it’s for the time when the task transitions from the RUNNING state to STOPPED.

task_definition_arn

The ARN of the task definition that creates the task.

version

The version counter for the task.

ephemeral_storage_size_in_gib

The total amount, in GiB, of ephemeral storage to set for the task.

+
+

Relationships

+
    +
  • ECSClusters have ECSTasks

    +
    ```
    +(ECSCluster)-[HAS_TASK]->(ECSTask)
    +```
    +
    +
    +
  • +
  • ECSContainerInstances have ECSTasks

    +
    ```
    +(ECSContainerInstance)-[HAS_TASK]->(ECSTask)
    +```
    +
    +
    +
  • +
  • ECSTasks have ECSTaskDefinitions

    +
    ```
    +(ECSTask)-[HAS_TASK_DEFINITION]->(ECSTaskDefinition)
    +```
    +
    +
    +
  • +
+
+
+
+

ECSContainer

+

Representation of an AWS ECS Container

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The ARN of the container

region

The region of the container.

arn

The arn of the container.

task_arn

The ARN of the task.

name

The name of the container.

image

The image used for the container.

image_digest

The container image manifest digest.

runtime_id

The ID of the Docker container.

last_status

The last known status of the container.

exit_code

The exit code returned from the container.

reason

A short (255 max characters) human-readable string to provide additional details about a running or stopped container.

health_status

The health status of the container.

cpu

The number of CPU units set for the container.

memory

The hard limit (in MiB) of memory set for the container.

memory_reservation

The soft limit (in MiB) of memory set for the container.

gpu_ids

The IDs of each GPU assigned to the container.

+
+

Relationships

+
    +
  • ECSTasks have ECSContainers

    +
    ```
    +(ECSTask)-[HAS_CONTAINER]->(ECSContainer)
    +```
    +
    +
    +
  • +
+
+
+
+

SSMInstanceInformation

+

Representation of an AWS SSM InstanceInformation

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The ARN of the instance information

region

The region of the instance information.

instance_id

The managed node ID.

ping_status

Connection status of SSM Agent.

last_ping_date_time

The date and time when the agent last pinged the Systems Manager service.

agent_version

The version of SSM Agent running on your Linux managed node.

is_latest_version

Indicates whether the latest version of SSM Agent is running on your Linux managed node. This field doesn’t indicate whether or not the latest version is installed on Windows managed nodes, because some older versions of Windows Server use the EC2Config service to process Systems Manager requests.

platform_type

The operating system platform type.

platform_name

The name of the operating system platform running on your managed node.

platform_version

The version of the OS platform running on your managed node.

activation_id

The activation ID created by AWS Systems Manager when the server or virtual machine (VM) was registered.

iam_role

The AWS Identity and Access Management (IAM) role assigned to the on-premises Systems Manager managed node. This call doesn’t return the IAM role for Amazon Elastic Compute Cloud (Amazon EC2) instances.

registration_date

The date the server or VM was registered with AWS as a managed node.

resource_type

The type of instance. Instances are either EC2 instances or managed instances.

name

The name assigned to an on-premises server, edge device, or virtual machine (VM) when it is activated as a Systems Manager managed node. The name is specified as the DefaultInstanceName property using the CreateActivation command.

ip_address

The IP address of the managed node.

computer_name

The fully qualified host name of the managed node.

association_status

The status of the association.

last_association_execution_date

The date the association was last run.

last_successful_association_execution_date

The last date the association was successfully run.

source_id

The ID of the source resource. For AWS IoT Greengrass devices, SourceId is the Thing name.

source_type

The type of the source resource. For AWS IoT Greengrass devices, SourceType is AWS::IoT::Thing.

+
+

Relationships

+
    +
  • SSMInstanceInformation is a resource under the AWS Account.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(SSMInstanceInformation)
    +```
    +
    +
    +
  • +
  • SSMInstanceInformation is a resource of an EC2Instance

    +
    ```
    +(EC2Instance)-[HAS_INFORMATION]->(SSMInstanceInformation)
    +```
    +
    +
    +
  • +
+
+
+
+

SSMInstancePatch

+

Representation of an AWS SSM PatchComplianceData

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The ARN of the instance patch

region

The region of the instance patch.

instance_id

The managed node ID.

title

The title of the patch.

kb_id

The operating system-specific ID of the patch.

classification

The classification of the patch, such as SecurityUpdates, Updates, and CriticalUpdates.

severity

The severity of the patch such as Critical, Important, and Moderate.

state

The state of the patch on the managed node, such as INSTALLED or FAILED.

installed_time

The date/time the patch was installed on the managed node. Not all operating systems provide this level of information.

cve_ids

The IDs of one or more Common Vulnerabilities and Exposure (CVE) issues that are resolved by the patch.

+
+

Relationships

+
    +
  • SSMInstancePatch is a resource under the AWS Account.

    +
    ```
    +(AWSAccount)-[RESOURCE]->(SSMInstancePatch)
    +```
    +
    +
    +
  • +
  • EC2Instances have SSMInstancePatches

    +
    ```
    +(EC2Instance)-[HAS_INFORMATION]->(SSMInstancePatch)
    +```
    +
    +
    +
  • +
+
+
+
+
+

Azure Schema

+
+

AzureTenant

+

Representation of an Azure Tenant.

+ ++++ + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The Azure Tenant ID number

+
+

Relationships

+
    +
  • Azure Principal is part of the Azure Account.

    +
    ```
    +(AzureTenant)-[RESOURCE]->(AzurePrincipal)
    +```
    +
    +
    +
  • +
+
+
+
+

AzurePrincipal

+

Representation of an Azure Principal..

+ ++++ + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

email

Email of the Azure Principal

+
+

Relationships

+
    +
  • Azure Principal is part of the Azure Account.

    +
    ```
    +(AzurePrincipal)-[RESOURCE]->(AzureTenant)
    +```
    +
    +
    +
  • +
+
+
+
+

AzureSubscription

+

Representation of an Azure Subscription..

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The Azure Subscription ID number

name

The friendly name that identifies the subscription

path

The full ID for the Subscription

state

Can be one of Enabled | Disabled | Deleted | PastDue | Warned

+
+

Relationships

+
    +
  • Azure Tenant contains one or more Subscriptions.

    +
    ```
    +(AzureTenant)-[RESOURCE]->(AzureSubscription)
    +```
    +
    +
    +
  • +
+
+
+
+

VirtualMachine

+

Representation of an Azure Virtual Machine.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The Azure Virtual Machine ID number

type

The type of the resource

location

The location where Virtual Machine is created

resourcegroup

The Resource Group where Virtual Machine is created

name

The friendly name that identifies the Virtual Machine

plan

The plan associated with the Virtual Machine

size

The size of the Virtual Machine

license_type

The type of license

computer_name

The computer name

identity_type

The type of identity used for the virtual machine

zones

The Virtual Machine zones

ultra_ssd_enabled

Enables or disables a capability on the virtual machine or virtual machine scale set.

priority

Specifies the priority for the virtual machine

eviction_policy

Specifies the eviction policy for the Virtual Machine

+
+

Relationships

+
    +
  • Azure Subscription contains one or more Virtual Machines.

    +
    ```
    +(AzureSubscription)-[RESOURCE]->(VirtualMachine)
    +```
    +
    +
    +
  • +
+
+
+
+

AzureDataDisk

+

Representation of an Azure Data Disk.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The Azure Data Disk ID number

lun

Specifies the logical unit number of the data disk

name

The data disk name

vhd

The virtual hard disk associated with data disk

image

The source user image virtual hard disk

size

The size of the disk in GB

caching

Specifies the caching requirement

createoption

Specifies how the disk should be created

write_accelerator_enabled

Specifies whether writeAccelerator should be enabled or disabled on the data disk

managed_disk_storage_type

The data disk storage type

+
+

Relationships

+
    +
  • Azure Virtual Machines are attached to Data Disks.

    +
    ```
    +(VirtualMachine)-[ATTACHED_TO]->(AzureDataDisk)
    +```
    +
    +
    +
  • +
+
+
+
+

AzureDisk

+

Representation of an Azure Disk.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The Azure Disk ID number

type

The type of the resource

location

The location where Disk is created

resourcegroup

The Resource Group where Disk is created

name

The friendly name that identifies the Disk

createoption

Specifies how the disk should be created

disksizegb

The size of the disk in GB

encryption

Specifies whether the disk has encryption enabled

maxshares

Specifies how many machines can share the disk

ostype

The operating system type of the disk

tier

Performance Tier associated with the disk

sku

The disk sku name

zones

The logical zone list for disk

+
+

Relationships

+
    +
  • Azure Subscription contains one or more Disks.

    +
    ```
    +(AzureSubscription)-[RESOURCE]->(AzureDisk)
    +```
    +
    +
    +
  • +
+
+
+
+

AzureSnapshot

+

Representation of an Azure Snapshot.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The Azure Snapshot ID number

type

The type of the resource

location

The location where snapshot is created

resourcegroup

The Resource Group where snapshot is created

name

The friendly name that identifies the snapshot

createoption

Specifies how the disk should be created

disksizegb

The size of the snapshot in GB

encryption

Specifies whether the snapshot has encryption enabled

incremental

Indicates whether a snapshot is incremental or not

network_access_policy

Policy for accessing the snapshot via network

ostype

The operating system type of the snapshot

tier

Performance Tier associated with the snapshot

sku

The snapshot sku name

zones

The logical zone list for snapshot

+
+

Relationships

+
    +
  • Azure Subscription contains one or more Snapshots.

    +
    ```
    +(AzureSubscription)-[RESOURCE]->(AzureSnapshot)
    +```
    +
    +
    +
  • +
+
+
+
+

AzureSQLServer

+

Representation of an AzureSQLServer.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The resource ID

location

The location where the resource is created

resourcegroup

The Resource Group where SQL Server is created

name

The friendly name that identifies the SQL server

kind

Specifies the kind of SQL server

state

The state of the server

version

The version of the server

+
+

Relationships

+
    +
  • Azure Subscription contains one or more SQL Servers.

    +
    ```
    +(AzureSubscription)-[RESOURCE]->(AzureSQLServer)
    +```
    +
    +
    +
  • +
  • Azure SQL Server can be used by one or more Azure Server DNS Aliases.

    +
    ```
    +(AzureSQLServer)-[USED_BY]->(AzureServerDNSAlias)
    +```
    +
    +
    +
  • +
  • Azure SQL Server can be administered by one or more Azure Server AD Administrators.

    +
    ```
    +(AzureSQLServer)-[ADMINISTERED_BY]->(AzureServerADAdministrator)
    +```
    +
    +
    +
  • +
  • Azure SQL Server has one or more Azure Recoverable Database.

    +
    ```
    +(AzureSQLServer)-[RESOURCE]->(AzureRecoverableDatabase)
    +```
    +
    +
    +
  • +
  • Azure SQL Server has one or more Azure Restorable Dropped Database.

    +
    ```
    +(AzureSQLServer)-[RESOURCE]->(AzureRestorableDroppedDatabase)
    +```
    +
    +
    +
  • +
  • Azure SQL Server has one or more Azure Failover Group.

    +
    ```
    +(AzureSQLServer)-[RESOURCE]->(AzureFailoverGroup)
    +```
    +
    +
    +
  • +
  • Azure SQL Server has one or more Azure Elastic Pool.

    +
    ```
    +(AzureSQLServer)-[RESOURCE]->(AzureElasticPool)
    +```
    +
    +
    +
  • +
  • Azure SQL Server has one or more Azure SQL Database.

    +
    ```
    +(AzureSQLServer)-[RESOURCE]->(AzureSQLDatabase)
    +```
    +
    +
    +
  • +
+
+
+
+

AzureServerDNSAlias

+

Representation of an AzureServerDNSAlias.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The resource ID

name

The name of the server DNS alias

dnsrecord

The fully qualified DNS record for alias.

+
+

Relationships

+
    +
  • Azure SQL Server can be used by one or more Azure Server DNS Aliases.

    +
    ```
    +(AzureSQLServer)-[USED_BY]->(AzureServerDNSAlias)
    +```
    +
    +
    +
  • +
+
+
+
+

AzureServerADAdministrator

+

Representation of an AzureServerADAdministrator.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The resource ID

name

The name of the resource.

administratortype

The type of the server administrator.

login

The login name of the server administrator.

+
+

Relationships

+
    +
  • Azure SQL Server can be administered by one or more Azure Server AD Administrators.

    +
    ```
    +(AzureSQLServer)-[ADMINISTERED_BY]->(AzureServerADAdministrator)
    +```
    +
    +
    +
  • +
+
+
+
+

AzureRecoverableDatabase

+

Representation of an AzureRecoverableDatabase.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The resource ID

name

The name of the resource.

edition

The edition of the database.

servicelevelobjective

The service level objective name of the database.

lastbackupdate

The last available backup date of the database (ISO8601 format).

+
+

Relationships

+
    +
  • Azure SQL Server has one or more Azure Recoverable Database.

    +
    ```
    +(AzureSQLServer)-[RESOURCE]->(AzureRecoverableDatabase)
    +```
    +
    +
    +
  • +
+
+
+
+

AzureRestorableDroppedDatabase

+

Representation of an AzureRestorableDroppedDatabase.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The resource ID

name

The name of the resource.

location

The geo-location where the resource lives.

databasename

The name of the database.

creationdate

The creation date of the database (ISO8601 format).

deletiondate

The deletion date of the database (ISO8601 format).

restoredate

The earliest restore date of the database (ISO8601 format).

edition

The edition of the database.

servicelevelobjective

The service level objective name of the database.

maxsizebytes

The max size in bytes of the database.

+
+

Relationships

+
    +
  • Azure SQL Server has one or more Azure Restorable Dropped Database.

    +
    ```
    +(AzureSQLServer)-[RESOURCE]->(AzureRestorableDroppedDatabase)
    +```
    +
    +
    +
  • +
+
+
+
+

AzureFailoverGroup

+

Representation of an AzureFailoverGroup.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The resource ID

name

The name of the resource.

location

The geo-location where the resource lives.

replicationrole

Local replication role of the failover group instance.

replicationstate

Replication state of the failover group instance.

+
+

Relationships

+
    +
  • Azure SQL Server has one or more Azure Failover Group.

    +
    ```
    +(AzureSQLServer)-[RESOURCE]->(AzureFailoverGroup)
    +```
    +
    +
    +
  • +
+
+
+
+

AzureElasticPool

+

Representation of an AzureElasticPool.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The resource ID

name

The name of the resource.

location

The location of the resource.

kind

The kind of elastic pool.

creationdate

The creation date of the elastic pool (ISO8601 format).

state

The state of the elastic pool.

maxsizebytes

The storage limit for the database elastic pool in bytes.

licensetype

The license type to apply for this elastic pool.

zoneredundant

Specifies whether or not this elastic pool is zone redundant, which means the replicas of this elastic pool will be spread across multiple availability zones.

+
+

Relationships

+
    +
  • Azure SQL Server has one or more Azure Elastic Pool.

    +
    ```
    +(AzureSQLServer)-[RESOURCE]->(AzureElasticPool)
    +```
    +
    +
    +
  • +
+
+
+
+

AzureSQLDatabase

+

Representation of an AzureSQLDatabase.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The resource ID

name

The name of the resource.

location

The location of the resource.

kind

The kind of database.

creationdate

The creation date of the database (ISO8601 format).

databaseid

The ID of the database.

maxsizebytes

The max size of the database expressed in bytes.

licensetype

The license type to apply for this database.

secondarylocation

The default secondary region for this database.

elasticpoolid

The resource identifier of the elastic pool containing this database.

collation

The collation of the database.

failovergroupid

Failover Group resource identifier that this database belongs to.

zoneredundant

Whether or not this database is zone redundant, which means the replicas of this database will be spread across multiple availability zones.

restorabledroppeddbid

The resource identifier of the restorable dropped database associated with create operation of this database.

recoverabledbid

The resource identifier of the recoverable database associated with create operation of this database.

+
+

Relationships

+
    +
  • Azure SQL Server has one or more Azure SQL Database.

    +
    ```
    +(AzureSQLServer)-[RESOURCE]->(AzureSQLDatabase)
    +```
    +
    +
    +
  • +
  • Azure SQL Database contains one or more Azure Replication Links.

    +
    ```
    +(AzureSQLDatabase)-[CONTAINS]->(AzureReplicationLink)
    +```
    +
    +
    +
  • +
  • Azure SQL Database contains a Database Threat Detection Policy.

    +
    ```
    +(AzureSQLDatabase)-[CONTAINS]->(AzureDatabaseThreatDetectionPolicy)
    +```
    +
    +
    +
  • +
  • Azure SQL Database contains one or more Restore Points.

    +
    ```
    +(AzureSQLDatabase)-[CONTAINS]->(AzureRestorePoint)
    +```
    +
    +
    +
  • +
  • Azure SQL Database contains Transparent Data Encryption.

    +
    ```
    +(AzureSQLDatabase)-[CONTAINS]->(AzureTransparentDataEncryption)
    +```
    +
    +
    +
  • +
+
+
+ +
+

AzureDatabaseThreatDetectionPolicy

+

Representation of an AzureDatabaseThreatDetectionPolicy.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The resource ID

name

The name of the resource.

location

The geo-location where the resource lives.

kind

The kind of the resource.

emailadmins

Specifies that the alert is sent to the account administrators.

emailaddresses

Specifies the semicolon-separated list of e-mail addresses to which the alert is sent.

retentiondays

Specifies the number of days to keep in the Threat Detection audit logs.

state

Specifies the state of the policy.

storageendpoint

Specifies the blob storage endpoint.

useserverdefault

Specifies whether to use the default server policy.

disabledalerts

Specifies the semicolon-separated list of alerts that are disabled, or empty string to disable no alerts.

+
+

Relationships

+
    +
  • Azure SQL Database contains a Database Threat Detection Policy.

    +
    ```
    +(AzureSQLDatabase)-[CONTAINS]->(AzureDatabaseThreatDetectionPolicy)
    +```
    +
    +
    +
  • +
+
+
+
+

AzureRestorePoint

+

Representation of an AzureRestorePoint.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The resource ID

name

The name of the resource.

location

The geo-location where the resource lives.

restoredate

The earliest time to which this database can be restored.

restorepointtype

The type of restore point.

creationdate

The time the backup was taken.

+
+

Relationships

+
    +
  • Azure SQL Database contains one or more Restore Points.

    +
    ```
    +(AzureSQLDatabase)-[CONTAINS]->(AzureRestorePoint)
    +```
    +
    +
    +
  • +
+
+
+
+

AzureTransparentDataEncryption

+

Representation of an AzureTransparentDataEncryption.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The resource ID

name

The name of the resource.

location

The resource location.

status

The status of the database transparent data encryption.

+
+

Relationships

+
    +
  • Azure SQL Database contains Transparent Data Encryption.

    +
    ```
    +(AzureSQLDatabase)-[CONTAINS]->(AzureTransparentDataEncryption)
    +```
    +
    +
    +
  • +
+
+
+
+

AzureStorageAccount

+

Representation of an AzureStorageAccount.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

Fully qualified resource ID for the resource.

type

The type of the resource.

location

The geo-location where the resource lives.

resourcegroup

The Resource Group where the storage account is created

name

The name of the resource.

kind

Gets the Kind of the resource.

creationtime

Gets the creation date and time of the storage account in UTC.

hnsenabled

Specifies if the Account HierarchicalNamespace is enabled.

primarylocation

Gets the location of the primary data center for the storage account.

secondarylocation

Gets the location of the geo-replicated secondary for the storage account.

provisioningstate

Gets the status of the storage account at the time the operation was called.

statusofprimary

Gets the status availability status of the primary location of the storage account.

statusofsecondary

Gets the status availability status of the secondary location of the storage account.

supportshttpstrafficonly

Allows https traffic only to storage service if sets to true.

+
+

Relationships

+
    +
  • Azure Subscription contains one or more Storage Accounts.

    +
    ```
    +(AzureSubscription)-[RESOURCE]->(AzureStorageAccount)
    +```
    +
    +
    +
  • +
  • Azure Storage Accounts uses one or more Queue Services.

    +
    ```
    +(AzureStorageAccount)-[USES]->(AzureStorageQueueService)
    +```
    +
    +
    +
  • +
  • Azure Storage Accounts uses one or more Table Services.

    +
    ```
    +(AzureStorageAccount)-[USES]->(AzureStorageTableService)
    +```
    +
    +
    +
  • +
  • Azure Storage Accounts uses one or more File Services.

    +
    ```
    +(AzureStorageAccount)-[USES]->(AzureStorageFileService)
    +```
    +
    +
    +
  • +
  • Azure Storage Accounts uses one or more Blob Services.

    +
    ```
    +(AzureStorageAccount)-[USES]->(AzureStorageBlobService)
    +```
    +
    +
    +
  • +
+
+
+
+

AzureStorageQueueService

+

Representation of an AzureStorageQueueService.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

Fully qualified resource ID for the resource.

type

The type of the resource.

name

The name of the queue service.

+
+

Relationships

+
    +
  • Azure Storage Accounts uses one or more Queue Services.

    +
    ```
    +(AzureStorageAccount)-[USES]->(AzureStorageQueueService)
    +```
    +
    +
    +
  • +
  • Queue Service contains one or more queues.

    +
    ```
    +(AzureStorageQueueService)-[CONTAINS]->(AzureStorageQueue)
    +```
    +
    +
    +
  • +
+
+
+
+

AzureStorageTableService

+

Representation of an AzureStorageTableService.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

Fully qualified resource ID for the resource.

type

The type of the resource.

name

The name of the table service.

+
+

Relationships

+
    +
  • Azure Storage Accounts uses one or more Table Services.

    +
    ```
    +(AzureStorageAccount)-[USES]->(AzureStorageTableService)
    +```
    +
    +
    +
  • +
  • Table Service contains one or more tables.

    +
    ```
    +(AzureStorageTableService)-[CONTAINS]->(AzureStorageTable)
    +```
    +
    +
    +
  • +
+
+
+
+

AzureStorageFileService

+

Representation of an AzureStorageFileService.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

Fully qualified resource ID for the resource.

type

The type of the resource.

name

The name of the file service.

+
+

Relationships

+
    +
  • Azure Storage Accounts uses one or more File Services.

    +
    ```
    +(AzureStorageAccount)-[USES]->(AzureStorageFileService)
    +```
    +
    +
    +
  • +
  • Table Service contains one or more file shares.

    +
    ```
    +(AzureStorageFileService)-[CONTAINS]->(AzureStorageFileShare)
    +```
    +
    +
    +
  • +
+
+
+
+

AzureStorageBlobService

+

Representation of an AzureStorageBlobService.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

Fully qualified resource ID for the resource.

type

The type of the resource.

name

The name of the blob service.

+
+

Relationships

+
    +
  • Azure Storage Accounts uses one or more Blob Services.

    +
    ```
    +(AzureStorageAccount)-[USES]->(AzureStorageBlobService)
    +```
    +
    +
    +
  • +
  • Blob Service contains one or more blob containers.

    +
    ```
    +(AzureStorageBlobService)-[CONTAINS]->(AzureStorageBlobContainer)
    +```
    +
    +
    +
  • +
+
+
+
+

AzureStorageQueue

+

Representation of an AzureStorageQueue.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

Fully qualified resource ID for the resource.

type

The type of the resource.

name

The name of the queue.

+
+

Relationships

+
    +
  • Queue Service contains one or more queues.

    +
    ```
    +(AzureStorageQueueService)-[CONTAINS]->(AzureStorageQueue)
    +```
    +
    +
    +
  • +
+
+
+
+

AzureStorageTable

+

Representation of an AzureStorageTable.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

Fully qualified resource ID for the resource.

type

The type of the resource.

name

The name of the table resource.

tablename

Table name under the specified account.

+
+

Relationships

+
    +
  • Table Service contains one or more tables.

    +
    ```
    +(AzureStorageTableService)-[CONTAINS]->(AzureStorageTable)
    +```
    +
    +
    +
  • +
+
+
+
+

AzureStorageFileShare

+

Representation of an AzureStorageFileShare.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

Fully qualified resource ID for the resource.

type

The type of the resource.

name

The name of the resource.

lastmodifiedtime

Specifies the date and time the share was last modified.

sharequota

The maximum size of the share, in gigabytes.

accesstier

Specifies the access tier for the share.

deleted

Indicates whether the share was deleted.

accesstierchangetime

Indicates the last modification time for share access tier.

accesstierstatus

Indicates if there is a pending transition for access tier.

deletedtime

The deleted time if the share was deleted.

enabledprotocols

The authentication protocol that is used for the file share.

remainingretentiondays

Remaining retention days for share that was soft deleted.

shareusagebytes

The approximate size of the data stored on the share.

version

The version of the share.

+
+

Relationships

+
    +
  • File Service contains one or more file shares.

    +
    ```
    +(AzureStorageTableService)-[CONTAINS]->(AzureStorageFileShare)
    +```
    +
    +
    +
  • +
+
+
+
+

AzureStorageBlobContainer

+

Representation of an AzureStorageBlobContainer.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

Fully qualified resource ID for the resource.

type

The type of the resource.

name

The name of the resource.

deleted

Indicates whether the blob container was deleted.

deletedtime

Blob container deletion time.

defaultencryptionscope

Default the container to use specified encryption scope for all writes.

publicaccess

Specifies whether data in the container may be accessed publicly and the level of access.

leasestatus

The lease status of the container.

leasestate

Lease state of the container.

lastmodifiedtime

Specifies the date and time the container was last modified.

remainingretentiondays

Specifies the remaining retention days for soft deleted blob container.

version

The version of the deleted blob container.

hasimmutabilitypolicy

Specifies the if the container has an ImmutabilityPolicy or not.

haslegalhold

Specifies if the container has any legal hold tags.

leaseduration

Specifies whether the lease on a container is of infinite or fixed duration, only when the container is leased.

+
+

Relationships

+
    +
  • Blob Service contains one or more blob containers.

    +
    ```
    +(AzureStorageBlobService)-[CONTAINS]->(AzureStorageBlobContainer)
    +```
    +
    +
    +
  • +
+
+
+
+

AzureCosmosDBAccount

+

Representation of an AzureCosmosDBAccount.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The unique resource identifier of the ARM resource.

location

The location of the resource group to which the resource belongs.

resourcegroup

The Resource Group where the database account is created.

name

The name of the ARM resource.

kind

Indicates the type of database account.

type

The type of Azure resource.

ipranges

List of IpRules.

capabilities

List of Cosmos DB capabilities for the account.

documentendpoint

The connection endpoint for the Cosmos DB database account.

virtualnetworkfilterenabled

Flag to indicate whether to enable/disable Virtual Network ACL rules.

enableautomaticfailover

Enables automatic failover of the write region in the rare event that the region is unavailable due to an outage.

provisioningstate

The status of the Cosmos DB account at the time the operation was called.

multiplewritelocations

Enables the account to write in multiple locations.

accountoffertype

The offer type for the Cosmos DB database account.

publicnetworkaccess

Whether requests from Public Network are allowed.

enablecassandraconnector

Enables the cassandra connector on the Cosmos DB C* account.

connectoroffer

The cassandra connector offer type for the Cosmos DB database C* account.

disablekeybasedmetadatawriteaccess

Disable write operations on metadata resources (databases, containers, throughput) via account keys.

keyvaulturi

The URI of the key vault.

enablefreetier

Flag to indicate whether Free Tier is enabled.

enableanalyticalstorage

Flag to indicate whether to enable storage analytics.

defaultconsistencylevel

The default consistency level and configuration settings of the Cosmos DB account.

maxstalenessprefix

When used with the Bounded Staleness consistency level, this value represents the number of stale requests tolerated.

maxintervalinseconds

When used with the Bounded Staleness consistency level, this value represents the time amount of staleness (in seconds) tolerated.

+
+

Relationships

+
    +
  • Azure Subscription contains one or more database accounts.

    +
    ```
    +(AzureSubscription)-[RESOURCE]->(AzureCosmosDBAccount)
    +```
    +
    +
    +
  • +
  • Azure Database Account can be read from, written from and is associated with Azure CosmosDB Locations.

    +
    ```
    +(AzureCosmosDBAccount)-[CAN_WRITE_FROM]->(AzureCosmosDBLocation)
    +```
    +(AzureCosmosDBAccount)-[CAN_READ_FROM]->(AzureCosmosDBLocation)
    +```
    +(AzureCosmosDBAccount)-[ASSOCIATED_WITH]->(AzureCosmosDBLocation)
    +```
    +
    +
    +
  • +
  • Azure Database Account contains one or more Cors Policy.

    +
    ```
    +(AzureCosmosDBAccount)-[CONTAINS]->(AzureCosmosDBCorsPolicy)
    +```
    +
    +
    +
  • +
  • Azure Database Account contains one or more failover policies.

    +
    ```
    +(AzureCosmosDBAccount)-[CONTAINS]->(AzureCosmosDBAccountFailoverPolicy)
    +```
    +
    +
    +
  • +
  • Azure Database Account is configured with one or more private endpoint connections.

    +
    ```
    +(AzureCosmosDBAccount)-[CONFIGURED_WITH]->(AzureCDBPrivateEndpointConnection)
    +```
    +
    +
    +
  • +
  • Azure Database Account is configured with one or more virtual network rules.

    +
    ```
    +(AzureCosmosDBAccount)-[CONFIGURED_WITH]->(AzureCosmosDBVirtualNetworkRule)
    +```
    +
    +
    +
  • +
  • Azure Database Account contains one or more SQL databases.

    +
    ```
    +(AzureCosmosDBAccount)-[CONTAINS]->(AzureCosmosDBSqlDatabase)
    +```
    +
    +
    +
  • +
  • Azure Database Account contains one or more Cassandra keyspace.

    +
    ```
    +(AzureCosmosDBAccount)-[CONTAINS]->(AzureCosmosDBCassandraKeyspace)
    +```
    +
    +
    +
  • +
  • Azure Database Account contains one or more MongoDB Database.

    +
    ```
    +(AzureCosmosDBAccount)-[CONTAINS]->(AzureCosmosDBMongoDBDatabase)
    +```
    +
    +
    +
  • +
  • Azure Database Account contains one or more table resource.

    +
    ```
    +(AzureCosmosDBAccount)-[CONTAINS]->(AzureCosmosDBTableResource)
    +```
    +
    +
    +
  • +
+
+
+
+

AzureCosmosDBLocation

+

Representation of an Azure CosmosDB Location.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The unique identifier of the region within the database account.

locationname

The name of the region.

documentendpoint

The connection endpoint for the specific region.

provisioningstate

The status of the Cosmos DB account at the time the operation was called.

failoverpriority

The failover priority of the region.

iszoneredundant

Flag to indicate whether or not this region is an AvailabilityZone region.

+
+

Relationships

+
    +
  • Azure Database Account has write permissions from, read permissions from and is associated with Azure CosmosDB Locations.

    +
    ```
    +(AzureCosmosDBAccount)-[CAN_WRITE_FROM]->(AzureCosmosDBLocation)
    +```
    +(AzureCosmosDBAccount)-[CAN_READ_FROM]->(AzureCosmosDBLocation)
    +```
    +(AzureCosmosDBAccount)-[ASSOCIATED_WITH]->(AzureCosmosDBLocation)
    +```
    +
    +
    +
  • +
+
+
+
+

AzureCosmosDBCorsPolicy

+

Representation of an Azure Cosmos DB Cors Policy.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The unique resource identifier for Cors Policy.

allowedorigins

The origin domains that are permitted to make a request against the service via CORS.

allowedmethods

The methods (HTTP request verbs) that the origin domain may use for a CORS request.

allowedheaders

The request headers that the origin domain may specify on the CORS request.

exposedheaders

The response headers that may be sent in the response to the CORS request and exposed by the browser to the request issuer.

maxageinseconds

The maximum amount time that a browser should cache the preflight OPTIONS request.

+
+

Relationships

+
    +
  • Azure Database Account contains one or more Cors Policy.

    +
    ```
    +(AzureCosmosDBAccount)-[CONTAINS]->(AzureCosmosDBCorsPolicy)
    +```
    +
    +
    +
  • +
+
+
+
+

AzureCosmosDBAccountFailoverPolicy

+

Representation of an Azure Database Account Failover Policy.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The unique identifier of the region in which the database account replicates to.

locationname

The name of the region in which the database account exists.

failoverpriority

The failover priority of the region. A failover priority of 0 indicates a write region.

+
+

Relationships

+
    +
  • Azure Database Account contains one or more failover policies.

    +
    ```
    +(AzureCosmosDBAccount)-[CONTAINS]->(AzureCosmosDBAccountFailoverPolicy)
    +```
    +
    +
    +
  • +
+
+
+
+

AzureCDBPrivateEndpointConnection

+

Representation of an Azure Cosmos DB Private Endpoint Connection.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

Fully qualified resource Id for the resource.

name

The name of the resource.

privateendpointid

Resource id of the private endpoint.

status

The private link service connection status.

actionrequired

Any action that is required beyond basic workflow (approve/ reject/ disconnect).

+
+

Relationships

+
    +
  • Azure Database Account is configured with one or more private endpoint connections.

    +
    ```
    +(AzureCosmosDBAccount)-[CONFIGURED_WITH]->(AzureCDBPrivateEndpointConnection)
    +```
    +
    +
    +
  • +
+
+
+
+

AzureCosmosDBVirtualNetworkRule

+

Representation of an Azure Cosmos DB Virtual Network Rule.

+ ++++ + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

Resource ID of a subnet.

ignoremissingvnetserviceendpoint

Create firewall rule before the virtual network has vnet service endpoint enabled.

+
+

Relationships

+
    +
  • Azure Database Account is configured with one or more virtual network rules.

    +
    ```
    +(AzureCosmosDBAccount)-[CONFIGURED_WITH]->(AzureCosmosDBVirtualNetworkRule)
    +```
    +
    +
    +
  • +
+
+
+
+

AzureCosmosDBSqlDatabase

+

Representation of an AzureCosmosDBSqlDatabase.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The unique resource identifier of the ARM resource.

name

The name of the ARM resource.

type

The type of Azure resource.

location

The location of the resource group to which the resource belongs.

throughput

Value of the Cosmos DB resource throughput or autoscaleSettings.

maxthroughput

Represents maximum throughput, the resource can scale up to.

+
+

Relationships

+
    +
  • Azure Database Account contains one or more SQL databases.

    +
    ```
    +(AzureCosmosDBAccount)-[CONTAINS]->(AzureCosmosDBSqlDatabase)
    +```
    +
    +
    +
  • +
  • SQL Databases contain one or more SQL containers.

    +
    ```
    +(AzureCosmosDBSqlDatabase)-[CONTAINS]->(AzureCosmosDBSqlContainer)
    +```
    +
    +
    +
  • +
+
+
+
+

AzureCosmosDBCassandraKeyspace

+

Representation of an AzureCosmosDBCassandraKeyspace.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The unique resource identifier of the ARM resource.

name

The name of the ARM resource.

type

The type of Azure resource.

location

The location of the resource group to which the resource belongs.

throughput

Value of the Cosmos DB resource throughput or autoscaleSettings.

maxthroughput

Represents maximum throughput, the resource can scale up to.

+
+

Relationships

+
    +
  • Azure Database Account contains one or more Cassandra keyspace.

    +
    ```
    +(AzureCosmosDBAccount)-[CONTAINS]->(AzureCosmosDBCassandraKeyspace)
    +```
    +
    +
    +
  • +
  • Cassandra Keyspace contains one or more Cassandra tables.

    +
    ```
    +(AzureCosmosDBCassandraKeyspace)-[CONTAINS]->(AzureCosmosDBCassandraTable)
    +```
    +
    +
    +
  • +
+
+
+
+

AzureCosmosDBMongoDBDatabase

+

Representation of an AzureCosmosDBMongoDBDatabase.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The unique resource identifier of the ARM resource.

name

The name of the ARM resource.

type

The type of Azure resource.

location

The location of the resource group to which the resource belongs.

throughput

Value of the Cosmos DB resource throughput or autoscaleSettings.

maxthroughput

Represents maximum throughput, the resource can scale up to.

+
+

Relationships

+
    +
  • Azure Database Account contains one or more MongoDB Database.

    +
    ```
    +(AzureCosmosDBAccount)-[CONTAINS]->(AzureCosmosDBMongoDBDatabase)
    +```
    +
    +
    +
  • +
  • MongoDB database contains one or more MongoDB collections.

    +
    ```
    +(AzureCosmosDBMongoDBDatabase)-[CONTAINS]->(AzureCosmosDBMongoDBCollection)
    +```
    +
    +
    +
  • +
+
+
+
+

AzureCosmosDBTableResource

+

Representation of an AzureCosmosDBTableResource.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The unique resource identifier of the ARM resource.

name

The name of the ARM resource.

type

The type of Azure resource.

location

The location of the resource group to which the resource belongs.

throughput

Value of the Cosmos DB resource throughput or autoscaleSettings.

maxthroughput

Represents maximum throughput, the resource can scale up to.

+
+

Relationships

+
    +
  • Azure Database Account contains one or more table resource.

    +
    ```
    +(AzureCosmosDBAccount)-[CONTAINS]->(AzureCosmosDBTableResource)
    +```
    +
    +
    +
  • +
+
+
+
+

AzureCosmosDBSqlContainer

+

Representation of an AzureCosmosDBSqlContainer.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The unique resource identifier of the ARM resource.

name

The name of the ARM resource.

type

The type of Azure resource.

location

The location of the resource group to which the resource belongs.

throughput

Value of the Cosmos DB resource throughput or autoscaleSettings.

maxthroughput

Represents maximum throughput, the resource can scale up to.

container

Name of the Cosmos DB SQL container.

defaultttl

Default time to live.

analyticalttl

Specifies the Analytical TTL.

isautomaticindexingpolicy

Indicates if the indexing policy is automatic.

indexingmode

Indicates the indexing mode.

conflictresolutionpolicymode

Indicates the conflict resolution mode.

+
+

Relationships

+
    +
  • SQL Databases contain one or more SQL containers.

    +
    ```
    +(AzureCosmosDBSqlDatabase)-[CONTAINS]->(AzureCosmosDBSqlContainer)
    +```
    +
    +
    +
  • +
+
+
+
+

AzureCosmosDBCassandraTable

+

Representation of an AzureCosmosDBCassandraTable.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The unique resource identifier of the ARM resource.

name

The name of the ARM resource.

type

The type of Azure resource.

location

The location of the resource group to which the resource belongs.

throughput

Value of the Cosmos DB resource throughput or autoscaleSettings.

maxthroughput

Represents maximum throughput, the resource can scale up to.

container

Name of the Cosmos DB Cassandra table.

defaultttl

Time to live of the Cosmos DB Cassandra table.

analyticalttl

Specifies the Analytical TTL.

+
+

Relationships

+
    +
  • Cassandra Keyspace contains one or more Cassandra tables.

    +
    ```
    +(AzureCosmosDBCassandraKeyspace)-[CONTAINS]->(AzureCosmosDBCassandraTable)
    +```
    +
    +
    +
  • +
+
+
+
+

AzureCosmosDBMongoDBCollection

+

Representation of an AzureCosmosDBMongoDBCollection.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The unique resource identifier of the ARM resource.

name

The name of the ARM resource.

type

The type of Azure resource.

location

The location of the resource group to which the resource belongs.

throughput

Value of the Cosmos DB resource throughput or autoscaleSettings.

maxthroughput

Represents maximum throughput, the resource can scale up to.

collectionname

Name of the Cosmos DB MongoDB collection.

analyticalttl

Specifies the Analytical TTL.

+
+

Relationships

+
    +
  • MongoDB database contains one or more MongoDB collections.

    +
    ```
    +(AzureCosmosDBMongoDBDatabase)-[CONTAINS]->(AzureCosmosDBMongoDBCollection)
    +```
    +
    +
    +
  • +
+
+
+
+
+

Crxcavtor Schema

+
+

GSuiteUser

+

Placeholder representation of a single G Suite user object. This node is the minimal data necessary to map who has extensions installed until full G Suite data is imported.

+ ++++ + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The user’s email address, will change to actual G Suite id in future

email

The user’s email address

+
+

Relationships

+
    +
  • GSuiteUsers install ChromeExtensions.

    +
    (GSuiteUser)-[INSTALLS]->(ChromeExtension)
    +
    +
    +
  • +
+
+
+
+

ChromeExtension

+
+

Representation of a CRXcavator Chrome Extension Report.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The combined extension name and version e.g. "Docs|1.0"

extension_id

CRXcavator id for extension.

version

The versions of the extension in this report

risk_total

CRXcavator risk score for the extension

risk_metadata

Additional data provided by CRXcavator on the risk score

risk_permissions_score

Sum of the permissions component of the risk score

risk_webstore_score

Sum of the webstore component of the risk score

risk_csp_score

Sum of the CSP component of the risk score

risk_optional_permissions_score

Sum of the optional permissions component of the risk score

risk_extcalls_score

Sum of the external calls component of the risk score

risk_vuln_score

Sum of the RetireJS vulnerability component of the risk score

address

Physical address of extension developer

email

Email address of extension developer

icon

URL of the extension icon

crxcavator_last_updated

Date the extension was last updated in the webstore

name

Full name of the extension

offered_by

Name of the extension developer

permissions_warnings

Concatenated list of permissions warnings for the extension

privacy_policy

URL of privacy policy for extension

rating

Current webstore rating for extension

rating_users

How many users have provided a rating for the extension

short_description

Summary of what extension does

size

Size of extension download

support_site

URL of developer support site

users

Webstore count of extension users

website

Developer URL for extension

type

Extension categorization

price

Extension price in webstore if applicable

report_link

URL of full extension report on crxcavator.io

+
+

Relationships

+
    +
  • GSuiteUsers install ChromeExtensions.

    +
    (GSuiteUser)-[INSTALLS]->(ChromeExtension)
    +
    +
    +
  • +
+
+
+
+
+

DigitalOcean Schema

+
+

DOAccount

+

Representation of a DigitalOcean Account object.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The UUID of the account

uuid

The UUID of the account (same value as id)

droplet_limit

Total number of droplets that the account can have at one time

floating_ip_limit

Total number of floating IPs the account may have

status

Status of the account

+
+

Relationships

+
    +
  • DOAccount contains DOProjects.

    +
    (DOAccount)-[RESOURCE]->(DOProjects)
    +
    +
    +
  • +
+
+
+
+

DOProject

+

Representation of a DigitalOcean Project object.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The unique universal identifier of the project

account_id

Id of the DOAccount where this project belongs to

description

The description of the project

environment

The environment of the project’s resources

is_default

If true, all resources will be added to this project if no project is specified

name

The human-readable name for the project

owner_uuid

The unique universal identifier of the project’s owner

created_at

A time value given in ISO8601 combined date and time format that represents when the project was created

updated_at

A time value given in ISO8601 combined date and time format that represents when the project was updated

+
+

Relationships

+
    +
  • DOProject has DODroplets as resource.

    +
    (DOProject)-[RESOURCE]->(DODroplet)
    +
    +
    +
  • +
+
+
+
+

DODroplet

+

Representation of a DigitalOcean Droplet object.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

A unique identifier for each Droplet instance

account_id

Id of the DOAccount where this Droplet belongs to

features

An array of features enabled on this Droplet

locked

A boolean value indicating whether the Droplet has been locked, preventing actions by users

image

The slug of the base image used to create the Droplet instance

ip_address

The v4 external ip address of this Droplet

ip_v6_address

The v6 external ip address of this Droplet

kernel

The current kernel image id

name

The human-readable name set for the Droplet instance

private_ip_address

The v4 internal ip address of this Droplet

project_id

Id of the DOProject where this Droplet belongs to

region

The region that the Droplet instance is deployed in

size

The current size object describing the Droplet

status

A status string indicating the state of the Droplet instance.This may be “new”, “active”, “off”, or “archive”

tags

An array of Tags the Droplet has been tagged with

volumes

A flat array including the unique identifier for each Block Storage volume attached to the Droplet

created_at

A time value given in ISO8601 combined date and time format that represents when the Droplet was created

+
+

Relationships

+
    +
  • DODroplet is a resource of a DOProject.

    +
    (DODroplet)<-[RESOURCE]-(DOProject)
    +
    +
    +
  • +
+
+
+
+
+

GCP Schema

+
+

GCPOrganization

+

Representation of a GCP Organization object.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The name of the GCP Organization, e.g. “organizations/1234”

displayname

The “friendly name”, e.g. “My Company”

lifecyclestate

The organization’s current lifecycle state. Assigned by the server. See the official docs.

+
+

Relationships

+
    +
  • GCPOrganizations contain GCPFolders.

    +
    (GCPOrganization)-[RESOURCE]->(GCPFolder)
    +
    +
    +
  • +
  • GCPOrganizations can contain GCPProjects.

    +
    (GCPOrganization)-[RESOURCE]->(GCPProjects)
    +
    +
    +
  • +
+
+
+
+

GCPFolder

+
+

Representation of a GCP Folder. An additional helpful reference is the Google Compute Platform resource hierarchy.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The name of the folder, e.g. “folders/1234”

displayname

A friendly name of the folder, e.g. “My Folder”.

lifecyclestate

The folder’s current lifecycle state. Assigned by the server. See the official docs.

+
+

Relationships

+
    +
  • GCPOrganizations are parents of GCPFolders.

    +
    (GCPOrganization)<-[PARENT]-(GCPFolder)
    +
    +
    +
  • +
  • GCPFolders can contain GCPProjects

    +
    (GCPFolder)-[RESOURCE]->(GCPProject)
    +
    +
    +
  • +
  • GCPFolders can contain other GCPFolders.

    +
    (GCPFolder)-[RESOURCE]->(GCPFolder)
    +
    +
    +
  • +
+
+
+
+

GCPProject

+
+

Representation of a GCP Project. An additional helpful reference is the Google Compute Platform resource hierarchy.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The ID of the project, e.g. “sys-12345”

projectnumber

The number uniquely identifying the project, e.g. ‘987654’

displayname

A friendly name of the project, e.g. “MyProject”.

lifecyclestate

The project’s current lifecycle state. Assigned by the server. See the official docs.

+
+
+

Relationships

+
    +
  • GCPOrganizations contain GCPProjects.

    +
    (GCPOrganization)-[RESOURCE]->(GCPProjects)
    +
    +
    +
      +
    • GCPFolders can contain GCPProjects

      +
      (GCPFolder)-[RESOURCE]->(GCPProject)
      +
      +
      +
    • +
    +
  • +
  • GCPVpcs are part of GCPProjects

    +
    (GCPProject)-[RESOURCE]->(GCPVpc)
    +
    +
    +
  • +
+
+
+

GCPBucket

+

Representation of a GCP Storage Bucket.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The ID of the storage bucket, e.g. “bucket-12345”

projectnumber

The number uniquely identifying the project associated with the storage bucket, e.g. ‘987654’

self_link

The URI of the storage bucket

kind

The kind of item this is. For storage buckets, this is always storage#bucket

location

The location of the bucket. Object data for objects in the bucket resides in physical storage within this region. Defaults to US. See Cloud Storage bucket locations for the authoritative list.

location_type

The type of location that the bucket resides in, as determined by the location property

meta_generation

The metadata generation of this bucket

storage_class

The bucket’s default storage class, used whenever no storageClass is specified for a newly-created object. For more information, see storage classes

time_created

The creation time of the bucket in RFC 3339 format

retention_period

The period of time, in seconds, that objects in the bucket must be retained and cannot be deleted, overwritten, or archived

iam_config_bucket_policy_only

The bucket’s Bucket Policy Only configuration

owner_entity

The entity, in the form project-owner-projectId

owner_entity_id

The ID for the entity

versioning_enabled

The bucket’s versioning configuration (if set to True, versioning is fully enabled for this bucket)

log_bucket

The destination bucket where the current bucket’s logs should be placed

requester_pays

The bucket’s billing configuration (if set to true, Requester Pays is enabled for this bucket)

default_kms_key_name

A Cloud KMS key that will be used to encrypt objects inserted into this bucket, if no encryption method is specified

+
+

Relationships

+
    +
  • GCPBuckets are part of GCPProjects.

    +
    (GCPProject)-[RESOURCE]->(GCPBucket)
    +
    +
    +
  • +
  • GCPBuckets can be labelled with GCPBucketLabels.

    +
    (GCPBucket)<-[LABELLED]-(GCPBucketLabels)
    +
    +
    +
  • +
+
+
+
+

GCPDNSZone

+

Representation of a GCP DNS Zone.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

created_at

The date and time the zone was created

description

An optional description of the zone

dns_name

The DNS name of this managed zone, for instance “example.com.”.

firstseen

Timestamp of when a sync job first discovered this node

id

Unique identifier

name

The name of the zone

nameservers

Virtual name servers the zone is delegated to

visibility

The zone’s visibility: public zones are exposed to the Internet, while private zones are visible only to Virtual Private Cloud resources.

+
+

Relationships

+
    +
  • GKEClusters are resources of GCPProjects.

    +
    (GCPProject)-[RESOURCE]->(GCPDNSZone)
    +
    +
    +
  • +
+
+
+
+

Label: GCPBucketLabel

+

Representation of a GCP Storage Bucket Label. This node contains a key-value pair.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The ID of the bucket label. Takes the form “GCPBucketLabel_{key}.”

key

The key of the bucket label.

value

The value of the bucket label.

+
    +
  • GCPBuckets can be labeled with GCPBucketLabels.

    +
    (GCPBucket)<-[LABELED]-(GCPBucketLabels)
    +
    +
    +
  • +
+
+
+

GCPInstance

+

Representation of a GCP Instance. Additional references can be found in the official documentation.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The partial resource URI representing this instance. Has the form projects/{project_name}/zones/{zone_name}/instances/{instance_name}.

partial_uri

Same as id above.

self_link

The full resource URI representing this instance. Has the form https://www.googleapis.com/compute/v1/{partial_uri}

instancename

The name of the instance, e.g. “my-instance”

zone_name

The zone that the instance is installed on

hostname

If present, the hostname of the instance

exposed_internet

Set to True with exposed_internet_type = 'direct' if there is an ‘allow’ IPRule attached to one of the instance’s ingress firewalls with the following conditions: The ‘allow’ IpRule allows traffic from one or more TCP ports, and the ‘allow’ IpRule is not superceded by a ‘deny’ IPRule (in GCP, a firewall rule of priority 1 gets applied ahead of a firewall rule of priority 100, and ‘deny’ rules of the same priority are applied ahead of ‘allow’ rules)

status

The GCP Instance Lifecycle state of the instance

+
+

Relationships

+
    +
  • GCPInstances are resources of GCPProjects.

    +
    (GCPProject)-[RESOURCE]->(GCPInstance)
    +
    +
    +
  • +
  • GCPNetworkInterfaces are attached to GCPInstances

    +
    (GCPInstance)-[NETWORK_INTERFACE]->(GCPNetworkInterface)
    +
    +
    +
  • +
  • GCP Instances may be members of one or more GCP VPCs.

    +
       (GCPInstance)-[:MEMBER_OF_GCP_VPC]->(GCPVpc)
    +
    +Also note that this relationship is a shortcut for:
    +
    +
    +
    (GCPInstance)-[:NETWORK_INTERFACE]->(:GCPNetworkInterface)-[:PART_OF_SUBNET]->(GCPSubnet)<-[:RESOURCE]-(GCPVpc)
    +
    +
    +
  • +
  • GCP Instances may have GCP Tags defined on them for use in network firewall routing.

    +
    (GCPInstance)-[:TAGGED]->(GCPNetworkTag)
    +
    +
    +
  • +
  • GCP Firewalls allow ingress to GCP instances.

    +
       (GCPFirewall)-[:FIREWALL_INGRESS]->(GCPInstance)
    +
    +Note that this relationship is a shortcut for:
    +
    +
    +
       (vpc:GCPVpc)<-[MEMBER_OF_GCP_VPC]-(GCPInstance)-[TAGGED]->(GCPNetworkTag)-[TARGET_TAG]-(GCPFirewall{direction: 'INGRESS'})<-[RESOURCE]-(vpc)
    +
    +as well as
    +
    +
    +
    MATCH (fw:GCPFirewall{direction: 'INGRESS', has_target_service_accounts: False}})
    +WHERE NOT (fw)-[TARGET_TAG]->(GCPNetworkTag)
    +MATCH (GCPInstance)-[MEMBER_OF_GCP_VPC]->(GCPVpc)-[RESOURCE]->(fw)
    +
    +
    +
  • +
+
+
+
+

GCPNetworkTag

+

Representation of a Tag defined on a GCP Instance or GCP Firewall. Tags are defined on GCP instances for use in network firewall routing.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

GCP doesn’t define a resource URI for Tags so we define this as {instance resource URI}/tags/{tag value}

tag_id

same as id

value

The actual value of the tag

+
+

Relationships

+
    +
  • GCP Instances can be labeled with tags.

    +
    (GCPInstance)-[:TAGGED]->(GCPNetworkTag)
    +
    +
    +
  • +
  • GCP Firewalls can be labeled with tags to direct traffic to or deny traffic to labeled GCPInstances

    +
    (GCPFirewall)-[:TARGET_TAG]->(GCPNetworkTag)
    +
    +
    +
  • +
  • GCPNetworkTags are defined on a VPC and only have effect on assets in that VPC

    +
    (GCPVpc)-[DEFINED_IN]->(GCPNetworkTag)
    +
    +
    +
  • +
+
+
+
+

GCPVpc

+

Representation of a GCP VPC. In GCP documentation this is also known simply as a “Network” object.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The partial resource URI representing this VPC. Has the form projects/{project_name}/global/networks/{vpc name}.

partial_uri

Same as id

self_link

The full resource URI representing this VPC. Has the form https://www.googleapis.com/compute/v1/{partial_uri}

name

The name of the VPC

project_id

The project ID that this VPC belongs to

auto_create_subnetworks

When set to true, the VPC network is created in “auto” mode. When set to false, the VPC network is created in “custom” mode. An auto mode VPC network starts with one subnet per region. Each subnet has a predetermined range as described in Auto mode VPC network IP ranges.

routing_confg_routing_mode

The network-wide routing mode to use. If set to REGIONAL, this network’s Cloud Routers will only advertise routes with subnets of this network in the same region as the router. If set to GLOBAL, this network’s Cloud Routers will advertise routes with all subnets of this network, across regions.

description

A description for the VPC

+
+

Relationships

+
    +
  • GCPVpcs are part of projects

    +
    (GCPProject)-[RESOURCE]->(GCPVpc)
    +
    +
    +
  • +
  • GCPVpcs contain GCPSubnets

    +
    (GCPVpc)-[RESOURCE]->(GCPSubnet)
    +
    +
    +
  • +
  • GCPSubnets are part of GCP VPCs

    +
    (GCPVpc)-[RESOURCE]->(GCPSubnet)
    +
    +
    +
  • +
  • GCPNetworkTags are defined on a VPC and only have effect on assets in that VPC

    +
    (GCPVpc)-[DEFINED_IN]->(GCPNetworkTag)
    +
    +
    +
  • +
  • GCP Instances may be members of one or more GCP VPCs.

    +
       (GCPInstance)-[:MEMBER_OF_GCP_VPC]->(GCPVpc)
    +
    +Also note that this relationship is a shortcut for:
    +
    +
    +
    (GCPInstance)-[:NETWORK_INTERFACE]->(:GCPNetworkInterface)-[:PART_OF_SUBNET]->(GCPSubnet)<-[:RESOURCE]-(GCPVpc)
    +
    +
    +
  • +
+
+
+
+

GCPNetworkInterface

+

Representation of a GCP Instance’s network interface (scroll down to the fields on “networkInterface”).

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

A partial resource URI representing this network interface. Note: GCP does not define a partial resource URI for network interfaces, so we create one so we can uniquely identify GCP network interfaces. Has the form projects/{project_name}/zones/{zone_name}/instances/{instance_name}/networkinterfaces/{network interface name}.

nic_id

Same as id

name

The name of the network interface

private_ip

The private IP address of this network interface. This IP is valid on the network interface’s VPC.

+
+

Relationships

+
    +
  • GCPNetworkInterfaces are attached to GCPInstances

    +
    (GCPInstance)-[NETWORK_INTERFACE]->(GCPNetworkInterface)
    +
    +
    +
  • +
  • GCPNetworkInterfaces are connected to GCPSubnets

    +
    (GCPNetworkInterface)-[PART_OF_SUBNET]->(GCPSubnet)
    +
    +
    +
  • +
  • GCPNetworkInterfaces have GCPNicAccessConfig objects defined on them

    +
    (GCPNetworkInterface)-[RESOURCE]->(GCPNicAccessConfig)
    +
    +
    +
  • +
+
+
+
+

GCPNicAccessConfig

+

Representation of the AccessConfig object on a GCP Instance’s network interface (scroll down to the fields on “networkInterface”).

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

A partial resource URI representing this AccessConfig. Note: GCP does not define a partial resource URI for AccessConfigs, so we create one so we can uniquely identify GCP network interface access configs. Has the form projects/{project_name}/zones/{zone_name}/instances/{instance_name}/networkinterfaces/{network interface name}/accessconfigs/{access config type}.

partial_uri

Same as id

type

The type of configuration. GCP docs say: “The default and only option is ONE_TO_ONE_NAT.”

name

The name of this access configuration. The default and recommended name is External NAT, but you can use any arbitrary string, such as My external IP or Network Access.

public_ip

The external IP associated with this instance

set_public_ptr

Specifies whether a public DNS ‘PTR’ record should be created to map the external IP address of the instance to a DNS domain name.

public_ptr_domain_name

The DNS domain name for the public PTR record. You can set this field only if the setPublicPtr field is enabled.

network_tier

This signifies the networking tier used for configuring this access configuration and can only take the following values: PREMIUM, STANDARD.

+
+

Relationships

+
    +
  • GCPNetworkInterfaces have GCPNicAccessConfig objects defined on them

    +
    (GCPNetworkInterface)-[RESOURCE]->(GCPNicAccessConfig)
    +
    +
    +
  • +
+
+
+
+

GCPRecordSet

+

Representation of a GCP Resource Record Set.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

data

Data contained in the record

firstseen

Timestamp of when a sync job first discovered this node

id

Same as name

name

The name of the Resource Record Set

type

The identifier of a supported record type. See the list of Supported DNS record types.

ttl

Number of seconds that this ResourceRecordSet can be cached by resolvers.

+
+

Relationships

+
    +
  • GCPRecordSets are records of GCPDNSZones.

    +
    (GCPDNSZone)-[HAS_RECORD]->(GCPRecordSet)
    +
    +
    +
  • +
+
+
+
+

GCPSubnet

+

Representation of a GCP Subnetwork.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

A partial resource URI representing this Subnet. Has the form projects/{project}/regions/{region}/subnetworks/{subnet name}.

partial_uri

Same as id

self_link

The full resource URI representing this subnet. Has the form https://www.googleapis.com/compute/v1/{partial_uri}

project_id

The project ID that this Subnet belongs to

name

The name of this Subnet

region

The region of this Subnet

gateway_address

Gateway IP address of this Subnet

ip_cidr_range

The CIDR range covered by this Subnet

vpc_partial_uri

The partial URI of the VPC that this Subnet is a part of

private_ip_google_access

Whether the VMs in this subnet can access Google services without assigned external IP addresses. This field can be both set at resource creation time and updated using setPrivateIpGoogleAccess.

+
+

Relationships

+
    +
  • GCPSubnets are part of GCP VPCs

    +
    (GCPVpc)-[RESOURCE]->(GCPSubnet)
    +
    +
    +
  • +
  • GCPNetworkInterfaces are connected to GCPSubnets

    +
    (GCPNetworkInterface)-[PART_OF_SUBNET]->(GCPSubnet)
    +
    +
    +
  • +
+
+
+
+

GCPFirewall

+

Representation of a GCP Firewall.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

A partial resource URI representing this Firewall.

partial_uri

Same as id

direction

Either ‘INGRESS’ for inbound or ‘EGRESS’ for outbound

disabled

Whether this firewall object is disabled

priority

The priority of this firewall rule from 1 (apply this first)-65535 (apply this last)

self_link

The full resource URI to this firewall

has_target_service_accounts

Set to True if this Firewall has target service accounts defined. This field is currently a placeholder for future functionality to add GCP IAM objects to Cartography. If True, this firewall rule will only apply to GCP instances that use the specified target service account.

+
+

Relationships

+
    +
  • Firewalls belong to VPCs

    +
    (GCPVpc)-[RESOURCE]->(GCPFirewall)
    +
    +
    +
  • +
  • Firewalls define rules that allow traffic

    +
    (GcpIpRule)-[ALLOWED_BY]->(GCPFirewall)
    +
    +
    +
  • +
  • Firewalls define rules that deny traffic

    +
    (GcpIpRule)-[DENIED_BY]->(GCPFirewall)
    +
    +
    +
  • +
  • GCP Firewalls can be labeled with tags to direct traffic to or deny traffic to labeled GCPInstances

    +
    (GCPFirewall)-[:TARGET_TAG]->(GCPNetworkTag)
    +
    +
    +
  • +
  • GCP Firewalls allow ingress to GCP instances.

    +
       (GCPFirewall)-[:FIREWALL_INGRESS]->(GCPInstance)
    +
    +Note that this relationship is a shortcut for:
    +
    +
    +
       (vpc:GCPVpc)<-[MEMBER_OF_GCP_VPC]-(GCPInstance)-[TAGGED]->(GCPNetworkTag)-[TARGET_TAG]-(GCPFirewall{direction: 'INGRESS'})<-[RESOURCE]-(vpc)
    +
    +as well as
    +
    +
    +
    MATCH (fw:GCPFirewall{direction: 'INGRESS', has_target_service_accounts: False}})
    +WHERE NOT (fw)-[TARGET_TAG]->(GCPNetworkTag)
    +MATCH (GCPInstance)-[MEMBER_OF_GCP_VPC]->(GCPVpc)-[RESOURCE]->(fw)
    +
    +
    +
  • +
+
+
+
+

GCPForwardingRule

+

Representation of GCP Forwarding Rules and Global Forwarding Rules.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

A partial resource URI representing this Forwarding Rule

partial_uri

Same as id

ip_address

IP address that this Forwarding Rule serves

ip_protocol

IP protocol to which this rule applies

load_balancing_scheme

Specifies the Forwarding Rule type

name

Name of the Forwarding Rule

network

A partial resource URI of the network this Forwarding Rule belongs to

port_range

Port range used in conjunction with a target resource. Only packets addressed to ports in the specified range will be forwarded to target configured

ports

Ports to forward to a backend service. Only packets addressed to these ports are forwarded to the backend services configured

project_id

The project ID that this Forwarding Rule belongs to

region

The region of this Forwarding Rule

self_link

Server-defined URL for the resource

subnetwork

A partial resource URI of the subnetwork this Forwarding Rule belongs to

target

A partial resource URI of the target resource to receive the traffic

+
+

Relationships

+
    +
  • GCPForwardingRules can be a resource of a GCPVpc.

    +
    (GCPVpc)-[RESOURCE]->(GCPForwardingRule)
    +
    +
    +
  • +
  • GCPForwardingRules can be a resource of a GCPSubnet.

    +
    (GCPSubnet)-[RESOURCE]->(GCPForwardingRule)
    +
    +
    +
  • +
+
+
+
+

GKECluster

+

Representation of a GCP GKE Cluster.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

basic_auth

Set to True if both masterauth_username and masterauth_password are set

created_at

The date and time the cluster was created

cluster_ipv4cidr

The IP address range of the container pods in the cluster

current_master_version

The current software version of the master endpoint

database_encryption

Configuration of etcd encryption

description

An optional description of the cluster

endpoint

The IP address of the cluster’s master endpoint. The endpoint can be accessed from the internet at https://username:password@endpoint/

exposed_internet

Set to True if at least among private_nodes, private_endpoint_enabled, or master_authorized_networks are disabled

firstseen

Timestamp of when a sync job first discovered this node

id

Same as self_link

initial_version

The initial Kubernetes version for the cluster

location

The name of the Google Compute Engine zone or region in which the cluster resides

logging_service

The logging service used to write logs. Available options: logging.googleapis.com/kubernetes, logging.googleapis.com, none

master_authorized_networks

If enabled, it disallows all external traffic to access Kubernetes master through HTTPS except traffic from the given CIDR blocks, Google Compute Engine Public IPs and Google Prod IPs

masterauth_username

The username to use for HTTP basic authentication to the master endpoint. For clusters v1.6.0 and later, basic authentication can be disabled by leaving username unspecified (or setting it to the empty string)

masterauth_password

The password to use for HTTP basic authentication to the master endpoint. If a password is provided for cluster creation, username must be non-empty

monitoring_service

The monitoring service used to write metrics. Available options: monitoring.googleapis.com/kubernetes, monitoring.googleapis.com, none

name

The name of the cluster

network

The name of the Google Compute Engine network to which the cluster is connected

network_policy

Set to True if a network policy provider has been enabled

private_endpoint_enabled

Whether the master’s internal IP address is used as the cluster endpoint

private_endpoint

The internal IP address of the cluster’s master endpoint

private_nodes

If enabled, all nodes are given only private addresses and communicate with the master via private networking

public_endpoint

The external IP address of the cluster’s master endpoint

self_link

Server-defined URL for the resource

services_ipv4cidr

The IP address range of the Kubernetes services in the cluster

shielded_nodes

Whether Shielded Nodes are enabled

status

The current status of the cluster

subnetwork

The name of the Google Compute Engine subnetwork to which the cluster is connected

zone

The name of the Google Compute Engine zone in which the cluster resides

+
+

Relationships

+
    +
  • GKEClusters are resources of GCPProjects.

    +
    (GCPProject)-[RESOURCE]->(GKECluster)
    +
    +
    +
  • +
+
+
+
+

IpRule::IpPermissionInbound::GCPIpRule

+

An IpPermissionInbound node is a specific type of IpRule. It represents a generic inbound IP-based rules. The creation of this node is currently derived from ingesting AWS EC2 Security Group rules.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

ruleid

{firewall_partial_uri}/{rule_type}/{port_range}{protocol}

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

protocol

The protocol this rule applies to

fromport

Lowest port in the range defined by this rule

toport

Highest port in the range defined by this rule

+
+

Relationships

+
    +
  • GCP Firewall rules are defined on IpRange objects.

    +
    (GCPIpRule, IpRule, IpPermissionInbound)<-[MEMBER_OF_IP_RULE)-(:IpRange)
    +
    +
    +
  • +
  • Firewalls define rules that allow traffic

    +
    (GcpIpRule)-[ALLOWED_BY]->(GCPFirewall)
    +
    +
    +
  • +
  • Firewalls define rules that deny traffic

    +
    (GcpIpRule)-[DENIED_BY]->(GCPFirewall)
    +
    +
    +
  • +
+
+
+
+

IpRange

+

Representation of an IP range or subnet.

+ ++++ + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

CIDR notation for the IP range. E.g. “0.0.0.0/0” for the whole internet.

+
+

Relationships

+
    +
  • GCP Firewall rules are defined on IpRange objects.

    +
    (GCPIpRule, IpRule, IpPermissionInbound)<-[MEMBER_OF_IP_RULE)-(:IpRange)
    +
    +
    +
  • +
+
+
+
+
+

Github Schema

+
+

GitHubRepository

+

Representation of a single GitHubRepository (repo) repository object. This node contains all data unique to the repo.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first created this node

lastupdated

Timestamp of the last time the node was updated

id

The GitHub repo id. These are not unique across GitHub instances, so are prepended with the API URL the id applies to

createdat

GitHub timestamp from when the repo was created

name

Name of the repo

fullname

Name of the organization and repo together

description

Text describing the repo

primarylanguage

The primary language used in the repo

homepage

The website used as a homepage for project information

defaultbranch

The default branch used by the repo, typically master

defaultbranchid

The unique identifier of the default branch

private

True if repo is private

disabled

True if repo is disabled

archived

True if repo is archived

locked

True if repo is locked

giturl

URL used to access the repo from git commandline

url

Web URL for viewing the repo

sshurl

URL for access the repo via SSH

updatedat

GitHub timestamp for last time repo was modified

+
+

Relationships

+
    +
  • GitHubUsers or GitHubOrganizations own GitHubRepositories.

    +
    (GitHubUser)-[OWNER]->(GitHubRepository)
    +(GitHubOrganization)-[OWNER]->(GitHubRepository)
    +
    +
    +
  • +
  • GitHubRepositories in an organization can have outside collaborators with different permissions, including ADMIN, +WRITE, MAINTAIN, TRIAGE, and READ (Reference).

    +
    (GitHubUser)-[:OUTSIDE_COLLAB_{ACTION}]->(GitHubRepository)
    +
    +
    +
  • +
  • GitHubRepositories use ProgrammingLanguages

    +
    (GitHubRepository)-[:LANGUAGE]->(ProgrammingLanguage)
    +
    +
    +
  • +
  • GitHubRepositories have GitHubBranches

    +
    (GitHubRepository)-[:BRANCH]->(GitHubBranch)
    +
    +
    +
  • +
  • GitHubTeams can have various levels of access to GitHubRepositories.

    +
    (GitHubTeam)-[ADMIN|READ|WRITE|TRIAGE|MAINTAIN]->(GitHubRepository)
    +
    +
    +
  • +
+
+
+
+

GitHubOrganization

+

Representation of a single GitHubOrganization organization object. This node contains minimal data for the GitHub Organization.

+ ++++ + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first created this node

lastupdated

Timestamp of the last time the node was updated

id

The URL of the GitHub organization

username

Name of the organization

+
+

Relationships

+
    +
  • GitHubOrganizations own GitHubRepositories.

    +
    (GitHubOrganization)-[OWNER]->(GitHubRepository)
    +
    +
    +
  • +
  • GitHubTeams are resources under GitHubOrganizations

    +
    (GitHubOrganization)-[RESOURCE]->(GitHubTeam)
    +
    +
    +
  • +
+
+
+
+

GitHubTeam

+

A GitHubTeam organization object.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first created this node

lastupdated

Timestamp of the last time the node was updated

id

The URL of the GitHub Team

name

The name (a.k.a URL slug) of the GitHub Team

description

Description of the GitHub team

+
+

Relationships

+
    +
  • GitHubTeams can have various levels of access to GitHubRepositories.

    +
    (GitHubTeam)-[ADMIN|READ|WRITE|TRIAGE|MAINTAIN]->(GitHubRepository)
    +
    +
    +
  • +
  • GitHubTeams are resources under GitHubOrganizations

    +
    (GitHubOrganization)-[RESOURCE]->(GitHubTeam)
    +
    +
    +
  • +
+
+
+
+

GitHubUser

+

Representation of a single GitHubUser user object. This node contains minimal data for the GitHub User.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first created this node

lastupdated

Timestamp of the last time the node was updated

id

The URL of the GitHub user

username

Name of the user

fullname

The full name

has_2fa_enabled

Whether the user has 2-factor authentication enabled

role

Either ‘ADMIN’ (denoting that the user is an owner of a Github organization) or ‘MEMBER’

is_site_admin

Whether the user is a site admin

permission

Only present if the user is an outside collaborator of this repo.

+

permission is either ADMIN, MAINTAIN, READ, TRIAGE, or WRITE (ref). +| email | The user’s publicly visible profile email. +| company | The user’s public profile company.

+
+

Relationships

+
    +
  • GitHubUsers own GitHubRepositories.

    +
    (GitHubUser)-[OWNER]->(GitHubRepository)
    +
    +
    +
  • +
  • GitHubRepositories in an organization can have outside collaborators with different permissions, including ADMIN, +WRITE, MAINTAIN, TRIAGE, and READ (Reference).

    +
    (GitHubUser)-[:OUTSIDE_COLLAB_{ACTION}]->(GitHubRepository)
    +
    +
    +
  • +
+
+
+
+

GitHubBranch

+

Representation of a single GitHubBranch ref object. This node contains minimal data for a repository branch.

+ ++++ + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first created this node

lastupdated

Timestamp of the last time the node was updated

id

The GitHub branch id. These are not unique across GitHub instances, so are prepended with the API URL the id applies to

name

Name of the branch

+
+

Relationships

+
    +
  • GitHubRepositories have GitHubBranches.

    +
    (GitHubBranch)<-[BRANCH]-(GitHubRepository)
    +
    +
    +
  • +
+
+
+
+

ProgrammingLanguage

+

Representation of a single Programming Language language object. This node contains programming language information.

+ ++++ + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first created this node

lastupdated

Timestamp of the last time the node was updated

id

Language ids need not be tracked across instances, so defaults to the name

name

Name of the language

+
+

Relationships

+
    +
  • GitHubRepositories use ProgrammingLanguages.

    +
    (ProgrammingLanguage)<-[LANGUAGE]-(GitHubRepository)
    +
    +
    +
  • +
+
+
+
+

Dependency::PythonLibrary

+

Representation of a Python library as listed in a requirements.txt +or setup.cfg file. +Within a setup.cfg file, cartography will load everything from install_requires, setup_requires, and extras_require.

+ ++++ + + + + + + + + + + + + + + + + +

Field

Description

id

The canonicalized name of the library. If the library was pinned in a requirements file using the == operator, then id has the form {canonical name}|{pinned_version}.

name

The canonicalized name of the library.

version

The exact version of the library. This field is only present if the library was pinned in a requirements file using the == operator.

+
+

Relationships

+
    +
  • Software on Github repos can import Python libraries by optionally specifying a version number.

    +
    (GitHubRepository)-[:REQUIRES{specifier}]->(PythonLibrary)
    +
    +
    +
      +
    • specifier: A string describing this library’s version e.g. “<4.0,>=3.0” or “==1.0.2”. This field is only present on the :REQUIRES edge if the repo’s requirements file provided a version pin.

    • +
    +
  • +
+
+
+
+
+

GSuite Schema

+
+

GSuiteUser

+

Reference: +https://developers.google.com/admin-sdk/directory/v1/reference/users#resource

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

id

The unique ID for the user as a string. A user id can be used as a user request URI’s userKey

user_id

duplicate of id.

agreed_to_terms

This property is true if the user has completed an initial login and accepted the Terms of Service agreement.

change_password_at_next_login

Indicates if the user is forced to change their password at next login. This setting doesn’t apply when the user signs in via a third-party identity provider.

creation_time

The time the user’s account was created. The value is in ISO 8601 date and time format. The time is the complete date plus hours, minutes, and seconds in the form YYYY-MM-DDThh:mm:ssTZD. For example, 2010-04-05T17:30:04+01:00.

customer_id

The customer ID to retrieve all account users. You can use the alias my_customer to represent your account’s customerId. As a reseller administrator, you can use the resold customer account’s customerId. To get a customerId, use the account’s primary domain in the domain parameter of a users.list request.

etag

ETag of the resource

include_in_global_address_list

Indicates if the user’s profile is visible in the G Suite global address list when the contact sharing feature is enabled for the domain. For more information about excluding user profiles, see the administration help center.

ip_whitelisted

If true, the user’s IP address is white listed.

is_admin

Indicates a user with super admininistrator privileges. The isAdmin property can only be edited in the Make a user an administrator operation (makeAdmin method). If edited in the user insert or update methods, the edit is ignored by the API service.

is_delegated_admin

Indicates if the user is a delegated administrator. Delegated administrators are supported by the API but cannot create or undelete users, or make users administrators. These requests are ignored by the API service. Roles and privileges for administrators are assigned using the Admin console.

is_enforced_in_2_sv

Is 2-step verification enforced (Read-only)

is_enrolled_in_2_sv

Is enrolled in 2-step verification (Read-only)

is_mailbox_setup

Indicates if the user’s Google mailbox is created. This property is only applicable if the user has been assigned a Gmail license.

kind

The type of the API resource. For Users resources, the value is admin#directory#user.

last_login_time

The last time the user logged into the user’s account. The value is in ISO 8601 date and time format. The time is the complete date plus hours, minutes, and seconds in the form YYYY-MM-DDThh:mm:ssTZD. For example, 2010-04-05T17:30:04+01:00.

name

First name + Last name

family_name

The user’s last name. Required when creating a user account.

given_name

The user’s first name. Required when creating a user account.

org_unit_path

The full path of the parent organization associated with the user. If the parent organization is the top-level, it is represented as a forward slash (/).

primary_email

The user’s primary email address. This property is required in a request to create a user account. The primaryEmail must be unique and cannot be an alias of another user.

suspended

Indicates if user is suspended

thumbnail_photo_etag

ETag of the user’s photo

thumbnail_photo_url

Photo Url of the user

lastupdated

Timestamp of when a sync job last updated this node

firstseen

Timestamp of when a sync job first discovered this node

+
+

Relationships

+
    +
  • GSuiteUser is an identity for a Human

    +
    (Human)-[IDENTITY_GSUITE]->(GSuiteUser)
    +
    +
    +
  • +
+
+
+
+

GSuiteGroup

+

Reference: +https://developers.google.com/admin-sdk/directory/v1/reference/groups

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

id

The unique ID of a group. A group id can be used as a group request URI’s groupKey.

admin_created

Value is true if this group was created by an administrator rather than a user.

description

An extended description to help users determine the purpose of a group. For example, you can include information about who should join the group, the types of messages to send to the group, links to FAQs about the group, or related groups. Maximum length is 4,096 characters.

direct_members_count

The number of users that are direct members of the group. If a group is a member (child) of this group (the parent), members of the child group are not counted in the directMembersCount property of the parent group

email

The group’s email address. If your account has multiple domains, select the appropriate domain for the email address. The email must be unique. This property is required when creating a group. Group email addresses are subject to the same character usage rules as usernames, see the administration help center for the details.

etag

ETag of the resource

kind

The type of the API resource. For Groups resources, the value is admin#directory#group.

name

The group’s display name.

lastupdated

Timestamp of when a sync job last updated this node

firstseen

Timestamp of when a sync job first discovered this node

+
+
+
+

Jamf Schema

+
+

JamfComputerGroup

+

Representation of a Jamf computer group.

+ ++++ + + + + + + + + + + + + + + + + +

Field

Description

id

The group id

name

The friendly name of the group

is_smart

Whether the group is smart

+
+

Relationships

+
    +
  • Coming soon!

  • +
+
+
+
+
+

Kubernetes Schema

+
+

KubernetesCluster

+

Representation of a Kubernetes Cluster.

+ ++++ + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

Identifier for the cluster i.e. UID of kube-system namespace

name

Name assigned to the cluster which is derived from kubeconfig context

+
+

Relationships

+
    +
  • KubernetesCluster has KubernetesNamespaces.

    +
    (KubernetesCluster)-[HAS_NAMESPACE]->(KubernetesNamespace)
    +
    +
    +
  • +
  • KubernetesCluster can have KubernetesPods.

    +
    (KubernetesCluster)-[HAS_POD]->(KubernetesPod)
    +
    +
    +
  • +
+
+
+
+

KubernetesNamespace

+

Representation of a Kubernetes Namespace.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

UID of the kubernetes namespace

name

Name of the kubernetes namespace

created_at

Timestamp of the creation time of the kubernetes namespace

deleted_at

Timestamp of the deletion time of the kubernetes namespace

+
+

Relationships

+
    +
  • KubernetesNamespace can have KubernetesPods.

    +
    (KubernetesNamespace)-[HAS_POD]->(KubernetesPod)
    +
    +
    +
  • +
  • KubernetesNamespace can have KubernetesServices.

    +
    (KubernetesNamespace)-[HAS_SERVICE]->(KubernetesService)
    +
    +
    +
  • +
  • KubernetesNamespace can have KubernetesSecrets.

    +
    (KubernetesNamespace)-[HAS_SECRET]->(KubernetesSecret)
    +
    +
    +
  • +
+
+
+
+

KubernetesPod

+

Representation of a Kubernetes Pod.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

UID of the kubernetes pod

name

Name of the kubernetes pod

status_phase

The phase of a Pod is a simple, high-level summary of where the Pod is in its lifecycle.

created_at

Timestamp of the creation time of the kubernetes pod

deleted_at

Timestamp of the deletion time of the kubernetes pod

+
+

Relationships

+
    +
  • KubernetesPod has KubernetesContainers.

    +
    (KubernetesPod)-[HAS_CONTAINER]->(KubernetesContainer)
    +
    +
    +
  • +
+
+
+
+

KubernetesContainer

+

Representation of a Kubernetes Container.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

Identifier for the container which is derived from the UID of pod and the name of container

name

Name of the container in kubernetes pod

image

Docker image used in the container

status_image_id

ImageID of the container’s image.

status_image_sha

The SHA portion of the status_image_id

status_ready

Specifies whether the container has passed its readiness probe.

status_started

Specifies whether the container has passed its startup probe.

statys_state

State of the container (running, terminated, waiting)

+
+

Relationships

+
    +
  • KubernetesPod has KubernetesContainers.

    +
    (KubernetesPod)-[HAS_CONTAINER]->(KubernetesContainer)
    +
    +
    +
  • +
+
+
+
+

KubernetesService

+

Representation of a Kubernetes Service.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

UID of the kubernetes service

name

Name of the kubernetes service

created_at

Timestamp of the creation time of the kubernetes service

deleted_at

Timestamp of the deletion time of the kubernetes service

type

Type of kubernetes service e.g. ClusterIP

load_balancer_ip

IP of the load balancer when service type is LoadBalancer

ingress_host

Hostname of the ingress endpoint, if any

ingress_ip

IP of the ingress endpoint, if any

+
+

Relationships

+
    +
  • KubernetesService can serve KubernetesPods.

    +
    (KubernetesService)-[SERVES_POD]->(KubernetesPod)
    +
    +
    +
  • +
+
+
+
+

KubernetesSecret

+

Representation of a Kubernetes Secret.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

UID of the kubernetes secret

name

Name of the kubernetes secret

created_at

Timestamp of the creation time of the kubernetes secret

deleted_at

Timestamp of the deletion time of the kubernetes secret

type

Type of kubernetes secret e.g. Opaque

+
+

Relationships

+
    +
  • KubernetesNamespace can have KubernetesSecrets.

    +
    (KubernetesNamespace)-[HAS_SECRET]->(KubernetesSecret)
    +
    +
    +
  • +
+
+
+
+
+

Okta Schema

+
+

OktaOrganization

+

Representation of an Okta Organization.

+ ++++ + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The name of the Okta Organization, e.g. “lyft”

name

The name of the Okta Organization, e.g. “lyft”

+
+

Relationships

+
    +
  • An OktaOrganization contains OktaUsers

    +
    (OktaOrganization)-[RESOURCE]->(OktaUser)
    +
    +
    +
  • +
  • An OktaOrganization contains OktaGroups.

    +
    (OktaOrganization)-[RESOURCE]->(OktaGroup)
    +
    +
    +
  • +
  • An OktaOrganization contains OktaApplications

    +
    (OktaOrganization)-[RESOURCE]->(OktaApplication)
    +
    +
    +
  • +
  • An OktaOrganization has OktaTrustedOrigins

    +
    (OktaOrganization)-[RESOURCE]->(OktaTrustedOrigin)
    +
    +
    +
  • +
  • An OktaOrganization has OktaAdministrationRoles

    +
    (OktaOrganization)-[RESOURCE]->(OktaAdministrationRole)
    +
    +
    +
  • +
+
+
+
+

OktaUser

+

Representation of an Okta User.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

id

user id

first_name

user first name

last_name

user last name

login

user usernmae used to login (usually email)

email

user email

second_email

user secondary email

mobile_phone

user mobile phone

created

date and time of creation

activated

date and time of activation

status_changed

date and time of the last state change

last_login

date and time of last login

okta_last_updated

date and time of last user property changes

password_changed

date and time of last password change

transition_to_status

date and time of last state transition change

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

+
+

Relationships

+
    +
  • An OktaOrganization contains OktaUsers

    +
    (OktaUser)<-[RESOURCE]->(OktaOrganization)
    +
    +
    +
  • +
  • OktaUsers are assigned OktaApplication

    +
    (OktaUser)-[APPLICATION]->(OktaApplication)
    +
    +
    +
  • +
  • OktaUser is an identity for a Human

    +
    (OktaUser)<-[IDENTITY_OKTA]-(Human)
    +
    +
    +
  • +
  • An OktaUser can be a member of an OktaGroup

    +
    (OktaUser)-[MEMBER_OF_OKTA_GROUP]->(OktaGroup)
    +
    +
    +
  • +
  • An OktaUser can be a member of an OktaAdministrationRole

    +
    (OktaUser)-[MEMBER_OF_OKTA_ROLE]->(OktaAdministrationRole)
    +
    +
    +
  • +
  • OktaUsers can have authentication factors

    +
    (OktaUser)-[FACTOR]->(OktaUserFactor)
    +
    +
    +
  • +
+
+
+
+

OktaGroup

+

Representation of an Okta Group.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

id

application id

name

group name

description

group description

sam_account_name

windows SAM account name mapped

dn

group dn

windows_domain_qualified_name

windows domain name

external_id

group foreign id

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

+
+

Relationships

+
    +
  • OktaOrganizations contain OktaGroups

    +
    (OktaGroup)<-[RESOURCE]->(OktaOrganizations)
    +
    +
    +
  • +
  • OktaApplications can be assigned to OktaGroups

    +
    (OktaGroup)-[APPLICATION]->(OktaApplication)
    +
    +
    +
  • +
  • An OktaUser can be a member of an OktaGroup

    +
    (OktaUser)-[MEMBER_OF_OKTA_GROUP]->(OktaGroup)
    +
    +
    +
  • +
  • An OktaGroup can be a member of an OktaAdministrationRole

    +
    (OktaGroup)-[MEMBER_OF_OKTA_ROLE]->(OktaAdministrationRole)
    +
    +
    +
  • +
+
+
+
+

OktaApplication

+

Representation of an Okta Application.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

id

application id

name

application name

label

application label

created

application creation date

okta_last_updated

date and time of last application property changes

status

application status

activated

application activation state

features

application features

sign_on_mode

application signon mode

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

+
+

Relationships

+
    +
  • OktaApplication is a resource of an OktaOrganization

    +
    (OktaApplication)<-[RESOURCE]->(OktaOrganization)
    +
    +
    +
      +
    • OktaGroups can be assigned OktaApplications

    • +
    +
    (OktaGroup)-[APPLICATION]->(OktaApplication)
    +
    +
    +
      +
    • OktaUsers are assigned OktaApplications

    • +
    +
    (OktaUser)-[APPLICATION]->(OktaApplication)
    +
    +
    +
      +
    • OktaApplications have ReplyUris

    • +
    +
    (ReplyUri)-[REPLYURI]->(OktaApplication)
    +
    +
    +
  • +
+
+
+
+

OktaUserFactor

+

Representation of Okta User authentication Factors.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

id

factor id

factor_type

factor type

provider

factor provider

status

factor status

created

factor creation date and time

okta_last_updated

date and time of last property changes

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

+
+

Relationships

+
    +
  • OktaUsers can have authentication Factors

    +
    (OktaUser)-[FACTOR]->(OktaUserFactor)
    +
    +
    +
  • +
+
+
+
+

OktaTrustedOrigin

+

Representation of an Okta Trusted Origin for login/logout or recovery operations.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

id

trusted origin id

name

name

scopes

array of scope

status

status

created

date & time of creation in okta

create_by

id of user who created the trusted origin

okta_last_updated

date and time of last property changes

okta_last_updated_by

id of user who last updated the trusted origin

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

+
+

Relationships

+
    +
  • An OktaOrganization has OktaTrustedOrigins.

    +
    (OktaOrganization)-[RESOURCE]->(OktaTrustedOrigin)
    +
    +
    +
  • +
+
+
+
+

OktaAdministrationRole

+

Representation of an Okta Administration Role.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

id

role id mapped to the type

type

role type

label

role label

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

+
+

Relationships

+
    +
  • OktaUsers can be members of OktaAdministrationRoles

    +
    (OktaUser)-[MEMBER_OF_OKTA_ROLE]->(OktaAdministrationRole)
    +
    +
    +
  • +
  • An OktaGroup can be a member of an OktaAdministrationRolee

    +
    (OktaGroup)-[MEMBER_OF_OKTA_ROLE]->(OktaAdministrationRole)
    +
    +
    +
      +
    • An OktaOrganization contains OktaAdministrationRoles

      +
      (OktaOrganization)-[RESOURCE]->(OktaAdministrationRole)
      +
      +
      +
    • +
    +
  • +
+
+
+
+

Reply Uri

+

Representation of Okta Application ReplyUri.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

id

uri the app can send the reply to

uri

uri the app can send the reply to

valid

is the DNS of the reply uri valid. Invalid replyuris can lead to oath phishing

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

+
+

Relationships

+
    +
  • OktaApplications have ReplyUris

    +
    (ReplyUri)-[REPLYURI]->(OktaApplication)
    +
    +
    +
  • +
+
+
+
+
+

Pagerduty Schema

+
+

PagerDutyEscalationPolicy

+

Representation of a PagerDuty Escalation Policy

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The ID of the escalation policy

html_url

the API show URL at which the object is accessible

type

The type of this pagerduty object (escalation_policy)

summary

A short-form, server-generated string that provides succinct, important information about an object suitable for primary labeling of an entity in a client. In many cases, this will be identical to name, though it is not intended to be an identifier.

on_call_handoff_notifications

Determines how on call handoff notifications will be sent for users on the escalation policy. Defaults to “if_has_services”.

name

The name of the escalation policy.

num_loops

The number of times the escalation policy will repeat after reaching the end of its escalation.

+
+

Relationships

+
    +
  • A PagerDutyEscalationPolicy has PagerDutyEscalationPolicyRules

    +
    (PagerDutyEscalationPolicy)-[HAS\_RULE]->(PagerDutyEscalationPolicyRule)
    +
    +
    +
  • +
  • A PagerDutyEscalationPolicy is associated with PagerDutyUsers

    +
    (PagerDutyEscalationPolicy)-[ASSOCIATED\_WITH]->(PagerDutyUser)
    +
    +
    +
  • +
  • A PagerDutyEscalationPolicy is associated with PagerDutySchedules

    +
    (PagerDutyEscalationPolicy)-[ASSOCIATED\_WITH]->(PagerDutySchedule)
    +
    +
    +
  • +
  • A PagerDutyEscalationPolicy is associated with PagerDutyServices

    +
    (PagerDutyEscalationPolicy)-[ASSOCIATED\_WITH]->(PagerDutyService)
    +
    +
    +
  • +
  • A PagerDutyEscalationPolicy is associated with PagerDutyTeams

    +
    (PagerDutyEscalationPolicy)-[ASSOCIATED\_WITH]->(PagerDutyTeam)
    +
    +
    +
  • +
+
+
+
+

PagerDutySchedule

+

Representation of a PagerDuty Schedule

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The ID of the schedule

html_url

the API show URL at which the object is accessible

type

The type of this pagerduty object (schedule)

summary

A short-form, server-generated string that provides succinct, important information about an object suitable for primary labeling of an entity in a client. In many cases, this will be identical to name, though it is not intended to be an identifier.

name

The name of the schedule.

time_zone

The time zone of the schedule

description

The description of the schedule

+
+

Relationships

+
    +
  • A PagerDutySchedule has PagerDutyScheduleLayers

    +
    (PagerDutySchedule)-[HAS\_LAYER]->(PagerDutyScheduleLayer)
    +
    +
    +
  • +
+
+
+
+

PagerDutyScheduleLayer

+

Representation of a layer in a PagerDuty Schedule

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The ID of the schedule layer

schedule_id

The ID of the schedule this layer is attached to.

start

The start time of this layer

end

The end time of this layer. If null, the layer does not end.

rotation_virtual_start

The effective start time of the layer. This can be before the start time of the schedule.

rotation_turn_length_seconds

The duration of each on-call shift in seconds.

+
+

Relationships

+

No relationships originating from PagerDutyScheduleLayer

+
+
+
+

PagerDutyService

+

Representation of a PagerDuty Service

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The ID of the service

html_url

the API show URL at which the object is accessible

type

The type of this pagerduty object (service)

summary

A short-form, server-generated string that provides succinct, important information about an object suitable for primary labeling of an entity in a client. In many cases, this will be identical to name, though it is not intended to be an identifier.

name

The name of this service

description

The user-provided description of the service.

auto_resolve_timeout

Time in seconds that an incident is automatically resolved if left open for that long. Value is null if the feature is disabled. Value must not be negative. Setting this field to 0, null (or unset in POST request) will disable the feature.

acknowledgement_timeout

Time in seconds that an incident changes to the Triggered State after being Acknowledged. Value is null if the feature is disabled. Value must not be negative. Setting this field to 0, null (or unset in POST request) will disable the feature.

created_at

The date/time when this service was created

status

The current state of the Service.

alert_creation

Whether a service creates only incidents, or both alerts and incidents. A service must create alerts in order to enable incident merging.

alert_grouping_parameters_type

The type of Alert Grouping.

incident_urgency_rule_type

The type of incident urgency: whether it’s constant, or it’s dependent on the support hours.

incident_urgency_rule_during_support_hours_type

The type of incident urgency: whether it’s constant, or it’s dependent on the support hours.

incident_urgency_rule_during_support_hours_urgency

The incidents’ urgency, if type is constant.

incident_urgency_rule_outside_support_hours_type

The type of incident urgency: whether it’s constant, or it’s dependent on the support hours.

incident_urgency_rule_outside_support_hours_urgency

The incidents’ urgency, if type is constant.

support_hours_type

The type of support hours

support_hours_time_zone

The time zone for the support hours

support_hours_start_time

The support hours’ starting time of day (date portion is ignored)

support_hours_end_time

support_hours_end_time

support_hours_days_of_week

(no description)

+
+

Relationships

+
    +
  • A PagerDutyService has PagerDutyIntegrations

    +
    (PagerDutyService)-[HAS\_INTEGRATION]->(PagerDutyIntegration)
    +
    +
    +
  • +
+
+
+
+

PagerDutyIntegration

+

Representation of a PagerDuty Integration

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The ID of the integration

html_url

the API show URL at which the object is accessible

type

The type of this pagerduty object (integration)

summary

A short-form, server-generated string that provides succinct, important information about an object suitable for primary labeling of an entity in a client. In many cases, this will be identical to name, though it is not intended to be an identifier.

name

The name of this integration

created_at

The date/time when this integration was created.

+
+

Relationships

+
    +
  • A PagerDutyIntegration has PagerDutyVendors

    +
    (PagerDutyIntegration)-[HAS\_VENDOR]->(PagerDutyVendor)
    +
    +
    +
  • +
+
+
+
+

PagerDutyTeam

+

Representation of a PagerDuty Team

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The ID of the team

html_url

the API show URL at which the object is accessible

type

The type of this pagerduty object (team)

summary

A short-form, server-generated string that provides succinct, important information about an object suitable for primary labeling of an entity in a client. In many cases, this will be identical to name, though it is not intended to be an identifier.

name

The name of the team

description

The description of the team

default_role

(no description, but returned by API)

+
+

Relationships

+
    +
  • A PagerDutyTeam is associated with PagerDutyServices

    +
    (PagerDutyTeam)-[ASSOCIATED\_WITH]->(PagerDutyServices)
    +
    +
    +
  • +
+
+
+
+

PagerDutyUser

+

Representation of a PagerDuty User

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Description

firstseen

Timestamp of when a sync job first discovered this node

lastupdated

Timestamp of the last time the node was updated

id

The ID of the user

html_url

the API show URL at which the object is accessible

type

The type of this pagerduty object (user)

summary

A short-form, server-generated string that provides succinct, important information about an object suitable for primary labeling of an entity in a client. In many cases, this will be identical to name, though it is not intended to be an identifier.

name

The name of the user

email

The user’s email address

time_zone

The preferred time zone name. If null, the account’s time zone will be used.

color

The schedule color

role

The user role. Account must have the read_only_users ability to set a user as a read_only_user or a read_only_limited_user, and must have advanced permissions abilities to set a user as observer or restricted_access.

avatar_url

The URL of the user’s avatar.

description

The user’s bio.

invitation_sent

If true, the user has an outstanding invitation.

job_title

The user’s title

+
+

Relationships

+
    +
  • A PagerDutyUser is a member of PagerDutySchedules

    +
    (PagerDutyUser)-[MEMBER\_OF]->(PagerDutySchedule)
    +
    +
    +
  • +
  • A PagerDutyUser is a member of PagerDutyScheduleLayers

    +
    (PagerDutyUser)-[MEMBER\_OF]->(PagerDutyScheduleLayer)
    +
    +
    +
  • +
  • A PagerDutyUser is a member of PagerDutyTeams

    +
    (PagerDutyUser)-[MEMBER\_OF]->(PagerDutyTeam)
    +
    +
    +
  • +
+
+
+
+
+ + +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/usage/tutorial.html b/usage/tutorial.html new file mode 100644 index 0000000000..5d9254ace2 --- /dev/null +++ b/usage/tutorial.html @@ -0,0 +1,860 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Usage Tutorial — cartography documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+ + +
+
+ +
+

Usage Tutorial

+

Once everything has been installed and synced, you can view the Neo4j web interface at http://localhost:7474. You can view the reference on this here.

+

If you already know Neo4j and just need to know what are the nodes, attributes, and graph relationships for our representation of infrastructure assets, you can view our sample queries. More sample queries are available at https://github.com/marco-lancini/cartography-queries.

+

Otherwise, read on for this handhold-y tutorial filled with examples. Suppose we wanted to find out:

+
+

What RDS instances are installed in my AWS accounts?

+
MATCH (aws:AWSAccount)-[r:RESOURCE]->(rds:RDSInstance)
+return *
+
+
+Visualization of RDS nodes and AWS nodes +

In this query we asked Neo4j to find all [:RESOURCE] relationships from AWSAccounts to RDSInstances, and return the nodes and the :RESOURCE relationships.

+

We will do more interesting things with this result next.

+
+

ℹ️ Protip - customizing your view

+

You can adjust the node colors, sizes, and captions by clicking on the node type at the top of the query. For example, to change the color of an AWSAccount node, first click the “AWSAccount” icon at the top of the view to select the node type

+selecting an AWSAccount node +

and then pick options on the menu that shows up at the bottom of the view like this:

+customizations +
+
+
+

Which RDS instances have encryption turned off?

+
MATCH (a:AWSAccount)-[:RESOURCE]->(rds:RDSInstance{storage_encrypted:false})
+RETURN a.name, rds.id
+
+
+Unencrypted RDS instances +

The results show up in a table because we specified attributes like a.name and rds.id in our return statement (as opposed to having it return *). We used the “{}” notation to have the query only return RDSInstances where storage_encrypted is set to False.

+

If you want to go back to viewing the graph and not a table, simply make sure you don’t have any attributes in your return statement – use return * to return all nodes decorated with a variable label in your MATCH statement, or just return the specific nodes and relationships that you want.

+

Let’s look at some other AWS assets now.

+
+
+

Which EC2 instances are directly exposed to the internet?

+
MATCH (instance:EC2Instance{exposed_internet: true})
+RETURN instance.instanceid, instance.publicdnsname
+
+
+EC2 instances open to the internet +

These instances are open to the internet either through permissive inbound IP permissions defined on their EC2SecurityGroups or their NetworkInterfaces.

+

If you know a lot about AWS, you may have noticed that EC2 instances don’t actually have an exposed_internet field. We’re able to query for this because Cartography performs some data enrichment to add this field to EC2Instance nodes.

+
+
+

Which S3 buckets have a policy granting any level of anonymous access to the bucket?

+
MATCH (s:S3Bucket)
+WHERE s.anonymous_access = true
+RETURN s
+
+
+S3 buckets that allow anon access +

These S3 buckets allow for any user to read data from them anonymously. Similar to the EC2 instance example above, S3 buckets returned by the S3 API don’t actually have an anonymous_access field and this field is added by one of Cartography’s data augmentation steps.

+

A couple of other things to notice: instead of using the “{}” notation to filter for anonymous buckets, we can use SQL-style WHERE clauses. Also, we used the SQL-style AS operator to relabel our output header rows.

+
+
+

How many unencrypted RDS instances do I have in all my AWS accounts?

+

Let’s go back to analyzing RDS instances. In an earlier example we queried for RDS instances that have encryption turned off. We can aggregate this data by AWSAccount with a small change:

+
MATCH (a:AWSAccount)-[:RESOURCE]->(rds:RDSInstance)
+WHERE rds.storage_encrypted = false
+RETURN a.name as AWSAccount, count(rds) as UnencryptedInstances
+
+
+Table of unencrypted RDS instances by AWS account +
+
+

Given a node label, what other node labels can be connected to it?

+

Suppose we wanted to know what other assets can be connected to a DNSRecord. We would ask the graph like this:

+
match (d:DNSRecord)--(n)
+return distinct labels(n);
+
+
+

This says “what are the possible labels for all nodes connected to all DNSRecord nodes d in my graph?” Your answer might look like this:

+
["AWSDNSRecord", "DNSRecord"]
+["AWSDNSZone", "DNSZone"]
+["LoadBalancerV2"]
+["NameServer"]
+["ESDomain"]
+["LoadBalancer"]
+["EC2Instance", "Instance"]
+
+
+

You can then make the path more specific like this:

+
match (d:DNSRecord)--(:EC2Instance)--(n)
+return distinct labels(n);
+
+
+

And then you can continue building your query.

+

We also include full schema docs, but this way of building a query can be faster and more interactive.

+
+
+

Given a node label, what are the possible property names defined on it?

+

We can find what properties are available on an S3Bucket like this:

+
match (n:S3Bucket) return properties(n) limit 1;
+
+
+

The result will look like this:

+
{
+  "bucket_key_enabled": false,
+  "creationdate": "2022-05-10 00:22:52+00:00",
+  "ignore_public_acls": true,
+  "anonymous_access": false,
+  "firstseen": 1652400141863,
+  "block_public_policy": true,
+  "versioning_status": "Enabled",
+  "block_public_acls": true,
+  "anonymous_actions": [],
+  "name": "my-fake-bucket-123",
+  "lastupdated": 1688605272,
+  "encryption_algorithm": "AES256",
+  "default_encryption": true,
+  "id": "my-fake-bucket-123",
+  "arn": "arn:aws:s3:::my-fake-bucket-123",
+  "restrict_public_buckets": false
+}
+
+
+

Our full schema docs describe all possible fields, but listing out properties this way lets you avoid switching between browser tabs.

+
+
+

Learning more

+

If you want to learn more in depth about Neo4j and Cypher queries you can look at this tutorial and see this reference card.

+
+
+

Data Enrichment

+

Cartography adds custom attributes to nodes and relationships to point out security-related items of interest. Unless mentioned otherwise these data augmentation jobs are stored in cartography/data/jobs/analysis. Here is a summary of all of Cartography’s custom attributes.

+
    +
  • exposed_internet indicates whether the asset is accessible to the public internet.

    +
      +
    • Elastic Load Balancers: The exposed_internet flag is set to True when the load balancer’s scheme field is set to internet-facing, and the load balancer has an attached source security group with rules allowing 0.0.0.0/0 ingress on ports or port ranges matching listeners on the load balancer. This scheme indicates that the load balancer has a public DNS name that resolves to a public IP address.

    • +
    • Application Load Balancers: The exposed_internet flag is set to True when the load balancer’s scheme field is set to internet-facing, and the load balancer has an attached security group with rules allowing 0.0.0.0/0 ingress on ports or port ranges matching listeners on the load balancer. This scheme indicates that the load balancer has a public DNS name that resolves to a public IP address.

    • +
    • EC2 instances: The exposed_internet flag on an EC2 instance is set to True when any of following apply:

      +
        +
      • The instance is part of an EC2 security group or is connected to a network interface connected to an EC2 security group that allows connectivity from the 0.0.0.0/0 subnet.

      • +
      • The instance is connected to an Elastic Load Balancer that has its own exposed_internet flag set to True.

      • +
      • The instance is connected to a TargetGroup which is attached to a Listener on an Application Load Balancer (elbv2) that has its own exposed_internet flag set to True.

      • +
      +
    • +
    • ElasticSearch domain: exposed_internet is set to True if the ElasticSearch domain has a policy applied to it that makes it internet-accessible. This policy determination is made by using the policyuniverse library. The code for this augmentation is implemented at cartography.intel.aws.elasticsearch._process_access_policy().

    • +
    +
  • +
  • anonymous_access indicates whether the asset allows access without needing to specify an identity.

    + +
  • +
+
+
+

Extending Cartography with Analysis Jobs

+

You can add your own custom attributes and relationships without writing Python code! Here’s how.

+
+
+

Mapping AWS Access Permissions

+

Cartography can map permissions between IAM Principals and resources in the graph. Here’s how.

+
+
+

Permalinking Bookmarklet

+

You can set up a bookmarklet that lets you quickly get a permalink to a Cartography query. To do so, add a bookmark with the following contents as the URL - make sure to replace neo4j.contoso.com:7474 with your instance of Neo4j:

+
javascript:(() => { const query = document.querySelectorAll('article label span')[0].innerText; if (query === ':server connect') { console.log('no query has been run!'); return; } const searchParams = new URLSearchParams(); searchParams.append('connectURL', 'bolt://neo4j:neo4j@neo4j.contoso.net:7687'); searchParams.append('cmd', 'edit'); searchParams.append('arg', query.replaceAll(/\r /g, '\r')); newURL = `http://neo4j.contoso.net:7474/browser/?${searchParams}`; window.open(newURL, '_blank', 'noopener'); })()
+
+
+

Then, any time you are in the web interface, you can click the bookmarklet to open a new tab with a permalink to your most recently executed query in the URL bar.

+
+
+ + +
+
+
+
+
+ + + + + \ No newline at end of file

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%0AqEkp#bs#qh0BX zc4MHe+M_*Fn3~N(-PQ**?i(5R z4ZgTX1NU|IxUUwbW|xYx)pbkSs%19+QUiL30sX)i&?W$MpDUnP9l1U#NXQu;{zK#a zBjbJ17w;J0ecm4L?}Vw@f!m=?hRa?wHcFF;2KP3Dd(#)(rU3VbE4Wylxk0Xv7F?w_ zgTFN59hZnv!uI&E9wvoG31fkHTROYNkV%dbwi2dhcZzrcaoe<=Fj6vt8f}eUwXoDs z4`8VK`9j?cQ1@|#8mn_R5iBJ$x$bO5MaWb}*HQ+o0?)3#c4uHE|0mtg_QIv06rBa2-oT`WxKBTd)X6&Ex z#XcU`KVgskqr%ke?496jnPiep%oba+Yws&Rx3tqRFK3vS`oi1-FfVb18LNwH%FG1s zdo{;2`uiFEy}szT1p4pUqrX#_nw`8SoZMJ?hN6I~;ij&fZEde%|C(VxW)1PqAE0Oq_ne0g1lUszkacRZgWT{JqUA_!V00U`z29^m^vn+Q-KU7<=F7lycWvk(Skl~)~3wL|K zJ{i-k89f0;r_Gm8>re^0(g>#!#jSoi=H$G@wPtz{HjY+u0mxLWb z!cDFu#Om^vmCk;_n1Akzc_(20sXgY$gsIu_2a8snDrXY;Tpx`wCQ?|rsBxyto|z@! ze*rCqmzkKq_!5%j@Y zaZAcBI6{VCQp7O=3v{+YXG7%nEEyDN6F5#=V=ZZGUodBJkY%DyHbsk1F#M+MvyC=d zs9$HIE>W-@Qwk+7$sKi)Df zT*O}+;=;G;=$J3_ZrTedgIY71i27RjvG+INn9@@f)i$C;>-~i~LsD@7TJK!hdRJc% z87ofroLJW6uFVm|TnDoC> zVC)@?Al48Me^fj$bG1?A{c8^=#g~t7!bJ#N)2|8A-|HYnw>cSe{yLq(G3Te7V$KKa z!f*^ac(0E^PsXeu?(kJi`uJRs@kaH(Rm)5D>`D)<-6^dk;_HSu^${l#l7={S#%Jy% zLrcL2p_7wsa+u=Ox5kZk_P!QMn+TrSk|N0kI#y)W^u9&5$4v*?SLt7L%fU58heHyc43{4$9J6lPYb0s7n$5$sr#{)@szIE3;O^m!Q(wu%_4^Vx6U3D*AO>;jMPX`wNqQH=seguPS?x>9 z5uoKV2{z#y|#vc8Z49VCTtc5uBA21E~`_j+`8ouvJL#!f* zh*N(N5b-*>)#`OAd_(oC;zj0&yj&zzZItDK13{|gaRk! zV1#Oa=+Q_3*~(UN(!0UQ;!(LCK71aPvjBGloozYI$Z+G8MXTub-5K+)zL;kNbHX0; z4#L#zViBHE8@=Al%W7%g+FrYQ2E#to7xo;$KFAeztgap{ISR#T)g064PiOR}`l3G? z=ufgozeJdtoi1XY`6V}#D4=|6`)uXm=3i<+6$W&sFQ8)psNf1HUU!yIlaP|@LwnDT z4jPTPy>7juc)bej;Z^dFLlR( zx~E;Ki&aQt1ikfpLDe1A46JjC80oy@%fLJ^@TNTjZwOPfcxFI6vbJBiuh1b{1>Rk5 zUaru;ih{r}A$Sq{NaQGVID_ z^O;1Zn5`7{tja?2Vv9rim2!fTLkdOS?yl|^>0B`m%jZd&v|GYSRD`~`vQneg%4FJ> zD4n7_lSHN1N1I;dGjz>B`rdg zoISIjRthSzZJa!LI9a1=z3+M6bR$^EjbOfSBUp$=FxRya#M&K>ECK_)_6&3jQ)4%=-9;C4ftc-_BOU{W!z@s4v{(0rwnNxWnY|aH^$t zxHzgAxRM$8hA#t)!N8^V3|t~i%?>{XLxgb7Wwi6_d-|rMg(171rtNN~?M`3XIzZd) zuC&D}oW>nRgXy)#FEkIoWgdRx%fk}z@RU6dPYP4BeCh{>c%&}uNT?3ON;8AIh$iTt zOwg;o1f2kaUU4NTR-ufce2g5&b%y4k>W*p#wm4P1gp9+7&lvkeFff+Rwj5(`B23K^ z=|K;pVIXsm>&j;modb!slR6rPSz^yDC<#L{9vZI5m8<=fYSKq>fVo08G4aItlM>i} z19O`6zFQ7$D>!^VsEOa3iJ#<4{7E2w4_D%2mEK0VR9~`O%&XZGeL&+rj&Zm9;yxL; zkG97>OPHDk_d^H{x@ynR{79}!+f>oiNn2VB>3LQ}?2|UJy^TZ!gbh)p#lnL0B|NaD3)NI_}&bh3Pw`O4=M$Y-gmd}3`jn{$tZEtiXhBxdg9 z>|>K}G!q|YCO+iL#HnE7Y6y57XfT(w6uIqH#9H81As zZDD9GrU|>43A@Obu+u=;8dt(%l@3)8t`z&rX_~aA_be%!x}%zb?=l15@nzt2FmQ`K z12+j%vt$-PGPrvzO~}==sfl(~&>fqNXGtyeSf{BMWkORlWu+T=p6>sK`m&nD$C<>( zd`Vmi5+8LXF;*EF>;C+m@&3&h?-{`R7kj*a5~gO+`~jj7@1WuA4%!|y{21o3;N(O$ zL;H?ove?#?HYK4szNRC?o@^mOX=XHa7>qn=>QMAet)Aw=jnIjD4_7)79Uv8jPxa@k zQp*ddx)QRXOW86FG5RYaKbp*DQPOlZ+os0tl>6LAV+OtL_5Ukybt4;jns_bQ03SZD zB}s^GT{_$HwS+|%Ya<(#D?+XZJ;|BFxo_1w0y)o^Dr+!?-bQ-FJjE8JLJJqA11(@?#f6!Uq(OikTU&A=JV z!0EmWbb^6X>=`&wn3^3v9X)JUe?C8uIFnwZbF>zdN%Rz{HdA=&ujb804nKTO)nxQD z85LhL(jcScN=B@57)KAOVmim;``TcVW?yM8E@Un~@5@C7TzuA^i%$zvvoLmqFmx~p z9&;ghsuO5sra@lMAg}cWnFYwJTtUX_@SQ|NNr;wYc2zdr-|&9d(oVDVBWCG`zASZt zrHAZUdO(<(rLYI2px*XEaK+1>h%%wsTqOxxa}D|h2K}5b=x%_1#uap|(%4H#qtY+t zmZ*PChG>gWiOVUPyY*;C5kkKXK72+{J>c$bd+z=xOwEGX4}uZ8h*XVchMqiO^?04D z>DZ3x*v6NR9O&4R&bAy-G99r>Y2)D4UsnVS9nr`SW#k9@BJTzA1MHDc7p7(*oC+c6 zf`AN!X6E@HQxivH_7n55#U+Vj%Gqq8yG-pQc!{IPjsL^mmw-uCTy2Yj3&^J8HZHA* z4#*;#A}We7AhHU$i_kOEFx|{d58XW=?%;yrxJ69dw`h!e-1lhWzQq`gd*Tw~XVj>1 zH*xvTsdH<&x9_d4s_xs9=lPT8`M#F!syp?*=TzOgZ@pD_4ii15G~(kL-hsd_0%uL( z%tVYfasCNO?g2#ZOjmLjBe~OT$&EFwdU$E2DoVcZB>E+UKI@9U8PPYJqffJ<`qY|_ zsm1jq%nirnnv0SYq!*;&*s+j@W5=>26ZsYU-;p$*Ml_%5N^=X+e3C8A7D=Wr>YXw{ z+wY=_hMh98iNUrN@01C?|1^eEChj5r@3P___o?45YVdvPOF~YWP+w%aI($z(lcmJ? zm}qZBuNo#d4wA4=g)dE2@dVWN9cQsSJI=zIG38i`GOi%N zv0Y)Wv9?9;^$j`RV!6Z=-O2dz7LN+%f;0Tq!ZSUb!{X~x4VaKg(n$NfJ z9nj={HC>>!|ve3}PQ@r>G5zoxfc`SJcPggiW;1f zRaVEYuoj|=p*fudv%SVh9AZwox<>0 z$nYr)a&(7Kj$K(v>}XF~@Ex(@tql3TlLPgY)cng`n}0So{}S8gYx9pEyK;iTRlQ?Z zyl_|Z*p;V=xF=nSI|qq-%mAWy?8@(1QN1qlUvTWoJ4DM{uC$zsw7h9ci%~v3L=47x z>`Ip-*($6 zdYk|~>I&#W1oS&wK(U6i8|<}^yG6WzNyP6H;`dw;UxbL?F-QDYR#YFt&9JYsW^)gm zzlTQtE@AyZu>Ru;>tclUtu3s01G%_f*=*L0{v{D_J)hlZYVgD5Mso=w-W+Nh&N=$A zqWVCxL*Ij2SBH2O-UelH+8X~gRw{Zf%v-i-~@P5n$QbA2RvLk*d2CY8`@XEh9Ld} zw~I}HpMZ#F?@Mvdj_vxA*2P3?+LhMJk=BK_w8olR>*rIjkrT+~vs(Fu#C-+#FUmcc%NFbwJ@0NIGhePYS;!QO)QnUm?Z2f zBJ2uB!p>i7EjYde{x|(fWbRU1=3>p5ZfHssd!W33N$9^P=np$WpMDi0e$X88eXOWH zSN6l9hc(-uC~#y=0e(^4)p8V?GGor%@zbW&O~kz{lg3Yh{}N+OCNLV=xrLeR<+oSCMO-_V;C2`Yd4c z%3k>4GOxS_!_ot48_p{!EU~8MdJRkQ9nWHmkodPmy$hip>WcbThd_v`;45>s)ES7HQwtmUfF|(--wzc(fW5 zT{O&vx5z;B_FQ;;IWh(p-ZJ99-HLy-E#yQEZdtuTfGm%G%i3p^M-NC`HhI)BHr)z) zN?YMjqc(h(HtcvvE`%=AHx3^@LYiMnI_l)TfnWTFeqoNf zK8mBRjhWh{moDtLk}f)QsY#+cx&t#qh#A>>_H9CZ>%V5xhBUqO+C6n$7|1lPybZ@6 zjq{p0jC|gC{9lS3%6v_ojeE%eTNQB%uiy$`2>C} zHJCe|iV|fOT6PF?IauSH7xaDEX_@|g8acr@_i>c+88bd zm+y-o#`ApSsF$e08q~DS)b)MuiE9dd#o7XjA2luD+-pfU zqB~~Jpw^%6+WJ1w`crLNuT4Jg7EBvl)pHAa!LFuT@DAebHdo&I0&lk%AoQYsBP*(x zQ-;rl*EWDK+|q{X8#~=HnaD41ZAfIY^@+wbyx>;&EFhj56ptA}vmT;70`hAFkjx2Jr8jgZ~>L(suq%um`SP&xXLY@WW*Y+yq$o z!Ip(sQy{_}xIH3_atH2U1%D=BPC$(kDzbVj#;2;SOIP7{iY-}D{g|;OO0d3}D{QcD zZEvYh<@n&BD6`}`_orPzMYa~RxaJz zkZuE20akq4lDPt3i=?0RyNmI`k)8_z+lyIcacP~nImD_NJe4hLNqSciy{8DWOhqY= z(`|t16;RoyWsV>%)0hoK%5om%ytD!# zDf*8UZ_V`n{JM~@`N!+Z3~^n}ix;txoHAHByn zPXSqz;;)QG3h<#xN-g{^uAeyy9>$Jaler(*$*cp{&S#FMZ}1P%H+q$*m%oef#14Kf zVx4&m15uNCM8v}+b8%pJSk&On-^r(fEDzNrJUv15VS|TeIHjenDWHVFYjbjYFHNVG z?Zti_f?~;#;X`*pRiq-a$O{5pm@HBsKMWqZ-hqKkKDl=k{RB~YJ<#sxKE=h7qN|Wz zGQFf;ViOltJV9!M;>oN^=K;~j^~R3gtk=R}>fT*R4h-H;U{R1i73nD-VUvsW6as?p z--VnLJ&OGcA`#3W{g|jc?+;WuSCs^n^%_`6$`Vw(Yg9o{*$G+;91Xw^m#O4XsJuNx z9Njw zt=<5kC#cM4MfDFy4zh^%aOhA|3^1AFiHT!fnHUaCEVpICD1(k5(&7|UE+g=lxPl)6 z;4d@>|8qj5?fjh}sN6{`-0sT4NMPYNwk*V&0vik(1dGb)=0St#);(+BiZ#crscq_( z`7?qfO{E(vBJZ{AN#zwQ5>Qrou{3g3Rv86V{#d#SmsOr)MfD@cR&|Kg|4c0A#C+rFnPbEW( zrIpe0396*DBKw}m^AKsJqZfNdYg3-X`p;X_G+^GEkYBtfv}h>>wFr$(q%V7_p3`2R zZ^)(FP)6m0ZpbepdYN{l7Itb2hD~x2yLy|b!6}&J6HD53Vu{*JgXiQB<49fsny;8f zvO<6g(?|~WG?L1$SXuvp^c!jZskRZ zdT&-#|6JpsYg9rJ8A?nHc4cA~Ffq`U38M_!kVuPD5t%{Yr@4YZ0KiW%2S14rX*+)> zC?Y9hp~01f*}%dATNYwXfe4GqDTpx2VzSB#J`MmUmBy@UA#E#x>>R6l0G zdltCGM4igvVHtj-N$G-erhW|)QIq*4ez=T{bD{DTwm4%=2kq+=A0xPrxWYXU;67{) z_d!-vA69x{S1z4uZG@Muu=jhhZJ25HHe`777rkV|H_`O++NG)t{hP$a>#kfJ1YEpg z%SF7QhYc&@5azDz9}@2O1oz*ra1RE!-j5o^@1w%^UV%eCIT7wN?8ze}XGr zP~zNpA?wk7@x!G@9|AagL1n|)4&jV7tlnu7UebI2l7L4N;Nh--4+X$O%>nPsis}P9 zegYiLUk@9xaWnS9#DWENt;u>g@E~z)Vq!Wk{xj7K1{wTv7QAD8VtWey>)>RrHPyIa z0gF6tS?T4!l=9#n`~_g_7vP}jE}=%krcJj-KpTcx)|8E8I^F?+R%xG|n(p*)s9G9# z4)Nz})U%YwvcsTCooxgyQdVEo6Xxl`Cc0>tFn@=^bCV~`OJ%I$!u;tNpPI}nt1zKj zce1F#)w(0K!u&BLM3Hn3@7ZlFB;lwG>LuQh1?uRRk9ety-sq=ZLFatj#kMhgFt)EK z$EwSS>PrN1Cc>za>Gi<+1yI>1(vLRrKl*7=bb80y0u$@v*RwW7ckB?UexZO8-Dj|$ zqYLtU!B<&QeNxF;b$Fp2mAguHucTBjd!xwwFsZ&TlMwTMjgYJLp+A-s>`@Qb2==`W zqW5c0Pd30?*~G?_;MXF0nb(k7n8*o+O)?TY|4X6vcoC1R3IGi0s`RR3P{&dMM!aJ}KY-giS7z z?+FM@jKVgE1`|j>x+!COi_)p8q~342h()9<_1?Qi71aB&&|2VV41Tyg+2o+|Xofht zTPQm22qH%-;902m2T<#0y0$(Kt)FJwdTsJ?^?sPaRXz3I3wAZt`=g1sqg;6_0B`LE z2t7Yzjuq8E-gT0Ce=ad`wks3uz(j{F6Gj=7CDP(l?{6jWx442|3gB-v2Y($Q(suq% zQ172479MwHVHvRSh%F1Tra**x{{bS5Qtv;sf{*I``=v3fg2GWyV?d6K=7{E2w7FVocT)#Q%Kbu^BAz{xa z*z;Ur9}BP#GlzXJE2n2{;}IIMC4*q;WB+$32=WhhxD(``}4 z8q^J&(+#QCd}_WrH}`)j;pYf`n=AZN0e*`){0u9q5AwzsWIjjtu<#)}^f!s-bV9Sr z70oI@bFwX(ScBQqlhSkZ(Qw3R2z)CExQ+<8)|G(MfPkyb3AmCK)rYe$hLfXUwkeJx zJw?`oVHX0yzbC5MDs?Mx<}YnlN?+^99-ne z!MVV}FKju8HT1nxOVbUwi+6ro7N)@B^?pU)OA;O+67F*);b%a?-R30R!HVh=VYELH zIHm+)68R9gt?=>Fv9@I7MPlRyS4PeQM*d*Sh(%iHi+XNVTF8$s8s=8r%wR?A13D#L zn!_sYR$XT?o5gg&593)38rFUk0po_XUufN`tH_3>8Yja&tARw**;dty1x}UluHrf3 zbk5b?og2pcKp9t%{a|wn#HLn(Q2b68LrgY;%04ga80lrT;7YNxx?eybV~*AxSj(b~ zLLrXU%LSn5e#ITFy#;G!Ia)7L^19g3x|{U8m2|Yq9xHlBn4`6qHznf_V)A7R#lMvF zvZ7&B<7Ms1@_b^lkc3SWi+Sz_z7xrz zu7HPi*rHUSKfF{j3G?K|m3nc>e1R^^(AwY`TH}PlBj=r|@Q1MJ40>!};-XWcsC_^w)WH0B3bmC9=u!TPr zd0Llan~OZHge1b#8q6X6_@<2Uzk)dO?o}mE>lzA4S)Nw!8ddPL-hoM8lerB)jAt_n z!8btVTNvW#?xA>EZzOWGwl)h->oe5)r(9cqBeec;+tzE7k9%6LGq|efY4w6#O;78W z#M|etyxj!6eQJQv^R#}q2EiO_G=}%AkJ`X>od5 zcP8)yUBTZ1;CD0!-=7uLr$HxpTK6Ru_Hkw5H^9PPwk*V&0ui3pdPErIX>GKEkDk^A zr7^3X)?1;}D-dN>1QcA_X8D;)lyva2r%U&K6;; ziLg#{yRf~m|CV5{BCuDug1sHUUTO~ZB34u%&JliHtvS0W4SIW`y)|9%P8i|-2syv> z^4X=T=+;@2sJj7d52$Q7Sy`VI)dy}E z2F}xD;6>KCM)ufOWLp!V<8kiAi5$8etTY|omK;P~P`auBw8*|V%v7-8bZs(t1c^DG8)ROjeF4dBf zui`c+DUm))NS}5^`ddKyge}ro!@D7Et;zaMoc4by;eSl$~};Y~U*ni7(j{zS}nuEhKfh}i}z8&1<|SW$gK93T?{wv!cLM_Gblh4(vh zs0o=Ip5se#Of_Vp~GkvaZ-31#Hc> z*erssFY5VQNYsxm8s={~*FaJC{4IP5_Y>L3k8^9fdRXaO-$q~+!4l>fN^EW;p6Ad9Y0~ex{34W&YU-7T&-^vU*~HX zVc#I0*)COO#@|Jh-ysMzaSkYpaL)q!zk$j=C(CZk$zn;4Vq|fyFK{s*%kNpcq8A54 zd@O$yaH9JU_p#h0I4jG?@{E$d#XgoXa)rC3k45%O(F?+SEIpHWiXaY`-ZD8qm96N9 zk}eiBi)dUd8&Lk^V!Ze0seB`1mH8JE39EX7Pm>(PZvU~U!2$o-=U$noJBMu|K2h#z z?~g#zDt6@B4+24$LuE2|sFc}M&VF|qWe~YyKvBO1QrFFzPO7>0M7;pnPIhyoRrQx3 zH9>#LSoeSt2f|3woppkshlIY3w2y2C)D+uCsG$+|kzj!J!-_JnzM|xJmFy!U5MF(z zEc=LejVjnjW@Db#WM&zsD~{U=!EZw4=?ro79YV2>>`&xW%07~&)-Q5x{a>K}0bk#AX1{g}ZH#genJV&_P70Xc6@AaKy@ ztne#$z`sG|8mMe2_7SdF!>>L3Y#)L<&K2%^0Cx{_xMNsRgD~=g6+qgA^$c2>klDM8V7I%%eji}x%wcC)QGGbK$ED@K;b-hI zvG~L@lcEyqS%kI273=>2*3)gV#v0VsX2 z!45spTAGXCEYv8r^uD=u9zq!Kw5a7OT4)-sts6NbtFwCV7 zG-H~Gm&GD&!X_hI;)n5MOqq;)4DdID z%7&AXO;}NV=*?G_J#6L`B<_)fd$=p^e**5Iwzy*rd-q0EIN?aJMfH3dqkbi!&mrgs zxI+H~pwBReK9v>Khg@e0@`9`@BC%x%TazocPXSxX7F)bwO|>@Umiufa-IcE-^wk9Y zG*{@K0rXSMp|4~`^>i$;6e!#O1C`{0o@4#FmLz zlVF3E%F3gXly4;P-x2VKT!DWMz#lLNelIJkPXXmD6Z92lDlg|-(N_=7>Vs3DP0 zBIFZYk$(fo$J-*0HPGwi7q{~`v;UT07ZTV;SFqm#*rYkwBUw>>nAypc?0yZ+_HD8W z`9&f*j*uMVisU;$a+EESSi@H0pu$TD@Wrlx{|$gIFb8}-E2#|!$3mocUM&YMOO~eOI%^OeED+G>?Vt)eb>)dri?Ha-} z+P0d^@b8G?ZvVlc&&(5yevHR966EcDinP{XD1G zPB(o$i6gqFa6jE=f~|7=bko}?o}YnlMYJ-bAW}fW2>dXf)nX4HCTe(qr*GKB=cr5R9Cf^X zE+(zKhpl4Hx_tzcFlXIN&skTgCi9T=@q>W_UlPhMUZ0UKBs~n9S9Ew2H9Eq57fb^E zAfybyy>JlWy`f6>yLO`g3phrSzq%gAU35Kg{(|p<&-?∨b2UKBvPcy=zp#es?~! z7C1T&Ka9s1h2f2n;d2<|=)70_cW1Jq`kAW5@l7{U^RIVp{wCP`Yi*ma%|C9yTWxSv z&w%HJyP5{PKNE2;x)Rq9iTk4gM9+cu94o4idnY;YJ|-$Ybfscbq~iZ&lAi6QL74c>Rfn?ObWt9BJ6bmWEi9Ai{(<0U<`2 z@anAaqX}<(Y0QcVZ~7L<)40-gxC?I&R#cxZTcNVypRpA?@$`kn1TWKo41jKiA1?i2 zO9XhNEx=e4L2Ji5iSVv)#an}Tk2lAA3@fS+XtdqVOWf!JGLRP$unSy)ZH2(jw*?k! zAf^A#<3WBQaof} zH5v51iG;meN!T7q7;8&HtU>oX^So~F|5DQMqFe|E00(1MF2hO~L z1iqAj7hHkwfWVj70*^KDsyokPM*T`+|2bh_!X1#yUv9?Ty_lS~rT`8$WO5U=iB-V83kp?FxJ2NfW%=5wbokZVtDVy7@jUO&^ zn}LY_Cv)`Qv!eQh7%`=_5l+`Fz{|{dLL_B6z@%P*hvz`G$`vn{s*;QvB4Z0zG6o?T zn?h~Fi5`&=Ybx|>O%;}9bBo!*VflRE-DVNLN=Eh|Ms{~)WM^b#S93;2vZDI*7&42! zpN;uT@Hn)59*uv#A!BJenec$~{I{$nDVR+Z%yOk*Fj6qxmV#K5f*U)%xd8vC#GE6{ zZLXMyAm$cx%o$cxANGOx1fVr~@;e3(xkU{L{d9u9$`$%hgnqIu^jO2Kb$nh&c&~NE zI}Gt&ZI1U!R#YGAAx4(ZV7M)7$&f!x6#Ukef?be;`)w(RHRKxa=i7w#udZl^Bic92 z(Z0%x>I2>n`!2q61u?Db&3v{z(Y}(cjKU}75BN6dN zP}^{((wi042hrQ{OfN?8+dz3}`N(WiREBpbfgS7$b`*jgXbaXNy!xV^AC#8jql+kDAaD0%{GSG21q#3;It#1q|xxKT7CSS!mYx(EJEp2I~((Gj~ycUsAl7iI61Jt52~ zN+&Fe;ZnLqi+(8O7$sw-#xhD)!8r#^o0G~dl{M(_l$k`MF~;`@toe4ySns^A0dbrc&mHpCB? zsp>Rjcmt?yI8|Mj71d8wEqtH@sQLX}n?D_!pRjGdHvhN}bRC1MdOlDu+|~4f&LHBZ zxe_-6iJM{o(er^$Vny|F?<5~+il}ICrD7&hvA~uJqa2z*ti|aAJ%!MpONfSxTxmD}Y50XL4Y4Lcgb(xqgc#)m{jC*#^nu=28nfyHosB%*UAhkU zf!@K2>c@@Vs88{u`@jLpCuv3B%h~dqh_fd1I)1p^_U0grS8QR#8gA(c^r9=jkhs4m z-2ZmPJr{9*V~+bvR#YE8c3xND*gjk@5)myn3ffeW;5S~*g5DQDT!MZeg6{>j4d*%p zKGvWIY=K_n1K&ypMiK+VT^TqC85nBLz|O3wKK#rC7HSrRho}TS{)Tu(ZL3KV_9qhd zb0y(mB%#ihgjmx+YZ%NB-X>SPhaldRIo^6!R3G$RaL6ug7{mqh=AVSP%l{^<&99>V(27FMi*Tn}Z=bXL4fUHn_3?tL_ym-NIBmwCyN zh`Kw}Hk_BN$BOEMxdjH(YkGJ%H6UTJ^kOx zKpaGYnCk_C{{?Ncns9mG08xW44>W|V64o}!Wx|!-mb~`*d_ykHPOOYrCKU6#a!!vC zQoC-YaFk1%IH_)xCHISo`?O%vWNAjp{Y9AjDX8sREgWNhoQy(|vRvqX0RfGz7cOHh zi_WBw^}@vxQFLeG>xK1#H@RM@q}v)Vv?7_l3vQ%W|gD`iK*-)y)`QQ z$;Os+E1bucf>-)!lXd*W#CWePd%v)0%8s8neaeg}bLQ5~4oltf6MYxeW$>IBAn<&S z<=P?vGIvvU-|3p&%P|vf4QBU#;n{6TxRUIZyP$y1a{m$g+&@ktE<5+nElM2RGg3S% z&rUUDVaAE)KeIQt*2BQ8GY}~w%Ivy1GY_0Sp-v3U%C+z%uy`q5Ztq!66L}JscM%b? z%wH&5-*C;=l^DBMg4w!vc($4`rzC0F*AYNjZvMkQH&2!L%FfNpj04Z!O3hL;mu+i< z!J6lldy4W)PNXaH3+fVeLIv8(^R*(^64A`8a}1k8biogor`R(vtUm6#A<{DgsU!oGZ=4+B|uK6pAkYw5^*Yd8p z_A87{)-~6B3_0XlQGEf7<=P7ST)ST4am%&nTA5l{%iY@6sm%1;%cte*k|9P>ywm%#%IspC;T(+6NfY6+58aNNlzfIktasOJtr(*oF zb@H-0ZFyrhwEM*^p1PsGi2!D9q0GF=Dl<`MzFySejlIQhLvPX9(3zmebvQS3b7N~h zNn+r*1@nh8xV7L%?ic!J*9gQ>1pw0h0#cYM{b0|OUg@Tr1*#)7j?m~w1C5TB%(z+o zS*Sr~^>Hp{b;-NxT1W1JuJ!R{2bQ?;+t)|Rj@q$t5|09>WlP?!Fc14n*t#MQJGD8& z!yZhA=n)6IucH3nisKCL9aZwMe@g6^L#5403#0iHz;D^g???Hs|sx6FI!>#qP{y=#D-62>A$CJrJ@EGE*=Xp$ovj#IsKN2cB>q|J2@y=EyowfV%EFNX)tll-MptBBw z)&fVh_~G(g@)|NcfI*J#3X0CUJ+Y&eSuAwc@zngiU7P#W-vT-DQA zy>M4kXU!0CO|HbffyAW@AbL7$Ju9kzD(fVjbp=szf-4noA{EElQel)s^NF=Mb=E5h z{pGIc|AOc*F-LzPLDCKYo$$`Mdx(a+Txs|#(r~*i4Y4LcgwFaZLX6T`U$?@KI_t}& zF{?W3TgcOkrR#8=^^dHme%vV1Q%mct-y+VM%-8tga@%_wVSHf=Bi3+hb=J*KV0bsh z4;Q@eAl{9kw(fyaxy|=sMfG80n@v@nl^+fwL^n+d`4BdYpbc?__AWvjWD70UQ1PhM};g2pFCaJGyaJTU!b^gQ~gQWf(@&Ak!|0sDqDQa-Z z>qEVy{=e;&u&<+dhbSKyV%}c)F2(t65j7KOQ&C<%!G888)b?rdmD>&JP4OysK{3QI zrT!Dv@@PdPM5+H=B989ZT&aIe@LHBq|4;mzyk`|F^}9-yuB1{g#|+s&!<2fx+NTQk z-+|CqLa_gnnP9&;6YN9wfAY={T|k62v(<@g3cMwL7*Bz5Aail;vJhaAwHyiVKV%9Y-W)RPmPa|;e*MdALf*s!FM=J z@orQl8U6?gLs>Gsca18@@W(=Hfup1G!+3B~82%9%UdA9tr@r!hULba~Dx8H3e;zge zT-WCRgv~$8w)xup<1+jbgR6Qnych0j%J2^mare0rx7OM~+}#EcJsJKER#g8q*GV$` zi$ui>u2ghED*j+gg;5UOO02~x!+$~O|K*B)ZAAZxIr@(Xl6C;-1R1{j3N{X|j~_1M z;5tY{H>ho>QxXlaCP9P@KL{a4$?$`%@S_Z0TN<+}!*@lV29&PDW%%t`QT@2#Aj9vE zIBPQd;fG7OyCIA^TNts1TPwq72yc@s-gOag${cS!E2|<7tfiDMkESqP~()U+#)}eMEhUIqC~pQGGzSLN(TFI#=EKgQHN| z^@SwBdkElNt^hYcfVbNMj5VzNa4%@OA=R8(nrhD0XHpG?^ir|H67j2KxmyOx3CS7gYHnY2eb{;o07)d5!U;j_^fkhi zKv2O!AyGSJ&df2p?lK(rJ+veX1H~v&{)Hq_I}%YlxDwS9iQ3MVD2rs#7xh+d=ovA( zXxPflp$5}(Z{>!IBr&Yq97O!jwc;Q3&jUmau7CDj8&v)1cZ&Y+a6tdjw2FQzPqI<= zJuIfkqy^8GYc2h-XQZIEZ>^>5L;bwjU)k3YLjYS@S;pEKEmDQ7tZX6iMRz>DvQjTt z^s?1$55y+;H+kk4udIxbvTMne71^g{{|Q@J(aE>!y2?}-PD-q+d}Fq*vW>T{5^>BP zpZAt3CIXzf2Fb6<{8GfgB$IKBxkA+79BqSR%>Lro;g#AomIwg$syn|>BOTw!r%M%E zZ@E?A3|nt$=IbrI8G%zID~iWDx*etR0OELG0AF-J=j$-PhZ?jFv!Crc3}-1AEOj*o z2@kHuOsyb~VQVtG%fX>z8*fb}qOD;oGf!iai&ka`NW{uaFs<~%q_S?1z+sMezACNE z{GCEl*2;``jVi3nbUTR+Y3tyJ%lv)-GQ1YlHk{x8KSX1s7$b7iKEh@0R_+)hZ`KIX*j#fs{m>pE#=<_MzVFjp#S zk&1(DsW8f+vBX-OD>KIu`lDUZ4@C6K%+VJJl6C;-gq4}|h=y}rX&8hwoMlTxtVs~D zGIKjZj9Qtw(+WSX%-mWUv$`^~GxBtE={kI6<_1<&KW;dz%)E#=Ycen3hs$kmFv9qQ zEsR*htzDV&k%ol^?xbxCkg+2SNy{f{}JZ+4`oI5!7u919FWl4H6n|F=@^A{TyIN9yy?&gi?g`$?n?*XmlFT;g#S5L{G$>7)8_b}U_}km zfw$Ks9c=4LI^HKb-gBj6SES<|TRLJ*haRvov;c4VQ?tSMokYLxDQvFO6+c|&I=dnI zE>PQWuJfZoGVHOEXh?~bU)n4=!eit0xQz5m9;qAw%?&Lx1eT>*|ofHQ3Y#v0ZL8;(az#IKT( z0x^RzBx}w{Gb^eOxr5clgX>UJQgH@Rak?uNdmnQch+k1iT!wt3fJRlzgc@O7^k%r>7B|DRd$j|<`d6gBul z_`Z6x&HvtZsGdL?{%)|@Y|ce5Aq~FiQSsrdcPg7acEb;s$>SvKG+m&!&xcc?_Y-=z zf(l(tj1|WB7BfGxr zW?`P3(#!X%Gv_53drCNSwpm;J8Qnq08!=~&?}dY0776=Fgflaqa(Hj69L9lXPf>$2 zGSlzC$!HunzJ}VmD;9b$v0Q}ju&kKVX1c%==CqkhPMgZM+bBXEVete04+^w5x;Jv? z%#l!ooHKjcIcNNYt8N)2E$EinyUchJE52RJBZteb+OZLH$oSe6=89Q}O)GN6P=g~} zF~Jnj4^)aP<^UXMc!#KxD`o{zUzRJzyG9jUF;_xsfuqau!{t_a5HfrTgB+dc7;bOh z>V?FPc2V5I6>|?Y|1Q_&AB@ev-M0DK{Nt{epBr4&bH#Y!uBI#I9U|^6SKnIm|;Z25LX%wM;Zp%(hzGBM7UyRBE%?H%mG&T(G@ejG-lNma|H6Vf9X2> zeleL9)u)StD<+FLYcehP;ga?95JtupMy%o1x?;{Iyl1-NJreP*Hpjb)71f8WXpP+M z*w9}Qw5wgA%|~cg+Cqypl+py_byWF_Io-hA6S-`&a8DF{FIo73Son`C3-!ptx8^K-#fs`v zVApBchGa9WjtVddM8hR<{&<*RA^|Ao`9iX_Ate-Y*Xoj#O-^G&`$qWTGPE}!DZQb# z;e>`ri8VF)C~N{>(pgjdgXCcp@i4-bheqUKm^lxFSy6p*3L3X@w)FC=iiFfkdm%Awu6j~&~+djkIluM4C9sAZR$bHFruC)&UvhtIB? zGxNaN6YAy-8Am_ztFVgz(Yl<74Df}Ld1JbvNb^~21+Asb@3G8YXf{0 zTjh9JU=(5)~DgCo);5>w{swhX{Fv8Qn zO6wZkPiM53wXWe^qYCR9gP^s*Q7wMBJOvzw3=d$Cqf=a2*Vvxesnoj0cxwLMuFXFl zo4==R^R@ZM*EO~^xGH}g8Y`Nq=DJ1(8LP=O;fG7yPe9^Q1`zq{&=k&0t&sW8f+`NUeB>l#-Q`paF>uR!#dn4`atAZZh!6V^5EAsX&-rC}w~aJwxH zu_i&py2h&rF=}1obu0Y1uJLkd%<3KaB;@JE(slT{#vfTxy;|b1uJJA6gx8_rhs*GH zGQ#-67DlY$)~;)8zMA3P6hB<>o`QHchT4W=UmsRfAGQjuYYZc3LtLSqiqHnxLW?z& zav4Ljt}&BvPj|(=3UTjmj(ajIst@Vb>>NfAw)taZ0c_tz%T*;x$tT{01hLT-;%Nvm zX$vvd&~{y%Zf)dGmGlpZ_f*1rvMb)x5$_6fyvMVm`jE0-ij789zLLMfHiW z4JLwbnMq9m(a}p4lOTJX!KND<;D^g}<17TZF4Q)hZV<>=!|LB{<=vP4UrPKt6aIm& z_|HcCJDTI~&x-1UygLOsn@cW&cUPuc(gi&IIDvO)7{HSC$vhmQPKqrX-^DI15&tr- zAgS4xsM*Jrnsbnvy=-$ckuP5{iT+yG4=;xWEKa3UCC&n(A z7#;+Ab8R7;NVc^#FZU88o%bb%$Orq1l8EI*#4=YReuhL8Y>9|94SF7(ZB4NetrVR3LD9AUv26+tz`3Bn{Tco+ZD1Un|6FQ=c zhB+$MGZ05UAV&pXpozgz@iy`QS1bN;&GZdXgRhxhpm$WPFtjezdAC?x^>y`Ac-O#7 z=-d>eT$;qkEw{=t^S>hIzYsi{tX3;dic2u_KZV*pC&g}PJ27ya_!v@r6wdVpFy^A@ z(xIQ4hPWuMka(gy5_eI2ELbbcMR76yO`gfcE{aid>9(YcLiSPFAHrM|VN1Zu8g1q~ zSp6;Gp;&6;p#a~}L~r)WGndxm)gMIgGQ%Knz{wE&Fn%z>@nDds!SP??_fRxwJQPY> zY}eoU)VyK_iai97FayPOGEh{g!3GiW+!M+lTmx)R3^X!&X_>nxra=vIPwZyro)849 z)(IpjXq_1A9y;Q|@0%DcJD=y9$S-N;jS2Hj%*8ep`6j5P5x$9Ftn~wrGWcGL0|!s} zD)}a|#Cci13GW(J@J*Zztp$$G#1G?vL}BXZ(hw;jX4{;&~$OIalItM&h0}fav)qo?u1wPi>v#n|Pn7 zc+ZuJTab!(Y^gBHp+||eIDHfAp2-G)uK3|H0Q?5gcY)f566cQuNjm^^f^TALqM^o> zhFg(_&24FjH3=eo6MG@VDBr~1R`}63u}5jls&C>pdc}9^;Dl4#azuIo@_wR3A3B-ik*;^F2XD3+$Q_@=<6F zLHn62v^x>n*|yMP4W*H9;ts-nn=9_S5ce(SxNl@d^&u_ci13D;5~XBlpCO1(xk9`f zAwF&kG1ky(eG?xM-ha5_y$A8WZ;tnGtf)Su{cu%<`zH8vome`F_*I5*?X%cGyB2=9 z47B$mq#tY{#Tr7tHG;38a{mEPlv0kS+n(?zT=CzB__v1IhSRGpSy6pRoz5-ya5~kM z>99M|v70L$_ahynZ0U$K9lG;QkrsX^^(%?}P{Mw&EA|Hv`&@JE2e6|0RM-rA_mqkJ z4$Ps5{vG+dgw;l{T3um1h_Dvh!iqJdemey3;l8tLCH`{=|5>j1e~b9fFvouyE2Fwno@jltf%hL|o%a#6w8LRklRLng~AkgO>-s?oNO=pRP(zc)w!5G$%rgTdIlOE@Bmy1ZQ_Nx)x;fHz$U_#G1Pnk@mbhQDt<)qwA^ z$Svn@{oyMCA-_l_ek3NocV*)D$i#Q%Onl9X>QiADrb1(CVG?W!2>}aC4~uZ4EE%Z4 z*ie)W*7YO}{my1nzm4(3W$O0`($EKL8%}+QhFBA#r)Mlf->|&h2fmdIj3x#~x-#%6 zGO&v|14CF*eInFhBJd~eM7j|+OQTT+3^H_=@DP%94zjeI|=ycp?o8eHxu%VEAqz?`66@VjjX6XS(sB+G@qwP zQ5KXcCPAJ=AXm78d;&opZwoTk@b>0M9I+FQ}bSQ94T zr1Ykhfo~-PuM-2Wx-#%IGVo_}2L8l~>XW78;1E}($O#umrKs%gru^?}lnmg%D1e{3 z2JjgS;K#NBj5US(!2|+c?1e98Xr%WtG}gkziS)EtOMt5Qa^!tNd4G2x=(= zJGzG8ISfI6+YrQ>lyGojLv|@pj#;UsW6}4Lh5d+yNvga3(k)U?U)1xGlV>NoXqcD0*}x>?dC9qHEe0?7*~I^u zR{W!PbhW6#y`wLNc*$#r~@pEy1Odx)r^qAb=(E_x6eW zPl>ziL|&y!3w5ZS%^nj|iCNinYoV+Wmc4tKT}GF$yE!(D=c#jj5uVJZ=d!_c6Z~*_ zw*4IA)CX$&Zt-J{^V6f;qe@A~axNj@vFzKPwa#i7{aT_bJNwSp1$k}`Htn`0bFi$z z2Gm4dYeQ~%8xEuHpw-Hq4C3+vv8xe4n9ff+K-@bDi+5Hm|Ddka?C zi%+UcL=DbE*L7e#-Cs;jTQ$2J1C6!aE|-(9JZQ$}ig63()6z&S>~8B9`gf&YFscAx zS}8DvZFoFnK^V~$XuDyoI>KWK?LH&W?&$jl-vfCb)Sx|(=YgA!Z$Ef}|Y)I$>92BhgUrN<$x{VZJR5u_i&p zuE>)SV$`n4Q?2mhuE>?8F{`^G`yx*#l&-^fMIOtF>cBL)>4RwIKJ4wJLT* z-NJM(wJZq-%jMde<=Yb7FCY_Qqw`qb?t>pLeS1?RrYF=koZ}ENu_i=s5c~>oW?^IC z1f`1j!-As zLaj=`gWEEAz{U5Hg*36S$d!dHkcCEb7Lu%}KHvi};3N~zri~b$2|qIM7BwXF6AAk9 zuF$tc=*QSXk2L{$cnqm8&h>pK(O*I6FLOm-gXk|dM}Gk;st^2d=J8Tqlgmdg+>uvc z8#Ls5Q&B|}J>Q|Gq~dO(;!am8wn8dyv!x=|MCj=y0^LcuSQ+?MGVls9@Ml*Bwnhg2 zWX{0ztf)R2Mg@m`Z&uKhg|{lQoj0jO$0Ny1Q-O10$}iPD`XdX= z%vmU~qWWam69<0}3ck<)CV=@=su9P1j!eAXATl$`yND#{JR;~^SAupxg3hufDAqLT zs?HGU9}@5Fg!figyaN#L&E|M-U`6!_;V{ATY)Z3~<3(3(%!?x<&Zm>@6ZPk%xBQoab>`*;t!}$uR0Oy<1ZF%vy>i<^q-$eW` zwBjEPPz|C6H$V+V1JvH!00sUyTHT% z(-K4+Ofnfqo7+SU&eI-#yX6_PQ+VVUJg$l5uVib2EQ?wowgx?}qZZf}nnu2ZrVTgH zz}uiI<;8qN01oqFws#6Jrhd_Gkm^@Z7(u>5~2vhXE5vZL#pzUhP`k|g;)5E3faKq<=tf+q6urhp- z&-3qyvnKO5{BXJLO+grM+ro%7+*+S!w_h;4>)?kA-u)5pT2R~YHvfY`*fcIq8=vP^ z1Z_)KXj2i|X135`4W*IKb5FuO))n_O#J!t2?oq6$z9$Ys`F>FM?Up6PZ zcG=gFH2scfddQWg1CXW%Y-x%$NqTun(g^xsJ|*%b__gHV9pd0ER}N+)2XC5l@ER+s zPnCnzRDqS-R7)C8P0qFs$)~`%#}0;UhQvU3M`{Rm3dj`?FeVYbZyv`EUw(-JB(BR# zQokiqzjh^c4wCwXEvd04R?i%$zi_xY9^k)R47ClX zhJ9F3eOm43Ppj7UmU=p<9T8#TEKa4`xMjHL)Tm^8W4e%N&MuNeQROZui5o`54RIyz zKqPLEEpf4?P6<=tOhP=}74boccz<)mlUY%Hs%-C16|xla-2`-em{=e%C@RCdkia&& zf;||)CT+pS8s6UQ?BYeKRBK}!9!$lFDf(Wra4NBIvMURRAPXzZSvZ~*)rWise;n(Z zv-RK^f>W8nM#!OwTZma<3HVY1e6cIwLlN)=wt!;|d!KfgU$6~#-g{7Z+>3vZJUmD| z-0#Z6VaUTh<~-cVis}PDQU+dFfwBoe$7ZAQB`<7mAzS)fF7m*suB787qT^4lbR3R! zJa0=!tZC7!F`Z{eMzgt>m?#9lmK=OZ9DMG|!4b&8r{)}d%!=w$A}vz_r;)k|D8YnO zfjy^iPFjM)AB+d2rdrwx%V8ABv5hBL{$rvwOH)%hm8jxhl+^dQkWJDyzz>&6+B~Fw zU8rq1Nh9hl(obL1^P|x^S9H-ZKiZdUIW>CO9oH5;KN?@?jp69%J&6C^t@uZW$gZLW zcZekQezYsdd8HntEO$u%@2pf9>x<_5-YKz)HEkA!Yla}-#L%Po22$8v_J`U&Yg$Fm zHT5L!ie6KU7wir6vi_|eR?25%A-{-#W>zEFHJQ@{=O!7A z1JEg=2Ir*JZ&7Q~Sk%;J+S-di)`B^Cialsl%zyTCfhNp#`M6e%V#rs}C^oLVND?F5%hb^=-8g*IaM?*a`Z8OX+M+NQ z*e%$wA{Q7nH^K!LjJ@p8K|>XeP|9fDh9eB`2UT)`Jx#=y1+m(u=kcvHRsW8f+ZHcuwU0_K< zKi?JoazuZGIr>8hl6C;-gk%4XA{v&u(r`4=khi5F)+C5Z<)*w0I2 zR`1BiAW!F&uEXya=dhysal^p{b`RpL$=rn>F2mok2;+8J7_o+1>jHa~@V@Md_c+A+ zqB-6_vZDI1RmcVQDM9tMCd2FqF;gN$D5-c z$BODhzx!Me;Zw<6GweA7n-Ff{S8N{2i$D_%un(@Dy^tMMf=01UQ^pk}HS>s?!(FLa ziPRioOHHha(MNrvE-Y^o*-`w1)%a_)kInx0vI7pGc9fJ+sVAfF+SPq~6T6+u333(_LU`l8;#7d_fX z7Y$qZdcr_C@D{$fwiUy|*MErr@2vPo-T7-#gX_+#^$TDBd$-zbQq1{FsfRa>#vMXQG)t5rXfsG_?TU#(hCa97r9 z)tUG=d2Sc4R*jHCc*)f&*=uDF30tiS71Y(mse56hD6u%zYPLAF4O^Uwe0LdN3@KGi zL^iWOvJNkV5agRKTh)mgoSa|ym#tQ6maQTI*sgqlqn*E05BIsJ#4GhGwxD&8z!|on z)l3Uo)xl#O-HuXu0Fj>`z!%-Y`6AdNs6mTh``ImmMF&e=5kta*D`HbCm=|HoVL0f{X|1fwrK}75o*RA=V^_SSvdOAx5p0 z9cG0e*UAnmjagkQyBc|#Q@RdcE1SiN>eIzxt?VeoS(90cA1+yc4Z_IV!iY88+O@I^ z2=C8b@%{?&o@b8t99C2xwhFD4-9pfAa)ov+Lc87;TCAZoS}S{=a6jjY``3v3X>;69 zu%h~qZi<2_sNmkw2;OV5gispwvwXsSpFq9m3hFup^^Ps5ScADPZsKbf8&dc`CFXT6 zV`EWQ{BRkIu1CyWptj*1_(y|4?uLP+hSOUtV1tSGR<4Bdw8y@LU1|-v-(0<)TM1oWl zk=wCX909d`+WBOpuUzKf8XRfGt|x#qRlSw9J6dN5QPuC3c%wTZSJe*{td^y!--dsa z_kvzXq^{XNZfAb#EoJ__0P|pq=3&MDh_a^;&G&6hAkCFIW(MD zi&Fv56Z$2t=$}CJt>)+#6C~{b&lo>BLZq>* zC8zFBBS$rvC-KAOp7S(P@R%(Hv8GB_)r3s{ka#~NydSvYeFpLV-5l?`tf)TZOg-nu zQOSZ;Kx;Df}Gb-U@0PPMfx1MfD-I z*)~$vPLnYNepgrUe?agfZNbMHbT|-_Mz=+|Y89o<|1em@_bo z71f8IY3AUXrNxuUh(kGW+7lfT{FGYQeZuVZ^3{mW^(8G?qNT-^mOmmb8CzOnO$_a_ z=-Gt#Ojo=wAl}vHcvrEa`ZTD}vgoe}+SRVm{)Eu3w1pOLDDil1-nHp~ahbZ06W&K% z@xF+7e`k*Ox2&i>l-o>B6=1Un+?=OE%lSeYAF0HRx>PX<@-GDP4OfsaA;?#4LB<+X zu^&i%!>|8KiT?+}{~uTUe@6V@n&bb971alMoCq@C?u4tNa0WC)oNXEOj&Cg*z*`ds z&Yd8Vpxnzyk~X=LP3bnm50|OU%ScjhsBJj4A(CQElI~5da8f%v-jVlz^(%>e6k#9X ziv1PDKFl2ZU{+M0AYJXQ6== z)u%|E7(+M^ezWlKkoDs(kT*-E19L|4jQN6L<~r7YIO z>6=f%n}QodQYYjW$;4H}#1*bgyn#$yYR<$(tf)SD_K!>+e0L3;SqCpoW$!K!kV|Gz zB`+z-yO+qj+m*aGk-R%>$%{9Q+H%>Y={#7U;G|u4T00+s`WF8pnRtzuc*T{8zaSGY znKSVME2>YUX(EmMzOTS2lYsMvaqywj5a2(uZEzDq^B3D04R^9;<@|%nUQ`nJ84>u2 zD}jGS0za}PFxFIpW9!i;m|f@%`8<(|zLzZYxr)v7df|u5Oz$mZp$F79oawF4it5v7 zPB4vXG& z=V=x4i)3OlF;VBr#5>5uzUEBq&5G(1>p+Xd5@_MQDRA$@!72PHOr%y!SC^C?Nt7Pp zO6j{u>7lli#+qE4=iA%bvbjQ@S$Mz}yl^4BFR8V8InS}^0+N^GiI-ztdHEaivfP}P zrL3qv)%F_S+?-vOPcU5QcSc|dM26@8@X-lhLXpPjwS{m{Kk7X28nIk^N~BboSCJH* zPZXW!O3`~r(K)shS)`7>sON+xi$`?PFemhD1`ZO>3C%rDF*uc)8uCfrn^JfxUbXVhk=NANnUVhF1Mr1Oc>4iIxYWRv8 zn8GQ^ctCrq9a56ULv1S3rFg0hIsCvmb<&mZB_g|;cQIWy?&jD$o{P@)MUXOU{gO?< ze-u1gX5v>Et$znIaUUfU?FmzovHS}Os4O2h1h~3Kg^+ywP9m&cKF&p@xMKOpu2#u> z3^dO=AA|KpkTN?`KJI`YE)Rr1Vzd%0%1tMUo04rB`3Wl{AB!&}pt5`%VV{p{cNGZB z&c`!M2cSvm3Z^4o%peP0m|ek6Wd%fu@6S7x!g?j zu~kMU7F|aGWtn)qeI{-q@wsJUbgfKnm$lZ)421uObIx&1Tk{8@kMK^zpO1?7$n7e( z)s);LC!hTI#Xpdn*JRV8w&$oDcMZ3z&!YgYn%G;FFH17!*9rp zmZx=e0TIv4jg+|8TO}?&cwQ@Na7wo53RC<2Mf2KAZ;?}{;cokJ8b?ow$0b(AKx?A#o(&mo;fev)!Z{TjfmUdmALJZxXA_(y;I{RvZDI9 zcha7@2BISAN=1L9;z(O6jB;o^u@>i^xswR}3Rm) zq~Uy98e&a?h&^-nA;hRXa}QYI$31iRl*X*?ncES0y0dg0zGv<>R#ZQ3SnhuFz+2Xm zbNSbiBQRg%hs!N#a->HhEZgG8(d7Joc!={ShKXW^B14l>+iY!xY zPYlFOEP%?A<-SF!W=D*YY?Zi_fXmYDA=X-}blXRwbW6ABT9Fd{2>hFTbS;+X$4Du! zq(m?88*+>eJH}2Y3935%8*s}iq0?{CRr~>ConBpU=2`92>3s!6P&5Ce9RA2EhwJjQHD3x4=9C78>>35f%+pp8BRl{`pjR1YIPET!*(CLGj5bo%L-y)~Js_~G)TIt>}#k3o*UU17LAy|#|n(aLldI(;KG zzuvX^)3N#UZJV#nKd#g7Yj9Ohr}x5LO`ZNsBJK=V;$|Rmrx`%>;(iJ%s()hdB%S_h zqT(u7DrO=Tm)lZdltU|twK#S9M+yD!UD3}%^beV%e}Euq2Y^mE+wKjb;Wbwp4nP`S zwxuD~B#6-I|AP>tbow8x@S{%uU1`kf9eFnL^mXYv{C@ETE2RF`s%UlkJqYjau6XAn-d)Y{j$}pkA=jwzHah)mf;P()+JOjd zx-GPLL#fm0bA-3e74Jcax5XT9h85L^vPghu4-lnw`am)HtbICxT;&S#U<7%xEl7)? z>Wg|hJu*E$ZblukeQ|JVHK2coJ%trPDL|g%MnlPHlDi;tPp>&xF(0SxcjzL_>7?28l4bw{e~RF~MWF zPVdXJaGk!uw6xMXy$@=%PS1*Ib$atQaZPNHMHRt+=1b(JCiA(V$THQMFc6=x0BUu5 zJ7Sb%E7s}lFD2lzbX)7!`dM5^x;0CbZs`_XD^jOF68|P2U5j-3(Yr_~ucS^d?;CQA z7BaeQnpP52b^5K~mQ_NhuQSu>H&gxe%BCKk)RDi7kYIx z#IMrlL+$K7E4tETH<5lJZ2PLTMn6^n3)AT5#R|YYa2=7ch1g68K#0CMaD9F%)F6F+ z9~U3J8V6OLM=pc%{DcaGIz*ixJzRF_j?GjTz0$ZaaefZAvB*SEEsqfAgDD~hff6SA zJdR4d=Tu3YZ>1QNCC+=-sDe0u7PJ;P>c9`<@km+zI0_j)ok5PydPST+mDtg0a~9(K zHPrlHx;B3~HvbCS=4M4koc{w6_pB>%M3;@R>`n908q15;TLDCKYogmI{ zMKo;bO2ctT!)CTL#F_*V;{2WnF-n{tXN4cd`LU%jtK$6e$kT46>u_;?6f3G9H>xbo zAAuazWDdg*mmYHhQgE;>1+k`zR-8YU@E+}o_e8|I%p7ll71f8lLgM^+1npc`Xe$uf zS+>yP4W&+;zn$>j>WX(I;=S1%?+vV|K9pO}h4Wig6FojZ6lwD%O34T8rwQVdt`JW` zh>zJqvxdrDRMHyO&gdu5 z5S8?7i7&dJaZ!F-2FwaWi6?NkLFw3@aP0YHU zh)8BMvIQ^a5~Nwm^lLCQ!&pcanZ6EmcK@kM)+{MXeTA+jK(jO)&)RI2h8IYzZfO`@ zD^nYB?#*ian|!=27VAeyWv`@IFYhFB)D9EtH434s)z5=_SP89uiGxW>k?N^A9%24EgIzgDlb1HJSo z2OvauR<6}|K#elAdNmHJR*zg(NUK->M3|F)^hnvG{aU?JGfb;rgKaF*>Z#=sT757@ zqK7BEw<=2VL{Q{uYWsSz5h!jVfsM&qHg0qv!C$Wkz>3GW;}y9G&%wR{sRC zqm}9`wEFj{`R}@WXz_+pC)$5Wct3Z=do$ww)Ew`}tf)SeMRGho zNR$@s{iWoSc8?ob@7w@CTzcm%2ytDgZ8*arh!!E$7xhGYni@tI4HNBeG?;mMqCI~$ zib1sBgZSUwihoo(b`>?a(s6sGMEiaJe>^3876oF4pw&`2y&F5i{!qIt(H^Pi>a%*} zjjd>3bRE&-nOb@TYiIPMXozTkzr+{a&$wtmS+E!?+MlatSh$hC9&-@hCRRwMTT?j$ z-Cji;t=nU%3H+)$?S6!P6S++0QdNW}vlOYT$rJ>GmU;Lv#;J|PS5fe%6e;*ld?_k^ z1+OT;v)o+C+HRGbk4nsLxfxw6Qpvvy|0W-ViQfsvwVC z1qJy%-PT?xhQx;NOqQtGeb{l`swd&)BRY4W1esp}_~E9zC!GH27z5IN|wU zB@O;FqP;8)-n&K>H26L@u^VGA{BU_v`6Dvi18N&SsjSb6>L11|H29sU`2$>={{l9D zd)ww~^N(xr-3+ekY4BdStEs`yBI0Ja689%0ZmI!9&o93pE2@usCu#7Dh>Dae6)z$c z^|n+P0chCd?>7uwPgYZ63g@V`Zf zQ5yWiR`^kaf1osGRfB&SdAhfB9j?LO#fs|3jVep;e?^XJGH>FC%PsR2q~JAM3Svza zt@QpQ;r-qf@2iOSJ9E5Wv!eQtS4evAcQXs+#`xh9%GVHDAE<3O`ypuYhEgZJk0!h$ zUGct-cy}?!JA@V0hjP=PU!FZVh{NWiewGi$(+Jf5uAtsPP?K#zSp-pE)Dzoj4j5fD zOlu(2I8r==JT=@aiC_}DfJgagga#bO@l42MpSE{ed^z|WXP7+rYng-5W)3I(YwXi*x zUX%F@n^h!NQez|J%3##>1Ce4G{sadSp8r*nD|_6+XfI2y^sZ3_xpHS{EpRjtKU^m4 zUm(LfGRV;xj^XxXtNz4}R;{p*EBB@5@8jD1FR}T1**0IBe_XCi7+lqpE4^@6Q?6W0 z#HC${`wEF$XaLcRdjl(~e{ks}xpE~@aiS{~Un3RA*-~MYLkoztIOWQ#2>lhV=)Xbq zmztx$h#+YPfKIRs-%B*y?MlP9NW&erG{l+&5pv~g2r){oe8UPq%9XE_#;nSf-yu&g zm9E3@7ca1)`f;Pma^-i(QBCF>{BXHt{u?Ry(w2f)Q$;IRZt)w2cQgEO!TTS?y9v}b z)b#qYqWX|mNUq$4pbd3}_B}$|*%n&7q14Hhvk31DSG+$U-l^tz_hUu%q1-koSF$IE z1nh#(w&xmBLbohgPChCxBA6*xm_H)SdRv&WhIIqRiW*zx8;N`sAwR_x`A>*^r8)8w zSW$g|cbdx%zQ(pE+FKh_xkLdDbji1+8qy2Xsm4UIp&{GeS`dLYE-ztUMzAk&g}qic zfPJAYY>R;Fi+YMRJqAP<4O6VwH@J^@iZy=@jzO{h1M&Z?75}JBJtb;zZK`WGkW&M% zMO77RN+wTE<<{GLBHIe@*v%zcvT))F>na9bTz09_!YnJMGvV4CRqf5ZY^umK{~OW# zjv&oM0#xLX^)b!=0<}vh)^@}wZrftT+Wt}kE>o;OWvz{t7D5#34JFFxzQh&l*9Dhl zDc0-Z-{i?$tXSK;g;I7?*(FLU)&(45rE?Hfx6HpmXe*&ue{7~$_frkF;!GJXjz;_{ z;+Wa`RyKjG!4KmJB#sW7iyEAYzBoF_J%ZWNMqANbH>2i4JkXk*$x|r_d!PUnCSf1y zbKF+4@uuPGh=?b|V??0o(cO}3+GC*xY1-plEVz<=RoF%bgTnUsvcnsuZmTbt?5CP> zMZ>}jx%*=KiWF{Yb%eqlObY$Lr3~pCgyP693 zgGAi@uEcGL#NA^6(NnnZWJUFlLY<^=zeH60$(4#4q~dv7DvWaIHexMKh5JiF|G6vr ztq}dE=IB2rNZJ9Q6BO1N?9q2e(EV)`i-JG9J+oYZ62#+&d%0D20276@FB> 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