gitextract_12fbmuov/ ├── .dir-locals.el ├── .djlintrc ├── .editorconfig ├── .envrc ├── .gitea/ │ ├── ISSUE_TEMPLATE/ │ │ ├── discussion.md │ │ └── issue.md │ └── pull_request_template.md ├── .github/ │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE/ │ │ └── issue.md │ ├── SECURITY.md │ ├── dependabot.yml │ ├── pull_request_template.md │ └── workflows/ │ └── ci.yml ├── .gitignore ├── .readthedocs.yaml ├── .woodpecker.yaml ├── AUTHORS ├── CONTRIBUTING.rst ├── ChangeLog.rst ├── LICENSE ├── Makefile ├── README.rst ├── allauth/ │ ├── __init__.py │ ├── account/ │ │ ├── __init__.py │ │ ├── adapter.py │ │ ├── admin.py │ │ ├── app_settings.py │ │ ├── apps.py │ │ ├── auth_backends.py │ │ ├── authentication.py │ │ ├── checks.py │ │ ├── decorators.py │ │ ├── fields.py │ │ ├── forms.py │ │ ├── internal/ │ │ │ ├── __init__.py │ │ │ ├── constants.py │ │ │ ├── decorators.py │ │ │ ├── emailkit.py │ │ │ ├── flows/ │ │ │ │ ├── __init__.py │ │ │ │ ├── code_verification.py │ │ │ │ ├── email_verification.py │ │ │ │ ├── email_verification_by_code.py │ │ │ │ ├── login.py │ │ │ │ ├── login_by_code.py │ │ │ │ ├── logout.py │ │ │ │ ├── manage_email.py │ │ │ │ ├── password_change.py │ │ │ │ ├── password_reset.py │ │ │ │ ├── password_reset_by_code.py │ │ │ │ ├── phone_verification.py │ │ │ │ ├── reauthentication.py │ │ │ │ └── signup.py │ │ │ ├── stagekit.py │ │ │ └── userkit.py │ │ ├── management/ │ │ │ ├── __init__.py │ │ │ └── commands/ │ │ │ ├── __init__.py │ │ │ └── account_unsetmultipleprimaryemails.py │ │ ├── managers.py │ │ ├── middleware.py │ │ ├── migrations/ │ │ │ ├── 0001_initial.py │ │ │ ├── 0002_email_max_length.py │ │ │ ├── 0003_alter_emailaddress_create_unique_verified_email.py │ │ │ ├── 0004_alter_emailaddress_drop_unique_email.py │ │ │ ├── 0005_emailaddress_idx_upper_email.py │ │ │ ├── 0006_emailaddress_lower.py │ │ │ ├── 0007_emailaddress_idx_email.py │ │ │ ├── 0008_emailaddress_unique_primary_email_fixup.py │ │ │ ├── 0009_emailaddress_unique_primary_email.py │ │ │ └── __init__.py │ │ ├── mixins.py │ │ ├── models.py │ │ ├── reauthentication.py │ │ ├── signals.py │ │ ├── stages.py │ │ ├── static/ │ │ │ └── account/ │ │ │ └── js/ │ │ │ ├── account.js │ │ │ └── onload.js │ │ ├── templatetags/ │ │ │ ├── __init__.py │ │ │ └── account.py │ │ ├── urls.py │ │ ├── utils.py │ │ └── views.py │ ├── app_settings.py │ ├── core/ │ │ ├── __init__.py │ │ ├── context.py │ │ ├── exceptions.py │ │ ├── internal/ │ │ │ ├── __init__.py │ │ │ ├── adapter.py │ │ │ ├── cryptokit.py │ │ │ ├── httpkit.py │ │ │ ├── jwkkit.py │ │ │ ├── modelkit.py │ │ │ ├── ratelimit.py │ │ │ ├── sessionkit.py │ │ │ └── urlkit.py │ │ └── ratelimit.py │ ├── decorators.py │ ├── exceptions.py │ ├── headless/ │ │ ├── __init__.py │ │ ├── account/ │ │ │ ├── __init__.py │ │ │ ├── inputs.py │ │ │ ├── response.py │ │ │ ├── urls.py │ │ │ └── views.py │ │ ├── adapter.py │ │ ├── app_settings.py │ │ ├── apps.py │ │ ├── base/ │ │ │ ├── __init__.py │ │ │ ├── response.py │ │ │ ├── urls.py │ │ │ └── views.py │ │ ├── checks.py │ │ ├── constants.py │ │ ├── contrib/ │ │ │ ├── __init__.py │ │ │ ├── ninja/ │ │ │ │ ├── __init__.py │ │ │ │ └── security.py │ │ │ └── rest_framework/ │ │ │ ├── __init__.py │ │ │ └── authentication.py │ │ ├── internal/ │ │ │ ├── __init__.py │ │ │ ├── authkit.py │ │ │ ├── decorators.py │ │ │ ├── restkit/ │ │ │ │ ├── __init__.py │ │ │ │ ├── inputs.py │ │ │ │ ├── response.py │ │ │ │ └── views.py │ │ │ └── sessionkit.py │ │ ├── mfa/ │ │ │ ├── __init__.py │ │ │ ├── inputs.py │ │ │ ├── response.py │ │ │ ├── urls.py │ │ │ └── views.py │ │ ├── socialaccount/ │ │ │ ├── __init__.py │ │ │ ├── forms.py │ │ │ ├── inputs.py │ │ │ ├── internal.py │ │ │ ├── response.py │ │ │ ├── urls.py │ │ │ └── views.py │ │ ├── spec/ │ │ │ ├── __init__.py │ │ │ ├── doc/ │ │ │ │ ├── description.md │ │ │ │ └── openapi.yaml │ │ │ ├── internal/ │ │ │ │ ├── __init__.py │ │ │ │ ├── openapikit.py │ │ │ │ └── schema.py │ │ │ ├── urls.py │ │ │ └── views.py │ │ ├── templates/ │ │ │ └── headless/ │ │ │ └── spec/ │ │ │ ├── redoc_cdn.html │ │ │ └── swagger_cdn.html │ │ ├── tokens/ │ │ │ ├── __init__.py │ │ │ ├── base.py │ │ │ ├── inputs.py │ │ │ ├── response.py │ │ │ ├── sessions.py │ │ │ ├── strategies/ │ │ │ │ ├── __init__.py │ │ │ │ ├── base.py │ │ │ │ ├── jwt/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── internal.py │ │ │ │ │ └── strategy.py │ │ │ │ └── sessions.py │ │ │ ├── urls.py │ │ │ └── views.py │ │ ├── urls.py │ │ └── usersessions/ │ │ ├── __init__.py │ │ ├── inputs.py │ │ ├── response.py │ │ ├── urls.py │ │ └── views.py │ ├── idp/ │ │ ├── __init__.py │ │ ├── oidc/ │ │ │ ├── __init__.py │ │ │ ├── adapter.py │ │ │ ├── admin.py │ │ │ ├── app_settings.py │ │ │ ├── apps.py │ │ │ ├── contrib/ │ │ │ │ ├── __init__.py │ │ │ │ ├── ninja/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── security.py │ │ │ │ └── rest_framework/ │ │ │ │ ├── __init__.py │ │ │ │ ├── authentication.py │ │ │ │ └── permissions.py │ │ │ ├── forms.py │ │ │ ├── internal/ │ │ │ │ ├── __init__.py │ │ │ │ ├── clientkit.py │ │ │ │ ├── flows.py │ │ │ │ ├── oauthlib/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── authorization_codes.py │ │ │ │ │ ├── device_codes.py │ │ │ │ │ ├── request_validator.py │ │ │ │ │ ├── server.py │ │ │ │ │ └── utils.py │ │ │ │ ├── scope.py │ │ │ │ └── tokens.py │ │ │ ├── migrations/ │ │ │ │ ├── 0001_initial.py │ │ │ │ ├── 0002_client_default_scopes.py │ │ │ │ ├── 0003_client_allow_uri_wildcards.py │ │ │ │ └── __init__.py │ │ │ ├── models.py │ │ │ ├── urls.py │ │ │ └── views.py │ │ └── urls.py │ ├── locale/ │ │ ├── ar/ │ │ │ └── LC_MESSAGES/ │ │ │ └── django.po │ │ ├── az/ │ │ │ └── LC_MESSAGES/ │ │ │ └── django.po │ │ ├── bg/ │ │ │ └── LC_MESSAGES/ │ │ │ └── django.po │ │ ├── ca/ │ │ │ └── LC_MESSAGES/ │ │ │ └── django.po │ │ ├── cs/ │ │ │ └── LC_MESSAGES/ │ │ │ └── django.po │ │ ├── da/ │ │ │ └── LC_MESSAGES/ │ │ │ └── django.po │ │ ├── de/ │ │ │ └── LC_MESSAGES/ │ │ │ └── django.po │ │ ├── el/ │ │ │ └── LC_MESSAGES/ │ │ │ └── django.po │ │ ├── en/ │ │ │ └── LC_MESSAGES/ │ │ │ └── django.po │ │ ├── es/ │ │ │ └── LC_MESSAGES/ │ │ │ └── django.po │ │ ├── et/ │ │ │ └── LC_MESSAGES/ │ │ │ └── django.po │ │ ├── eu/ │ │ │ └── LC_MESSAGES/ │ │ │ └── django.po │ │ ├── fa/ │ │ │ └── LC_MESSAGES/ │ │ │ └── django.po │ │ ├── fi/ │ │ │ └── LC_MESSAGES/ │ │ │ └── django.po │ │ ├── fr/ │ │ │ └── LC_MESSAGES/ │ │ │ └── django.po │ │ ├── he/ │ │ │ └── LC_MESSAGES/ │ │ │ └── django.po │ │ ├── hr/ │ │ │ └── LC_MESSAGES/ │ │ │ └── django.po │ │ ├── ht/ │ │ │ └── LC_MESSAGES/ │ │ │ └── django.po │ │ ├── hu/ │ │ │ └── LC_MESSAGES/ │ │ │ └── django.po │ │ ├── id/ │ │ │ └── LC_MESSAGES/ │ │ │ └── django.po │ │ ├── it/ │ │ │ └── LC_MESSAGES/ │ │ │ └── django.po │ │ ├── ja/ │ │ │ └── LC_MESSAGES/ │ │ │ └── django.po │ │ ├── ka/ │ │ │ └── LC_MESSAGES/ │ │ │ └── django.po │ │ ├── ko/ │ │ │ └── LC_MESSAGES/ │ │ │ └── django.po │ │ ├── ky/ │ │ │ └── LC_MESSAGES/ │ │ │ └── django.po │ │ ├── lt/ │ │ │ └── LC_MESSAGES/ │ │ │ └── django.po │ │ ├── lv/ │ │ │ └── LC_MESSAGES/ │ │ │ └── django.po │ │ ├── mn/ │ │ │ └── LC_MESSAGES/ │ │ │ └── django.po │ │ ├── nb/ │ │ │ └── LC_MESSAGES/ │ │ │ └── django.po │ │ ├── nl/ │ │ │ └── LC_MESSAGES/ │ │ │ └── django.po │ │ ├── pl/ │ │ │ └── LC_MESSAGES/ │ │ │ └── django.po │ │ ├── pt_BR/ │ │ │ └── LC_MESSAGES/ │ │ │ └── django.po │ │ ├── pt_PT/ │ │ │ └── LC_MESSAGES/ │ │ │ └── django.po │ │ ├── ro/ │ │ │ └── LC_MESSAGES/ │ │ │ └── django.po │ │ ├── ru/ │ │ │ └── LC_MESSAGES/ │ │ │ └── django.po │ │ ├── sk/ │ │ │ └── LC_MESSAGES/ │ │ │ └── django.po │ │ ├── sl/ │ │ │ └── LC_MESSAGES/ │ │ │ └── django.po │ │ ├── sr/ │ │ │ └── LC_MESSAGES/ │ │ │ └── django.po │ │ ├── sr_Latn/ │ │ │ └── LC_MESSAGES/ │ │ │ └── django.po │ │ ├── sv/ │ │ │ └── LC_MESSAGES/ │ │ │ └── django.po │ │ ├── th/ │ │ │ └── LC_MESSAGES/ │ │ │ └── django.po │ │ ├── tr/ │ │ │ └── LC_MESSAGES/ │ │ │ └── django.po │ │ ├── uk/ │ │ │ └── LC_MESSAGES/ │ │ │ └── django.po │ │ ├── uz/ │ │ │ └── LC_MESSAGES/ │ │ │ └── django.po │ │ ├── zh_Hans/ │ │ │ └── LC_MESSAGES/ │ │ │ └── django.po │ │ └── zh_Hant/ │ │ └── LC_MESSAGES/ │ │ └── django.po │ ├── mfa/ │ │ ├── __init__.py │ │ ├── adapter.py │ │ ├── admin.py │ │ ├── app_settings.py │ │ ├── apps.py │ │ ├── base/ │ │ │ ├── __init__.py │ │ │ ├── forms.py │ │ │ ├── internal/ │ │ │ │ ├── __init__.py │ │ │ │ └── flows.py │ │ │ ├── urls.py │ │ │ └── views.py │ │ ├── checks.py │ │ ├── internal/ │ │ │ ├── __init__.py │ │ │ ├── constants.py │ │ │ └── flows/ │ │ │ ├── __init__.py │ │ │ ├── add.py │ │ │ └── trust.py │ │ ├── migrations/ │ │ │ ├── 0001_initial.py │ │ │ ├── 0002_authenticator_timestamps.py │ │ │ ├── 0003_authenticator_type_uniq.py │ │ │ └── __init__.py │ │ ├── models.py │ │ ├── recovery_codes/ │ │ │ ├── __init__.py │ │ │ ├── forms.py │ │ │ ├── internal/ │ │ │ │ ├── __init__.py │ │ │ │ ├── auth.py │ │ │ │ └── flows.py │ │ │ ├── urls.py │ │ │ └── views.py │ │ ├── signals.py │ │ ├── stages.py │ │ ├── static/ │ │ │ └── mfa/ │ │ │ └── js/ │ │ │ ├── webauthn-json.js │ │ │ └── webauthn.js │ │ ├── totp/ │ │ │ ├── __init__.py │ │ │ ├── forms.py │ │ │ ├── internal/ │ │ │ │ ├── __init__.py │ │ │ │ ├── auth.py │ │ │ │ └── flows.py │ │ │ ├── urls.py │ │ │ └── views.py │ │ ├── urls.py │ │ ├── utils.py │ │ └── webauthn/ │ │ ├── __init__.py │ │ ├── forms.py │ │ ├── internal/ │ │ │ ├── __init__.py │ │ │ ├── auth.py │ │ │ └── flows.py │ │ ├── stages.py │ │ ├── urls.py │ │ └── views.py │ ├── models.py │ ├── ratelimit.py │ ├── socialaccount/ │ │ ├── __init__.py │ │ ├── adapter.py │ │ ├── admin.py │ │ ├── app_settings.py │ │ ├── apps.py │ │ ├── checks.py │ │ ├── forms.py │ │ ├── helpers.py │ │ ├── internal/ │ │ │ ├── __init__.py │ │ │ ├── flows/ │ │ │ │ ├── __init__.py │ │ │ │ ├── connect.py │ │ │ │ ├── email_authentication.py │ │ │ │ ├── login.py │ │ │ │ └── signup.py │ │ │ ├── jwtkit.py │ │ │ └── statekit.py │ │ ├── migrations/ │ │ │ ├── 0001_initial.py │ │ │ ├── 0002_token_max_lengths.py │ │ │ ├── 0003_extra_data_default_dict.py │ │ │ ├── 0004_app_provider_id_settings.py │ │ │ ├── 0005_socialtoken_nullable_app.py │ │ │ ├── 0006_alter_socialaccount_extra_data.py │ │ │ └── __init__.py │ │ ├── models.py │ │ ├── providers/ │ │ │ ├── __init__.py │ │ │ ├── agave/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── amazon/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── amazon_cognito/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ ├── utils.py │ │ │ │ └── views.py │ │ │ ├── angellist/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── apple/ │ │ │ │ ├── __init__.py │ │ │ │ ├── apple_session.py │ │ │ │ ├── client.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── asana/ │ │ │ │ ├── __init__.py │ │ │ │ ├── models.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── atlassian/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── auth0/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── authentiq/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── baidu/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── base/ │ │ │ │ ├── __init__.py │ │ │ │ ├── constants.py │ │ │ │ ├── provider.py │ │ │ │ ├── utils.py │ │ │ │ └── views.py │ │ │ ├── basecamp/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── battlenet/ │ │ │ │ ├── __init__.py │ │ │ │ ├── models.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ ├── validators.py │ │ │ │ └── views.py │ │ │ ├── bitbucket_oauth2/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── bitly/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── box/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── cilogon/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── clever/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── coinbase/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── dataporten/ │ │ │ │ ├── __init__.py │ │ │ │ ├── models.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── daum/ │ │ │ │ ├── __init__.py │ │ │ │ ├── models.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── digitalocean/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── dingtalk/ │ │ │ │ ├── __init__.py │ │ │ │ ├── client.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── discogs/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── discord/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── disqus/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── douban/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── doximity/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── draugiem/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── drip/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── dropbox/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── dummy/ │ │ │ │ ├── __init__.py │ │ │ │ ├── forms.py │ │ │ │ ├── provider.py │ │ │ │ ├── templates/ │ │ │ │ │ └── dummy/ │ │ │ │ │ └── authenticate_form.html │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── dwolla/ │ │ │ │ ├── __init__.py │ │ │ │ ├── models.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── edmodo/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── edx/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── eventbrite/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── eveonline/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── evernote/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── exist/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── facebook/ │ │ │ │ ├── __init__.py │ │ │ │ ├── constants.py │ │ │ │ ├── data/ │ │ │ │ │ └── FacebookLocales.xml │ │ │ │ ├── flows.py │ │ │ │ ├── forms.py │ │ │ │ ├── locale.py │ │ │ │ ├── provider.py │ │ │ │ ├── static/ │ │ │ │ │ └── facebook/ │ │ │ │ │ └── js/ │ │ │ │ │ └── fbconnect.js │ │ │ │ ├── templates/ │ │ │ │ │ └── facebook/ │ │ │ │ │ └── fbconnect.html │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── feedly/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── feishu/ │ │ │ │ ├── __init__.py │ │ │ │ ├── client.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── figma/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── fivehundredpx/ │ │ │ │ ├── __init__.py │ │ │ │ ├── models.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── flickr/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── foursquare/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── frontier/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── fxa/ │ │ │ │ ├── __init__.py │ │ │ │ ├── constants.py │ │ │ │ ├── models.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── gitea/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── github/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── gitlab/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── globus/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── google/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── gumroad/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── hubic/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── hubspot/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── instagram/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── jupyterhub/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── kakao/ │ │ │ │ ├── __init__.py │ │ │ │ ├── models.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── lemonldap/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── lichess/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── line/ │ │ │ │ ├── __init__.py │ │ │ │ ├── models.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── linkedin_oauth2/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── mailchimp/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── mailcow/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── mailru/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── mediawiki/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── meetup/ │ │ │ │ ├── __init__.py │ │ │ │ ├── models.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── microsoft/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── miro/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── naver/ │ │ │ │ ├── __init__.py │ │ │ │ ├── models.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── netiq/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── nextcloud/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── notion/ │ │ │ │ ├── __init__.py │ │ │ │ ├── client.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── oauth/ │ │ │ │ ├── __init__.py │ │ │ │ ├── client.py │ │ │ │ ├── oauth1_auth.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── oauth2/ │ │ │ │ ├── __init__.py │ │ │ │ ├── client.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ ├── utils.py │ │ │ │ └── views.py │ │ │ ├── odnoklassniki/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── okta/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── openid/ │ │ │ │ ├── __init__.py │ │ │ │ ├── admin.py │ │ │ │ ├── forms.py │ │ │ │ ├── migrations/ │ │ │ │ │ ├── 0001_initial.py │ │ │ │ │ └── __init__.py │ │ │ │ ├── models.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ ├── utils.py │ │ │ │ └── views.py │ │ │ ├── openid_connect/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── openstreetmap/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── orcid/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── patreon/ │ │ │ │ ├── __init__.py │ │ │ │ ├── constants.py │ │ │ │ ├── models.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── paypal/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── pinterest/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── pocket/ │ │ │ │ ├── __init__.py │ │ │ │ ├── client.py │ │ │ │ ├── models.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── questrade/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── quickbooks/ │ │ │ │ ├── __init__.py │ │ │ │ ├── models.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── reddit/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── robinhood/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── salesforce/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── saml/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ ├── utils.py │ │ │ │ └── views.py │ │ │ ├── sharefile/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── shopify/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── slack/ │ │ │ │ ├── __init__.py │ │ │ │ ├── models.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── snapchat/ │ │ │ │ ├── __init__.py │ │ │ │ ├── constants.py │ │ │ │ ├── models.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── soundcloud/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── spotify/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── stackexchange/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── steam/ │ │ │ │ ├── __init__.py │ │ │ │ ├── models.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── stocktwits/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── strava/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── stripe/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── telegram/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── static/ │ │ │ │ │ └── telegram/ │ │ │ │ │ └── js/ │ │ │ │ │ └── telegram.js │ │ │ │ ├── templates/ │ │ │ │ │ └── telegram/ │ │ │ │ │ └── callback.html │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── tiktok/ │ │ │ │ ├── __init__.py │ │ │ │ ├── client.py │ │ │ │ ├── provider.py │ │ │ │ ├── scope.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── trainingpeaks/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── trello/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── tumblr/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── tumblr_oauth2/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── twentythreeandme/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── twitch/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── twitter/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── twitter_oauth2/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── untappd/ │ │ │ │ ├── __init__.py │ │ │ │ ├── client.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── vimeo/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── vimeo_oauth2/ │ │ │ │ ├── __init__.py │ │ │ │ ├── models.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── vk/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── wahoo/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── weibo/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── weixin/ │ │ │ │ ├── __init__.py │ │ │ │ ├── client.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── windowslive/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── xing/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── yahoo/ │ │ │ │ ├── __init__.py │ │ │ │ ├── models.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── yandex/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── ynab/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ ├── zoho/ │ │ │ │ ├── __init__.py │ │ │ │ ├── provider.py │ │ │ │ ├── urls.py │ │ │ │ └── views.py │ │ │ └── zoom/ │ │ │ ├── __init__.py │ │ │ ├── provider.py │ │ │ ├── urls.py │ │ │ └── views.py │ │ ├── sessions.py │ │ ├── signals.py │ │ ├── templatetags/ │ │ │ ├── __init__.py │ │ │ └── socialaccount.py │ │ ├── urls.py │ │ └── views.py │ ├── templates/ │ │ ├── account/ │ │ │ ├── account_inactive.html │ │ │ ├── base_confirm_code.html │ │ │ ├── base_entrance.html │ │ │ ├── base_manage.html │ │ │ ├── base_manage_email.html │ │ │ ├── base_manage_password.html │ │ │ ├── base_manage_phone.html │ │ │ ├── base_reauthenticate.html │ │ │ ├── confirm_email_verification_code.html │ │ │ ├── confirm_login_code.html │ │ │ ├── confirm_password_reset_code.html │ │ │ ├── confirm_phone_verification_code.html │ │ │ ├── email/ │ │ │ │ ├── account_already_exists_message.txt │ │ │ │ ├── account_already_exists_subject.txt │ │ │ │ ├── base_message.txt │ │ │ │ ├── base_notification.txt │ │ │ │ ├── email_changed_message.txt │ │ │ │ ├── email_changed_subject.txt │ │ │ │ ├── email_confirm_message.txt │ │ │ │ ├── email_confirm_subject.txt │ │ │ │ ├── email_confirmation_message.txt │ │ │ │ ├── email_confirmation_signup_message.txt │ │ │ │ ├── email_confirmation_signup_subject.txt │ │ │ │ ├── email_confirmation_subject.txt │ │ │ │ ├── email_deleted_message.txt │ │ │ │ ├── email_deleted_subject.txt │ │ │ │ ├── login_code_message.txt │ │ │ │ ├── login_code_subject.txt │ │ │ │ ├── password_changed_message.txt │ │ │ │ ├── password_changed_subject.txt │ │ │ │ ├── password_reset_code_message.txt │ │ │ │ ├── password_reset_code_subject.txt │ │ │ │ ├── password_reset_key_message.txt │ │ │ │ ├── password_reset_key_subject.txt │ │ │ │ ├── password_reset_message.txt │ │ │ │ ├── password_reset_subject.txt │ │ │ │ ├── password_set_message.txt │ │ │ │ ├── password_set_subject.txt │ │ │ │ ├── unknown_account_message.txt │ │ │ │ └── unknown_account_subject.txt │ │ │ ├── email.html │ │ │ ├── email_change.html │ │ │ ├── email_confirm.html │ │ │ ├── login.html │ │ │ ├── logout.html │ │ │ ├── messages/ │ │ │ │ ├── cannot_delete_primary_email.txt │ │ │ │ ├── email_confirmation_failed.txt │ │ │ │ ├── email_confirmation_sent.txt │ │ │ │ ├── email_confirmed.txt │ │ │ │ ├── email_deleted.txt │ │ │ │ ├── logged_in.txt │ │ │ │ ├── logged_out.txt │ │ │ │ ├── login_code_sent.txt │ │ │ │ ├── password_changed.txt │ │ │ │ ├── password_set.txt │ │ │ │ ├── phone_verification_sent.txt │ │ │ │ ├── phone_verified.txt │ │ │ │ ├── primary_email_set.txt │ │ │ │ └── unverified_primary_email.txt │ │ │ ├── password_change.html │ │ │ ├── password_reset.html │ │ │ ├── password_reset_done.html │ │ │ ├── password_reset_from_key.html │ │ │ ├── password_reset_from_key_done.html │ │ │ ├── password_set.html │ │ │ ├── phone_change.html │ │ │ ├── reauthenticate.html │ │ │ ├── request_login_code.html │ │ │ ├── signup.html │ │ │ ├── signup_by_passkey.html │ │ │ ├── signup_closed.html │ │ │ ├── snippets/ │ │ │ │ ├── already_logged_in.html │ │ │ │ └── warn_no_email.html │ │ │ ├── verification_sent.html │ │ │ └── verified_email_required.html │ │ ├── allauth/ │ │ │ ├── elements/ │ │ │ │ ├── alert.html │ │ │ │ ├── badge.html │ │ │ │ ├── button.html │ │ │ │ ├── button_group.html │ │ │ │ ├── details.html │ │ │ │ ├── field.html │ │ │ │ ├── fields.html │ │ │ │ ├── form.html │ │ │ │ ├── h1.html │ │ │ │ ├── h2.html │ │ │ │ ├── hr.html │ │ │ │ ├── img.html │ │ │ │ ├── p.html │ │ │ │ ├── panel.html │ │ │ │ ├── provider.html │ │ │ │ ├── provider_list.html │ │ │ │ ├── table.html │ │ │ │ ├── tbody.html │ │ │ │ ├── td.html │ │ │ │ ├── th.html │ │ │ │ ├── thead.html │ │ │ │ └── tr.html │ │ │ └── layouts/ │ │ │ ├── base.html │ │ │ ├── entrance.html │ │ │ └── manage.html │ │ ├── idp/ │ │ │ └── oidc/ │ │ │ ├── authorization_form.html │ │ │ ├── base.html │ │ │ ├── device_authorization_code_form.html │ │ │ ├── device_authorization_confirm_form.html │ │ │ ├── device_authorization_confirmed.html │ │ │ ├── device_authorization_denied.html │ │ │ ├── error.html │ │ │ └── logout.html │ │ ├── mfa/ │ │ │ ├── authenticate.html │ │ │ ├── base_entrance.html │ │ │ ├── base_manage.html │ │ │ ├── email/ │ │ │ │ ├── recovery_codes_generated_message.txt │ │ │ │ ├── recovery_codes_generated_subject.txt │ │ │ │ ├── totp_activated_message.txt │ │ │ │ ├── totp_activated_subject.txt │ │ │ │ ├── totp_deactivated_message.txt │ │ │ │ ├── totp_deactivated_subject.txt │ │ │ │ ├── webauthn_added_message.txt │ │ │ │ ├── webauthn_added_subject.txt │ │ │ │ ├── webauthn_removed_message.txt │ │ │ │ └── webauthn_removed_subject.txt │ │ │ ├── index.html │ │ │ ├── messages/ │ │ │ │ ├── recovery_codes_generated.txt │ │ │ │ ├── totp_activated.txt │ │ │ │ ├── totp_deactivated.txt │ │ │ │ ├── webauthn_added.txt │ │ │ │ └── webauthn_removed.txt │ │ │ ├── reauthenticate.html │ │ │ ├── recovery_codes/ │ │ │ │ ├── base.html │ │ │ │ ├── download.txt │ │ │ │ ├── generate.html │ │ │ │ └── index.html │ │ │ ├── totp/ │ │ │ │ ├── activate_form.html │ │ │ │ ├── base.html │ │ │ │ └── deactivate_form.html │ │ │ ├── trust.html │ │ │ └── webauthn/ │ │ │ ├── add_form.html │ │ │ ├── authenticator_confirm_delete.html │ │ │ ├── authenticator_list.html │ │ │ ├── base.html │ │ │ ├── edit_form.html │ │ │ ├── reauthenticate.html │ │ │ ├── signup_form.html │ │ │ └── snippets/ │ │ │ ├── login_script.html │ │ │ └── scripts.html │ │ ├── openid/ │ │ │ ├── base.html │ │ │ └── login.html │ │ ├── socialaccount/ │ │ │ ├── authentication_error.html │ │ │ ├── base_entrance.html │ │ │ ├── base_manage.html │ │ │ ├── connections.html │ │ │ ├── email/ │ │ │ │ ├── account_connected_message.txt │ │ │ │ ├── account_connected_subject.txt │ │ │ │ ├── account_disconnected_message.txt │ │ │ │ └── account_disconnected_subject.txt │ │ │ ├── login.html │ │ │ ├── login_cancelled.html │ │ │ ├── login_redirect.html │ │ │ ├── messages/ │ │ │ │ ├── account_connected.txt │ │ │ │ ├── account_connected_other.txt │ │ │ │ ├── account_connected_updated.txt │ │ │ │ └── account_disconnected.txt │ │ │ ├── signup.html │ │ │ └── snippets/ │ │ │ ├── login.html │ │ │ ├── login_extra.html │ │ │ └── provider_list.html │ │ └── usersessions/ │ │ ├── base_manage.html │ │ ├── messages/ │ │ │ └── sessions_logged_out.txt │ │ └── usersession_list.html │ ├── templatetags/ │ │ ├── __init__.py │ │ └── allauth.py │ ├── urls.py │ ├── usersessions/ │ │ ├── __init__.py │ │ ├── adapter.py │ │ ├── admin.py │ │ ├── app_settings.py │ │ ├── apps.py │ │ ├── forms.py │ │ ├── internal/ │ │ │ ├── __init__.py │ │ │ └── flows/ │ │ │ ├── __init__.py │ │ │ └── sessions.py │ │ ├── middleware.py │ │ ├── migrations/ │ │ │ ├── 0001_initial.py │ │ │ └── __init__.py │ │ ├── models.py │ │ ├── signals.py │ │ ├── urls.py │ │ └── views.py │ └── utils.py ├── devenv.nix ├── devenv.yaml ├── docs/ │ ├── Makefile │ ├── account/ │ │ ├── adapter.rst │ │ ├── advanced.rst │ │ ├── configuration.rst │ │ ├── decorators.rst │ │ ├── email.rst │ │ ├── forms.rst │ │ ├── index.rst │ │ ├── introduction.rst │ │ ├── phone.rst │ │ ├── rate_limits.rst │ │ ├── signals.rst │ │ ├── templates.rst │ │ └── views.rst │ ├── common/ │ │ ├── admin.rst │ │ ├── configuration.rst │ │ ├── email.rst │ │ ├── index.rst │ │ ├── messages.rst │ │ ├── rate_limits.rst │ │ └── templates.rst │ ├── conf.py │ ├── faq.rst │ ├── headless/ │ │ ├── adapter.rst │ │ ├── api.rst │ │ ├── configuration.rst │ │ ├── cors.rst │ │ ├── faq.rst │ │ ├── index.rst │ │ ├── installation.rst │ │ ├── introduction.rst │ │ ├── openapi-specification/ │ │ │ └── index.html │ │ └── token-strategies/ │ │ ├── abstract-strategy.rst │ │ ├── index.rst │ │ ├── introduction.rst │ │ ├── jwt-tokens.rst │ │ └── session-tokens.rst │ ├── idp/ │ │ ├── index.rst │ │ └── openid-connect/ │ │ ├── adapter.rst │ │ ├── clients.rst │ │ ├── configuration.rst │ │ ├── index.rst │ │ ├── installation.rst │ │ ├── integrations.rst │ │ ├── introduction.rst │ │ └── views.rst │ ├── index.rst │ ├── installation/ │ │ ├── examples.rst │ │ ├── index.rst │ │ ├── quickstart.rst │ │ └── requirements.rst │ ├── introduction/ │ │ └── index.rst │ ├── mfa/ │ │ ├── adapter.rst │ │ ├── configuration.rst │ │ ├── django-allauth-2fa.rst │ │ ├── forms.rst │ │ ├── index.rst │ │ ├── introduction.rst │ │ └── webauthn.rst │ ├── project/ │ │ ├── contributing.rst │ │ ├── funding.rst │ │ ├── index.rst │ │ └── support.rst │ ├── release-notes/ │ │ ├── 2012.rst │ │ ├── 2013.rst │ │ ├── 2014.rst │ │ ├── 2015.rst │ │ ├── 2016.rst │ │ ├── 2017.rst │ │ ├── 2018.rst │ │ ├── 2019.rst │ │ ├── 2020.rst │ │ ├── 2021.rst │ │ ├── 2022.rst │ │ ├── 2023.rst │ │ ├── 2024.rst │ │ ├── history.rst │ │ ├── index.rst │ │ └── recent.rst │ ├── requirements.txt │ ├── settings.py │ ├── socialaccount/ │ │ ├── adapter.rst │ │ ├── advanced.rst │ │ ├── configuration.rst │ │ ├── forms.rst │ │ ├── index.rst │ │ ├── introduction.rst │ │ ├── provider_configuration.rst │ │ ├── providers/ │ │ │ ├── 23andme.rst │ │ │ ├── 500px.rst │ │ │ ├── agave.rst │ │ │ ├── amazon.rst │ │ │ ├── amazon_cognito.rst │ │ │ ├── angellist.rst │ │ │ ├── apple.rst │ │ │ ├── atlassian.rst │ │ │ ├── auth0.rst │ │ │ ├── authelia.rst │ │ │ ├── authentiq.rst │ │ │ ├── baidu.rst │ │ │ ├── basecamp.rst │ │ │ ├── battlenet.rst │ │ │ ├── bitbucket.rst │ │ │ ├── box.rst │ │ │ ├── cern.rst │ │ │ ├── cilogon.rst │ │ │ ├── clever.rst │ │ │ ├── dataporten.rst │ │ │ ├── daum.rst │ │ │ ├── digitalocean.rst │ │ │ ├── dingtalk.rst │ │ │ ├── discogs.rst │ │ │ ├── discord.rst │ │ │ ├── doximity.rst │ │ │ ├── draugiem.rst │ │ │ ├── drip.rst │ │ │ ├── dropbox.rst │ │ │ ├── dwolla.rst │ │ │ ├── edmodo.rst │ │ │ ├── edx.rst │ │ │ ├── eventbrite.rst │ │ │ ├── eveonline.rst │ │ │ ├── evernote.rst │ │ │ ├── exist.rst │ │ │ ├── facebook.rst │ │ │ ├── feishu.rst │ │ │ ├── figma.rst │ │ │ ├── flickr.rst │ │ │ ├── frontier.rst │ │ │ ├── fxa.rst │ │ │ ├── gitea.rst │ │ │ ├── github.rst │ │ │ ├── gitlab.rst │ │ │ ├── globus.rst │ │ │ ├── google.rst │ │ │ ├── gumroad.rst │ │ │ ├── hubspot.rst │ │ │ ├── index.rst │ │ │ ├── instagram.rst │ │ │ ├── jupyterhub.rst │ │ │ ├── kakao.rst │ │ │ ├── keycloak.rst │ │ │ ├── lemonldap.rst │ │ │ ├── lichess.rst │ │ │ ├── line.rst │ │ │ ├── linkedin.rst │ │ │ ├── mailchimp.rst │ │ │ ├── mailcow.rst │ │ │ ├── mediawiki.rst │ │ │ ├── microsoft.rst │ │ │ ├── miro.rst │ │ │ ├── naver.rst │ │ │ ├── netiq.rst │ │ │ ├── nextcloud.rst │ │ │ ├── notion.rst │ │ │ ├── oauth2.rst │ │ │ ├── odnoklassniki.rst │ │ │ ├── okta.rst │ │ │ ├── openid.rst │ │ │ ├── openid_connect.rst │ │ │ ├── openstreetmap.rst │ │ │ ├── orcid.rst │ │ │ ├── patreon.rst │ │ │ ├── paypal.rst │ │ │ ├── pinterest.rst │ │ │ ├── pocket.rst │ │ │ ├── questrade.rst │ │ │ ├── quickbooks.rst │ │ │ ├── reddit.rst │ │ │ ├── salesforce.rst │ │ │ ├── saml.rst │ │ │ ├── sharefile.rst │ │ │ ├── shopify.rst │ │ │ ├── slack.rst │ │ │ ├── snapchat.rst │ │ │ ├── soundcloud.rst │ │ │ ├── stackexchange.rst │ │ │ ├── steam.rst │ │ │ ├── stocktwits.rst │ │ │ ├── strava.rst │ │ │ ├── stripe.rst │ │ │ ├── telegram.rst │ │ │ ├── tiktok.rst │ │ │ ├── trainingpeaks.rst │ │ │ ├── trello.rst │ │ │ ├── tumblr_oauth2.rst │ │ │ ├── twitch.rst │ │ │ ├── twitter.rst │ │ │ ├── twitter_oauth2.rst │ │ │ ├── untappd.rst │ │ │ ├── vimeo.rst │ │ │ ├── vimeo_oauth2.rst │ │ │ ├── vk.rst │ │ │ ├── wahoo.rst │ │ │ ├── weibo.rst │ │ │ ├── weixin.rst │ │ │ ├── windowslive.rst │ │ │ ├── xing.rst │ │ │ ├── yahoo.rst │ │ │ ├── yandex.rst │ │ │ ├── ynab.rst │ │ │ ├── zoho.rst │ │ │ └── zoom.rst │ │ ├── signals.rst │ │ ├── templates.rst │ │ └── views.rst │ └── usersessions/ │ ├── adapter.rst │ ├── configuration.rst │ ├── index.rst │ ├── installation.rst │ ├── introduction.rst │ └── signals.rst ├── examples/ │ ├── react-spa/ │ │ ├── Makefile │ │ ├── README.org │ │ ├── backend/ │ │ │ ├── Dockerfile │ │ │ ├── backend/ │ │ │ │ ├── __init__.py │ │ │ │ ├── asgi.py │ │ │ │ ├── drf_demo/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── serializers.py │ │ │ │ │ ├── urls.py │ │ │ │ │ └── views.py │ │ │ │ ├── ninja_demo/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── urls.py │ │ │ │ │ └── views.py │ │ │ │ ├── settings.py │ │ │ │ ├── urls.py │ │ │ │ └── wsgi.py │ │ │ ├── manage.py │ │ │ └── requirements.txt │ │ ├── docker-compose.dev.yml │ │ ├── docker-compose.yml │ │ ├── e2e.spec.js │ │ ├── frontend/ │ │ │ ├── Dockerfile │ │ │ ├── package.json │ │ │ ├── public/ │ │ │ │ ├── css/ │ │ │ │ │ └── style.css │ │ │ │ └── index.html │ │ │ └── src/ │ │ │ ├── App.js │ │ │ ├── Calculator.js │ │ │ ├── Home.js │ │ │ ├── NavBar.js │ │ │ ├── Root.js │ │ │ ├── Router.js │ │ │ ├── account/ │ │ │ │ ├── AuthenticateFlow.js │ │ │ │ ├── ChangeEmail.js │ │ │ │ ├── ChangePassword.js │ │ │ │ ├── ConfirmLoginCode.js │ │ │ │ ├── ConfirmPasswordResetCode.js │ │ │ │ ├── Login.js │ │ │ │ ├── Logout.js │ │ │ │ ├── Reauthenticate.js │ │ │ │ ├── ReauthenticateFlow.js │ │ │ │ ├── RequestLoginCode.js │ │ │ │ ├── RequestPasswordReset.js │ │ │ │ ├── ResetPassword.js │ │ │ │ ├── Signup.js │ │ │ │ ├── VerificationEmailSent.js │ │ │ │ ├── VerifyEmail.js │ │ │ │ └── VerifyEmailByCode.js │ │ │ ├── auth/ │ │ │ │ ├── AuthContext.js │ │ │ │ ├── hooks.js │ │ │ │ ├── index.js │ │ │ │ └── routing.js │ │ │ ├── components/ │ │ │ │ ├── Button.js │ │ │ │ └── FormErrors.js │ │ │ ├── index.js │ │ │ ├── init.js │ │ │ ├── lib/ │ │ │ │ ├── allauth.js │ │ │ │ └── django.js │ │ │ ├── mfa/ │ │ │ │ ├── ActivateTOTP.js │ │ │ │ ├── AddWebAuthn.js │ │ │ │ ├── AuthenticateCode.js │ │ │ │ ├── AuthenticateFlow.js │ │ │ │ ├── AuthenticateRecoveryCodes.js │ │ │ │ ├── AuthenticateTOTP.js │ │ │ │ ├── AuthenticateWebAuthn.js │ │ │ │ ├── CreateSignupPasskey.js │ │ │ │ ├── DeactivateTOTP.js │ │ │ │ ├── GenerateRecoveryCodes.js │ │ │ │ ├── ListWebAuthn.js │ │ │ │ ├── MFAOverview.js │ │ │ │ ├── ReauthenticateCode.js │ │ │ │ ├── ReauthenticateRecoveryCodes.js │ │ │ │ ├── ReauthenticateTOTP.js │ │ │ │ ├── ReauthenticateWebAuthn.js │ │ │ │ ├── RecoveryCodes.js │ │ │ │ ├── SignupByPasskey.js │ │ │ │ ├── Trust.js │ │ │ │ └── WebAuthnLoginButton.js │ │ │ ├── socialaccount/ │ │ │ │ ├── GoogleOneTap.js │ │ │ │ ├── ManageProviders.js │ │ │ │ ├── ProviderCallback.js │ │ │ │ ├── ProviderList.js │ │ │ │ └── ProviderSignup.js │ │ │ └── usersessions/ │ │ │ └── Sessions.js │ │ └── traefik.toml │ └── regular-django/ │ ├── .dockerignore │ ├── Dockerfile │ ├── Makefile │ ├── README.org │ ├── db/ │ │ └── .gitignore │ ├── docker-compose.yml │ ├── example/ │ │ ├── __init__.py │ │ ├── asgi.py │ │ ├── settings.py │ │ ├── templates/ │ │ │ ├── 429.html │ │ │ ├── account/ │ │ │ │ ├── base_manage_email.html │ │ │ │ ├── base_manage_password.html │ │ │ │ └── base_manage_phone.html │ │ │ ├── allauth/ │ │ │ │ ├── elements/ │ │ │ │ │ ├── alert.html │ │ │ │ │ ├── badge.html │ │ │ │ │ ├── button.html │ │ │ │ │ ├── button__entrance.html │ │ │ │ │ ├── button_group.html │ │ │ │ │ ├── field.html │ │ │ │ │ ├── fields.html │ │ │ │ │ ├── form.html │ │ │ │ │ ├── form__entrance.html │ │ │ │ │ ├── h1.html │ │ │ │ │ ├── h1__entrance.html │ │ │ │ │ ├── h2__entrance.html │ │ │ │ │ ├── img.html │ │ │ │ │ ├── panel.html │ │ │ │ │ ├── provider.html │ │ │ │ │ ├── provider_list.html │ │ │ │ │ └── table.html │ │ │ │ └── layouts/ │ │ │ │ ├── base.html │ │ │ │ ├── entrance.html │ │ │ │ └── manage.html │ │ │ ├── index.html │ │ │ ├── mfa/ │ │ │ │ └── base_manage.html │ │ │ ├── profile.html │ │ │ ├── socialaccount/ │ │ │ │ └── base_manage.html │ │ │ └── usersessions/ │ │ │ └── base_manage.html │ │ ├── urls.py │ │ ├── users/ │ │ │ ├── __init__.py │ │ │ ├── allauth.py │ │ │ ├── apps.py │ │ │ ├── migrations/ │ │ │ │ ├── 0001_initial.py │ │ │ │ └── __init__.py │ │ │ └── models.py │ │ └── wsgi.py │ ├── manage.py │ └── requirements.txt ├── manage.py ├── mise.toml ├── noxfile.py ├── package.json ├── pyproject.toml ├── pytest.ini ├── requirements-dev.txt ├── setup.cfg └── tests/ ├── __init__.py ├── apps/ │ ├── __init__.py │ ├── account/ │ │ ├── __init__.py │ │ ├── internal/ │ │ │ ├── __init__.py │ │ │ └── test_emailkit.py │ │ ├── test_adapter.py │ │ ├── test_ajax.py │ │ ├── test_auth_backends.py │ │ ├── test_change_email.py │ │ ├── test_change_password.py │ │ ├── test_commands.py │ │ ├── test_decorators.py │ │ ├── test_email_verification.py │ │ ├── test_email_verification_by_code.py │ │ ├── test_login.py │ │ ├── test_login_by_code.py │ │ ├── test_logout.py │ │ ├── test_middleware.py │ │ ├── test_models.py │ │ ├── test_phone.py │ │ ├── test_ratelimit.py │ │ ├── test_reauthentication.py │ │ ├── test_reset_password.py │ │ ├── test_reset_password_by_code.py │ │ ├── test_security.py │ │ ├── test_signup.py │ │ └── test_utils.py │ ├── core/ │ │ ├── __init__.py │ │ └── internal/ │ │ ├── __init__.py │ │ ├── test_cryptokit.py │ │ ├── test_httpkit.py │ │ ├── test_modelkit.py │ │ └── test_ratelimit.py │ ├── headless/ │ │ ├── __init__.py │ │ ├── account/ │ │ │ ├── __init__.py │ │ │ ├── test_change_email.py │ │ │ ├── test_change_password.py │ │ │ ├── test_email_verification.py │ │ │ ├── test_email_verification_by_code.py │ │ │ ├── test_login.py │ │ │ ├── test_login_by_code.py │ │ │ ├── test_phone.py │ │ │ ├── test_reauthentication.py │ │ │ ├── test_reset_password.py │ │ │ ├── test_reset_password_by_code.py │ │ │ ├── test_session.py │ │ │ └── test_signup.py │ │ ├── base/ │ │ │ ├── __init__.py │ │ │ └── test_views.py │ │ ├── conftest.py │ │ ├── contrib/ │ │ │ ├── __init__.py │ │ │ ├── ninja/ │ │ │ │ ├── __init__.py │ │ │ │ └── test_security.py │ │ │ └── rest_framework/ │ │ │ ├── __init__.py │ │ │ └── test_authentication.py │ │ ├── internal/ │ │ │ ├── __init__.py │ │ │ └── test_authkit.py │ │ ├── mfa/ │ │ │ ├── __init__.py │ │ │ ├── test_recovery_codes.py │ │ │ ├── test_totp.py │ │ │ ├── test_trust.py │ │ │ ├── test_views.py │ │ │ └── test_webauthn.py │ │ ├── socialaccount/ │ │ │ ├── __init__.py │ │ │ ├── test_inputs.py │ │ │ └── test_views.py │ │ ├── spec/ │ │ │ ├── __init__.py │ │ │ ├── internal/ │ │ │ │ ├── __init__.py │ │ │ │ └── test_openapikit.py │ │ │ └── test_views.py │ │ ├── tokens/ │ │ │ ├── test_jwttokenstrategy.py │ │ │ └── test_tokens.py │ │ └── usersessions/ │ │ ├── __init__.py │ │ └── test_views.py │ ├── idp/ │ │ ├── __init__.py │ │ └── oidc/ │ │ ├── __init__.py │ │ ├── conftest.py │ │ ├── contrib/ │ │ │ ├── __init__.py │ │ │ ├── ninja/ │ │ │ │ ├── __init__.py │ │ │ │ └── test_views.py │ │ │ └── rest_framework/ │ │ │ ├── __init__.py │ │ │ └── test_views.py │ │ ├── internal/ │ │ │ ├── __init__.py │ │ │ └── oauthlib/ │ │ │ ├── __init__.py │ │ │ ├── test_request_validator.py │ │ │ └── test_utils.py │ │ ├── test_authorization.py │ │ ├── test_device.py │ │ ├── test_rp_initiated_logout.py │ │ ├── test_tokens.py │ │ ├── test_views.py │ │ └── test_wildcards.py │ ├── mfa/ │ │ ├── __init__.py │ │ ├── base/ │ │ │ ├── __init__.py │ │ │ ├── test_adapter.py │ │ │ ├── test_trust.py │ │ │ ├── test_trust_fingerprint.py │ │ │ └── test_views.py │ │ ├── recovery_codes/ │ │ │ ├── __init__.py │ │ │ ├── test_auth.py │ │ │ └── test_views.py │ │ ├── totp/ │ │ │ ├── __init__.py │ │ │ ├── test_unit.py │ │ │ └── test_views.py │ │ └── webauthn/ │ │ ├── __init__.py │ │ └── test_views.py │ ├── socialaccount/ │ │ ├── __init__.py │ │ ├── base.py │ │ ├── conftest.py │ │ ├── internal/ │ │ │ ├── __init__.py │ │ │ ├── test_jwtkit.py │ │ │ └── test_statekit.py │ │ ├── providers/ │ │ │ ├── __init__.py │ │ │ ├── agave/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── amazon/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── amazon_cognito/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── angellist/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── apple/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── asana/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── atlassian/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── auth0/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── authentiq/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── baidu/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── base/ │ │ │ │ ├── __init__.py │ │ │ │ └── test_provider.py │ │ │ ├── basecamp/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── battlenet/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── bitbucket_oauth2/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── bitly/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── box/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── cilogon/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── clever/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── coinbase/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── dataporten/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── daum/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── digitalocean/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── dingtalk/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── discogs/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── discord/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── disqus/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── douban/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── doximity/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── draugiem/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── drip/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── dropbox/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── dummy/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── dwolla/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── edmodo/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── edx/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── eventbrite/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── eveonline/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── evernote/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── exist/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── facebook/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── feedly/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── feishu/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── figma/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── fivehundredpx/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── flickr/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── foursquare/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── frontier/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── fxa/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── gitea/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── github/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── gitlab/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── globus/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── google/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── gumroad/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── hubic/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── hubspot/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── instagram/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── jupyterhub/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── kakao/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── lemonldap/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── lichess/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── line/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── linkedin_oauth2/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── mailchimp/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── mailcow/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── mailru/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── mediawiki/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── meetup/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── microsoft/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── miro/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── naver/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── netiq/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── nextcloud/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── notion/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── oauth2/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests/ │ │ │ │ └── test_views.py │ │ │ ├── odnoklassniki/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── okta/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── openid/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── openid_connect/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── openstreetmap/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── orcid/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── patreon/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── paypal/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── pinterest/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── pocket/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── questrade/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── quickbooks/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── reddit/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── robinhood/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── salesforce/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── saml/ │ │ │ │ ├── __init__.py │ │ │ │ ├── conftest.py │ │ │ │ └── tests.py │ │ │ ├── sharefile/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── shopify/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── slack/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── snapchat/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── soundcloud/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── spotify/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── stackexchange/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── steam/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── stocktwits/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── strava/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── stripe/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── telegram/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── tiktok/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── trainingpeaks/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── trello/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── tumblr/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── tumblr_oauth2/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── twentythreeandme/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── twitch/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── twitter/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── twitter_oauth2/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── untappd/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── vimeo/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── vimeo_oauth2/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── vk/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── wahoo/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── weibo/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── weixin/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── windowslive/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── xing/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── yahoo/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── yandex/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── ynab/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ ├── zoho/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests.py │ │ │ └── zoom/ │ │ │ ├── __init__.py │ │ │ └── tests.py │ │ ├── test_adapter.py │ │ ├── test_connect.py │ │ ├── test_login.py │ │ ├── test_phone.py │ │ ├── test_registry.py │ │ ├── test_signup.py │ │ └── test_utils.py │ ├── test_utils.py │ └── usersessions/ │ ├── __init__.py │ ├── test_middleware.py │ └── test_views.py ├── conftest.py ├── mocking.py └── projects/ ├── account_only/ │ ├── __init__.py │ ├── settings.py │ ├── templates/ │ │ └── 429.html │ └── urls.py ├── common/ │ ├── __init__.py │ ├── account/ │ │ ├── __init__.py │ │ ├── urls.py │ │ └── views.py │ ├── adapters.py │ ├── headless/ │ │ ├── __init__.py │ │ ├── ninja/ │ │ │ ├── __init__.py │ │ │ ├── urls.py │ │ │ └── views.py │ │ ├── rest_framework/ │ │ │ ├── __init__.py │ │ │ ├── urls.py │ │ │ └── views.py │ │ └── urls.py │ ├── idp/ │ │ ├── __init__.py │ │ ├── ninja/ │ │ │ ├── __init__.py │ │ │ ├── urls.py │ │ │ └── views.py │ │ ├── rest_framework/ │ │ │ ├── __init__.py │ │ │ ├── urls.py │ │ │ └── views.py │ │ └── urls.py │ ├── phone_stub.py │ ├── settings.py │ ├── templates/ │ │ └── test_403_csrf.html │ └── urls.py ├── headless_only/ │ ├── __init__.py │ ├── settings.py │ └── urls.py ├── login_required_mw/ │ ├── __init__.py │ ├── middleware.py │ ├── settings.py │ ├── templates/ │ │ └── 429.html │ └── urls.py └── regular/ ├── __init__.py ├── settings.py └── urls.py