We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Can we condense the url_for calls for themes further? 
url_for for themes files currently doesn't know what theme is being used and so we pass it in. We should probably default it inside the view. But we would need to default the parameters to None and then set it in the function itself. 

--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `CTFd/utils/initialization/__init__.py`
Content:
```
1 from flask import Flask, current_app as app, request, session, redirect, url_for, abort, render_template
2 from werkzeug.wsgi import DispatcherMiddleware
3 from CTFd.models import db, Tracking
4 
5 from CTFd.utils import markdown, get_config
6 from CTFd.utils.dates import unix_time_millis, unix_time, isoformat
7 
8 from CTFd.utils import config
9 from CTFd.utils.config import can_send_mail, ctf_logo, ctf_name, ctf_theme
10 from CTFd.utils.config.pages import get_pages
11 
12 from CTFd.utils.plugins import (
13     get_registered_stylesheets,
14     get_registered_scripts,
15     get_configurable_plugins,
16     get_registered_admin_scripts,
17     get_registered_admin_stylesheets
18 )
19 
20 from CTFd.utils.countries import get_countries, lookup_country_code
21 from CTFd.utils.user import authed, get_ip, get_current_user, get_current_team
22 from CTFd.utils.modes import generate_account_url
23 from CTFd.utils.config import is_setup
24 from CTFd.utils.security.csrf import generate_nonce
25 
26 from CTFd.utils.config.visibility import (
27     accounts_visible,
28     challenges_visible,
29     registration_visible,
30     scores_visible
31 )
32 
33 from sqlalchemy.exc import InvalidRequestError, IntegrityError
34 
35 import datetime
36 
37 
38 def init_template_filters(app):
39     app.jinja_env.filters['markdown'] = markdown
40     app.jinja_env.filters['unix_time'] = unix_time
41     app.jinja_env.filters['unix_time_millis'] = unix_time_millis
42     app.jinja_env.filters['isoformat'] = isoformat
43 
44 
45 def init_template_globals(app):
46     app.jinja_env.globals.update(config=config)
47     app.jinja_env.globals.update(get_pages=get_pages)
48     app.jinja_env.globals.update(can_send_mail=can_send_mail)
49     app.jinja_env.globals.update(get_ctf_name=ctf_name)
50     app.jinja_env.globals.update(get_ctf_logo=ctf_logo)
51     app.jinja_env.globals.update(get_ctf_theme=ctf_theme)
52     app.jinja_env.globals.update(get_configurable_plugins=get_configurable_plugins)
53     app.jinja_env.globals.update(get_registered_scripts=get_registered_scripts)
54     app.jinja_env.globals.update(get_registered_stylesheets=get_registered_stylesheets)
55     app.jinja_env.globals.update(get_registered_admin_scripts=get_registered_admin_scripts)
56     app.jinja_env.globals.update(get_registered_admin_stylesheets=get_registered_admin_stylesheets)
57     app.jinja_env.globals.update(get_config=get_config)
58     app.jinja_env.globals.update(generate_account_url=generate_account_url)
59     app.jinja_env.globals.update(get_countries=get_countries)
60     app.jinja_env.globals.update(lookup_country_code=lookup_country_code)
61     app.jinja_env.globals.update(accounts_visible=accounts_visible)
62     app.jinja_env.globals.update(challenges_visible=challenges_visible)
63     app.jinja_env.globals.update(registration_visible=registration_visible)
64     app.jinja_env.globals.update(scores_visible=scores_visible)
65 
66 
67 def init_request_processors(app):
68     @app.context_processor
69     def inject_user():
70         if session:
71             return dict(session)
72         return dict()
73 
74     @app.before_request
75     def needs_setup():
76         if request.path == url_for('views.setup') or request.path.startswith('/themes'):
77             return
78         if not is_setup():
79             return redirect(url_for('views.setup'))
80 
81     @app.before_request
82     def tracker():
83         # TODO: This function shouldn't cause a DB hit for lookups if possible
84         if authed():
85             track = Tracking.query.filter_by(ip=get_ip(), user_id=session['id']).first()
86             if not track:
87                 visit = Tracking(ip=get_ip(), user_id=session['id'])
88                 db.session.add(visit)
89             else:
90                 track.date = datetime.datetime.utcnow()
91 
92             try:
93                 db.session.commit()
94             except (InvalidRequestError, IntegrityError) as e:
95                 print(e.message)
96                 db.session.rollback()
97                 session.clear()
98 
99             if authed():
100                 user = get_current_user()
101                 team = get_current_team()
102 
103                 if request.path.startswith('/themes') is False:
104                     if user and user.banned:
105                         return render_template('errors/403.html', error='You have been banned from this CTF'), 403
106 
107                     if team and team.banned:
108                         return render_template('errors/403.html', error='Your team has been banned from this CTF'), 403
109 
110             db.session.close()
111 
112     @app.before_request
113     def csrf():
114         try:
115             func = app.view_functions[request.endpoint]
116         except KeyError:
117             abort(404)
118         if hasattr(func, '_bypass_csrf'):
119             return
120         if not session.get('nonce'):
121             session['nonce'] = generate_nonce()
122         if request.method == "POST":
123             if request.content_type != 'application/json':
124                 if session['nonce'] != request.form.get('nonce'):
125                     abort(403)
126 
127     application_root = app.config.get('APPLICATION_ROOT')
128     if application_root != '/':
129         @app.before_request
130         def force_subdirectory_redirect():
131             if request.path.startswith(application_root) is False:
132                 return redirect(application_root + request.script_root + request.full_path)
133 
134         app.wsgi_app = DispatcherMiddleware(app.wsgi_app, {
135             application_root: app,
136         })
137
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/CTFd/utils/initialization/__init__.py b/CTFd/utils/initialization/__init__.py
--- a/CTFd/utils/initialization/__init__.py
+++ b/CTFd/utils/initialization/__init__.py
@@ -71,6 +71,11 @@
             return dict(session)
         return dict()
 
+    @app.url_defaults
+    def inject_theme(endpoint, values):
+        if 'theme' not in values and app.url_map.is_endpoint_expecting(endpoint, 'theme'):
+            values['theme'] = ctf_theme()
+
     @app.before_request
     def needs_setup():
         if request.path == url_for('views.setup') or request.path.startswith('/themes'):

{"golden_diff": "diff --git a/CTFd/utils/initialization/__init__.py b/CTFd/utils/initialization/__init__.py\n--- a/CTFd/utils/initialization/__init__.py\n+++ b/CTFd/utils/initialization/__init__.py\n@@ -71,6 +71,11 @@\n             return dict(session)\n         return dict()\n \n+    @app.url_defaults\n+    def inject_theme(endpoint, values):\n+        if 'theme' not in values and app.url_map.is_endpoint_expecting(endpoint, 'theme'):\n+            values['theme'] = ctf_theme()\n+\n     @app.before_request\n     def needs_setup():\n         if request.path == url_for('views.setup') or request.path.startswith('/themes'):\n", "issue": "Can we condense the url_for calls for themes further? \nurl_for for themes files currently doesn't know what theme is being used and so we pass it in. We should probably default it inside the view. But we would need to default the parameters to None and then set it in the function itself. \n", "before_files": [{"content": "from flask import Flask, current_app as app, request, session, redirect, url_for, abort, render_template\nfrom werkzeug.wsgi import DispatcherMiddleware\nfrom CTFd.models import db, Tracking\n\nfrom CTFd.utils import markdown, get_config\nfrom CTFd.utils.dates import unix_time_millis, unix_time, isoformat\n\nfrom CTFd.utils import config\nfrom CTFd.utils.config import can_send_mail, ctf_logo, ctf_name, ctf_theme\nfrom CTFd.utils.config.pages import get_pages\n\nfrom CTFd.utils.plugins import (\n    get_registered_stylesheets,\n    get_registered_scripts,\n    get_configurable_plugins,\n    get_registered_admin_scripts,\n    get_registered_admin_stylesheets\n)\n\nfrom CTFd.utils.countries import get_countries, lookup_country_code\nfrom CTFd.utils.user import authed, get_ip, get_current_user, get_current_team\nfrom CTFd.utils.modes import generate_account_url\nfrom CTFd.utils.config import is_setup\nfrom CTFd.utils.security.csrf import generate_nonce\n\nfrom CTFd.utils.config.visibility import (\n    accounts_visible,\n    challenges_visible,\n    registration_visible,\n    scores_visible\n)\n\nfrom sqlalchemy.exc import InvalidRequestError, IntegrityError\n\nimport datetime\n\n\ndef init_template_filters(app):\n    app.jinja_env.filters['markdown'] = markdown\n    app.jinja_env.filters['unix_time'] = unix_time\n    app.jinja_env.filters['unix_time_millis'] = unix_time_millis\n    app.jinja_env.filters['isoformat'] = isoformat\n\n\ndef init_template_globals(app):\n    app.jinja_env.globals.update(config=config)\n    app.jinja_env.globals.update(get_pages=get_pages)\n    app.jinja_env.globals.update(can_send_mail=can_send_mail)\n    app.jinja_env.globals.update(get_ctf_name=ctf_name)\n    app.jinja_env.globals.update(get_ctf_logo=ctf_logo)\n    app.jinja_env.globals.update(get_ctf_theme=ctf_theme)\n    app.jinja_env.globals.update(get_configurable_plugins=get_configurable_plugins)\n    app.jinja_env.globals.update(get_registered_scripts=get_registered_scripts)\n    app.jinja_env.globals.update(get_registered_stylesheets=get_registered_stylesheets)\n    app.jinja_env.globals.update(get_registered_admin_scripts=get_registered_admin_scripts)\n    app.jinja_env.globals.update(get_registered_admin_stylesheets=get_registered_admin_stylesheets)\n    app.jinja_env.globals.update(get_config=get_config)\n    app.jinja_env.globals.update(generate_account_url=generate_account_url)\n    app.jinja_env.globals.update(get_countries=get_countries)\n    app.jinja_env.globals.update(lookup_country_code=lookup_country_code)\n    app.jinja_env.globals.update(accounts_visible=accounts_visible)\n    app.jinja_env.globals.update(challenges_visible=challenges_visible)\n    app.jinja_env.globals.update(registration_visible=registration_visible)\n    app.jinja_env.globals.update(scores_visible=scores_visible)\n\n\ndef init_request_processors(app):\n    @app.context_processor\n    def inject_user():\n        if session:\n            return dict(session)\n        return dict()\n\n    @app.before_request\n    def needs_setup():\n        if request.path == url_for('views.setup') or request.path.startswith('/themes'):\n            return\n        if not is_setup():\n            return redirect(url_for('views.setup'))\n\n    @app.before_request\n    def tracker():\n        # TODO: This function shouldn't cause a DB hit for lookups if possible\n        if authed():\n            track = Tracking.query.filter_by(ip=get_ip(), user_id=session['id']).first()\n            if not track:\n                visit = Tracking(ip=get_ip(), user_id=session['id'])\n                db.session.add(visit)\n            else:\n                track.date = datetime.datetime.utcnow()\n\n            try:\n                db.session.commit()\n            except (InvalidRequestError, IntegrityError) as e:\n                print(e.message)\n                db.session.rollback()\n                session.clear()\n\n            if authed():\n                user = get_current_user()\n                team = get_current_team()\n\n                if request.path.startswith('/themes') is False:\n                    if user and user.banned:\n                        return render_template('errors/403.html', error='You have been banned from this CTF'), 403\n\n                    if team and team.banned:\n                        return render_template('errors/403.html', error='Your team has been banned from this CTF'), 403\n\n            db.session.close()\n\n    @app.before_request\n    def csrf():\n        try:\n            func = app.view_functions[request.endpoint]\n        except KeyError:\n            abort(404)\n        if hasattr(func, '_bypass_csrf'):\n            return\n        if not session.get('nonce'):\n            session['nonce'] = generate_nonce()\n        if request.method == \"POST\":\n            if request.content_type != 'application/json':\n                if session['nonce'] != request.form.get('nonce'):\n                    abort(403)\n\n    application_root = app.config.get('APPLICATION_ROOT')\n    if application_root != '/':\n        @app.before_request\n        def force_subdirectory_redirect():\n            if request.path.startswith(application_root) is False:\n                return redirect(application_root + request.script_root + request.full_path)\n\n        app.wsgi_app = DispatcherMiddleware(app.wsgi_app, {\n            application_root: app,\n        })\n", "path": "CTFd/utils/initialization/__init__.py"}], "after_files": [{"content": "from flask import Flask, current_app as app, request, session, redirect, url_for, abort, render_template\nfrom werkzeug.wsgi import DispatcherMiddleware\nfrom CTFd.models import db, Tracking\n\nfrom CTFd.utils import markdown, get_config\nfrom CTFd.utils.dates import unix_time_millis, unix_time, isoformat\n\nfrom CTFd.utils import config\nfrom CTFd.utils.config import can_send_mail, ctf_logo, ctf_name, ctf_theme\nfrom CTFd.utils.config.pages import get_pages\n\nfrom CTFd.utils.plugins import (\n    get_registered_stylesheets,\n    get_registered_scripts,\n    get_configurable_plugins,\n    get_registered_admin_scripts,\n    get_registered_admin_stylesheets\n)\n\nfrom CTFd.utils.countries import get_countries, lookup_country_code\nfrom CTFd.utils.user import authed, get_ip, get_current_user, get_current_team\nfrom CTFd.utils.modes import generate_account_url\nfrom CTFd.utils.config import is_setup\nfrom CTFd.utils.security.csrf import generate_nonce\n\nfrom CTFd.utils.config.visibility import (\n    accounts_visible,\n    challenges_visible,\n    registration_visible,\n    scores_visible\n)\n\nfrom sqlalchemy.exc import InvalidRequestError, IntegrityError\n\nimport datetime\n\n\ndef init_template_filters(app):\n    app.jinja_env.filters['markdown'] = markdown\n    app.jinja_env.filters['unix_time'] = unix_time\n    app.jinja_env.filters['unix_time_millis'] = unix_time_millis\n    app.jinja_env.filters['isoformat'] = isoformat\n\n\ndef init_template_globals(app):\n    app.jinja_env.globals.update(config=config)\n    app.jinja_env.globals.update(get_pages=get_pages)\n    app.jinja_env.globals.update(can_send_mail=can_send_mail)\n    app.jinja_env.globals.update(get_ctf_name=ctf_name)\n    app.jinja_env.globals.update(get_ctf_logo=ctf_logo)\n    app.jinja_env.globals.update(get_ctf_theme=ctf_theme)\n    app.jinja_env.globals.update(get_configurable_plugins=get_configurable_plugins)\n    app.jinja_env.globals.update(get_registered_scripts=get_registered_scripts)\n    app.jinja_env.globals.update(get_registered_stylesheets=get_registered_stylesheets)\n    app.jinja_env.globals.update(get_registered_admin_scripts=get_registered_admin_scripts)\n    app.jinja_env.globals.update(get_registered_admin_stylesheets=get_registered_admin_stylesheets)\n    app.jinja_env.globals.update(get_config=get_config)\n    app.jinja_env.globals.update(generate_account_url=generate_account_url)\n    app.jinja_env.globals.update(get_countries=get_countries)\n    app.jinja_env.globals.update(lookup_country_code=lookup_country_code)\n    app.jinja_env.globals.update(accounts_visible=accounts_visible)\n    app.jinja_env.globals.update(challenges_visible=challenges_visible)\n    app.jinja_env.globals.update(registration_visible=registration_visible)\n    app.jinja_env.globals.update(scores_visible=scores_visible)\n\n\ndef init_request_processors(app):\n    @app.context_processor\n    def inject_user():\n        if session:\n            return dict(session)\n        return dict()\n\n    @app.url_defaults\n    def inject_theme(endpoint, values):\n        if 'theme' not in values and app.url_map.is_endpoint_expecting(endpoint, 'theme'):\n            values['theme'] = ctf_theme()\n\n    @app.before_request\n    def needs_setup():\n        if request.path == url_for('views.setup') or request.path.startswith('/themes'):\n            return\n        if not is_setup():\n            return redirect(url_for('views.setup'))\n\n    @app.before_request\n    def tracker():\n        # TODO: This function shouldn't cause a DB hit for lookups if possible\n        if authed():\n            track = Tracking.query.filter_by(ip=get_ip(), user_id=session['id']).first()\n            if not track:\n                visit = Tracking(ip=get_ip(), user_id=session['id'])\n                db.session.add(visit)\n            else:\n                track.date = datetime.datetime.utcnow()\n\n            try:\n                db.session.commit()\n            except (InvalidRequestError, IntegrityError) as e:\n                print(e.message)\n                db.session.rollback()\n                session.clear()\n\n            if authed():\n                user = get_current_user()\n                team = get_current_team()\n\n                if request.path.startswith('/themes') is False:\n                    if user and user.banned:\n                        return render_template('errors/403.html', error='You have been banned from this CTF'), 403\n\n                    if team and team.banned:\n                        return render_template('errors/403.html', error='Your team has been banned from this CTF'), 403\n\n            db.session.close()\n\n    @app.before_request\n    def csrf():\n        try:\n            func = app.view_functions[request.endpoint]\n        except KeyError:\n            abort(404)\n        if hasattr(func, '_bypass_csrf'):\n            return\n        if not session.get('nonce'):\n            session['nonce'] = generate_nonce()\n        if request.method == \"POST\":\n            if request.content_type != 'application/json':\n                if session['nonce'] != request.form.get('nonce'):\n                    abort(403)\n\n    application_root = app.config.get('APPLICATION_ROOT')\n    if application_root != '/':\n        @app.before_request\n        def force_subdirectory_redirect():\n            if request.path.startswith(application_root) is False:\n                return redirect(application_root + request.script_root + request.full_path)\n\n        app.wsgi_app = DispatcherMiddleware(app.wsgi_app, {\n            application_root: app,\n        })\n", "path": "CTFd/utils/initialization/__init__.py"}]}