Index: ockerignore
===================================================================
--- .dockerignore	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,52 +1,0 @@
-# OS / system files
-.DS_Store
-Thumbs.db
-
-# Python / Django
-__pycache__/
-*.pyc
-*.pyo
-*.pyd
-*.py[cod]
-*.log
-*.sqlite3
-*.env
-*.env.*
-*.db
-*.pid
-*.sock
-*.coverage
-*.egg-info/
-backend/venv/
-env/
-venv/
-
-# Node / React
-frontend/node_modules/
-frontend/dist/
-frontend/build/
-frontend/.vite/
-frontend/.turbo/
-frontend/.cache/
-frontend/.env
-frontend/.env.*
-
-# IDE/editor stuff
-.vscode/
-.idea/
-
-# Git
-.git/
-.gitignore
-
-# Docker build files (optional, if you don’t want to copy these into image)
-Dockerfile
-.dockerignore
-
-# Test & coverage
-.pytest_cache/
-coverage.xml
-test-results/
-.mypy_cache/
-.tox/
-.nox/
Index: itignore
===================================================================
--- .gitignore	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,77 +1,0 @@
-# Byte-compiled / cache
-__pycache__/
-*.py[cod]
-*.pyo
-
-# Django / Python
-*.log
-*.pot
-*.pyc
-*.pyd
-*.env
-env/
-backend/.venv
-instance/
-
-backend/.idea
-
-# VS Code / IDE
-.vscode/
-.idea/
-
-# System
-.DS_Store
-Thumbs.db
-
-# Docker
-*.pid
-*.db
-*.sock
-*.tar
-*.gz
-
-# Logs
-*.log
-*.log.*
-
-# Coverage
-htmlcov/
-coverage.xml
-*.cover
-.cache
-.tox/
-.nox/
-
-# Unit test / pytest
-.pytest_cache/
-test-results/
-
-# mypy / other static analysis
-.mypy_cache/
-.pyre/
-.pytype/
-
-# Node / frontend
-frontend/node_modules/
-frontend/.turbo/
-frontend/.next/
-frontend/.cache/
-frontend/dist/
-frontend/build/
-frontend/.vite/
-
-# Lock files (optional if not committing lockfiles)
-# package-lock.json
-
-# Output / dist
-*.egg-info/
-dist/
-build/
-
-# Local env files
-.env
-backend/.env
-.env.*
-
-
-guidelines.txt
Index: CENSE
===================================================================
--- LICENSE	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,21 +1,0 @@
-MIT License
-
-Copyright (c) 2025 Filip Gavrilovski, Andrej Ristikj
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
Index: ADME.md
===================================================================
--- README.md	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,97 +1,0 @@
-# IzberiIzboren / ИзбериИзборен
-
-This is a full-stack web application that recommends elective subjects for students at FINKI, built as a project for the Internet Technologies course. It is built with:
-
-- **Backend:** Django
-- **Frontend:** React with TypeScript and Vite
-- **Database:** PostgreSQL
-- **Containerized:** Using Docker and Docker Compose
-
-The full documentation can be found [here](https://develop.finki.ukim.mk/projects/izberi_izboren).
-
-## Quick Setup
-
-### 1. Clone this repository:
-
-`git clone https://github.com/gavro081/izberi_izboren.git`
-
-### 2. Set up environment variables
-
-Create two .env files with the following configurations:
-
-In the backend/ directory (for Django):
-
-```bash
-DB_NAME=x
-DB_USER=x
-DB_PASS=x
-DB_HOST=x
-DB_PORT=5432
-
-USE_OAUTH=False
-```
-
-In the root directory (for Docker Compose and PostgreSQL):
-
-```bash
-POSTGRES_PASSWORD=x
-DB_USER=x
-DB_NAME=x
-DB_HOST=x
-VITE_USE_OAUTH=false
-```
-</br>
-
-
-**NOTE**: This project uses OAuth2 to enable Google login. By default, it’s disabled for convenience.  
-If you’d like to use Google login, follow [this guide](https://support.google.com/googleapi/answer/6158849?hl=en) to create your credentials. Then make the following changes:
-
-**In the backend .env:**
-
-```bash
-GOOGLE_CLIENT_ID=<your_google_client_id>
-GOOGLE_CLIENT_SECRET=<your_google_client_secret>
-USE_OAUTH=True
-```
-**In the root .env:**
-
-```bash
-GOOGLE_CLIENT_ID=<your_google_client_id> # exclude the '.apps.googleusercontent.com' part
-VITE_USE_OAUTH=true
-```
-
-If you run into any issues, feel free to [open an issue](https://github.com/gavro081/izberi_izboren/issues).
-
-> Adjust the values according to your environment
-
-### 3. Build and run the project using Docker Compose:
-
-`docker-compose up --build`
-
-> Make sure you have Docker and Docker Compose installed on your system.
-
-The frontend of the application will be available at **http://localhost:3000**, which you can access from your browser.
-
-### 4. Apply database migrations
-
-Run the following commands inside the Docker container to create the database tables:
-
-```bash
-docker-compose exec backend python3 manage.py makemigrations
-docker-compose exec backend python3 manage.py migrate
-```
-
-### 5. Populate the database
-
-Run the fill_db script to load data into the database:
-`docker-compose exec backend python3 manage.py fill_db`
-
-> For windows users, use python or py instead of python3
-
-## Notes
-
-All data used in this project is public data from the faculty, collected by various scrapers.
-
-## License
-
-This project is licensed under the MIT license.
Index: backend/.idea/workspace.xml
===================================================================
--- backend/.idea/workspace.xml	(revision 516baa4eda127c8c3a0f761c69f90c8c5ff421e3)
+++ backend/.idea/workspace.xml	(revision 516baa4eda127c8c3a0f761c69f90c8c5ff421e3)
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="AutoImportSettings">
+    <option name="autoReloadType" value="SELECTIVE" />
+  </component>
+  <component name="ChangeListManager">
+    <list default="true" id="04935363-46d6-4ba5-8cf7-c70edc9a7466" name="Changes" comment="" />
+    <option name="SHOW_DIALOG" value="false" />
+    <option name="HIGHLIGHT_CONFLICTS" value="true" />
+    <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
+    <option name="LAST_RESOLUTION" value="IGNORE" />
+  </component>
+  <component name="ProjectColorInfo"><![CDATA[{
+  "associatedIndex": 5
+}]]></component>
+  <component name="ProjectId" id="2voLIha1mgdcBW90pKce2tw4SQn" />
+  <component name="ProjectViewState">
+    <option name="hideEmptyMiddlePackages" value="true" />
+    <option name="showLibraryContents" value="true" />
+  </component>
+  <component name="PropertiesComponent"><![CDATA[{
+  "keyToString": {
+    "RunOnceActivity.OpenDjangoStructureViewOnStart": "true",
+    "RunOnceActivity.ShowReadmeOnStart": "true",
+    "last_opened_file_path": "/Users/Filip/Desktop/proekti/izberi_izboren_/izberi_izboren/backend",
+    "node.js.detected.package.eslint": "true",
+    "node.js.detected.package.tslint": "true",
+    "node.js.selected.package.eslint": "(autodetect)",
+    "node.js.selected.package.tslint": "(autodetect)",
+    "nodejs_package_manager_path": "npm",
+    "vue.rearranger.settings.migration": "true"
+  }
+}]]></component>
+  <component name="RunManager">
+    <configuration name="backend" type="Python.DjangoServer" factoryName="Django server">
+      <module name="backend" />
+      <option name="ENV_FILES" value="" />
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs>
+        <env name="PYTHONUNBUFFERED" value="1" />
+      </envs>
+      <option name="SDK_HOME" value="" />
+      <option name="WORKING_DIRECTORY" value="" />
+      <option name="IS_MODULE_SDK" value="false" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <option name="launchJavascriptDebuger" value="false" />
+      <option name="port" value="8000" />
+      <option name="host" value="" />
+      <option name="additionalOptions" value="" />
+      <option name="browserUrl" value="" />
+      <option name="runTestServer" value="false" />
+      <option name="runNoReload" value="false" />
+      <option name="useCustomRunCommand" value="false" />
+      <option name="customRunCommand" value="" />
+      <method v="2" />
+    </configuration>
+  </component>
+  <component name="SharedIndexes">
+    <attachedChunks>
+      <set>
+        <option value="bundled-js-predefined-d6986cc7102b-deb605915726-JavaScript-PY-243.22562.220" />
+        <option value="bundled-python-sdk-0fc6c617c4bd-9a18a617cbe4-com.jetbrains.pycharm.pro.sharedIndexes.bundled-PY-243.22562.220" />
+      </set>
+    </attachedChunks>
+  </component>
+  <component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
+  <component name="TaskManager">
+    <task active="true" id="Default" summary="Default task">
+      <changelist id="04935363-46d6-4ba5-8cf7-c70edc9a7466" name="Changes" comment="" />
+      <created>1744806401374</created>
+      <option name="number" value="Default" />
+      <option name="presentableId" value="Default" />
+      <updated>1744806401374</updated>
+      <workItem from="1744806402591" duration="593000" />
+    </task>
+    <servers />
+  </component>
+  <component name="TypeScriptGeneratedFilesManager">
+    <option name="version" value="3" />
+  </component>
+</project>
Index: backend/Dockerfile
===================================================================
--- backend/Dockerfile	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ backend/Dockerfile	(revision 516baa4eda127c8c3a0f761c69f90c8c5ff421e3)
@@ -6,6 +6,4 @@
 #     gcc \
 #     && rm -rf /var/lib/apt/lists/*
-RUN apt-get update && apt-get install -y postgresql-client
-
 
 COPY requirements.txt .
@@ -16,5 +14,3 @@
 EXPOSE 8000
 
-RUN chmod +x wait-for-db.sh
-
 CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]
Index: backend/app/admin.py
===================================================================
--- backend/app/admin.py	(revision 516baa4eda127c8c3a0f761c69f90c8c5ff421e3)
+++ backend/app/admin.py	(revision 516baa4eda127c8c3a0f761c69f90c8c5ff421e3)
@@ -0,0 +1,3 @@
+from django.contrib import admin
+
+# Register your models here.
Index: backend/app/apps.py
===================================================================
--- backend/app/apps.py	(revision 516baa4eda127c8c3a0f761c69f90c8c5ff421e3)
+++ backend/app/apps.py	(revision 516baa4eda127c8c3a0f761c69f90c8c5ff421e3)
@@ -0,0 +1,6 @@
+from django.apps import AppConfig
+
+
+class AppConfig(AppConfig):
+    default_auto_field = 'django.db.models.BigAutoField'
+    name = 'app'
Index: backend/app/models.py
===================================================================
--- backend/app/models.py	(revision 516baa4eda127c8c3a0f761c69f90c8c5ff421e3)
+++ backend/app/models.py	(revision 516baa4eda127c8c3a0f761c69f90c8c5ff421e3)
@@ -0,0 +1,3 @@
+from django.db import models
+
+# Create your models here.
Index: backend/app/tests.py
===================================================================
--- backend/app/tests.py	(revision 516baa4eda127c8c3a0f761c69f90c8c5ff421e3)
+++ backend/app/tests.py	(revision 516baa4eda127c8c3a0f761c69f90c8c5ff421e3)
@@ -0,0 +1,3 @@
+from django.test import TestCase
+
+# Create your tests here.
Index: backend/app/views.py
===================================================================
--- backend/app/views.py	(revision 516baa4eda127c8c3a0f761c69f90c8c5ff421e3)
+++ backend/app/views.py	(revision 516baa4eda127c8c3a0f761c69f90c8c5ff421e3)
@@ -0,0 +1,9 @@
+from django.http import HttpResponse, JsonResponse
+from django.shortcuts import render
+
+# Create your views here.
+def index(request):
+    return HttpResponse("ok")
+
+def test_api(request):
+    return JsonResponse({"message": "hello world"})
Index: ckend/auth_form/adapters.py
===================================================================
--- backend/auth_form/adapters.py	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,12 +1,0 @@
-from allauth.socialaccount.adapter import DefaultSocialAccountAdapter
-
-class CustomSocialAccountAdapter(DefaultSocialAccountAdapter):
-    def populate_user(self, request, sociallogin, data):
-        user = super().populate_user(request, sociallogin, data)
-
-        first_name = data.get("first_name", "")
-        last_name = data.get("last_name", "")
-        user.first_name = first_name
-        user.last_name = last_name
-        user.full_name = f"{first_name} {last_name}".strip()
-        return user
Index: ckend/auth_form/admin.py
===================================================================
--- backend/auth_form/admin.py	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,6 +1,0 @@
-from django.contrib import admin
-from django.contrib.auth.admin import UserAdmin
-from .models import User, Student
-
-admin.site.register(User, UserAdmin)
-admin.site.register(Student)
Index: ckend/auth_form/apps.py
===================================================================
--- backend/auth_form/apps.py	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,9 +1,0 @@
-from django.apps import AppConfig
-
-
-class AuthConfig(AppConfig):
-    default_auto_field = 'django.db.models.BigAutoField'
-    name = 'auth_form'
-
-    def ready(self):
-        import auth_form.signals
Index: ckend/auth_form/migrations/0001_initial.py
===================================================================
--- backend/auth_form/migrations/0001_initial.py	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,67 +1,0 @@
-# Generated by Django 5.1.7 on 2025-04-28 20:27
-
-import django.contrib.auth.models
-import django.contrib.auth.validators
-import django.contrib.postgres.fields
-import django.db.models.deletion
-import django.utils.timezone
-from django.conf import settings
-from django.db import migrations, models
-
-
-class Migration(migrations.Migration):
-
-    initial = True
-
-    dependencies = [
-        ('auth', '0012_alter_user_first_name_max_length'),
-        ('subjects', '0001_initial'),
-    ]
-
-    operations = [
-        migrations.CreateModel(
-            name='User',
-            fields=[
-                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
-                ('password', models.CharField(max_length=128, verbose_name='password')),
-                ('last_login', models.DateTimeField(blank=True, null=True, verbose_name='last login')),
-                ('is_superuser', models.BooleanField(default=False, help_text='Designates that this user has all permissions without explicitly assigning them.', verbose_name='superuser status')),
-                ('username', models.CharField(error_messages={'unique': 'A user with that username already exists.'}, help_text='Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.', max_length=150, unique=True, validators=[django.contrib.auth.validators.UnicodeUsernameValidator()], verbose_name='username')),
-                ('first_name', models.CharField(blank=True, max_length=150, verbose_name='first name')),
-                ('last_name', models.CharField(blank=True, max_length=150, verbose_name='last name')),
-                ('is_staff', models.BooleanField(default=False, help_text='Designates whether the user can log into this admin site.', verbose_name='staff status')),
-                ('is_active', models.BooleanField(default=True, help_text='Designates whether this user should be treated as active. Unselect this instead of deleting accounts.', verbose_name='active')),
-                ('date_joined', models.DateTimeField(default=django.utils.timezone.now, verbose_name='date joined')),
-                ('user_type', models.CharField(choices=[('student', 'Student'), ('admin', 'Admin'), ('superadmin', 'Superadmin')], default='student', max_length=20)),
-                ('full_name', models.CharField(max_length=255)),
-                ('email', models.EmailField(max_length=254, unique=True)),
-                ('groups', models.ManyToManyField(blank=True, help_text='The groups this user belongs to. A user will get all permissions granted to each of their groups.', related_name='user_set', related_query_name='user', to='auth.group', verbose_name='groups')),
-                ('user_permissions', models.ManyToManyField(blank=True, help_text='Specific permissions for this user.', related_name='user_set', related_query_name='user', to='auth.permission', verbose_name='user permissions')),
-            ],
-            options={
-                'verbose_name': 'user',
-                'verbose_name_plural': 'users',
-                'abstract': False,
-            },
-            managers=[
-                ('objects', django.contrib.auth.models.UserManager()),
-            ],
-        ),
-        migrations.CreateModel(
-            name='Student',
-            fields=[
-                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
-                ('index', models.CharField(max_length=20, unique=True)),
-                ('study_track', models.CharField(choices=[('SIIS23', 'SIIS'), ('SEIS23', 'SEIS'), ('KI23', 'KI'), ('KN23', 'KN'), ('IMB23', 'IMB'), ('PIT23', 'PIT')], max_length=20)),
-                ('current_year', models.PositiveIntegerField()),
-                ('study_effort', models.PositiveIntegerField(help_text='Hours per week')),
-                ('preferred_domains', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(max_length=64), size=None)),
-                ('preferred_technologies', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(max_length=64), size=None)),
-                ('preferred_evaluation', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(max_length=16), size=None)),
-                ('favorite_professors', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(max_length=16), size=None)),
-                ('enrolled_subjects', models.ManyToManyField(related_name='enrolled_subjects', to='subjects.subject')),
-                ('passed_subjects', models.ManyToManyField(related_name='passed_subjects', to='subjects.subject')),
-                ('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='student_profile', to=settings.AUTH_USER_MODEL)),
-            ],
-        ),
-    ]
Index: ckend/auth_form/migrations/0002_alter_user_managers_remove_student_enrolled_subjects_and_more.py
===================================================================
--- backend/auth_form/migrations/0002_alter_user_managers_remove_student_enrolled_subjects_and_more.py	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,27 +1,0 @@
-# Generated by Django 5.1.7 on 2025-05-03 17:55
-
-from django.db import migrations, models
-
-
-class Migration(migrations.Migration):
-
-    dependencies = [
-        ('auth_form', '0001_initial'),
-    ]
-
-    operations = [
-        migrations.AlterModelManagers(
-            name='user',
-            managers=[
-            ],
-        ),
-        migrations.RemoveField(
-            model_name='student',
-            name='enrolled_subjects',
-        ),
-        migrations.AddField(
-            model_name='student',
-            name='has_filled_form',
-            field=models.BooleanField(default=False),
-        ),
-    ]
Index: ckend/auth_form/migrations/0003_alter_student_current_year_and_more.py
===================================================================
--- backend/auth_form/migrations/0003_alter_student_current_year_and_more.py	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,60 +1,0 @@
-# Generated by Django 5.1.7 on 2025-05-03 18:53
-
-import django.contrib.postgres.fields
-from django.db import migrations, models
-
-
-class Migration(migrations.Migration):
-
-    dependencies = [
-        ('auth_form', '0002_alter_user_managers_remove_student_enrolled_subjects_and_more'),
-        ('subjects', '0001_initial'),
-    ]
-
-    operations = [
-        migrations.AlterField(
-            model_name='student',
-            name='current_year',
-            field=models.PositiveIntegerField(null=True),
-        ),
-        migrations.AlterField(
-            model_name='student',
-            name='favorite_professors',
-            field=django.contrib.postgres.fields.ArrayField(base_field=models.CharField(max_length=16), blank=True, null=True, size=None),
-        ),
-        migrations.AlterField(
-            model_name='student',
-            name='index',
-            field=models.CharField(blank=True, max_length=20, null=True, unique=True),
-        ),
-        migrations.AlterField(
-            model_name='student',
-            name='passed_subjects',
-            field=models.ManyToManyField(blank=True, related_name='passed_subjects', to='subjects.subject'),
-        ),
-        migrations.AlterField(
-            model_name='student',
-            name='preferred_domains',
-            field=django.contrib.postgres.fields.ArrayField(base_field=models.CharField(max_length=64), blank=True, null=True, size=None),
-        ),
-        migrations.AlterField(
-            model_name='student',
-            name='preferred_evaluation',
-            field=django.contrib.postgres.fields.ArrayField(base_field=models.CharField(max_length=16), blank=True, null=True, size=None),
-        ),
-        migrations.AlterField(
-            model_name='student',
-            name='preferred_technologies',
-            field=django.contrib.postgres.fields.ArrayField(base_field=models.CharField(max_length=64), blank=True, null=True, size=None),
-        ),
-        migrations.AlterField(
-            model_name='student',
-            name='study_effort',
-            field=models.PositiveIntegerField(help_text='Hours per week', null=True),
-        ),
-        migrations.AlterField(
-            model_name='student',
-            name='study_track',
-            field=models.CharField(blank=True, choices=[('SIIS23', 'SIIS'), ('SEIS23', 'SEIS'), ('KI23', 'KI'), ('KN23', 'KN'), ('IMB23', 'IMB'), ('PIT23', 'PIT')], max_length=20, null=True),
-        ),
-    ]
Index: ckend/auth_form/migrations/0004_alter_student_user.py
===================================================================
--- backend/auth_form/migrations/0004_alter_student_user.py	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,20 +1,0 @@
-# Generated by Django 5.1.7 on 2025-05-03 19:06
-
-import django.db.models.deletion
-from django.conf import settings
-from django.db import migrations, models
-
-
-class Migration(migrations.Migration):
-
-    dependencies = [
-        ('auth_form', '0003_alter_student_current_year_and_more'),
-    ]
-
-    operations = [
-        migrations.AlterField(
-            model_name='student',
-            name='user',
-            field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='student', to=settings.AUTH_USER_MODEL),
-        ),
-    ]
Index: ckend/auth_form/migrations/0005_alter_student_favorite_professors.py
===================================================================
--- backend/auth_form/migrations/0005_alter_student_favorite_professors.py	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,19 +1,0 @@
-# Generated by Django 5.1.7 on 2025-05-04 18:04
-
-import django.contrib.postgres.fields
-from django.db import migrations, models
-
-
-class Migration(migrations.Migration):
-
-    dependencies = [
-        ('auth_form', '0004_alter_student_user'),
-    ]
-
-    operations = [
-        migrations.AlterField(
-            model_name='student',
-            name='favorite_professors',
-            field=django.contrib.postgres.fields.ArrayField(base_field=models.CharField(max_length=64), blank=True, null=True, size=None),
-        ),
-    ]
Index: ckend/auth_form/migrations/0006_alter_student_study_track.py
===================================================================
--- backend/auth_form/migrations/0006_alter_student_study_track.py	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,18 +1,0 @@
-# Generated by Django 5.1.7 on 2025-05-04 18:05
-
-from django.db import migrations, models
-
-
-class Migration(migrations.Migration):
-
-    dependencies = [
-        ('auth_form', '0005_alter_student_favorite_professors'),
-    ]
-
-    operations = [
-        migrations.AlterField(
-            model_name='student',
-            name='study_track',
-            field=models.CharField(blank=True, choices=[('SIIS23', 'SIIS'), ('IE23', 'IE'), ('KI23', 'KI'), ('KN23', 'KN'), ('IMB23', 'IMB'), ('PIT23', 'PIT')], max_length=20, null=True),
-        ),
-    ]
Index: ckend/auth_form/migrations/0007_alter_student_study_track.py
===================================================================
--- backend/auth_form/migrations/0007_alter_student_study_track.py	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,18 +1,0 @@
-# Generated by Django 5.1.7 on 2025-05-15 10:29
-
-from django.db import migrations, models
-
-
-class Migration(migrations.Migration):
-
-    dependencies = [
-        ('auth_form', '0006_alter_student_study_track'),
-    ]
-
-    operations = [
-        migrations.AlterField(
-            model_name='student',
-            name='study_track',
-            field=models.CharField(blank=True, choices=[('SIIS23', 'SIIS23'), ('IE23', 'IE23'), ('KI23', 'KI23'), ('KN23', 'KN23'), ('IMB23', 'IMB23'), ('PIT23', 'PIT23')], max_length=20, null=True),
-        ),
-    ]
Index: ckend/auth_form/migrations/0008_student_passed_subjects_per_semester.py
===================================================================
--- backend/auth_form/migrations/0008_student_passed_subjects_per_semester.py	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,18 +1,0 @@
-# Generated by Django 5.1.7 on 2025-06-01 10:34
-
-from django.db import migrations, models
-
-
-class Migration(migrations.Migration):
-
-    dependencies = [
-        ('auth_form', '0007_alter_student_study_track'),
-    ]
-
-    operations = [
-        migrations.AddField(
-            model_name='student',
-            name='passed_subjects_per_semester',
-            field=models.JSONField(blank=True, null=True),
-        ),
-    ]
Index: ckend/auth_form/migrations/0009_student_l1_credits_student_l2_credits_and_more.py
===================================================================
--- backend/auth_form/migrations/0009_student_l1_credits_student_l2_credits_and_more.py	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,33 +1,0 @@
-# Generated by Django 5.1.7 on 2025-06-01 12:11
-
-from django.db import migrations, models
-
-
-class Migration(migrations.Migration):
-
-    dependencies = [
-        ('auth_form', '0008_student_passed_subjects_per_semester'),
-    ]
-
-    operations = [
-        migrations.AddField(
-            model_name='student',
-            name='l1_credits',
-            field=models.PositiveIntegerField(null=True),
-        ),
-        migrations.AddField(
-            model_name='student',
-            name='l2_credits',
-            field=models.PositiveIntegerField(null=True),
-        ),
-        migrations.AddField(
-            model_name='student',
-            name='l3_credits',
-            field=models.PositiveIntegerField(null=True),
-        ),
-        migrations.AddField(
-            model_name='student',
-            name='total_credits',
-            field=models.PositiveIntegerField(null=True),
-        ),
-    ]
Index: ckend/auth_form/migrations/0010_remove_student_l1_credits_remove_student_l2_credits_and_more.py
===================================================================
--- backend/auth_form/migrations/0010_remove_student_l1_credits_remove_student_l2_credits_and_more.py	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,32 +1,0 @@
-# Generated by Django 5.1.7 on 2025-06-01 12:26
-
-import django.contrib.postgres.fields
-from django.db import migrations, models
-
-
-class Migration(migrations.Migration):
-
-    dependencies = [
-        ('auth_form', '0009_student_l1_credits_student_l2_credits_and_more'),
-    ]
-
-    operations = [
-        migrations.RemoveField(
-            model_name='student',
-            name='l1_credits',
-        ),
-        migrations.RemoveField(
-            model_name='student',
-            name='l2_credits',
-        ),
-        migrations.RemoveField(
-            model_name='student',
-            name='l3_credits',
-        ),
-        migrations.AddField(
-            model_name='student',
-            name='level_credits',
-            field=django.contrib.postgres.fields.ArrayField(base_field=models.PositiveIntegerField(null=True), default=[], size=None),
-            preserve_default=False,
-        ),
-    ]
Index: ckend/auth_form/migrations/0011_alter_student_level_credits.py
===================================================================
--- backend/auth_form/migrations/0011_alter_student_level_credits.py	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,19 +1,0 @@
-# Generated by Django 5.1.7 on 2025-06-01 13:25
-
-import django.contrib.postgres.fields
-from django.db import migrations, models
-
-
-class Migration(migrations.Migration):
-
-    dependencies = [
-        ('auth_form', '0010_remove_student_l1_credits_remove_student_l2_credits_and_more'),
-    ]
-
-    operations = [
-        migrations.AlterField(
-            model_name='student',
-            name='level_credits',
-            field=django.contrib.postgres.fields.ArrayField(base_field=models.PositiveIntegerField(null=True), blank=True, null=True, size=None),
-        ),
-    ]
Index: ckend/auth_form/migrations/0012_remove_student_level_credits_and_more.py
===================================================================
--- backend/auth_form/migrations/0012_remove_student_level_credits_and_more.py	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,26 +1,0 @@
-# Generated by Django 5.1.7 on 2025-06-01 16:38
-
-from django.db import migrations, models
-
-
-class Migration(migrations.Migration):
-
-    dependencies = [
-        ('auth_form', '0011_alter_student_level_credits'),
-    ]
-
-    operations = [
-        migrations.RemoveField(
-            model_name='student',
-            name='level_credits',
-        ),
-        migrations.RemoveField(
-            model_name='student',
-            name='total_credits',
-        ),
-        migrations.AddField(
-            model_name='student',
-            name='has_extracurricular',
-            field=models.BooleanField(default=False, null=True),
-        ),
-    ]
Index: ckend/auth_form/migrations/0013_student_total_credits.py
===================================================================
--- backend/auth_form/migrations/0013_student_total_credits.py	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,18 +1,0 @@
-# Generated by Django 5.1.7 on 2025-06-04 12:19
-
-from django.db import migrations, models
-
-
-class Migration(migrations.Migration):
-
-    dependencies = [
-        ('auth_form', '0012_remove_student_level_credits_and_more'),
-    ]
-
-    operations = [
-        migrations.AddField(
-            model_name='student',
-            name='total_credits',
-            field=models.PositiveIntegerField(null=True),
-        ),
-    ]
Index: ckend/auth_form/migrations/0014_student_level_credits.py
===================================================================
--- backend/auth_form/migrations/0014_student_level_credits.py	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,19 +1,0 @@
-# Generated by Django 5.1.7 on 2025-06-04 15:56
-
-import django.contrib.postgres.fields
-from django.db import migrations, models
-
-
-class Migration(migrations.Migration):
-
-    dependencies = [
-        ('auth_form', '0013_student_total_credits'),
-    ]
-
-    operations = [
-        migrations.AddField(
-            model_name='student',
-            name='level_credits',
-            field=django.contrib.postgres.fields.ArrayField(base_field=models.PositiveIntegerField(null=True), blank=True, null=True, size=None),
-        ),
-    ]
Index: ckend/auth_form/migrations/0015_rename_preferred_evaluation_student_evaluation_and_more.py
===================================================================
--- backend/auth_form/migrations/0015_rename_preferred_evaluation_student_evaluation_and_more.py	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,33 +1,0 @@
-# Generated by Django 5.1.7 on 2025-06-05 11:03
-
-from django.db import migrations
-
-
-class Migration(migrations.Migration):
-
-    dependencies = [
-        ('auth_form', '0014_student_level_credits'),
-    ]
-
-    operations = [
-        migrations.RenameField(
-            model_name='student',
-            old_name='preferred_evaluation',
-            new_name='evaluation',
-        ),
-        migrations.RenameField(
-            model_name='student',
-            old_name='favorite_professors',
-            new_name='professors',
-        ),
-        migrations.RenameField(
-            model_name='student',
-            old_name='preferred_domains',
-            new_name='tags',
-        ),
-        migrations.RenameField(
-            model_name='student',
-            old_name='preferred_technologies',
-            new_name='technologies',
-        ),
-    ]
Index: ckend/auth_form/migrations/0016_student_assistants.py
===================================================================
--- backend/auth_form/migrations/0016_student_assistants.py	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,19 +1,0 @@
-# Generated by Django 5.1.7 on 2025-06-10 10:09
-
-import django.contrib.postgres.fields
-from django.db import migrations, models
-
-
-class Migration(migrations.Migration):
-
-    dependencies = [
-        ('auth_form', '0015_rename_preferred_evaluation_student_evaluation_and_more'),
-    ]
-
-    operations = [
-        migrations.AddField(
-            model_name='student',
-            name='assistants',
-            field=django.contrib.postgres.fields.ArrayField(base_field=models.CharField(max_length=64), blank=True, null=True, size=None),
-        ),
-    ]
Index: ckend/auth_form/migrations/0017_student_favorite_subjects.py
===================================================================
--- backend/auth_form/migrations/0017_student_favorite_subjects.py	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,19 +1,0 @@
-# Generated by Django 5.1.7 on 2025-06-13 14:24
-
-from django.db import migrations, models
-
-
-class Migration(migrations.Migration):
-
-    dependencies = [
-        ('auth_form', '0016_student_assistants'),
-        ('subjects', '0002_subject_info_evaluation_subject_info_is_easy_and_more'),
-    ]
-
-    operations = [
-        migrations.AddField(
-            model_name='student',
-            name='favorite_subjects',
-            field=models.ManyToManyField(blank=True, related_name='favorited_by_students', to='subjects.subject'),
-        ),
-    ]
Index: ckend/auth_form/migrations/0018_student_disliked_subjects_student_liked_subjects.py
===================================================================
--- backend/auth_form/migrations/0018_student_disliked_subjects_student_liked_subjects.py	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,24 +1,0 @@
-# Generated by Django 5.1.7 on 2025-06-15 17:30
-
-from django.db import migrations, models
-
-
-class Migration(migrations.Migration):
-
-    dependencies = [
-        ('auth_form', '0017_student_favorite_subjects'),
-        ('subjects', '0002_subject_info_evaluation_subject_info_is_easy_and_more'),
-    ]
-
-    operations = [
-        migrations.AddField(
-            model_name='student',
-            name='disliked_subjects',
-            field=models.ManyToManyField(blank=True, related_name='disliked_subjects', to='subjects.subject'),
-        ),
-        migrations.AddField(
-            model_name='student',
-            name='liked_subjects',
-            field=models.ManyToManyField(blank=True, related_name='liked_subjects', to='subjects.subject'),
-        ),
-    ]
Index: ckend/auth_form/migrations/0019_admin.py
===================================================================
--- backend/auth_form/migrations/0019_admin.py	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,22 +1,0 @@
-# Generated by Django 5.1.7 on 2025-07-13 15:04
-
-import django.db.models.deletion
-from django.conf import settings
-from django.db import migrations, models
-
-
-class Migration(migrations.Migration):
-
-    dependencies = [
-        ('auth_form', '0018_student_disliked_subjects_student_liked_subjects'),
-    ]
-
-    operations = [
-        migrations.CreateModel(
-            name='Admin',
-            fields=[
-                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
-                ('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='admin', to=settings.AUTH_USER_MODEL)),
-            ],
-        ),
-    ]
Index: ckend/auth_form/models.py
===================================================================
--- backend/auth_form/models.py	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,100 +1,0 @@
-from django.db import models
-from django.contrib.auth.models import AbstractUser, BaseUserManager
-from django.contrib.postgres.fields import ArrayField
-
-class UserManager(BaseUserManager):
-    def create_user(self, email, password=None, full_name=None, **extra_fields):
-        if not email:
-            raise ValueError('The Email field must be set')
-        email = self.normalize_email(email)
-        extra_fields.setdefault('username', email)
-
-        user = self.model(email=email, full_name=full_name, **extra_fields)
-        user.set_password(password)
-        user.save(using=self._db)
-        return user
-    def create_superuser(self, email, password=None, full_name=None, **extra_fields):
-        extra_fields.setdefault('is_staff', True)
-        extra_fields.setdefault('is_superuser', True)
-
-        return self.create_user(email, password, full_name, **extra_fields)
-    
-class User(AbstractUser):
-    USER_TYPE_CHOICES = [
-    ('student', 'Student'),
-    ('admin', 'Admin'),
-    ('superadmin', 'Superadmin'),
-    ]
-    user_type = models.CharField(max_length=20, choices=USER_TYPE_CHOICES, default='student')
-    full_name = models.CharField(max_length=255)
-    email = models.EmailField(unique=True)
-
-    USERNAME_FIELD = 'email'
-    REQUIRED_FIELDS = []
-    
-    objects = UserManager()
-
-    def __str__(self):
-        return self.email
-    def get_user_type(self):
-        return self.user_type
-
-class Student(models.Model):
-    user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='student')
-    index = models.CharField(max_length=20, unique=True, null=True, blank=True)
-
-    STUDY_TRACK_CHOICES = [
-        ('SIIS23', 'SIIS23'),
-        ('IE23', 'IE23'),
-        ('KI23', 'KI23'),
-        ('KN23', 'KN23'),
-        ('IMB23', 'IMB23'),
-        ('PIT23', 'PIT23'),
-    ]
-    study_track = models.CharField(max_length=20, choices=STUDY_TRACK_CHOICES, null=True, blank=True)
-    has_filled_form = models.BooleanField(default=False)
-    
-    current_year = models.PositiveIntegerField(null=True)
-    study_effort = models.PositiveIntegerField(help_text="Hours per week", null=True)
-    tags = ArrayField(models.CharField(max_length=64), null=True, blank=True)
-    technologies = ArrayField(models.CharField(max_length=64), null=True, blank=True)
-    evaluation = ArrayField(models.CharField(max_length=16), null=True, blank=True)
-    professors = ArrayField(models.CharField(max_length=64), null=True, blank=True)
-    assistants = ArrayField(models.CharField(max_length=64), null=True, blank=True)
-    passed_subjects = models.ManyToManyField('subjects.subject', related_name="passed_subjects", blank=True)
-    liked_subjects = models.ManyToManyField('subjects.subject', related_name="liked_subjects", blank=True)
-    disliked_subjects = models.ManyToManyField('subjects.subject', related_name="disliked_subjects", blank=True)
-    has_extracurricular = models.BooleanField(default=False, null=True)
-    total_credits = models.PositiveIntegerField(null=True)
-    level_credits = ArrayField(models.PositiveIntegerField(null=True), null=True, blank=True)
-    favorite_subjects = models.ManyToManyField(
-        'subjects.subject', 
-        related_name="favorited_by_students", 
-        blank=True
-    )   
-    # {1: [s1, s2, s3...], 2: [....], ...}
-    passed_subjects_per_semester = models.JSONField(blank=True, null=True) 
-
-
-    def update_info(self, new_preferences):
-        self.preferred_domains = new_preferences
-        self.save()
-
-    def get_user_info(self):
-        return self
-    
-    def get_subjects_info(self):
-        return [
-            {
-                'subject_name': subject.name,
-                'subject_info': subject.subject_info._dict__,
-            }
-            for subject in self.passed_subjects.all()
-        ]
-
-
-class Admin(models.Model):
-    user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='admin')
-
-    def __str__(self):
-        return f"Admin: {self.user.email}"
Index: ckend/auth_form/permissions.py
===================================================================
--- backend/auth_form/permissions.py	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,17 +1,0 @@
-from rest_framework.permissions import BasePermission
-
-class IsStudent(BasePermission):
-    def has_perimssion(self, request, view):
-        return hasattr(request.user, 'student')
-    
-class CanSubmitForm(BasePermission):
-    def has_permission(self, request, view):
-        return hasattr(request.user, 'student') and not request.user.student.has_filled_form
-
-class CanUpdateForm(BasePermission):
-    def has_permission(self, request, view):
-        return hasattr(request.user, 'student') and request.user.student.has_filled_form
-
-class IsAdmin(BasePermission):
-    def has_permission(self, request, view):
-        return request.user.user_type in ['admin']
Index: ckend/auth_form/serializers.py
===================================================================
--- backend/auth_form/serializers.py	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,122 +1,0 @@
-import re
-from django.contrib.auth import get_user_model, authenticate
-from rest_framework import serializers
-from django.contrib.auth.password_validation import validate_password
-from rest_framework.exceptions import AuthenticationFailed
-from rest_framework_simplejwt.serializers import TokenObtainPairSerializer
-from .models import Student
-from subjects.models import Subject
-
-User = get_user_model()
-
-class UserSerializer(serializers.ModelSerializer):
-    student_index = serializers.SerializerMethodField()
-    class Meta:
-        model = User
-        fields = ('user_type', 'full_name', 'student_index')
-
-    def get_student_index(self, obj):
-        if obj.user_type == 'student':
-            return obj.student.index
-
-class CustomTokenObtainPairSerializer(TokenObtainPairSerializer):
-    def validate(self, attrs):
-        data = super().validate(attrs)
-        data['user_type'] = self.user.user_type
-        if hasattr(self.user, 'full_name'):
-            data['full_name'] = self.user.full_name
-        if hasattr(self.user, 'student'):
-            data['student_index'] = self.user.student.index
-        return data
-
-class RegistrationSerializer(serializers.ModelSerializer):
-    password = serializers.CharField(write_only=True, required=True, validators=[validate_password])
-    confirm_password = serializers.CharField(write_only=True, required=True)
-
-    class Meta:
-        model = User
-        fields = ['email', 'full_name', 'password', 'confirm_password']
-    
-    def validate(self, data):
-        errors = {}
-        if not re.match(r"^[^@]+@(students\.)?finki\.ukim\.mk$", data['email']):
-            errors['email'] = ["Email must be a valid FINKI email address"]
-        if data['password'] != data['confirm_password']:
-            errors['confirm_password'] = ["Passwords do not match"]
-        if errors:
-            raise serializers.ValidationError(errors)
-        return data
-    
-    def create(self, validated_data):
-        validated_data.pop('confirm_password')
-        if "students" in validated_data['email']:
-            user = User.objects.create_user(
-                email=validated_data['email'],
-                password=validated_data['password'],
-                full_name = validated_data['full_name'],
-                user_type='student',
-            )
-        else:
-            user = User.objects.create_superuser(
-                email=validated_data['email'],
-                password=validated_data['password'],
-                full_name=validated_data['full_name'],
-                user_type='admin',
-            )
-
-        return user
-
-class LoginSerializer(serializers.Serializer):
-    email = serializers.EmailField(required=True)
-    password = serializers.CharField(required=True, write_only=True)
-
-    def validate(self, data):
-        email = data.get('email')
-        password = data.get('password')
-
-        # AuthenticationFailed error
-        if email and password:
-            user = authenticate(username=email, password=password)
-            if user is None:
-                raise AuthenticationFailed('Invalid email or password')
-            if not user.is_active:
-                raise AuthenticationFailed('User account is disabled')
-            
-            data['user'] = user
-            return data
-        else:
-            raise serializers.ValidationError('Must include "email" and "password"')
-        
-class GoogleLoginSerializer(serializers.Serializer):
-    email = serializers.EmailField(required=True)
-
-    def validate(self, data):
-        try:
-            email = data.get('email')
-            User = get_user_model()
-            user = User.objects.get(email=email)
-            if user is None:
-                raise AuthenticationFailed('Invalid email or password')
-            if not user.is_active:
-                raise AuthenticationFailed('User account is disabled')
-            data['user'] = user
-            return data
-        except:
-            raise serializers.ValidationError('Must include email.')
-        
-
-class StudentFormSerializer(serializers.ModelSerializer):
-    passed_subjects = serializers.PrimaryKeyRelatedField(queryset=Subject.objects.all(), many=True)
-
-    class Meta:
-        model = Student
-        exclude = ['user', 'id']
-    
-    def to_representation(self, instance):
-        rep = super().to_representation(instance)
-        rep['passed_subjects'] = [subject.id for subject in instance.passed_subjects.all()]
-        rep['passed_subjects_per_semester'] = {
-            str(sem): [ subj_id for subj_id in subjects]
-            for sem, subjects in (instance.passed_subjects_per_semester or {}).items()
-        }
-        return rep
Index: ckend/auth_form/signals.py
===================================================================
--- backend/auth_form/signals.py	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,23 +1,0 @@
-from django.core.cache import cache
-from django.db.models.signals import post_save
-from django.dispatch import receiver
-from .models import User, Student
-from subjects.utils import get_recommendations_cache_key
-
-@receiver(post_save, sender=User)
-def create_student_profile(sender, instance, created, **kwargs):
-    if created and instance.user_type == 'student': 
-        Student.objects.create(user=instance)
-
-@receiver(post_save, sender=User)
-def save_student_profile(sender, instance, **kwargs):
-    if instance.user_type == 'student':
-        instance.student.save()
-
-@receiver(post_save, sender=Student)
-def invalidate_recommendations_cache(sender, instance, **kwargs):
-    for season in [0,1,2]:
-        for not_activated in [0, 1]:
-            cache_key = get_recommendations_cache_key(instance, season, not_activated)
-            if cache_key:
-                cache.delete(cache_key)
Index: ckend/auth_form/urls.py
===================================================================
--- backend/auth_form/urls.py	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,23 +1,0 @@
-from django.urls import path, include
-from .views import RegisterView, LoginView, StudentFormView, UserDetailView, LogoutView, CustomGoogleLogin
-from rest_framework_simplejwt.views import TokenObtainPairView
-from .serializers import CustomTokenObtainPairSerializer
-from rest_framework_simplejwt.views import TokenRefreshView
-import os
-
-urlpatterns = [
-    path('register/', RegisterView.as_view(), name='register'),
-    path('login/', TokenObtainPairView.as_view(serializer_class=CustomTokenObtainPairSerializer), name='token_obtain_pair'),
-    path('logout/', LogoutView.as_view(), name='auth_logout'),
-    path('refresh/', TokenRefreshView.as_view(), name='token_refresh'),
-    path('user/', UserDetailView.as_view(), name='user_detail'),
-    path('form/', StudentFormView.as_view(), name="student_form"),
-]
-
-if os.getenv("USE_OAUTH", "false").lower() == "true":
-    urlpatterns += [
-        path('google/login/', CustomGoogleLogin.as_view(), name='google_login'),
-        path('', include('dj_rest_auth.urls')),
-        path('registration/', include('dj_rest_auth.registration.urls')), 
-        path('google/', include('allauth.socialaccount.urls')),
-    ] 
Index: ckend/auth_form/views.py
===================================================================
--- backend/auth_form/views.py	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,131 +1,0 @@
-from auth_form.models import Student
-from auth_form.serializers import RegistrationSerializer, LoginSerializer, StudentFormSerializer, UserSerializer
-from rest_framework import status
-from rest_framework.views import APIView
-from rest_framework.response import Response
-from rest_framework.permissions import IsAuthenticated, AllowAny
-from rest_framework_simplejwt.tokens import RefreshToken
-from auth_form.permissions import IsStudent, CanSubmitForm, CanUpdateForm
-from dj_rest_auth.registration.views import SocialLoginView
-from allauth.socialaccount.providers.google.views import GoogleOAuth2Adapter
-
-
-class RegisterView(APIView):
-    def post(self, request, *args, **kwargs):
-        serializer = RegistrationSerializer(data = request.data)
-
-        if serializer.is_valid():
-            user = serializer.save()
-            refresh = RefreshToken.for_user(user)
-
-            return Response({
-                'refresh': str(refresh),
-                'access': str(refresh.access_token),
-                'message': 'User registered successfully',
-                'user': serializer.data
-            }, status=status.HTTP_201_CREATED)
-
-        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
-
-class LoginView(APIView):
-    def post(self, request):
-        serializer = LoginSerializer(data = request.data)
-        # Another way of doing error checking istead of .is_valid()
-        serializer.is_valid(raise_exception=True)
-        user = serializer.validated_data['user']
-
-        refresh = RefreshToken.for_user(user)
-        return Response({
-            'refresh': str(refresh),
-            'access': str(refresh.access_token),
-            'user_id': user.id,
-            'user_type': user.user_type,
-        }, status=status.HTTP_200_OK)
-
-class LogoutView(APIView):
-    permission_classes = (AllowAny,)
-
-    def post(self, request):
-        try:
-            refresh_token = request.data["refresh"]
-            token = RefreshToken(refresh_token)
-            token.blacklist()
-
-            # 205 Reset Content is a good choice for a successful logout
-            # as it tells the client to reset its view.
-            return Response(status=status.HTTP_205_RESET_CONTENT)
-        except Exception:
-            return Response(status=status.HTTP_400_BAD_REQUEST)
-        
-class StudentFormView(APIView):
-    def get_permissions(self):
-        if self.request.method=='POST':
-            return [IsAuthenticated(), CanSubmitForm(), IsStudent()]
-        elif self.request.method == 'PATCH':
-            return [IsAuthenticated(), IsStudent(), CanUpdateForm()]
-        return [IsAuthenticated(), IsStudent()]
-    
-    def get(self, request):
-        student = request.user.student
-        serializer = StudentFormSerializer(student)
-        return Response(serializer.data)
-    
-    def post(self, request):
-        if hasattr(request.user, 'student') and request.user.student.has_filled_form:
-            return Response({"detail": "Student profile already exists."}, status=status.HTTP_400_BAD_REQUEST)
-        
-        index_match = Student.objects.filter(index=request.data['index'])
-        
-        if index_match.exists():
-           return Response({'message': "Постои студент со тој индекс."}, status=status.HTTP_400_BAD_REQUEST)
-        
-        serializer = StudentFormSerializer(instance=request.user.student, data=request.data)
-
-        if serializer.is_valid():
-            serializer.save()
-            request.user.student.has_filled_form = True
-            request.user.student.save()
-            return Response(serializer.data, status=status.HTTP_201_CREATED)
-
-        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
-    
-    def patch(self, request):
-        if not hasattr(request.user, 'student'):
-            return Response({"detail": "No student profile found."}, status=status.HTTP_404_NOT_FOUND)
-        
-        index = request.data['index']
-        index_match = Student.objects.filter(index=index).exclude(pk=request.user.student.pk)
-        if index_match.exists():
-            return Response({'message': "Постои студент со тој индекс."}, status=status.HTTP_400_BAD_REQUEST)
-        
-        serializer = StudentFormSerializer(instance=request.user.student, data=request.data)
-
-        if serializer.is_valid():
-            serializer.save()
-            return Response(serializer.data, status=status.HTTP_200_OK)
-        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
-    
-    
-class UserDetailView(APIView):
-    permission_classes = (IsAuthenticated,)
-
-    def get(self, request):
-        serializer = UserSerializer(request.user)
-        return Response(serializer.data)
-
-
-class CustomGoogleLogin(SocialLoginView):
-    adapter_class = GoogleOAuth2Adapter
-
-    def get_response(self):
-        refresh = RefreshToken.for_user(self.user)
-
-        return Response({
-            'refresh': str(refresh),
-            'access': str(refresh.access_token),
-            'full_name': self.user.full_name,
-            'user_type': self.user.user_type,
-        }, status=status.HTTP_200_OK)
-
-
-
Index: ckend/backend/backends.py
===================================================================
--- backend/backend/backends.py	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,15 +1,0 @@
-from django.contrib.auth.backends import ModelBackend
-from django.contrib.auth import get_user_model
-
-class EmailBackend(ModelBackend):
-    """
-    Custom authentication backend to authenticate using email instead of username.
-    """
-    def authenticate(self, request, username=None, password=None, **kwargs):
-        try:
-            # Try to get the user based on the provided email (username is set to email)
-            user = get_user_model().objects.get(email=username)
-            if user.check_password(password):  # Check if the password is correct
-                return user  # If valid, return the user
-        except get_user_model().DoesNotExist:
-            return None  # Return None if user doesn't exist
Index: backend/backend/settings.py
===================================================================
--- backend/backend/settings.py	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ backend/backend/settings.py	(revision 516baa4eda127c8c3a0f761c69f90c8c5ff421e3)
@@ -1,6 +1,15 @@
-from datetime import timedelta
+"""
+Django settings for backend project.
+
+Generated by 'django-admin startproject' using Django 5.1.7.
+
+For more information on this file, see
+https://docs.djangoproject.com/en/5.1/topics/settings/
+
+For the full list of settings and their values, see
+https://docs.djangoproject.com/en/5.1/ref/settings/
+"""
+
 from pathlib import Path
-from decouple import config
-import os
 
 # Build paths inside the project like this: BASE_DIR / 'subdir'.
@@ -30,35 +39,6 @@
     'django.contrib.messages',
     'django.contrib.staticfiles',
-    'subjects',
-    'rest_framework',
-    'rest_framework_simplejwt',
-    'rest_framework_simplejwt.token_blacklist',
-    'rest_framework.authtoken',
-    'dj_rest_auth',
-    'dj_rest_auth.registration',
-    'allauth',
-    'allauth.account',
-    'allauth.socialaccount',
-    'allauth.socialaccount.providers.google',
-    'django.contrib.sites',
-    'auth_form',
+    'app'
 ]
-
-REST_FRAMEWORK = {
-    'DEFAULT_AUTHENTICATION_CLASSES': [
-        'rest_framework_simplejwt.authentication.JWTAuthentication'
-    ],
-    'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.LimitOffsetPagination',
-    'PAGE_SIZE': 10
-}
-
-SIMPLE_JWT = {
-    'ACCESS_TOKEN_LIFETIME': timedelta(minutes=60),
-    'REFRESH_TOKEN_LIFETIME': timedelta(days=7),
-    'ROTATE_REFRESH_TOKENS': True,
-    'BLACKLIST_AFTER_ROTATION': True,
-    'UPDATE_LAST_LOGIN': False,
-    'AUTH_HEADER_TYPES': ('Bearer',),
-}
 
 MIDDLEWARE = [
@@ -67,5 +47,4 @@
     'corsheaders.middleware.CorsMiddleware',
     'django.middleware.common.CommonMiddleware',
-    'allauth.account.middleware.AccountMiddleware',
     'django.middleware.csrf.CsrfViewMiddleware',
     'django.contrib.auth.middleware.AuthenticationMiddleware',
@@ -100,19 +79,9 @@
 DATABASES = {
     'default': {
-        'ENGINE': 'django.db.backends.postgresql',
-        'NAME': config('DB_NAME'),
-        'USER': config('DB_USER'),
-        'PASSWORD': config('DB_PASS'),
-        'HOST': config('DB_HOST'),
-        'PORT': config('DB_PORT'),
+        'ENGINE': 'django.db.backends.sqlite3',
+        'NAME': BASE_DIR / 'db.sqlite3',
     }
 }
 
-CACHES = {
-    'default': {
-        'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
-        'LOCATION': 'recommendations_cache',
-    }
-}
 
 # Password validation
@@ -161,25 +130,2 @@
 
 DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
-AUTH_USER_MODEL = 'auth_form.User'
-
-AUTHENTICATION_BACKENDS = [
-    'backend.backends.EmailBackend',  # custom backend to authenticate using email
-    'django.contrib.auth.backends.ModelBackend',  # default backend
-]
-
-SITE_ID = 1
-if os.getenv("USE_OAUTH", "false").lower() == "true":
-    SOCIALACCOUNT_ADAPTER = "auth_form.adapters.CustomSocialAccountAdapter"
-    ACCOUNT_LOGIN_METHODS = {'email'}
-    ACCOUNT_SIGNUP_FIELDS = ["email*", "password1*"]
-
-    SOCIALACCOUNT_PROVIDERS = {
-        'google': {
-            'APP': {
-                'client_id': config('GOOGLE_CLIENT_ID'),
-                'secret': config('GOOGLE_CLIENT_SECRET'),
-                'key': ''
-            },
-            'SCOPE': ['profile', 'email'],
-        }
-    }
Index: backend/backend/urls.py
===================================================================
--- backend/backend/urls.py	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ backend/backend/urls.py	(revision 516baa4eda127c8c3a0f761c69f90c8c5ff421e3)
@@ -1,10 +1,25 @@
+"""
+URL configuration for backend project.
+
+The `urlpatterns` list routes URLs to views. For more information please see:
+    https://docs.djangoproject.com/en/5.1/topics/http/urls/
+Examples:
+Function views
+    1. Add an import:  from my_app import views
+    2. Add a URL to urlpatterns:  path('', views.home, name='home')
+Class-based views
+    1. Add an import:  from other_app.views import Home
+    2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
+Including another URLconf
+    1. Import the include() function: from django.urls import include, path
+    2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
+"""
 from django.contrib import admin
-from django.urls import path, include
-from subjects.views import index
+from django.urls import path
+from app.views import index,test_api
 
 urlpatterns = [
     path('admin/', admin.site.urls),
-    path('auth/', include('auth_form.urls')),
-    path('subjects/', include('subjects.urls')),
+    path('api/', test_api),
     path('', index),
 ]
Index: backend/requirements.txt
===================================================================
--- backend/requirements.txt	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ backend/requirements.txt	(revision 516baa4eda127c8c3a0f761c69f90c8c5ff421e3)
@@ -4,13 +4,5 @@
 django-vite==3.1.0
 djangorestframework==3.15.2
-djangorestframework-simplejwt==5.5.0
 django-cors-headers==4.7.0
 pip==25.0.1
 pipreqs==0.4.13
-psycopg-binary==3.2.6
-python-decouple>=3.8
-numpy>=2.2.5
-psycopg2-binary>=2.9.10
-dj-rest-auth>=7.0.1
-django-allauth==65.3.0
-cryptography>=45.0.4
Index: ckend/subjects/admin.py
===================================================================
--- backend/subjects/admin.py	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,5 +1,0 @@
-from django.contrib import admin
-from .models import Subject, Subject_Info
-
-admin.site.register(Subject)
-admin.site.register(Subject_Info)
Index: ckend/subjects/apps.py
===================================================================
--- backend/subjects/apps.py	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,6 +1,0 @@
-from django.apps import AppConfig
-
-
-class AppConfig(AppConfig):
-    default_auto_field = 'django.db.models.BigAutoField'
-    name = 'subjects'
Index: ckend/subjects/consts.py
===================================================================
--- backend/subjects/consts.py	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,15 +1,0 @@
-BIAS_SUBJECT_HAS_ONE = 0.75
-BIAS_STUDENT_HAS_ONE = 0.9
-
-WEIGHTS = {
-    "professors": 0.055,
-    "assistants": 0.055,
-    "technologies": 0.075,
-    "tags": 0.35,
-    "evaluation": 0.15, 
-    "effort": 0.3,
-    "activated": 0.01,
-    "participant_score": 0.01,
-}
-
-NUMBER_OF_SUGGESTIONS = 6
Index: ckend/subjects/management/README.md
===================================================================
--- backend/subjects/management/README.md	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,42 +1,0 @@
-# Guide
-
-## Data
-
-- `abstracts.json` - JSON containing short descriptions for each subject
-- `additional_info.json` - JSON containing tags, technologies, evaluation techniques and whether a subject is easy or not for each subject.
-- `courses.json` - array containing the names of all subjects.
-- `elective.json` - JSON containing arrays of all eligible summer and winter subjects for all programs.
-- `formatted_prereqs.json` - JSON containing subject prerequisites as JSON objects, instead of strings.
-- `information.json` - array with the code, name, level and link for all subjects.
-- `mandatory.json` - JSON containing arrays of all mandatory subjects for all programs, organized by semester.
-- `participants.json` - array listing all courses with their number of participants.
-- `prerequisites.json` - array of subject prerequisites (as strings).
-- `professors.json` - array of all subjects with their respective professors and assistants.
-- `reviews.json` - array of existing reviews used to initially fill the db.
-- `subject_details.json` - JSON containing all subjects and relevant information about them, aggregated from the other data files. used for filling the db. If you want to modify some of the data before filling the database it is preferred to do so in the other files and then rerun the respective command for overwriting this file, instead of changing this file directly.
-- `subjects_by_program.json` - JSON listing all subjects and the programs for which they are mandatory.
-- `subjects_vector.json` - JSON representing the encoded vectors for all subjects, where 1 represents a value that is present.
-- `tag_graph.json` - JSON where each key is the index of a tag and each value is its respective adjacency list. Each item in the list is the index of the neighbor and the weight of that particular edge.
-- `vocabulary.json` - JSON where each key is a specific field and the value is a list of all distinct values in the db for that specific field.
-
-## Commands
-
-the template for running commands is:
-`python3 manage.py <filename>`
-
-> Make sure you exclude the .py extension from the filename
-
-### Scrapers
-
-- `abstract.py` - scrapes the FINKI website for short descriptions for each subject
-- `elective.py` - scrapes the FINKI website for all elective subjects per program and writes the results to `data/elective.json`.
-- `mandatory.py` - scrapes the FINKI site for all mandatory subjects per program and writes the results to `data/mandatory.json`.
-
-### Scripts
-
-- `fill_db.py` - reads data from subject details and reviews, then populates the db. useful for initial set up. for overwriting the existing data in the db run the command with --reset flag.
-- `format_prereqs.py` - reads data from prerequisites.json, and writes the formatted output to `data/formatted_prereqs.json`
-- `subject_details.py` - aggregates data from multiple JSON files, and writes the combined information in `/data/subject_details.json`.
-- `subjects_by_program.py` - reads data from mandatory.json, and writes the relevant information to `data/subjects_by_program.json`.
-- `subjects_vector.py` - encodes the values for each subject into vectors of 0s and 1s and writes to `data/subjects_vector.json`.
-- `tag_graph.py` - creates a directed, weighted graph useful for mapping all dependencies between tags and their respective weights. writes to `data/tag_graph.json`
Index: ckend/subjects/management/commands/abstract.py
===================================================================
--- backend/subjects/management/commands/abstract.py	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,46 +1,0 @@
-from types import NoneType
-from bs4 import BeautifulSoup
-from pathlib import Path
-import requests
-import json
-from django.core.management.base import BaseCommand
-
-class Command(BaseCommand):
-    help = "Scrape abstracts for all subjects from FINKI page"
-    
-    def handle(self, *args, **options):
-        base_dir = Path(__file__).resolve().parent.parent
-        information_file_path = base_dir / 'data' / 'information.json'
-        output_file_path = base_dir / 'data' / 'abstracts.json'
-        try:
-            with open(information_file_path, 'r', encoding='utf-8') as f:
-                subject_information = json.load(f)
-                subject_links = [s['link'] for s in subject_information]
-                subject_names = [s['course'] for s in subject_information]
-        except FileNotFoundError:
-            self.stdout.write(self.style.ERROR(f"Could not find file at {information_file_path}"))
-            exit(1)
-
-        abstracts = {}
-
-        for link, name in zip(subject_links, subject_names):
-            response = requests.get(link)
-            program_soup = BeautifulSoup(response.content, 'html.parser')
-            self.stdout.write(f"Scraping {name}...")
-            try:
-                abstract = (
-                    program_soup.find('table')
-                    .find_all('tr')[8]
-                    .find_all('p')[2]
-                    .find('span')
-                    .text.strip())
-            except (AttributeError, IndexError):
-                self.stdout.write(self.style.WARNING(f"Could't find abstract for {name}"))
-                
-            
-            abstracts[name] = abstract
-            self.stdout.write(self.style.SUCCESS(f"Scraped {name}."))
-
-        with open(output_file_path, "w", encoding='utf-8') as f:
-            json.dump(abstracts, f, ensure_ascii=False, indent=4)
-            self.stdout.write(self.style.SUCCESS(f"Finished scraping. Data successfully stored in {output_file_path}"))
Index: ckend/subjects/management/commands/elective.py
===================================================================
--- backend/subjects/management/commands/elective.py	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,92 +1,0 @@
-import requests
-from bs4 import BeautifulSoup
-import json
-from django.core.management.base import BaseCommand
-from pathlib import Path
-
-class Command(BaseCommand):
-    help = "Scrape elective subjects for all study tracks from FINKI page"
-
-    def handle(self, *args, **options):
-        base_dir = Path(__file__).resolve().parent.parent
-        output_file_path = base_dir / 'data' / 'elective.json'
-        
-        programs_dict = {}
-
-        base_url = "https://www.finki.ukim.mk"
-        programs = [
-            "SIIS23",
-            "IMB23",
-            "PIT23",
-            "IE23",
-            "KI23",
-            "KN23",
-        ]
-
-        response = requests.get(base_url)
-        soup = BeautifulSoup(response.content, 'html.parser')
-
-        program_links = [f"/program/{program}/mk" for program in programs]
-
-        for program_link in program_links:
-            program_url = base_url + program_link
-            program_response = requests.get(program_url)
-            program_soup = BeautifulSoup(program_response.content, 'html.parser')
-            
-            program_name = program_link.split("/")[2]
-
-            self.stdout.write(f"Scraping {program_name}...")
-            
-            semesters_dict = {}
-            table_index = 1
-            
-            tables = program_soup.find_all('table')
-
-            selected_tables = tables[8:]
-            semesters_dict['S'] = []
-            semesters_dict['W'] = []
-            
-            for table in selected_tables:
-                subjects = {}
-                first_row = table.find_all('tr')[1]
-                code_td = first_row.find_all('td')[0].text.strip() if first_row else ''
-                if len(code_td) >= 6:
-                    is_summer = code_td[5].upper() == 'S'
-                for td in table.find_all('td'):
-                    anchor = td.find('a')                
-                    if anchor:
-                        subject_text = anchor.text.strip()
-                        if subject_text:
-                            # :)
-                            if subject_text == "F23L2S026 Маркетинг": subject_text = "Маркетинг"
-                            if subject_text == "F23L1S066 Основи на сајбер безбедноста": subject_text = "Основи на сајбер безбедноста"
-                            if subject_text == "Автоматизирање на процеси во  машинско учење": subject_text = "Автоматизирање на процеси во машинско учење"
-                            subjects[subject_text] = {}
-                            subjects[subject_text]["subject"] = subject_text
-                    else:
-                        try:
-                            semester = int(td.text)
-                            subjects[subject_text]["semester"] = semester
-                            print(f"{subject_text} se slusa vo {semester} semestar")
-                        except ValueError:
-                            pass
-                    
-                if subjects:
-                    semester = 'S' if is_summer else 'W'
-                    if not semesters_dict[semester]: semesters_dict[semester] = {}
-                    semesters_dict[semester].update(subjects)
-
-                self.stdout.write(f"{round(table_index/5 * 100)}% scraped...")
-                table_index += 1
-
-            if semesters_dict:
-                if program_name == 'SIIS23':
-                    del semesters_dict['W']['Веројатност и статистика']  
-                programs_dict[program_name] = semesters_dict
-            
-            self.stdout.write(self.style.SUCCESS(f"{program_name} finished scraping."))
-
-        with open(output_file_path, 'w', encoding='utf-8') as f:
-            json.dump(programs_dict, f, ensure_ascii=False, indent=4)
-            self.stdout.write(self.style.SUCCESS(f"Scraping complete. Data saved to {output_file_path}"))
-
Index: ckend/subjects/management/commands/fill_db.py
===================================================================
--- backend/subjects/management/commands/fill_db.py	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,153 +1,0 @@
-import json
-from django.core.management.base import BaseCommand
-from subjects.serializers import EvaluationReviewSerializer, OtherReviewSerializer
-from subjects.models import Review, Subject, Subject_Info
-from pathlib import Path
-from auth_form.models import User, Student
-
-class Command(BaseCommand):
-    help = "Fill db with subjects and subject info from JSON"
-
-    def add_arguments(self, parser):
-        parser.add_argument(
-            '--reset',
-            action='store_true',
-            help='Delete existing Subjects and Subject_Info before filling.'
-        )
-
-    def create_subject(self, subject_details):
-        subjects = []
-        for item in subject_details.values():
-            # only get the 23 accreditation code
-            code = item["code"] if "," not in item["code"] else item["code"].split(",")[1].strip()
-            subject = Subject(
-                name=item["subject"],
-                code=code,
-                abstract=item.get("abstract")
-            )
-            subjects.append(subject)
-
-        created_subjects = Subject.objects.bulk_create(subjects)
-        return created_subjects
-
-    def create_subject_info(self, created_subjects, subject_details):
-        name_to_id = {subj.name.lower(): subj.id for subj in created_subjects}
-        subject_infos = []
-        for db_subject, item in zip(created_subjects, subject_details.values()):
-            prereq = item.get("prerequisite", {})
-            if "subjects" in prereq:
-                subjects_list = prereq["subjects"]
-                subjects_id_list = []
-                for subject_name in subjects_list:
-                    subject_id = name_to_id.get(subject_name.lower())
-                    if subject_id is not None:
-                        subjects_id_list.append(subject_id)
-                    else:
-                        self.stdout.write(self.style.WARNING(f"Warning: Subject {subject_name} not found in DB"))
-            
-                prereq = {"subjects": subjects_id_list}
-                                        
-            info = Subject_Info(
-                subject=db_subject,
-                level=item["level"],
-                prerequisite=prereq,
-                activated=item["activated"],
-                participants=item.get("participants", [0, 0, 0]),
-                mandatory=item["mandatory"],
-                mandatory_for=item.get("mandatoryFor", []),
-                semester=item["semester"],
-                season=item["season"],
-                elective_for=item.get("electiveFor", []),
-                professors=item.get("professors", []),
-                assistants=item.get("assistants", []),
-                tags=item.get("tags", []),
-                technologies=item.get("technologies", []),
-                evaluation=item.get("evaluation", []),
-                is_easy=item.get("isEasy", False),
-            )
-            subject_infos.append(info)
-    
-        Subject_Info.objects.bulk_create(subject_infos)
-
-    def create_review(self, review_data, student):
-        review_type = review_data.get('type')
-        subject_name = review_data.get('subject')
-
-        if not review_type or not subject_name:
-            print(f"Skipping review due to missing type or subject: {review_data}")
-            return
-
-        try:
-            subject = Subject.objects.get(name=subject_name)
-        except Subject.DoesNotExist:
-            print(f"Skipping review because subject '{subject_name}' not found.")
-            return
-        review = Review.objects.create(
-            student=student,
-            subject=subject,
-            review_type=review_type,
-        )
-
-        context = {'review': review}
-        if review_type == "evaluation":
-            serializer = EvaluationReviewSerializer(data=review_data, context=context)
-        elif review_type == "other":
-            serializer = OtherReviewSerializer(data=review_data, context=context)
-        else:
-            review.delete()
-            self.stdout.write(self.style.WARNING(f"Unknown review type: {review_type}"))
-            return
-
-        if serializer.is_valid():
-            self.stdout.write(self.style.SUCCESS(f"Successfully added review for {subject_name}"))
-            serializer.save()
-        else:
-            self.stdout.write(self.style.WARNING(f"Error saving review for {subject_name}: {serializer.errors}"))
-            review.delete()
-
-    def handle(self, *args, **options):
-        reset_db = options['reset']
-
-        if reset_db:
-            self.stdout.write("Reset flag enabled: Clearing existing database entries...")
-            Review.objects.all().delete()
-            Subject_Info.objects.all().delete()
-            Subject.objects.all().delete()
-
-        base_dir = Path(__file__).resolve().parent.parent
-        file_path = base_dir / 'data' / 'subject_details.json'
-        reviews_file_path = base_dir / 'data' / 'reviews.json'
-        
-        with open(file_path, 'r', encoding='utf-8') as f:
-            subject_details = json.load(f)
-        
-        with open(reviews_file_path, 'r', encoding='utf-8') as f:
-            all_reviews = json.load(f)
-
-        created_subjects = self.create_subject(subject_details)
-
-        self.create_subject_info(created_subjects, subject_details)
-        
-        self.stdout.write(self.style.SUCCESS('Subjects and SubjectInfo filled successfully.'))
-
-        # dummy student for reviews
-        user, _ = User.objects.get_or_create(
-            username='teststudent',
-            defaults={
-                'email': 'teststudent@students.finki.ukim.mk',
-                'first_name': 'Тест',
-                'last_name': 'Студент',
-                'user_type': 'student'
-            }
-        )
-        student, _ = Student.objects.get_or_create(user=user)
-        if student.index is None:
-            student.index = '230000'
-            student.save()
-
-        self.stdout.write(self.style.SUCCESS(f'Using student "{student.index}" for reviews.'))
-
-        for review_data in all_reviews:
-            self.create_review(review_data, student)
-        
-        self.stdout.write(self.style.SUCCESS('Reviews filled successfully.'))
Index: ckend/subjects/management/commands/format_prereqs.py
===================================================================
--- backend/subjects/management/commands/format_prereqs.py	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,79 +1,0 @@
-import json
-from pathlib import Path
-from django.core.management.base import BaseCommand
-
-class Command(BaseCommand):
-    help = "Format subject prerequisites from strings to JSON"
-
-    def handle(self, *args, **options):
-        base_dir = Path(__file__).resolve().parent.parent
-        input_path = base_dir / 'data' / 'prerequisites.json'
-        output_path = base_dir / 'data' / 'formatted_prereqs.json'
-
-        try:
-            with open(input_path, "r", encoding='utf-8') as f:
-                prerequisite_data = json.load(f)
-        except FileNotFoundError:
-            self.stdout.write(self.style.ERROR(f"Could not find file at {input_path}"))
-            exit(1)
-
-        formatted_prereqs = {}
-        # map of all misspelled subject names on the website :|
-        misspelled = {
-            "дсикретна математика": "дискретна математика",
-            "бизнис и статистика": "бизнис статистика",
-            "основи на теорија на информации": "основи на теоријата на информации",
-            "основи на роботика": "основи на роботиката",
-            "комјутерски мрежи": "компјутерски мрежи",
-            "примена на алгоритми и податочни стуктури": "Примена на алгоритми и податочни структури",
-            "примена на алгоритни и податочни структури": "примена на алгоритми и податочни структури",
-            "анализа на софтверски барања": "анализа на софтверските барања",
-        }
-
-        arr = []
-        for entry in prerequisite_data:
-            _, val, _, _ = entry.values()
-            if val in arr:
-                self.stdout.write(self.style.ERROR(f"${val} is a duplicate value. Remove it before you rerun this script"))
-                exit(1)
-            arr.append(val)
-        self.stdout.write(self.style.SUCCESS("No duplicate values."))
-        
-
-        for entry in prerequisite_data:
-            code, subject, prereq, _ = entry.values()
-            # have to convert everything to lowercase, to avoid inconsistencies in data
-            formatted_prereqs[subject] = {}
-            prereq = prereq.lower()
-            if prereq == "": 
-                formatted_prereqs[subject]["prerequisite"] = {}
-                continue
-            a = ""
-            if "|" in prereq:
-                # only look at 2023 accreditation
-                prereq = prereq.split(" | ")[1].split("(2023")[0].strip()
-            
-            if "кредити" in prereq:
-                num_credits = int(prereq.split(" кредити")[0].strip())
-                formatted_prereqs[subject]["prerequisite"] = {"credits": num_credits} 
-                # no subject has prerequsite in format: 
-                # N credits OR subject(s)
-                # so it is okay to continue here
-                continue
-            
-            if " или " in prereq:
-                new_subjects = []
-                for name in prereq.split(" или "):
-                    new_subjects.append(name if name not in misspelled else misspelled[name])
-
-                formatted_prereqs[subject]["prerequisite"] = {"subjects": new_subjects }
-                continue
-            
-            formatted_prereqs[subject]["prerequisite"] = {"subjects": [prereq if prereq not in misspelled else misspelled[prereq]]}
-
-        with open(output_path, 'w', encoding='utf-8') as f:
-            json.dump(formatted_prereqs, f, ensure_ascii=False ,indent=4)
-            self.stdout.write(self.style.SUCCESS(f"Data successfully stored in {output_path}."))
-
-
-            
Index: ckend/subjects/management/commands/mandatory.py
===================================================================
--- backend/subjects/management/commands/mandatory.py	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,72 +1,0 @@
-import requests
-from bs4 import BeautifulSoup
-import json
-from pathlib import Path
-from django.core.management.base import BaseCommand
-
-class Command(BaseCommand):
-    help = "Scrape elective subjects for all programs from FINKI page"
-
-    def handle(self, *args, **options):
-        base_dir = Path(__file__).resolve().parent.parent
-        output_file_path = base_dir / 'data' / 'mandatory.json'
-
-        programs_dict = {}
-
-        base_url = "https://www.finki.ukim.mk"
-        programs = [
-            "SIIS23",
-            "IMB23",
-            "PIT23",
-            "IE23",
-            "KI23",
-            "KN23",
-        ]
-
-        response = requests.get(base_url)
-        soup = BeautifulSoup(response.content, 'html.parser')
-
-        program_links = [f"/program/{program}/mk" for program in programs]
-
-        for program_link in program_links:
-            program_url = base_url + program_link
-            program_response = requests.get(program_url)
-            program_soup = BeautifulSoup(program_response.content, 'html.parser')
-            
-            program_name = program_link.split("/")[2]
-
-            self.stdout.write(f"Scraping {program_name}...")
-            
-            semesters_dict = {}
-            table_index = 1
-            
-            tables = program_soup.find_all('table')
-            
-            # ignore tables with elective subjects
-            for table in tables[:8]:
-                subjects = []
-                for td in table.find_all('td'):
-                    anchor = td.find('a')
-                    if anchor:
-                        subject_text = anchor.text.strip()
-                        if subject_text:  # Only add non-empty subjects
-                            # not my proudest moment
-                            if subject_text == "F23L2S026 Маркетинг": subject_text = "Маркетинг"
-                            if subject_text == "F23L1S066 Основи на сајбер безбедноста": subject_text = "Основи на сајбер безбедноста"
-
-                            subjects.append(subject_text)
-                
-                if subjects:  
-                    semesters_dict[str(table_index)] = subjects
-                    self.stdout.write(f"Semester {table_index} scraped...")
-                    table_index += 1
-                    
-            
-            if semesters_dict:  
-                programs_dict[program_name] = semesters_dict
-
-            self.stdout.write(self.style.SUCCESS(f"{program_name} finished scraping."))
-
-        with open(output_file_path, 'w', encoding='utf-8') as f:
-            json.dump(programs_dict, f, ensure_ascii=False, indent=4)
-            self.stdout.write(self.style.SUCCESS(f"Scraping complete. Data saved to {output_file_path}"))
Index: ckend/subjects/management/commands/subject_details.py
===================================================================
--- backend/subjects/management/commands/subject_details.py	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,201 +1,0 @@
-import json
-from pathlib import Path
-from django.core.management.base import BaseCommand
-
-class Command(BaseCommand):
-    help = "Aggregates all relevant data from multiple JSON files, and stores it in subject_details.json which could later be used to fill the database."
-
-    def add_arguments(self, parser):
-        parser.add_argument(
-            '--warnings',
-            action='store_true',
-            help='Print warnings when a subject is not in the dataset or there is a casting error.'
-
-        )
-
-        parser.add_argument(
-            '--flags',
-            action='store_true',
-            help='Running with flags stores each case when there is an exception in the staff data as a flag value, and also prints it in the terminal.'
-
-        )
-
-    def handle(self, *args, **options):
-        with_warnings = options['warnings']
-        with_flags = options['flags']
-
-        ALL_PROGRAMS = ["SIIS23", "IMB23", "PIT23", "IE23", "KI23", "KN23"]
-        WINTER = "W"
-        SUMMER = "S"
-
-        subject_data = {} # the holy grail, everything goes here
-
-        base_dir = Path(__file__).resolve().parent.parent
-        information_file_path = base_dir / 'data' / 'information.json' # code, subject name, level
-        participants_file_path = base_dir / 'data' / 'participants.json' # participant counts
-        subjects_by_program_file_path = base_dir / 'data' / 'subjects_by_program.json' # which subjects are mandatory and in which semester
-        professors_file_path = base_dir / 'data' / 'professors.json' # teaching staff for each subject'
-        elective_file_path = base_dir / 'data' / 'elective.json' # which elective subjects can a certain program choose from
-        abstract_file_path = base_dir / 'data' / 'abstracts.json' # short descriptions for all subjects
-        formatted_prereqs_file_path = base_dir / 'data' / 'formatted_prereqs.json' # prerequisites for each subject
-        additional_info_file_path = base_dir / 'data' / 'additional_info.json' # technologies and evaluation techniques for each subject
-
-        output_path = base_dir / 'data' / 'subject_details.json'
-
-        try:
-            with open(information_file_path, 'r', encoding='utf-8') as f:
-                information_data = json.load(f)
-            with open(participants_file_path, 'r', encoding='utf-8') as f:
-                participants_data = json.load(f)
-            with open(subjects_by_program_file_path, 'r', encoding='utf-8') as f:
-                subjects_by_program_data = json.load(f)
-            with open(professors_file_path, 'r', encoding='utf-8') as f:
-                professors_data = json.load(f)
-            with open(elective_file_path, 'r', encoding='utf-8') as f:
-                elective_data = json.load(f)
-            with open(abstract_file_path, 'r', encoding='utf-8') as f:
-                abstract_data = json.load(f)
-            with open(formatted_prereqs_file_path, 'r', encoding='utf-8') as f:
-                formatted_prereq_data = json.load(f)
-            with open(additional_info_file_path, 'r', encoding='utf-8') as f:
-                additional_info_data = json.load(f)
-        except FileNotFoundError as e:
-            self.stdout.write(self.style.ERROR(f"Could not find file: {e.filename}"))
-            exit(1)
-        
-        self.stdout.write(self.style.SUCCESS("Opened all files..."))
-        for entry in information_data:
-            code, course, level, _ = entry.values()
-            try:
-                semester = int(level)
-            except ValueError:
-                if with_warnings:
-                    self.stdout.write(self.style.WARNING(f"Warning: Semester {level} could not be converted to integer and is being skipped"))
-                continue
-
-            subject_data[course] = {
-                "subject": course,
-                "code": code,
-                "level": level,
-                "abstract": abstract_data[course]
-            }
-        self.stdout.write(self.style.SUCCESS(f"Information data collected..."))
-        for course in formatted_prereq_data:
-            prereqs  = formatted_prereq_data[course].values()
-            if course in subject_data:
-                subject_data[course]["prerequisite"] = prereqs
-            else:
-                if with_warnings:
-                    self.stdout.write(self.style.WARNING(f"Course {course} is not in subject data"))
-        self.stdout.write(self.style.SUCCESS("Prerequisite data collected..."))
-        for i, entry in enumerate(participants_data):
-            _, *semesters = entry.keys()
-            course, *semester_data = entry.values()
-            if course in subject_data:
-                try:
-                    # course is not activated if participant count is 0
-                    # potentially check if the condition should change to < 20 or similar
-                    subject_data[course]['activated'] = False if int(semester_data[0]) == 0 else True
-                except ValueError:
-                    subject_data[course]['activated'] = 'ERROR'
-                    self.stdout.write(self.style.WARNING(f"Error: Course {course} has a value that is not an integer"))
-                
-                # gets last 3 semesters, adjust for less/more
-                subject_data[course]["participants"] = [participants_data[i][semester] for semester in semesters[:3]]
-                # for semester in semesters[:3]: 
-                    # subject_data[course][semester] = participants_data[i][semester]
-            else:
-                if with_warnings:
-                    self.stdout.write(self.style.WARNING(f"Course {course} is not in subject data"))
-        self.stdout.write(self.style.SUCCESS("Participant data collected..."))
-
-        # for each subject in the records, label which programs that subject is mandatory for
-        # additionally label which semester that subject is (preffered to be) taken, and whether it is a summer or a winter subject
-        for subject in subject_data:
-
-            if subject in subjects_by_program_data:
-                subject_data[subject]['mandatory'] = True
-                subject_data[subject]['mandatoryFor'] = subjects_by_program_data[subject]['programs']
-                semester = subjects_by_program_data[subject]['semester']
-                subject_data[subject]['semester'] = semester
-                subject_data[subject]['season'] = WINTER if semester % 2 != 0 else SUMMER
-
-            else:
-                subject_data[subject]['mandatory'] = False
-                subject_data[subject]['mandatoryFor'] = []
-
-            subject_data[subject]['electiveFor'] = []
-            # check if a subject is elective only for those programs where it is not mandatory
-            # NOTE: some subjects like 'Математика 1' are mandatory for some programs, but cannot be chosen by others
-            # so assuming that a subject can be chosen by all programs where it isn't elective would be wrong, although intuitive
-            for program in sorted(set(ALL_PROGRAMS) - set(subject_data[subject]['mandatoryFor'])):
-                # for handling data inconsistencies due to oudated data
-                if subject in elective_data[program][WINTER]:
-                    subject_data[subject]['season'] = WINTER
-                    if 'semester' not in subject_data[subject]:
-                        subject_data[subject]['semester'] = elective_data[program][WINTER][subject]['semester']
-                    subject_data[subject]['electiveFor'].append(program)
-                elif subject in elective_data[program][SUMMER]:
-                    subject_data[subject]['season'] = SUMMER
-                    if 'semester' not in subject_data[subject]:
-                        subject_data[subject]['semester'] = elective_data[program][SUMMER][subject]['semester']
-                    subject_data[subject]['electiveFor'].append(program)
-        
-        self.stdout.write(self.style.SUCCESS("Mandatory and elective data collected..."))
-
-        for entry in professors_data:
-            course, professors, assistants = entry.values()
-            if professors.startswith("("):
-                subject_data[course]["professors"] = [] 
-                subject_data[course]["assistants"] = []
-                if with_flags:
-                    subject_data[course]['flag'] = professors
-                    self.stdout.write(self.style.WARNING(f"Course {course} has flag {professors}"))
-            else:
-                if course in subject_data:
-                    subject_data[course]["professors"] = professors.split("\n") if professors != "" else []
-                    assistants = assistants.split("\n") if assistants != "" else []
-                    subject_data[course]["assistants"] = [ass for ass in assistants if ass not in subject_data[course]["professors"]]
-                    
-                else:
-                    if with_warnings:
-                        self.stdout.write(self.style.WARNING(f"Course {course} is not in subject data"))
-        self.stdout.write(self.style.SUCCESS("Staff data collected..."))
-
-        to_remove = []
-
-        for course in additional_info_data:
-            name = course["name"]
-            tags = course["tags"]
-            subject_data[name]["tags"] = tags
-            if name in subject_data:
-                if "technologies" in course and len(course["technologies"]) != 0:
-                    subject_data[name]["technologies"] = course["technologies"]
-                else:
-                    subject_data[name]["technologies"] = []
-                
-                if "evaluation" in course and len(course["evaluation"]) != 0:
-                    subject_data[name]["evaluation"] = course["evaluation"]
-                else:
-                    subject_data[name]["evaluation"] = []            
-
-                subject_data[name]["isEasy"] = course["isEasy"]
-            else:
-                if with_warnings:
-                    self.stdout.write(self.style.WARNING(f"Course {course} is not in subject data"))
-
-
-        for subject in subject_data:
-            try:
-                int(subject_data[subject]['semester'])
-            except:
-                to_remove.append(subject)
-
-        for remove in to_remove:
-            subject_data.pop(remove)
-            if with_warnings:
-                self.stdout.write(self.style.WARNING(f"Removing {remove} from dataset."))
-
-        with open(output_path, 'w', encoding='utf-8') as f:
-            json.dump(subject_data, f, ensure_ascii=False, indent=4)
-            self.stdout.write(self.style.SUCCESS(f"Data successfully stored in {output_path}."))
Index: ckend/subjects/management/commands/subjects_by_program.py
===================================================================
--- backend/subjects/management/commands/subjects_by_program.py	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,45 +1,0 @@
-import json
-from pathlib import Path
-from django.core.management.base import BaseCommand
-
-class Command(BaseCommand):
-    help = "For each subject store in which semester they should be picked, and which programs they are mandatory for."
-
-    def handle(self, *args, **options):
-        base_dir = Path(__file__).resolve().parent.parent
-        file_path = base_dir / 'data' / 'mandatory.json'
-
-        output_path = base_dir / 'data' / 'subjects_by_program.json'
-
-        try:
-            with open(file_path, 'r', encoding='utf-8') as f:
-                mandatory_data = json.load(f)
-        except FileNotFoundError:
-            self.stdout.write(self.style.ERROR(f"Could not find file at {file_path}"))
-            exit(1)
-
-        subject_data = {}
-
-        for program_name, semesters in mandatory_data.items():
-            for semester, subjects in semesters.items():
-                try:
-                    semester_num = int(semester)
-                except ValueError:
-                    self.stdout.write(self.style.WARNING(f"Warning: Semester {semester} could not be converted to integer and is being skipped."))
-                    continue
-                
-                for subject in subjects:
-                    if subject not in subject_data:
-                        subject_data[subject] = {
-                            "semester": semester_num,
-                            "programs": [program_name]
-                        }
-                    else:
-                        existing_semester = subject_data[subject]["semester"]
-                        if program_name not in subject_data[subject]["programs"]:
-                            subject_data[subject]["programs"].append(program_name)
-
-
-        with open(output_path, 'w', encoding='utf-8') as f:
-            json.dump(subject_data, f, ensure_ascii=False, indent=4)
-            self.stdout.write(self.style.SUCCESS(f"Data successfully stored in {output_path}."))
Index: ckend/subjects/management/commands/subjects_vector.py
===================================================================
--- backend/subjects/management/commands/subjects_vector.py	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,117 +1,0 @@
-from math import ceil
-from pathlib import Path
-import json
-from django.core.management.base import BaseCommand
-from numpy import average
-
-class Command(BaseCommand):
-    help = "Vectorize all subjects"
-    
-    def handle(self, *args, **options):
-        base_dir = Path(__file__).resolve().parent.parent
-        information_file_path = base_dir / 'data' / 'subject_details.json'
-        output_file_path = base_dir / 'data' / 'subjects_vector.json'
-        vocab_file_path = base_dir / 'data' / 'vocabulary.json'
-        try:
-            with open(information_file_path, 'r', encoding='utf-8') as f:
-                subject_details_file_data = json.load(f)
-        except FileNotFoundError:
-            self.stdout.write(self.style.ERROR(f"Could not find file at {information_file_path}"))
-            exit(1)
-
-        keys_to_extract = [
-            "subject", "level", "activated", "participants", "semester",
-            "professors", "assistants", "tags", "technologies", "evaluation", "isEasy", "season"
-        ]
-        subject_details = {}
-
-        for subject in subject_details_file_data.values():
-            name = subject.get("subject")
-            if not name:
-                continue
-            subject_details[name] = {k: subject.get(k) for k in keys_to_extract}
-
-        distinct_professors = set()
-        distinct_assistants = set()
-        distinct_tags = set()
-        distinct_technologies = set()
-        distinct_evaluations = set()
-
-        for details in subject_details.values():
-            professors = details.get("professors") or []
-            assistants = details.get("assistants") or []
-            tags = details.get("tags") or []
-            technologies = details.get("technologies") or []
-            evaluation = details.get("evaluation") or []
-
-            distinct_professors.update(professors)
-            distinct_assistants.update(assistants)
-            distinct_tags.update(tags)
-            distinct_technologies.update(technologies)
-            if evaluation:
-                distinct_evaluations.update(evaluation)
-
-
-
-        distinct_professors = sorted(distinct_professors)
-        distinct_assistants = sorted(distinct_assistants)
-        distinct_technologies = sorted(distinct_technologies)
-        distinct_tags = sorted(distinct_tags)
-        distinct_evaluations = sorted(distinct_evaluations)
-
-        vocabulary = {
-            "professors": list(distinct_professors),
-            "assistants": list(distinct_assistants),
-            "technologies": list(distinct_technologies),
-            "tags": list(distinct_tags),
-            "evaluation": list(distinct_evaluations),
-        }
-
-        vectors = {}
-
-        for subject_name in subject_details:
-            values = subject_details[subject_name]
-            subject_vector = {}
-            subject_vector['professors'] = []
-            subject_vector['assistants'] = []
-            subject_vector['tags'] = []
-            subject_vector['evaluation'] = []
-            subject_vector['technologies'] = []
-            for word in distinct_professors:
-                subject_vector['professors'].append(0 if word not in values['professors'] else 1)
-            for word in distinct_assistants:
-                subject_vector['assistants'].append(0 if word not in values['assistants'] else 1)
-            for word in distinct_tags:
-                subject_vector['tags'].append(0 if word not in values['tags'] else 1)
-            for word in distinct_evaluations:
-                subject_vector['evaluation'].append(0 if word not in values['evaluation'] else 1)
-            for word in distinct_technologies:
-                subject_vector['technologies'].append(0 if word not in values['technologies'] else 1)
-
-            subject_vector['isEasy'] = 1 if values['isEasy'] else 0
-            subject_vector['activated'] = 1 if values['activated'] else 0
-            # 0 - summer, 1 - winter
-            subject_vector['season'] = 1 if values['season'] == 'W' else 0
-            subject_vector['year'] = ceil(values['semester'] / 2)
-            participants = average(values['participants'])
-            val = -1
-            if participants < 100:
-                val = 0
-            elif participants < 300:
-                val = 0.5
-            else: 
-                val = 1
-            subject_vector['participants'] = val
-
-            vectors[subject_name] = subject_vector
-
-
-
-        with open(output_file_path, "w", encoding='utf-8') as f:
-            json.dump(vectors, f, ensure_ascii=False, indent=4)
-            self.stdout.write(self.style.SUCCESS(f"Data successfully stored in {output_file_path}"))
-
-
-        with open(vocab_file_path, "w", encoding='utf-8') as f:
-            json.dump(vocabulary, f, ensure_ascii=False, indent=4)
-            self.stdout.write(self.style.SUCCESS(f"Data successfully stored in {vocab_file_path}"))
Index: ckend/subjects/management/commands/tag_graph.py
===================================================================
--- backend/subjects/management/commands/tag_graph.py	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,133 +1,0 @@
-import json
-from django.core.management.base import BaseCommand
-from pathlib import Path
-
-TAGS = [
-    "AI / ML",
-    "Cloud Engineering & DevOps",
-    "Computer Architecture",
-    "Computer Science",
-    "Cybersecurity",
-    "Data Science",
-    "Databases",
-    "Education",
-    "Embedded Systems",
-    "Game Development",
-    "Mathematics",
-    "Multimedia",
-    "Networking",
-    "Physics",
-    "Societal Skills",
-    "Software Engineering",
-    "Systems Infrastructure",
-    "UI/UX & Digital Media",
-    "Web Development"
-]
-
-EDGES = [
-    ("Mathematics", "Physics", 1),
-    ("Physics", "Mathematics", 1),
-    ("Web Development", "Databases", 2),
-    ("Databases", "Web Development", 2),
-    ("Databases", "AI / ML", 1.5),
-    ("AI / ML", "Databases", 1.5),
-    ("Data Science", "AI / ML", 3),
-    ("AI / ML", "Data Science", 3),
-    ("Cybersecurity", "Systems Infrastructure", 1),
-    ("Systems Infrastructure", "Cybersecurity", 1),
-    ("Computer Architecture", "Systems Infrastructure", 1.5),
-    ("Systems Infrastructure", "Computer Architecture", 1),
-    ("Game Development", "Embedded Systems", 1),
-    ("Embedded Systems", "Game Development", 1),
-    ("Cloud Engineering & DevOps", "Networking", 0.75),
-    ("Networking", "Cloud Engineering & DevOps", 1.5),
-    ("Computer Science", "Mathematics", 1),
-    ("Mathematics", "Computer Science", 2),
-    ("Computer Science", "Physics", 0.33),
-    ("Physics", "Computer Science", 0.5),
-    ("Computer Architecture", "Networking", 2),
-    ("Networking", "Computer Architecture", 1),
-    ("Computer Architecture", "Computer Science", 1),
-    ("Computer Science", "Computer Architecture", 0.5),
-    ("UI/UX & Digital Media", "Multimedia", 1),
-    ("Multimedia", "UI/UX & Digital Media", 1),
-    ("Societal Skills", "Education", 1),
-    ("Education", "Societal Skills", 1),
-    ("Web Development", "Cloud Engineering & DevOps", 1.5),
-    ("Cloud Engineering & DevOps", "Web Development", 1.5),
-    ("Game Development", "Mathematics", 2),
-    ("Mathematics", "Game Development", 2),
-    ("Game Development", "Physics", 2),
-    ("Physics", "Game Development", 2),
-    ("Web Development", "UI/UX & Digital Media", 2),
-    ("UI/UX & Digital Media", "Web Development", 2),
-    ("Cybersecurity", "Networking", 2),
-    ("Networking", "Cybersecurity", 2),
-    ("Cybersecurity", "Computer Architecture", 1),
-    ("Computer Architecture", "Cybersecurity", 1),
-    ("AI / ML", "Mathematics", 3),
-    ("Mathematics", "AI / ML", 3),
-    ("Data Science", "Mathematics", 3),
-    ("Mathematics", "Data Science", 3),
-    ("Software Engineering", "Systems Infrastructure", 0.5),
-    ("Systems Infrastructure", "Software Engineering", 0.5),
-    ("Web Development", "Software Engineering", 1.5),
-    ("Software Engineering", "Web Development", 1.5),
-    ("Software Engineering", "Cloud Engineering & DevOps", 0.5),
-    ("Cloud Engineering & DevOps", "Software Engineering", 1),
-    ("Software Engineering", "Databases", 1.5),
-    ("Databases", "Software Engineering", 1.5),
-    ("Software Engineering", "Computer Science", 1),
-    ("Computer Science", "Software Engineering", 1)
-]
-
-def add(tag_graph, tag1, tag2, weight):
-    if tag1 not in tag_graph:
-        raise Exception(f"tag '{tag1}' not found in graph.")
-    if tag2 not in tag_graph:
-        raise Exception(f"tag '{tag2}' not found in graph.")
-    tag_graph[tag1].append((tag2, weight))
-
-
-class Command(BaseCommand):
-    help = "Create a directed, weighted graph of dependencies between all tags present in the vocabulary."
-    
-    def handle(self, *args, **options):
-        base_dir = Path(__file__).resolve().parent.parent
-        output_file_path = base_dir / 'data' / 'tag_graph.json'
-        tag_graph = {}
-        for tag in TAGS:
-            tag_graph[tag] = []
-
-        for edge in EDGES:
-            add(tag_graph, edge[0], edge[1], edge[2])
-
-        tag_to_col_index = {}
-
-        for i, tag in enumerate(TAGS):
-            tag_to_col_index[tag] = i
-
-        final_tag_graph = {}
-
-        for key in tag_graph.keys():
-            key_index = tag_to_col_index[key]
-            
-            for i, val in enumerate(tag_graph[key]):
-                n, w = val
-                tag_graph[key][i] = (tag_to_col_index[n], w)
-            
-            final_tag_graph[key_index] = tag_graph[key]
-
-        with open(output_file_path, "w") as f:
-            json.dump(final_tag_graph, f)
-            self.stdout.write(self.style.SUCCESS(f"Finished scraping. Data successfully stored in {output_file_path}"))
-
-
-
-
-
-
-
-
-
-
Index: ckend/subjects/management/data/abstracts.json
===================================================================
--- backend/subjects/management/data/abstracts.json	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,179 +1,0 @@
-{
-	"Архитектура и организација на компјутери": "Разбирање на главните компјутерски архитектури, внатрешната организација, проценка на перформансите на поедините делови и компјутерскиот систем во целинa.",
-	"Бизнис и менаџмент": "Развој на менаџерски способности: техничка, концепциска, комуникациска, аналитичка.\nУсвојување на рамки, поими, модели и техники од областа на менаџментот.\nПрезентирање и анализа на примери, студии на случај и најдобри менаџмент практики од повеќе бизнис области и студии на случај на поодделни бизниси.",
-	"Бизнис статистика": "Запознавање со основните статистички методи и техники за прикажување, анализа и истражување на податоци.",
-	"Вовед во компјутерските науки": "Солидно познавање на основите на информатичко-комуникациските технологии, нивното создавање, моментална состојба и иднината; начинот на кој функционираат сметачите, основите на Веб, обработката на сликите, видеото и анимациите; клучните области на информациско-комуникациските технологии и нивното влијание: спососност за манипулација со текст, табели, графикони, слики, аудио и видео.",
-	"Дизајн на дигитални кола": "Запознавање со основните методи за анализа и дизајн на логички кола и логички мрежи, како комбинациони така\nи секвенцијални кола, регистри и бројачи.",
-	"Дискретна математика": "Курсот претставува вовед во основните математички концепти неопходни за повисоките курсеви од информациски технологии, компјутерско и софтверско инженерство.",
-	"Дискретни структури 1": "Во овој предмет ќе се изучуваат базични математички концепти за компјутерски науки. Студентите ќе се запознаат со основите на множества, исказна и предикатна логика, техники за докажување и булова алгебра.",
-	"Дискретни структури 2": "Курсот претставува вовед во основните математички концепти неопходни за повисоките курсеви од компјутерски науки. Ќе се изучуваат напредни техники за докажување, индукција рекурзија. Студентите треба да стекнат вештини за решавање на комбинаторни задачи. Да се запознаат со основната терминологија и основите за претставување на графови.",
-	"Е-учење": "По успешното завршување на овој предмет, студентот ќе биде запознат со еволуцијата на теориите за учење и ќе биде во состојба да ги разбере улогата и новите трендови кај околините за е-учење како и да го разбере преминот од традиционалните во е-околините за учење. Низ примери за примена на видео игри, масивни отворени онлајн курсеви, оддалечени и виртуелни лаборатории, виртуелни училници студентите ќе се запознаат со можностите за искористување на ИКТ за поддршка на образованието. Студентите ќе се стекнат со способност да понудат соодветни постојни системи и алатки за менаџирање со учење и наставни содржини како и системи и алатки за проверка на знаење за дадени бизнис побарувања.",
-	"Математика 1": "Предметот е од подршка и е неопходен за воведување на поимите за функција, лимес, извод и интеграли кои се неопходни во скоро сите предмети од повисоки години.",
-	"Калкулус 1": "Предметот е од подршка и е неопходен за воведување на поимите за функција, лимес и извод кои се неопходни во скоро сите предмети од повисоки години.",
-	"Калкулус 2": "Предметот е од подршка и е неопходен за воведување на поимите за интеграли, примена на интерграли, низи и редови кои се неопходни во дел од предметите од повисоки години.",
-	"Компјутерски архитектури": "Разбирање на архитектурата на еден компјутерски систем, идентификација на неговите составни делови, проценка на перформансите на компјутерскиот систем и неговите поединечни делови. Разбирање на машинскиот јазик, асемблерот и мемориската организација на системите.",
-	"Компјутерски компоненти": "Познавање на структурата на компјутерските системи, хардверските компоненти, поврзувањето и начинот на\nработа, карактеристиките и стандардите што се употребуваат.",
-	"Креативни вештини за решавање проблеми": "Студентот ќе се здобие со способност за критичко размислување и развој на вештините на размислување надвор од стандардните норми и принципи. Ќе биде во можност да го постави проблемот во рамка и да го изложи правилно, како и да решава неструктурирани проблеми. Ќе има подобрени вештини за општо решавање на проблеми од различен карактер кои стимулираат логичко размислување.",
-	"Маркетинг": "Вовед во главните елементи за развој на маркетинг стратегија и планирање на програма за маркетинг; Развој на вештини за решавање на маркетинг проблеми преку аналитички алатки (рамки, поими, модели и техники); Анализа на примери и студии на случај како претпријатијата го организираат својот маркетинг, со акцент на ИКТ претпријатија; Подобрување на комуникациските вештини, усни и писмени, работа во тим при изработка на проектна задача, презентирање на проектната задача.",
-	"Објектно ориентирана анализа и дизајн": "Запознавање со техниките за анализа, дизајн и моделирање на објектно ориентираните системи. Оспособување за практична анализа на кориснички барања и креирање ефективни ОО модели како почетна фаза на имплементацијата на ОО системот.",
-	"Објектно-ориентирано програмирање": "Целта на предметот е да го запознае студентот со основните концепти на објектно-ориентираното програмирање. За таа цел ќе бидат воведени концептите на објекти и класи, eнкапсулација, наследување и полиморфизам. Студентите ќе бидат запознаени и со хиерахијата на класи. Ќе се направат споредби на имплементациите на објектно-ориентираните концепти во различни програмски јазици.\nПо завршување на курсот студентот ќе ги разбира принципите на објектно-ориентираното програмирање и биде оспособен за развој на програми кои ги подржуваат овие принципи.",
-	"Основи на Веб дизајн": "По комплетирање на курсот кандидатите се очекува студентите да добијат воведни знаењаза развој на веб страници со современ дизајн, употреба на ХТМЛ и каскадни стилови. Се очекува кандидатите да:\n1. Демонстрираат основно разбирање на важноста на добар дизајн на веб страниците.\n2. Демонстрираат практично знаење за технологиите за веб дизајн и да можат да го применат знаењето при основно дизајнирање на веб сајтови.\n3. Да комуницираат со терминологија специфична за оваа област.\n4. Критички да евалуираат примери на веб сајтови.",
-	"Основи на сајбер безбедноста": "Студентот ќе се запознае со концептот на сајбер безбедност, закани и ризици. Ќе биде свесен за проблемите предизвикани од сајбер криминалот и ќе биде во можност да ги разбира ризиците од напади и основните механизми како да се заштити од нив.",
-	"Педагогија": "Запознавање на студентите со педагогијата како наука, педагошките дисциплини, воспитанието и училишниот систем.",
-	"Професионални вештини": "Целта на курсот е да студентите да се стекнат со вештини потребни за академско и техничко пишување и презентирање, со водење сметка за етиката и критичкото мислење. По завршување на курсот се очекува студентот да може да изработи квалитетни академски текстови (резиме, есеј, CV, формално писмо) на англиски и македонски јазик; да разликува помеѓу различни технички текстови (спецификација, елаборат, извештај, техничка документација) и да идентификува нивни делови; да одржи ефективна презентација на зададена тема и да одговори на прашања поврзани со презентацијата;",
-	"Структурно програмирање": "Да се воведат студентите во парадигмата на структурното програмирање, да го разберат концептот на алгоритми и да се оспособат да развиваат алгоритми, да кодират, тестираат и компајлираат програми. Студентите ќе можат да пишуваат програми за решавање проблеми преку користење на податочни типови, контролни структури, функции, низи во програмскиот јазик C++.",
-	"Физика": "Студентите ќе се запознаат со основните физички величини и закони од класичната механика. Тие ќе се стекнат со основни вештини за експериментална работа, како и за пресметување и правилно толкување на добиените резултати од областите кои се дел од содржината. Теоретските знаења на студентите ќе бидат солидна подлога за понатамошна надградба која е потребна за разбирање и моделирање на различните процеси каде што се применуваат информатиката и компјутерското инженерство.",
-	"Алгоритми и податочни структури": "Запознавање со основните податочни структури и алгоритми кои се понатаму неопходни за работа со бази на\nподатоци како и за други апликации. Студентот ќе биде оспособен за користење и развој на структури и алгоритми\nсо линеарни листи, стебла, графови како и и индекси за пребарување. Исто така ќе биде оспособен за\nимплемнтација на различните архетипи на алгоритми што се користат во практичната имплементација на многу\nсофтверски решенија.",
-	"Анализа на софтверските барања": "По завршувањето на предметот се очекува студентот да ги разбира и има продлабочено знаење во примена на техниките за извлекување знаење од клиентот, да ги разбира техниките за документирање на софтверски и бизнис потреби, да ги разбира и има продлабочено знаење во примената на техники за управување со промени кај софтверски и бизнис барања.",
-	"Безжични и мобилни системи": "Познавање и разбирање на системите за безжична и мобилна комуникација",
-	"Веројатност и статистика": "Да се воведат основните концепти од веројатност и статистичка анализа со дискусија на примените во компјутерските науки. Да се оспособат студентите за успешно следење на стручните предмети во кои се применуваат елементи од теорија на веројатност и статистика.",
-	"Вештачка интелигенција": "Успешниот студент ќе има продлабочени познавања од основните области на вештачката интелигенција, вклучувајќи ги: пребарувањето, решавањето проблеми, претставувањето на знаењето, расудувањето, донесувањето одлуки, планирањето и учењето и нивната примена. Исто така, ќе биде во состојба да ги дизајнира и реализира клучните проблеми од интелигентните системи со средна сложеност и да го процени нивното однесување.",
-	"Визуелно програмирање": "Со завршување на овој курс се очекува студентите да се запознаени со техниките за развивање на софтвер во\nнапредна интегрирана развојна околина користејќи модерен објектно-ориентиран програмски јазик, дизајнирање\nна богати графички кориснички интерфејси и откривање и отстранување на грешки во истата. Се очекува\nстудентите да бидат оспособени за развој на настански водени апликации, развој на графички кориснички\nинтерфејси, напредни форми за внесување на податоци, асинхроно програмирање, кориснички дефинирани контроли и креирање на инсталациски пакети.",
-	"Вовед во екоинформатиката": "Екоинформатиката е наука за информации (информатика) во екологијата и науката за животната средина. Ги интегрира еколошките и информатичките науки за да ги дефинира ентитетите и природните процеси со јазик заеднички за луѓето и за компјутерите. Екоинформатиката има за цел да го олесни истражувањето и управувањето со животната средина преку развивање начини за пристап, интегрирање на знаење од различни извори на информации за животната средина и развивање на нови алгоритми кои овозможуваат комбинирање на различни информации за животната средина за да се тестираат еколошките хипотези.",
-	"Вовед во случајни процеси": "Да се оспособат студентите да моделираат случајни процеси за реални ситуации.",
-	"Дигитално процесирање на слика": "По завршување на курсот се очекува студентот да ги владее и користи основните алатки и методи за обработка на слики.",
-	"Дигитизација": "Целта на предметот е да се научат процесот и техниките за дигитизација. Студентите треба да ги совладаат основните принципи за менаџирање со дигитални материјали и нивна презервација, како и техники и технологии за нивно презентрање.",
-	"Дизајн на алгоритми": "Во овој курс ќе се научат повеќе алгоритми и методи за решавање на проблемите со компјутер, како и одредени структури на податоци за имплементација на истите. Студентот ќе стекне искуство од програмирање, ќе ги разбере  принципите на дизајнирање на алгоритми, анализа на перформансите на алгоритмите и ќе ги научи фундаменталните идеи за дизајн на ефикасен алгоритам и комбинирање на истиот со соодветна структура на податоци. Идеите ќе се применат во пракса преку лабораториск вежби.",
-	"Е-влада": "Целта на курсот е студентите да се запознаат со испораката на услугите од страна на владините институции кон корисниците: граѓаните, бизнисите и организациите од невладиниот сектор и примената на информациските технологии во тие процеси; да се запознаат со напредните држави и напредните области на примена на е-влада преку анализа на примери, студии на случај и најдобри практики; Подобрување на комуникациските вештини, усни и писмени, работа во тим при изработка на проектна задача, презентирање на проектната задача.",
-	"Економија за ИКТ инженери": "ИКТ инженерите, изработувајќи и нудејќи ИКТ услуги, се соочуваат со прашања во врска со SLA договорите, продавачите, добавувачите, со финансиските аспекти на ИКТ услугите – колку чини услугата, зошто токму толку, колкави се трошоците, колку е дозволено да бидат трошоците и слично. Области кои им е потребно да ги владеат се буџетирање, книговодство, определување на цени, финансиско планирање, финансиска анализа и известување. Овој курс има за задача да им овозможи да ги совладаат овие области преку опис на основните  економски модели; демонстрирање како овие модели работат; опис на главните економски феномени со користење економски модели.",
-	"Електрични кола": "Запознавање со основните поими и појави од електричните кола, со основните закони и теореми во теоријата на електричните кола и со некои методи за анализа на електрични мрежи со временски констатни и временски прпоменливи струи и напони. Користење на основните законитости во електротехниката при решавање на конкретни проблеми во инженерството.",
-	"Информатичко размислување во образованието": "Во 21 век, информатичкото размислување е вештина од клучно значење за сите граѓани на светот. Информатиката и технологијата влијаат на целиот наш живот и секој треба да знае како да ги формулира проблемите и да ги изрази решенијата за нив така што ќе може да бидат спроведени од компјутер. На овој курс студентите ќе научат различни аспекти на информатичкото размислување и пристапи за нивно подучување во основното и средното образование. Тие ќе научат јазик заснован на блокови и модерни пристапи дизајнирани да го олеснат учењето програмирање.",
-	"Инженерска математика": "Предметот опфаќа методи за нумеричкото решавање на повеќе математички проблеми, како и примена на некои\nпозначајни математички трансформации во инженерството.",
-	"Интернет програмирање на клиентска страна": "Целта на курсот е да овозможи запознавање на студентите со основните на програмирањето на интернет клиентската страна. Во таа насока студентите ќе бидат запознаени со дел од програмските јазици и технологиите за пишување програми што се извршуваат на клиентската страна. По завршување на курсот се очекува студентот да може да развива интерактивни веб-страници со користење на програмски јазици наменети за програмирање на клиентската страна.",
-	"Интернет технологии": "Познавање на механизмите кај HTTP протоколот. Запознавање со платформи за развој на интернет апликации.\nКреирање и развој на веб апликции. Креирање и користење на веб сервиси.",
-	"Компјутерска графика": "Целта на предметот е запознавање на студентите со теориските основи и концепти на 2D и 3D компјутерска графика, геометриското моделирање, трансформациите, рендерирањето и генерирањето криви и површини со помош на сплајнови. Практичната имплементација на алгоритмите ќе се реализира со помош на OPEN GL. По завршување на курсот се очекува студентот да демонстрира познавање на теориските основи и концепти на 2Д и 3Д компјутерската графика, да користи OpenGL библиотека и графички софтверски пакети за практична реализација на проблеми од компјутерската графика.",
-	"Компјутерски мрежи": "Вовед во основните концепти на компјутерските мрежи. Студентот ќе се здобие со знаења поврзани со мрежната архитектура, мрежните протоколи и дизајн на мрежи. Студентот ќе се запознае со главните компоненти и апликации на TCP/IP свитата од протоколи.",
-	"Компјутерски мрежи и безбедност": "Вовед во основните концепти на компјутерските мрежи и безбедноста. Студентот ќе се здобие со знаења поврзани со мрежната архитектура, мрежните протоколи и работата на мрежите, како и главните поими од мрежната безбедност. Студентот ќе се запознае со главните компоненти и апликации на TCP/IP свитата од протоколи.",
-	"Концепти на информатичко општество": "Целта на курсот е да се запознаат студентите со теориите и пристапите кои ја анализираат улогата на информатичката технологија, медиумите и знаењето во модерното општество. По завршување на модулот студентите треба да бидат способни да:\n1.\tСистематски и критично дискутираат, евалуираат и ги анализираат главните теми, принципи, концепти и теории на информатичкото општество\n2.\tПрименуваат различни концепти од информатичкото општество\n3.\tПокажат разбирање за важноста на информатичката технологја и знаењето во модерното општество",
-	"Медиуми и комуникации": "По завршувањето на предметот се очекува студентот да ги разбира основните\nпоими од комуникатологијата како наука, како и да има продлабочено знаење во примена на постоечките техники и\nсознанија за подобрување за комуникацијата помеѓу чинителите на комуникацијата. Посебен осврт ќе биден даден на комуникацијата преку новите медиуми и начинот на кој новите медиуми влијаат во различни општествени сфери. Студентите ќе бидат запознаени со основните принципи за испитување на јавно мислење и користење на новите медиуми (со посебен фокус на социјалните мрежи) за градење и промовирање на бренд (личен или корпоративен).",
-	"Мултимедијални технологии": "Целта на предметот е студентот да се запознае со основите на различните медии: аудио, графика, видео и анимации и да ги сфати различните својства на секоја од нив. Студентот треба да ги запознае различните формати и да се оспособи за користење за различни апликации за креирање на мултимедијални содржини. Како повисока цел, студентот треба да може да развие мал мултимедијален производ со примена на изучените техники и методи.",
-	"Напредно програмирање": "Да се воведат студентите во парадигмата на генеричкото програмирање. Да се запознаат со апстрактни податочни типови,\nкреирање на темплејт класи и функции. Да развијат вештини за употреба на колекции на податоци (вектори, редови, листи,\nмножества и речници). На крај се очекува студентите да можат да ги аплицираат концептите на шаблони за објектно-\nориентиран развој на софтвер при моделирање на некој специфициран проблем во робусна објектно-ориентирана програма.\nСтудентите ќе бидат запознаени со техниките за развивање на софтвер во интегрирана развојна околина.",
-	"Квантно пресметување": "Студентот ќе биде оспособен за теоретска и практична работа со квантни кола за пресметки базирани на квантни бити (кјубити). Преку содржината на овој предмет, студентот ќе се стекне со знаења за квантни технологии, квантни состојби, квантни протоколи преку работа со квантни кола со еден, два и повеќе кјубити, реверзибилност во квантни кола, суперпозиција и телепортација, како и најразлични квантни кола за решавање на конкретни проблеми. Преку практичната работа, студентот ќе се запознае со Qiskit апликацијата за креирање и симулација на квантни кола.",
-	"Оперативни системи": "Студентот ќе биде воведен во основните градбени блокови на модерните оперативни системи преку нивна конкретна реализација во Windows и UNIX-like системите.",
-	"Основи на комуникациски системи": "Студентите ќе се запознаат со основните концепти за анализа на реалните сигнали и системи, со посебен фокус на анализата на комуникациски сигнали и нивниот пренос низ медиум, типовите на модулација и влијанието на шумот врз модулациските техники. Дополнително студентите ќе се здобијат со познавање од софтверски дефинирано радио, современите комуникациски системи и нивниот тековен развој.",
-	"Основи на теоријата на информации": "Студентите ќе бидат запознати со основите на теорија на веројатност, а потоа и основните поими од теорија на информации и нејзината примена во реални комуникациски системи.",
-	"Софтверско инженерство": "Целта на предметот е запознање со: методологиите за дизајн и имплементација на софтверски системи преку анализа на барањата, развој и анализа на дизајнот, имплементацијата, интеграцијата и тестирањето на софтверот; анализа на проблем за развој на софтвер, дизајнирање на модуларна структура на решението која го решава проблемот и анализа и евалуација на алтернативи; имплементација на ефикасни и исправни модули, нивна  интеграција и тестирање, планирање и водење на софтверските проекти.",
-	"Теорија на информации со дигитални комуникации": "Студентите ќе бидат запознаени со квантитативната теорија на информации и нејзината примена во надежни и ефикасни комуникациски системи. Дополнително ќе бидат запознаени со математичкиот модел на комунникацискиот систем.",
-	"Управување со техничка поддршка": "По завршувањето на курсот се очекува студентот да ги разбира методите и системите за решавање на ИТ проблемите преку обезбедување на квалитетна техничка поддршка.",
-	"Шаблони за дизајн на кориснички интерфејси": "Целта на предметот е да ги запознае студентите со основните проблеми и начини на решавање на истите за различните видови кориснички интерфејси и корисничка интеракција. По завршување на курсот се очекува студентот да демонстрира познавање на основните видови корисничка интеракција и принципите за нивно дизајнирање, и да може самостојно да развива интерактивни апликации со користење на програмски алатки следејќи ги научените принципи.",
-	"Агентно-базирани системи": "Агентно-базираното моделирање нуди природна метафора за разбирање и објаснување на многу феномени од доменот на биолошки и социјални системи – од еволуција и ширење на епидемии до сегрегација и формирање на коалиции. Многу системи може да се моделираат како средини составени од автономни агенти кои може да комуницираат, соработуваат, преговараат, да се спротивставуваат, да се водат од сопствени интереси или делуваат алтруистички. Микро-однесувањето на агенти водени од едноставни правила може да предизвика нови квалитети и комплексни појави во макро размери. Целта на предметот е запознавање на студентот со агентската парадигма за репрезентација и моделирање на системи од различни домени (пр. игри, роботи, однесување на социјални групи). По завршување на курсот се очекува студентот да има способност да дизајнира, моделира и реализира или симулира едно-агентен или повеќе-агентен систем.",
-	"Администрација на мрежи": "По завршувањето на курсот се очекува студентот да ги разбира проблемите на администрацијата со мрежи и да знае\nда ги применува на методите и алатките за администрација со комуникациски мрежи.",
-	"Администрација на системи": "Системската администрација претставува комплексен процес на оперативно управување со системските и софтверските компоненти кај компјутерските системи, се со цел да се обезбеди безбедни, надежни и достапни сервиси и услуги на корисниците. Организацијата на процесот на системска администрација е повеќестран и вклучува активности поврзани со управување со оперативни системи, мрежни сервиси како и на апликативни и други серверски системи.",
-	"Бази на податоци": "Запознавање на студентот со основните концепти за работа со бази на податоци, начините на нивно моделирање и имплементирање, како и работа со прашалните јазици. Студентот ќе биде способен да моделира бази на податоци преку семантичко и релациско моделирање и процес на нормализација, ќе знае практично да го применува SQL стандардот за креирање, одржување и манипулација на релациските бази на податоци. Студентот ќе има познавање за основните концепти на конкурентно работење и трансакции.",
-	"Вградливи микропроцесорски системи": "Студентите ќе се стекнат со разбирање на хардверот, софтверот и состемскиот дизајн на вградените системи. Тие ќе ја разберат важноста на интеракцијата меѓу хардверот и софтверот и поврзувањата со сензори и актуатори. Ќе ги стекнат основите на програмирање на вградени системи. Студентите ќе бидат способни да ги дефинираат архитектуралните барања, вклучувајќи го и хардверот и софтверот потребен за да се изгради модерен вграден систем.",
-	"Веб програмирање": "Развој на веб комплетни веб апликации со користење на MVC шаблонот за развој. Студентите ќе научат да развиваат веб апликации и веб сервиси, да се поврзуваат и да користат бази на податоци. Да развиваат безбедносни механизми кај веб апликациите и да тестираат веб апликации",
-	"Визуелизација": "Предметот треба да овозможи запознавање на студентите со концептот на вузуелизација на податоци, избор на\nтехники и алгоритми за визуелизација на различни податочни множества, и нивна програмска реализација. По\nзавршување на курсот се очекува студентот да демонстрира познавање на концептот на визуелизација на\nподатоци, да знае да избере и да реализира алгоритми за визуелизација на различни видови податоци\nпрограмски и со користење на алатки за визуелизација.",
-	"Виртуелизација": "Запознавање со виртуелизацијата како парадигма на креирање на виртуелни компјутерски системи преку софтверска виртуелизација на харверските компоненти. Обработка на различните аспекти на виртуелизацијата, технологиите и техниките вклучени во процесот, како и придобивките и губитоците кои се појавуваат во процесот на виртуелизација.",
-	"Вовед во мрежна наука": "Запознавање со основните концепти од мрежна наука и нивна примена на реални податоци. Оспособување на студентите за анализа на својствата и динамичките процеси во реалните комплексни мрежи и нивно моделирање и визуелизација. Изучување на основните методи за октривање на заедници, оценка на робустноста, оптимизација, податочно рударење и предвидување во комплексни мрежи.",
-	"Вовед во науката за податоци": "Запознавање со основите за науката базирана на податоци. Студентите ќе се запознаат со процесот и методологијата при работа со податоци, почнувајќи од идентификацијата на проблемите, преку собирање на податоци, а потоа и нивна обработка. Студентите ќе ги научат основните техники за обработка на податоците и идентификување на шаблони во нив, како и начините на визуелизација и интерпретација на добиените резултати.",
-	"Географски информациски системи": "Создавање и управување со просторни (Географски) информациони систем.",
-	"Дигитална форензика": "По завршување на курсот студентите ќе се стекнат со знаење за принципите и техниките потребни за една дигитална форензичка истрага. Студентите ќе се стекнат и со практично искуство за работа со различни форензички алатки за различни оперативни системи.",
-	"Дигитални библиотеки": "Запознавање на студенти со актуелните елементи од областа дигитални библиотеки (ДБ): основи и архитектури на дигитални библиотеки, технологии, управување, организација и развој на дигитални ресурси, презентација на знаење и негово откривање (прибирање на информации), мета-податоци, шеми и стандарди и релевантни интелектуални права. Во зависноста од тековниот интерес студентите ќе се запознаат со конкретен апликативен софтвер за дигитална библиотека и со практики во работењето како и евалуација на истите. По завршување на курсот се очекува студентот да демонстрира знаење за основни елементи на ДБ, технологии за развој и изградба на ДБ, начини на примена, управување и организација на ДБ",
-	"Дизајн и архитектура на софтвер": "Целта на курсот е студентите да ги научат главните концепти на објектно ориентирана анализа и дизајн. Да се запознаат со техниките на рефакторирање, шаблоните за дизајн и различните архитектури на софтвер. По завршувањето на курсот кандидатите ќе можат да ги идентификуваат ограничувањата и проценат квалитетите на софтверските системи. За конкретна софтверска спецификација ќе можат да ја проценат нејзината комплетност и\nконзистентност, како и да дизајнираат софтверска архитектура во согласност со дадените барања.",
-	"Дизајн на интеракцијата човек-компјутер": "Целта на предметот е да ги запознае студентите со основните принципи за дизајнирање на компјутерски системи што вклучуваат интеракција човек-компјутер. За таа цел студентите ќе бидат запознаени со процесот на дизајнирање на интерактивни системи, фазите за дизајнирање (собирање и анализа на барања, креирање на прототипови, имлементација и тестирање на употребливост). По завршување на курсот се очекува студентот да демонстрира познавање на процесот и чекорите за дизајнирање на системи што вклучуваат интеракција човек-компјутер и да може да самостојно или во тим да реализира едноставен проект за дизајнирање на интерактивни системи.",
-	"Дизајн на образовен софтвер": "По успешното завршување на овој предмет, студентот ќе биде во состојба да ги: разбере принципите (педагошки, когнитивни, инженерски) кои треба да се искористат при дизај на образовен софтвер, местото и примената на различните типови на образовен софтвер во образованието, начинот на кој образовниот софтвер помага да се остварат одередени педагошко-едукативни цели, како и основните принципи за користење на образовен софтвер без притоа тој да ја наруши дидактиката на образовниот процес.",
-	"Електронска и мобилна трговија": "Студентот со завршување ќе се стекне со вештини за развој на апликации за е-трговија и м-трговија. Ќе се запознаат со платформите за е-трговија и ќе научат да ги користат и употребуваат истите за градба на електронски продавници.",
-	"Интегрирани системи": "По завршување на курсот се очекува студентите да се оспособени за  дизајн, избор, имплементација и менаџмент на ентерпрајз IT решенија.  Да бидат способни за работа во  корпоративна средина при имплементација и одржување со надградба на ентерпрајз IT решенија. Да бидат способни да развиваат стратегии за технолошки архитектури на комплексни софтверски системи кои опслужуваат обемни податоци, многу корисници и широк спектар деловно процеси.",
-	"Информациска безбедност": "Изучување на поими поврзани со информациската безбедност; постапки и механизми за заштита кај компјутерските системи од\nбезбедносен аспект; методи што се применуваат за подигање на нивото на безбедност во однос на неовластен пристап.",
-	"Инфраструктурно програмирање": "Студентот ќе се здобие со знаење за лесно и ефикасно менаџирање на IT системи, управување со традиционалните\nподаточни центри, приватни и јавни облаци и клиентските компјутери и уреди. Студентот ќе може да се запознае и со\nплатформи за менаџирање на повеќе хипервизори, физички ресурси и апликации.",
-	"Компјутерска електроника": "Запознавање со фундаменталните типови на електронски елементи, принципот на работа, и нивните теоретски\nмодели. Анализа и дизајн на логички кола и засилувачи..",
-	"Компјутерска етика": "Способност да се согледаат клучните културни, општествени, правни и етички аспекти на ИКТ, влијанието на ИКТ, значењето и професионалните одговорности на ИКТ професионалците; Способност критички да се согледаат и дискутираат потенцијалните\nризици што со себе ги носи ИКТ, вклучувајќи ги и последиците од нејзиниот развој врз развојот на човештвото; Стекнување информации за националните и меѓународните закони за спречување и заштита од компјутерскиот криминал.",
-	"Компјутерски звук, музика и говор": "Да се стекнат со знаење на клучни прашања поврзани со анализата и генерирањето на звуци, музика и говор.",
-	"Континуирана интеграција и испорака": "Запознавање со основните концепти на развој и операции (DevOps) преку континуирана интеграција, тестирање, испорака и распоредување на софтверски решенија и системи. Осознавање на различните перспективи на развојниот (Dev) и оперативниот (Ops) дел од животниот циклус на еден систем. Оспособување на студентите за употреба на алатки за автоматизација на процесите за интеграција, тестирање, испорака и распоредување. Запознавање со предизвиците и најдобрите практики за менаџирање со софтверски изданија и конфигурации.",
-	"Криптографија": "Запознавање со основните криптографски принципи и методи; изучување на основните крипто-\nдизајни; практично користење на изучените криптографски алгоритми.",
-	"Линеарна алгебра и примени": "Запознавање со концептите и методите на линеарната алгебра и како истите да се користат за рамислување и решавање на проблеми кои произлегуваат од компјутерските науки",
-	"Машинско учење": "Целта на курсот е студентите да се запознаат со основите на модерните техники од областа на машинско учење. По завршувањето на курсот кандидатите: ќе имаат продлабочени знаења за напредните технологии и методи за машинско учење; ќе можат да разберат, анализираат и формулираат генерални проблеми од областа на машинско учење; ќе можат успешно да применат алгоритми за машинско учење при решавање на реални проблеми; ќе можат да конципираат, анализираат, реализираат и проценат перформанси на систем за машинско учење.",
-	"Мерење и анализа на сообраќај": "За инженер кој работи со мрежни технологии е корисно да има познавања од мерење, анализа и моделирање на сообраќајот заради поквалитетно дизајнирање на мрежите како и подобро користење на нивните перформанси. Со овој курс студентите ќе се запознаат со основите на инженерството на комуникациски сообраќај, како и различни техники за анализа, мерење, карактеризација, класификација и предвидување на интернет сообраќај. Исто така ќе биде прикажано како слични анализи може да прават и за други типови на сообраќај.",
-	"Сајбер безбедност": "Целта на овој курсот е да се покријат принципите за безбедноста кај компјутерските системи и мрежи, при што\nстудентот ќе се запознае со различни техники за напад и одбрана.",
-	"Мултимедиски мрежи": "Целите на предметот се да ги запознае студентите со карактеристиките на мултимедиските содржини кои се важни за далечински пренос, механизмите за дистрибуција на мултимедиски содржини од гледна точка на мрежните протоколи, пречките во мрежите при пренос, како и начините како да се подобори квалитетот на достава. Исто така, студентите ќе се запонзаат со различни платформи и архитектури за достава на мултимедиски содржини. Студентите ќе се оспособат да ги анализираат мулитмедиските содржини, да ги прилагодат и постават на сервери кои ќе обезбедат нивна достава во различни мрежни услови.",
-	"Мултимедиски системи": "Запознавање на студентот со основните концепти за работа со мултимедиските податоци, начините на нивно моделирање и имплементирање и манипулација со истите. Студентот ќе биде способен да моделира мултимедиски податоци, ќе знае практично да го применува содржински-базираното пребарување на мултимедиските податоци, и ќе се здобие со воведни знаења за креирање на апликации базирани на  мултимедиските содржини.",
-	"Напреден веб дизајн": "Целта на наставната програма е студентите да се запознаат со напредните технологии во областа на веб дизајнот и развојот на модерни динамички веб апликации. По завршување на предметот, студентите ќе имаат преглед на најновите технички достигнувања во областа на веб дизајнот и ќе бидат способни да ги користат истите во изработкa на практични проекти",
-	"Основи на роботиката": "По завршувањето на овој предмет, студентот се очекува да има познавања од принципите на развој на роботи и системи кои вклучуваат сензори и ефектори. Студентите ќе се запознаат со начините на програмирање роботи кои овозможуваат нивно управување. Студентите ќе се запознаат со примената на роботите во индустријата и општеството",
-	"Паралелно и дистрибуирано процесирање": "Цел на предметот е студентите да ги совладаат методите на паралелно и дистрибуирано процесирање, можностите за паралелизација на секвенцијална програма, дистрибуирано процесирање на голем број на податоци и проблемите со кои треба да се справат во тој процес",
-	"Паралелно програмирање": "Истражување на алгоритмите и техниките за програмирање на најновите паралелни платформи со споделена меморија и со\nдистрибуирана меморија. Студентот ќе се запознае со теоретските и практичните (програмските) компоненти.",
-	"Персонализирано учење": "Персонализираното учење е современ начин на одржување на наставата која ги пресретнува индивудуалните потреби на секој ученик. Студентите се оспособуваат да ги препознаат спецификите на совладување на знаењата кај учениците од основните и средните училишта. Студентите ќе осознаат како да се справат со предизвикот за вклучување на персонализираното учење во рамки на класичната училница и како да се поттикнува усвојувањето на нови знаења кај различните стилови на учење.",
-	"Податочно рударење": "Запознавање со методи за идентификација на валидни, нови, корисни и разбирливи шеми во податоци и откривања на нови знаења. Претпроцесирање на податоците. Вовед во предиктивни модели од податоците: класификација, регресијa. Откривање на кластери. Совладување на техники за собирање на податоци, нивно траксформирање во облик погоден за интерно користење и нивно зачувување.",
-	"Процесирање на сигналите": "Познавањето на основите и техниките на дигиталното процесирање на сигнали е важно за секој инженер кој работи на апликации каде што има процесирање на сигнали. Со курсот студентите се воведуваат во теоретските основи дигитално процесирање на сигнали кои вклучуваат дискретизација, Фуриеова и z – трансформација. Студентите ќе стекнат и познавања од основните алатки како што се дигиталните IIR и FIR филтри. Во курсот ќе бидат дадени и основите на теоријата на управување. Преку бројните примери и вежби студентите ќе научат и практично да користат готови алатки за процесирање на сигнали.",
-	"Вештачка интелигенција за игри": "Студентите ќе ги разберат тековните проблеми и техники во академската и индустриската Вештачка интелигенција (ВИ) за игри, во исто време стекнувајќи практично искуство во работењето со разни готови алатки за техниките на ВИ применувани во индустријата за игри денес. Ќе бидат оспособени за подобро да ја разберат врската помеѓу ВИ за игрите и естетиката, наративот и играчкото искуство, на тој начин обезбедувајќи зголемена вклученост и задоволство на играчите.",
-	"Психологија на училишна возраст": "Целта на предметот е студентите да се запознаат со елементите од психологијата и психологијата на учењето",
-	"Работа со надарени ученици": "Студентите се оспособуваат да станат професори кои успешно ќе идентификуваат ученици кои имаат потенцијал да го прошират знаењето од областа на информатиката и решавање задачи од алгоритамска природа, со употреба на напредни структури и алгоритми коишто не се опфатени со редовната програма. Идните наставници се оспособуваат да пренесат основно знаење за напредната програма на учениците и да ги насочат во процесот на учество на национални и интернационални натпревари по информатика.",
-	"Сервисно ориентирани архитектури": "Предметот сервисно-ориентирани архитектури има за цел да ги запознае студентите со организација, дизајн и развој на на дистрибуираните системи базирани на сервиси. Сервисно-ориентираните архитектури опфаќа теми од софтверско и системско инженерство. Од аспект на софтверско инженерство студентите ќе се запознаат со процесот на анализа и дизајн при развој на сервисно-ориентирани апликации, како и со организацијата на процесот на развој на софвер погодни за сервисно-ориентирани системи. Во поглед на системско инженерство, предметот ќе го покрие целосниот екосистем на сервисно-ориентирана и микро-сервисно ориентирана архитектура, нејзините компоненти, поврзаност, соработка и координација.",
-	"Современи компјутерски архитектури": "Разбирање на концептите и имплементациите на современите процесори. Анализа на современите процесори. Студентот ќе биде оспособен да дизјанира  современи процесори и процесирачки елементи",
-	"Софтверски дефинирана безбедност": "Разбирање и примена на клучните концепти од развој на безбеден софтвер во поглед на податоци, автентикација, авторизација и безбедни веб апликации.",
-	"Софтверски квалитет и тестирање": "Целата на курсот е запознавање на студентите со потребата од тестирање на софтвер, различните техники на моделирање на софтверот и искористување на тие модели за тестирање, како и практични работа на тестирање, валидација и верификација на софтвер.",
-	"Автоматизирање на процеси во машинско учење": "Запознање со основните чекори за поставување на модели од машинско учење во продукција, оптимизација на piplelines во ML, дизајн на целосен животен циклус на ML моделите, CI/CD кај ML, упраување со ML код, следење на моделите во продукција, менаџирање со модели.",
-	"Учење на далечина": "Студентите ќе се запознаат со концептот за далечинско учење, со технологиите кои го поддржуваат далечинското учење, како\nи со придобивките со неговото користење. Со слушање на овој курс студентите ќе се оспособат да планираат и дизајнираат,\nда научат како се имплементираат системи за далечинско учење, ќе ја осознаат разликата помеѓу курсевите кај учење на\nдалечина и курсевите во класичната настава, улогата на инструкторот и ученикот во овој систем, како и сегашноста и\nиднината на системите за далечинско учење",
-	"Основи на теоријата на компјутерските науки": "На овој курс ќе стекнете основно разбирање за класичните модели кои се користат во основата на компјутерските науки за анализа на пресметковните процеси, вклучувајќи конечни автомати, граматики и Тјурингови машини. Овие  модели може да се користат за да се одговори на прашања како што се кои проблеми може да се решат со компјутер и дали има некои проблеми кои се суштински потешки за решавање од другите.",
-	"Автономна роботика": "По завршувањето на овој предмет, студентот се очекува да има продлабочено знаење за развој на автономни роботски системи (автономни возила, автономни летала и сл.) со користење на веројатностните пристапи во роботиката.",
-	"Администрација на бази податоци": "Предметот ќе се фокусира на state-of-the-art технологиите поврзани со имплементација на базите на податоци. Технологиите и техниките кои се користат за имплементација на базите на податоци ќе бидат обработени како од кориснички, така и од системски аспект.\nОд аспект на системско инжинерство, предметот ќе навлезе во концептите и алгоритмите за: процесирање на трансакции, контрола на истовремено извршување, репрезентација на лог и метадата, безбедносни политики кај базите, техники за репликација и дистрибуција, бекап и реставрација.",
-	"Анализа и дизајн на ИС": "Запознавање на студенти со актуелните техники за анализа и дизајн на информациските системи (ИС). Навлегување во студија на случај на развој на ИС со користење на актуелни методологии. Оспособување за практична анализа на кориснички побарувања и креирање ефективни модели во сите фази  развој на еден ИС, со нагласок на фазите на анализа и дизајн. По завршување на курсот се очекува студентот да демонстрира знаење за користење на современи пристапи во процесот на анализа и дизајн на информациските системи.",
-	"Биолошки инспирирано пресметување": "Целта на овој курс е запознавање на студентите со алгоритми кои се инспирирани од феномени кои се појавуваат во природата и примена на истите за решавање на проблеми од оптимизација, дизајн и учење. Фокусот ќе биде поставен врз абстракцијата на алгоритмите од воочените феномени, анализа на нивниот резултат како и нивна споредба. Во текот на курсот ќе се посвети внимание на конкретни примени на споменатите алгоритми. По завршувањето на курсот се очекува студентите да се здобијат со:\n-\tЗнаење за природните феномени кои се инспирација за дискутираните алгоритми\n-\tРазбирање за силните и слабите страни на алгоритмите\n-\tСпособност за идентификување на соодветноста на алгоритмите и нивна примена во проблеми од оптимизација, дизајн и учење",
-	"Блоковски вериги и криптовалути": "Целта на овој курс е да овозможи на слушателите да разберат како фунцкционираат крипто валутите,  и идејата, технологиите и организациите кои ги поддржуваат или произлегуваат од нив.",
-	"Веб базирани системи": "Запознавање и користење на технологиите на семантички веб, поврзани податоци и графови на знаење. Студентите ќе научат да развиваат интелигентни апликации базирани на графови на знаење и да пронаоѓаат и користат отворени податочни множества.",
-	"Веб пребарувачки системи": "Запознавање со концепти за развој на веб пребарувачките системи. Разбирање на начините на обработување на прашањата и множеството на документи низ кои се пребарува, како и начини за автоматско собирање податоци од веб. По завршувањето на курсот се очекува студентот да демонстрира познавање на методи за процесирање на прашања, репрезентација на документите и нивно индексирање и класификацирање, да демонстрира познавање на методи за пребарување и индексирање на слики и да може самостојно да развива алгоритми за пребарување со користење на програмски алатки.",
-	"Виртуелна реалност": "Предметот треба да овозможи запознавање на студентите со концептот на виртуелна реалност, различните\nвидови виртуелни околини, влезно-излезните уреди, како и основни програмерски техники за дизајнирање и\nразвој на виртуелни околини. По завршување на курсот се очекува студентот да го разбира концептот на\nвиртуелната реалност, да биде во можност да ги опише карактеристиките на различните видови виртуелни\nоколини и да има основни познавања за дизајнирање и развој на виртуелни светови.",
-	"Вовед во анализа на временските серии": "Запознавање на студентите со анализа на произволни временски серии со традиционални статистички методи, како и со методи базирани на длабоко учење. Курсот дава вовед во типовите на временски серии, покрива стационарни процеси, ARMA модели, ARIMA и сезонални ARIMA модели, временско-просторни методи. Со знаењето стекнато на курсот студентите ќе може да анализираат временски серии од разновидни извори, податочни текови (data streams), IoT и да откриваат трендови и аномалии, да предвидуваат идни појави, како и да ги користат за препознавање на разновидни настани кои се опишани со временски серии.",
-	"Вовед во биоинформатиката": "Студентите да се запознаат со областите и проблемите кои ги покрива биоинформатиката, да\nбидат во можност да вршат генска и протеинска секвенцна анализа, да користат биолошки бази\nподатоци, да ги запознаат пресметковните методи за решавање проблеми во молекуларната\nбиологија.",
-	"Вовед во когнитивни науки": "Целта е да се разбере како работи човечкиот мозок. Студентите ќе се запознаат со теоретските и емпириските погледи кои ја дефинираат когнитивната наука. Ќе се запознаат со истражувањата за природата на менталните процеси како перцепцијата, мислењето, меморијата, фантазијата, вниманието, јазикот, интелигенцијата, донесувањето одлуки и решавањето проблеми. Студентите ќе научат кои се алатките превземени од експерименталната психологија, наука на развојот, комјутерската наука, лингвистика, визуализацијата, филозофијата, антропологијата, бихевиоризмот, неврологијата. Курсот ќе ги поврзе сите овие пристапи кои се поврзуваат во когнитивната наука.",
-	"Вовед во паметни градови": "Да го запознае студентот со главните концепти, теми и трендови на паметните и одржливите градови, улогата на информациите во дизајнот на мрежните ресурси и влијанието врз урбаниот дизајн, развојот и урбаното живеење.",
-	"Вовед во препознавање на облици": "Целта на курсот е студентите да ги научат главните концепти на методите и техниките кои се применуваат за\nпрепознавање на облици.По завршувањето на курсот кандидатитеќе бидат оспособени за дизајнирање,\nреализирање и имплементација на системи за автоматско препознавање на облици, проценка на нивните\nперформанси и нивна оптимизација.",
-	"Дигитална постпродукција": "По завршување на курсот се очекува студентите да се оспособени за основни методи за дигитална постпродукција, дигитално композитирање, работа со секвенци од слики, интеграција на дигитални објекти во слики и следење и спарување на движења од различни извори",
-	"Дизајн на компјутерски мрежи": "Целта на овој курсот е да го оспособи студентот да работи со големи компјутерски мрежи и да обезбеди колаборативна работа на различни административни региони, како и да дизајнира различни типови компјутерски мрежи според потребите на крајните корисници.",
-	"Дипломска работа": "Во рамките на дипломската работа, студентот се стекнува со вештина за дефинирање на проблем, и примена на стекнатото знаење на факултетот за дизајн и имплементација на решение на дадениот проблем. Дополнително, студентот успешно идентификува потреба од дополнителни знаења за решавање на проблемот. Исто така студнетот ги документира и презентира резултатите од дипломската работа",
-	"Дистрибуирани системи": "Предметот има за цел запознавање со развојот на middleware системите. Предмеот ги покрива принципите врз кои се изградени дистрибуираните системи, пред се комуникациите, процесирањето, именување, конзистентност и репликација, справувње со дефекти и безбедност. Овие принципи се понатаму обработени во нивната примена кај дистрибуираните веб базирани системи, дистрибуираните објектно базирани системи, дистрибуираните датотечни системи и дистрибуираните коориднациски системи.",
-	"Дистрибуирано складирање на податоци": "Се поголемата важност и големиот обем на податоците побаруваат соодветни техники и технологии за нивно безбедно, достапно, надежно и скалабилно складирање. Се почестите приоди за складирање на податоци се ориентираат кон дистрибуирани решенија чии имплементации вклучуваат најразлични архитектури и модели со што се добиваат различни придобивки, специфични за секоја имплемнетација. Предметот има за цел да ги обработи техниките на хардверско, мрежно и софтвеско ниво за обезбедување на дистрибуирано складирање на податоците.",
-	"Етичко хакирање": "Студентот ќе ги запознае основните концепти, техники и алатки кои се користат во полето на безбедност на системи. Со преземање на улогата на \"напаѓач\" студентот ќе се стекне со знаење за повеќето сигурносни слабости во неговата околина и начин како да се заштити од нив.",
-	"ИКТ за развој": "Целта на курсот е да ги разгледа основите принципи и најдобри практики за користењето на технологијата за развој на човештвото. Да се разбере концептот на одржлив развој кој ги го вклучува влијанието врз природата, луѓето, општеството и управувањето. Разбирање на можностите за примена на нови ИКТ технологии за општо добро.",
-	"Имплементација на софтверски системи со слободен и отворен код": "По завршување на курсот се очекува студентите да се оспособени за продуктивно учество во поголеми софтверски\nтимови кои работат употребувајќи технологии со слободен и отворен код. Да бидат способни за работа во програмски јазици со отворен код, да развиваат веб апликации на тие платформи. Да бидат способни да водат софтверски проект\nбазиран на технологии со слободен и отворен код.",
-	"Иновации во ИКТ": "Разбирање на иновативноста. Стекнување на иновативни вештини. Примена на ИКТ за креирање на иновации. Креирање на\nиновации во ИКТ.",
-	"Откривање знаење со длабоко учење": "По завршување на предметот, студентот ќе биде оспособен за  избор на соодветни техники за откривање и извлекување на знаење од различен вид податоци. Студентот ќе поседува познавања за напредни архитектури за длабоко учење со примена во системи за препораки, анализа на граф-структурирани податоци и мултимодална фузија на податоци.",
-	"Интелигентни системи": "Целта на предметот е да го заокружи знаењето на студентите од областа на интелигентните системи, почнувајќи од претпроцесирањена податоците до валидирање на изградениот систем. Студентите ќе се оспособат да изградат интелигентен систем од почеток до крај на реални проблеми од специфичен домен, користејќи алатки за автоматизација на процесот на градење ИС.",
-	"Интернет на нештата": "Студентот ќе биде запознаен со главните развојни чекори  и предизвици при дизајнирање на решенија базирани на Интернет на нештата.  Студентот ќе може да моделира, дизајнира и имплементира вакви системи во различни апликативни домени.",
-	"Компјутерска анимација": "По завршување на курсот се очекува студентите да се оспособени за основни методи за продуктивно создавање на компјутерски базирани анимации, за работа во апликации за создавање анимации и можат самостојно да моделираат, текстурираат, ригуваат, осветлуваат, анимираат, рендерираат и композитираат дигитални сцени.",
-	"Компјутерски поддржано производство": "Целата на курсот е запознавање на студентите со теоријата, принципите и праксата за компјутерски потпомогнато производство, основните поими за системи и модели, контрола и симулација на производни процеси.",
-	"Македонски јазик": "Стекнување на знаења и компетенции за Македонскиот јазик.",
-	"Машинска визија": "Да се воведат студентите во основните концепти и техники во компјутерската визија. Студентите кои успешно ќе\nго завршат курсот ќе бидат способни за дизајнирање на ефикасни системи за компјутерска визија како:\nпрепознавање на ракопис, детекција и препознавање на лица, проценка на движење, следење на луѓе и возила,\nпрепознавање на гестови, препознавање и класификација на визуелни објекти, разбирање и анализа на сцени\nитн.",
-	"Менаџмент информациски системи": "По завршување на курсот студентите ќе имаат познавање од видови и примена на менаџмент информациски системи.",
-	"Методика на информатиката": "Целта на предметот е оспособување на студентите да користат најсовремени техники за работа на час за да го предизвикаат интересот на учениците и истите да ги поттикнат на усвојување нови знаења за време на наставата во училницата. Студентите ќе се оспособат да спроведуваат активна настава во училницата, користејќи креативни техники според возраста на учениците и материјалот според наставниот план.",
-	"Методологија на истражувањето во ИКТ": "Целта на курсот е студентите да се запознаат со основите на методологиите на истражување во ИКТ. По завршувањето на курсот кандидатите ќе имаат продлабочени знаења за методологиите на истражувања во ИКТ, ќе можат да конципираат и спроведат научно истражување, и да напишат извештај од научно истражувачката работа.",
-	"Мобилни апликации": "По завршувањето на предметот се очекува студентот да има продлабочено знаење во примена на технологиите и алатките за дизајн и развој на мобилни апликации.",
-	"Мобилни информациски системи": "По завршувањето на предметот се очекува студентот да има продлабочено знаење во примена на технологиите и алатките за складирање, прибирање и обработка на податоци во дистрибуирана и сеприсутна околина со користење на различни мобилни платформи.",
-	"Мобилни платформи и програмирање": "Целта на предметот е студентите да се запознаат со современите мобилни платформи и да научат да програмираат и развиваат мобилни апликации. Ќе научат да се справуваат со ограничувањата од мобилните уреди и да развиваат ефикасни програми. Изработените апликации ќе научат да ги публикуваат на маркет и да го следат користењето на истите",
-	"Моделирање и менаџирање на бизнис процеси": "По завршувањето на предметот се очекува студентот да ги разбира и има продлабочено знаење за типови бизнис процеси и нивна поврзаност со ИС, ќе имаат продлабочено знаење во идентификување, моделирање и мапирање разни типови бизнис процеси, ќе знаат да применат алатки и јазици за моделирање на бизнис процеси преку соодветни дијаграми, ќе имаат познавање од принципите за подобрување на тек на процеси, ќе имаат познавање од концептите за податочна размена и интероперабилност.",
-	"Моделирање и симулација": "Студентот ќе се здобие со знаења за користење на техники за моделирање со цел да го евалуира однесувањето на реалните системи. Студентот ќе стекне способност за конструирање, верификација и решавање\nна модели со различни нивоа на апстракција и деталност. Ќе бидат опфатени и методи за фитување на состојбата и параметрите на моделите со реални податоци, како и предвидување на идното однесување и \"што-ако\" анализи.",
-	"Модерни трендови во роботика": "Студентите ќе бидат воведени во модерните трендови во роботиката. Ќе бидат запознаени со современите техники на моделирање на околината, во која роботите стануваат секојдневие. Студентите ќе се стекнат со познавање на тековните трендови во роботиката како што се интеракција човек – робот, нанороботика, биолошки роботи, роботизирани производни процеси, роботика како асистивна технологија и други трендови",
-	"Мрежна и мобилна форензика": "Студентот ќе се здобие со знаења за примена на методологии за собирање, зачувување, анализа и документација на дигитални докази пронајдени како резултат на сајбер криминал во мрежна и мобилна околина.\nСтудентот ќе знае како да анализира и интерпретира живи мрежни мобилни дигитални докази.",
-	"Напредна интеракција човек компјутер": "Овој предмет ги запознава студентите со основите на комплексната интеракција која се одвива меѓу човекот и компјутерот. Студентите се запознаваат и со техниките за моделирање на корисници, проблеми, апликации и средини како и на техники за евалуација и анализа на интелигентни интефејси. Се разгледуваат принципи за градење посредници кои ги опфаќаат ограничувањата и во двете примарно афектирани групи: човекот и компјутерот. Студентите треба да научат дека корисникот е еден од главните елементи при креирање на компјутерските системи. При тоа, се дава увид во начинот за развивање на хардверот и софтверот за различни групи на корисници, како и за специфични апликациски домени. Студентите стекнуваат познавања на принципи за проектирање на кориснички интерфејси адаптибилни на околината, интелигентни кориснички интерфејси базирани на агенти и интерфејси чувствителни на контекст, како и интелигентни решенија наменети за специфични типови на кориснички групи.",
-	"Напредни бази на податоци": "Запознавање на студентите со напредните концепти на релационите бази на податоци, неопходни за моделирање, креирање, управување и одржување на базите на податоци, како и за  развој на податочно интензивни информациски системи. Со тоа студентите ќе се стекант со длабоки теоретски и практични знаења од областа на базите на податоци. Исто така, студентите ќе се запознат со современите текови на развој и проширување на традиционалните системи за управување на бази на податоци, а со цел да одговорат на актуелните предизвици во развојот на информатичката теорија и практика.",
-	"Web3 апликации": "Целта на овој курс е да овозможи на слушателите да разберат како фунцкционираат web3 апликациите. Ќе се надгради знаењето од блоковски вериги со апликации кои работат над паметните договори.",
-	"Неструктурирани бази на податоци": "Целта на курсот е студентите да се запознаат со неструктурираните и полуструктурираните типови на податоци, нивната организација и чување, како и техниките за манипулација и обработка на истите. Исто така студентите ќе бидат запознаени и со NoSQL базите на податоци, современи бази на податоци кои не подлежат на релациониот модел, а се користат во дистрибуирани и кластер околини. Посебен акцент ќе биде ставен на практичното знаење на некоја од NoSQL базите на податоци.",
-	"Обработка на природните јазици": "Целта на предметот е студентитеда се стекнат со основните теоретски и практични знаења за алгоритмите за обработка на природните јазици. Студентите ќе стекнат знаења за најновите техники на машинско учење со фокус на длабоки невронски мрежи наменети за разбирање и генерирање на текст.",
-	"Операциони истражувања": "Да го запознае студентот со областа на проблеми и методи на операциони истражувања, проблеми на оптимизација на ресурси и проекти и оптимално управување, со методи и техники на линеарно и нелинеарно програмирање, теории на одлучување и игри, операциони истражувања поврзани со управувaчки информациски системи и информациски системи за подршка на одлучување и предвидување.",
-	"Оптички мрежи": "Студентот ќе се стекне со основни познавања за дизајн, контрола и управување на оптички мрежи со помош на современите мрежни технологии, како и со некои тековни развои во областа.",
-	"Пресметковна биологија": "Студентот ќе се стекне со основни познавања за дизајн, контрола и управување на оптички мрежи со помош на современите мрежни технологии, како и со некои тековни развои во областа.",
-	"Пресметување во облак": "Овој предмет ќе го оспособи студентот со основни познавања за концептот на облак и услуги во облак.",
-	"Претприемништво": "Студентите ќе бидат запознаени со предизвиците со кои ќе се соочат доколку се решат да започнат сопствен бизнис. Тие ќе можат да изработат иницијално истражување на пазарот, да ги дефинираат метриките со кои ќе ја следат успеноста на својот бизнис, како и да знаат како да препознаат дали обезбедиле вредност за своите клиенти. Конечно, тие ќе бидат оспособени да се претстават пред потенцијални клиенти, партнери и инвеститори.",
-	"Програмирање на видео игри": "Целта на предметот е да ги запознае студентите со процесот на програмирање на видео игри. За таа цел студентите ќе бидат запознаени со основните компоненти на една видео игра и начинот на кој истите се програмираат. По завршување на курсот се очекува кандидатот да ги разбира концептите за програмирање на видео игри и да може да реализира програмски самостојно или во тим едноставна видео игра.",
-	"Програмски јазици и компајлери": "Студентите треба да го разбрерат развојот и спектарот на програмските јазици, и да го сфатат процесот на конструкција на компајлер што ќе ги надгради како програмери кои навлегле во суштината на програмските јазици.",
-	"Програмски парадигми": "Целта на овој курс е запознавање на студентите со програмски парадигми различни од императивната и објектно-ориентираната, со фокус на декларативната и функционалната програмска парадигма. По завршувањето на курсот студентите треба да бидат способни да: Споредуваат различни програмски парадигми и да изберат соодветна за даден проблем, Користат логички програмски јазик за имплементација на ефикасни алгоритми,\tКористат логички програмски јазик за репрезентација и манипулација со знаење, Користат функционален програмски јазик за пишување на програми без странични ефекти, Разбираат и користат функции од прв и повисок ред, функционални затворања, мрзлива евалуација и апстракција на секвенци, Разбираат и пишуваат едноставни конкурентни програми",
-	"Вовед во рударење на масивни податоци": "Студентите да се запознаат со алгоритмите и техниките на податочно рударење и машинско учење за анализа на големи податочни множества. Фокус ќе биде даден на дистрибуираните платформи како и на начинот на дефинирање и креирање на алгоритми за процесирање и анализа на многу големи податочни множества.",
-	"Самостоен проект": "Целта на предметот е студентите со користење на современите алатки за  Електронско учење самостојно да ја изработат наставната програма за  предмет од основно или средно образование по  нивен избор.",
-	"Системи за поддршка при одлучувањето": "Овој курс претставува вовед во примена на анализа на податоци за донесување деловни одлуки. Целта на курсот е студентите да се запознаат со методите, техниките и системите за поддршка при одлучувањето, како и анализа на одлуките. Да се запознаат со техниките за стекнување на знаење и репрезентација на знаење. По завршување на курсот студентите ќе стекнат знаење како да ги користат системите за поддршка при одлучувањето, правилно да изберат соодветен систем за поддршка при одлучувањето во даден бизнис контекст, како и да дизајнираат, развијат и менаџираат системи за поддршка при одлучувањето.",
-	"Складови на податоци и аналитичка обработка": "Запознавање со oрганизацијата и манипулацијата со податоците организирани во складови на податоци, како и основните операции и алгоритми за работа со складови на податоци. Студентот ќе биде оспособен за интегрирање на оперативни бази на податоци во специјално дизајнирни модели погодни за аналитички потреби. Ова вклучува димензионо моделирање на складови на податоци, организација и манипулација со податоците сместени во складови на податоци, и изготвување на аналитички извештаи базирани на истите податоци.",
-	"Софтвер за вградливи системи": "Целта на курсот е да ги оспособи студентите да креираат апликации наменети за микроконтролери како и работа со влез/излез, подетално со СТМ микроконтролерите. Студентите ќе научат да работат со Nucleo развојните плочи, да имплементираат код, да дебагираат и да управуваат со софтверска конфигурација. Исто така студентите ќе научат кога и како се користи оперативен систем во реално време.",
-	"Софтверски дефинирани мрежи": "По завршувањето на курсот се очекува студентот да има познавање на архитектурата на софтверски дефинираните мрежи и мрежите со виртуелизирани мрежни функции. Да ги знае начините за софтверски пристап до мрежите,  технологиите за конвергирани мрежи и одвојување на корисничкaта од контролната рамнина, како и хардверот од софтверот.",
-	"Теорија на графови и социјални мрежи": "Целта на курсот е студентите да се воведат во најважните аспекти од теоријата на графови, со подетален осврт на теоријата која е значајна за анализа на социјални мрежи.  Студентите ќе се запознаат со концептите, компонентите и организацијата на социјалните мрежи, како и технологиите за развој, интеркација и анализа на истите.",
-	"Споделување и пресметување во толпа": "Целта на предметот е да ги запознае студентите со можностите на толпата да споделува и обработува податоци кои овозможуваат да се решаваат проблеми кои се сеуште комплексни за компјутерските системи, но многу едноставни за колектив со човечка интелигенција. Предметот ќе ги воведе студентите во нов дизајн на апликации и концепт на програмирање кој се заснова на недоверливо учество на голем број поединци од толпата. Во предметот ќе се разгледаат постоечки апликации и платформи за собирање на податоци и решавање на обемни задачи на барање.",
-	"Тимски проект": "На студентите им се дава можност групно да изработат еден поголем проект под надзор на ментор. Се поставува акцент на тимска работа и развој на комплексен софтвер. Пожелна е пракса во фирма.",
-	"Управување со ИКТ проекти": "По завршувањето на предметот се очекува студентот да ги разбира и има продлабочено знаење во примена на техниките и методите за управување со ИКТ проекти, да има продлабочено знаење во утврдување софтверски и системски барања, познавање на метриките за следење на проекти и евалуација, да има знаење да примени техники за управување со барањата на разни проектни интересни групи, знаење за примена на тенхики за анализа  на трошоци, знаење за изготвување на извештаи, познавање на практични софтверски алатки за управување со проектен циклус.",
-	"Вовед во бази на податоци и SQL": "Запознавање на студентот со основните концепти за работа со бази на податоци, начините на нивно моделирање и имплементирање, како и работа со прашалните јазици. Студентот ќе знае практично да го применува SQL стандардот за креирање, одржување и манипулација на релациските бази на податоци.",
-	"Примена на алгоритми и податочни структури": "Запознавање со основните податочни структури и алгоритми кои се понатаму неопходни за работа со бази на\nподатоци како и за други апликации. Студентот ќе биде оспособен за користење на структури и алгоритми\nсо линеарни листи, стебла, графови како и и индекси за пребарување. Исто така ќе биде оспособен за\nпрепознавање и користење на различните архетипи на алгоритми што се користат во практичната имплементација на многу\nсофтверски решенија.",
-	"Математика 3": "Да се воведат основните концепти од веројатност и статистичка анализа со дискусија на примените во компјутерските науки. Да се оспособат студентите за успешно следење на стручните предмети во кои се применуваат елементи од теорија на веројатност и статистика.",
-	"Избрани теми од математика": "Курсот претставува вовед во основните математички концепти неопходни за повисоките курсеви од информациски технологии, компјутерско и софтверско инженерство.",
-	"Математика 2": "Курсот претставува вовед во основните математички концепти неопходни за повисоките курсеви од информациски технологии, компјутерско и софтверско инженерство.",
-	"Тестирање на софтвер": "Целата на курсот е запознавање на студентите со воведните поими од областа на тестирање на софтвер, како потребата од тестирање на софтвер, како и практична работа на тестирање, валидација и верификација на софтвер.",
-	"Сензорски системи": "Студентот ќе биде запознаен со главните предизвици при дизајн на сензорските системи.",
-	"Адаптивни и интерактивни веб информациски системи": "Индустријата за персонализација и адаптација на веб е во пораст. Компаниите, институциите, универзитетите, и истражувачките лаборатории имаат потреба од бројни експерти кои ги познаваат и разбираат како функционираат адаптивните интерактивни системи, персонализацијата и социјалната навигација и интеракција за да водат развој на сопствени решенија или да нарачуваат готови решенија.\n\nОд овие причини курсот има за почетна цел да ги запознае студентите со светот на адаптивните и интерактивни веб информациски системи (АИИС). Потоа студентите ќе се стекнат знаења за различните аспекти на адаптација, персонализација, социјална навигација и интеракција во АИИС, и ќе се запознаат со во моментот најактуелните адаптивни веб технологии како готови решенија или како истражувачки демонстративни решенија кои се користат во пракса. Студентите ќе разгледуваат многу примери на модерни АИИС развиени од водечките Интернет компании како Google, Yahoo, IBM, Microsoft, Ebay, Facebook, Twitter, како и повеќе лидери на специјализирани индустрии како Netflix, Booking.com, Spotify, Hulu, Zalando.\n\nГлавна финална компетенција во овој предмет со која ќе се здобијат студентите е да го применат стекнатото знаење во реалниот свет преку анализа на потребите и исполнување на истите со постојните АИИС, критика на постојни АИИС и главните елементи од животен циклус за развој на сопствени решенија за АИИС, базирани на постојни техники и со користење на иновативни технологии за социјална интеракција и навигација, адаптација и персонализација.",
-	"Спорт и здравје": "Целта на предметот спорт и спортски активности е усвојување на нови и усовршување на старите моторни знаења и вештини, подобрување на моторните и фукционалните спсособности се со цел унапредување на здравјето, задоволувањето на потребате за движење, оспообување на студентот за рационално, содржајно користење на слободното време како и подобрување на квалитетот на животот во младоста, во зрелата возраст и староста. Унапредување на социјалната комуникација. Очекувани резултати: Оспособување на студентот за самостојно спортување и физичко вежбање, запознавање со законитостите на физичката култура и правилната исхрана. Стекнување знаења за структурата, правилата, принципите на тренажниот процес и специфичностите на избраната кинезиолошка активност.",
-	"Деловна пракса": "Оспособување на студентот самостојно да идентификува проблеми и нивните решенија практично да ги реализира."
-}
Index: ckend/subjects/management/data/additional_info.json
===================================================================
--- backend/subjects/management/data/additional_info.json	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,1367 +1,0 @@
-[
-	{
-		"name": "Архитектура и организација на компјутери",
-		"tags": ["Computer Architecture", "Systems Infrastructure"],
-		"technologies": [],
-		"isEasy": false,
-		"evaluation": ["Theory", "Practical"]
-	},
-	{
-		"name": "Бизнис и менаџмент",
-		"tags": ["Societal Skills"],
-		"technologies": [],
-		"isEasy": true,
-		"evaluation": ["Theory"]
-	},
-	{
-		"name": "Бизнис статистика",
-		"tags": ["Data Science", "Mathematics"],
-		"technologies": [],
-		"isEasy": false,
-		"evaluation": ["Theory", "Practical"]
-	},
-	{
-		"name": "Вовед во компјутерските науки",
-		"tags": ["Computer Science"],
-		"technologies": [],
-		"isEasy": false,
-		"evaluation": ["Theory", "Practical"]
-	},
-	{
-		"name": "Дизајн на дигитални кола",
-		"tags": ["Computer Architecture", "Embedded Systems"],
-		"technologies": [],
-		"isEasy": false,
-		"evaluation": ["Theory", "Practical"]
-	},
-	{
-		"name": "Дискретна математика",
-		"tags": ["Mathematics", "Computer Science"],
-		"technologies": [],
-		"isEasy": false,
-		"evaluation": ["Theory", "Practical"]
-	},
-	{
-		"name": "Дискретни структури 1",
-		"tags": ["Mathematics", "Computer Science"],
-		"technologies": [],
-		"isEasy": false,
-		"evaluation": ["Theory", "Practical"]
-	},
-	{
-		"name": "Дискретни структури 2",
-		"tags": ["Mathematics", "Computer Science"],
-		"technologies": [],
-		"isEasy": false,
-		"evaluation": ["Theory", "Practical"]
-	},
-	{
-		"name": "Е-учење",
-		"tags": ["Education", "Societal Skills"],
-		"technologies": [],
-		"isEasy": true,
-		"evaluation": ["Theory", "Project"]
-	},
-	{
-		"name": "Математика 1",
-		"tags": ["Mathematics", "Computer Science"],
-		"technologies": [],
-		"isEasy": false,
-		"evaluation": ["Theory", "Practical"]
-	},
-	{
-		"name": "Калкулус 1",
-		"tags": ["Mathematics", "Computer Science"],
-		"technologies": [],
-		"isEasy": false,
-		"evaluation": ["Theory", "Practical"]
-	},
-	{
-		"name": "Калкулус 2",
-		"tags": ["Mathematics", "Computer Science"],
-		"technologies": [],
-		"isEasy": false,
-		"evaluation": ["Theory", "Practical"]
-	},
-	{
-		"name": "Компјутерски архитектури",
-		"tags": ["Computer Architecture"],
-		"technologies": [],
-		"isEasy": false,
-		"evaluation": ["Theory", "Practical"]
-	},
-	{
-		"name": "Компјутерски компоненти",
-		"tags": ["Computer Architecture", "Embedded Systems"],
-		"technologies": [],
-		"isEasy": true,
-		"evaluation": ["Theory"]
-	},
-	{
-		"name": "Креативни вештини за решавање проблеми",
-		"tags": ["Societal Skills"],
-		"technologies": [],
-		"isEasy": true,
-		"evaluation": ["Theory"]
-	},
-	{
-		"name": "Маркетинг",
-		"tags": ["Societal Skills"],
-		"technologies": [],
-		"isEasy": true,
-		"evaluation": ["Theory"]
-	},
-	{
-		"name": "Објектно ориентирана анализа и дизајн",
-		"tags": ["Software Engineering"],
-		"technologies": [],
-		"isEasy": false,
-		"evaluation": ["Theory", "Practical"]
-	},
-	{
-		"name": "Објектно-ориентирано програмирање",
-		"tags": ["Software Engineering", "Computer Science"],
-		"technologies": ["C++"],
-		"isEasy": false,
-		"evaluation": ["Theory", "Code"]
-	},
-	{
-		"name": "Основи на Веб дизајн",
-		"tags": ["Web Development", "UI/UX & Digital Media"],
-		"technologies": ["HTML", "CSS"],
-		"isEasy": false,
-		"evaluation": ["Theory", "Code"]
-	},
-	{
-		"name": "Основи на сајбер безбедноста",
-		"tags": ["Cybersecurity", "Networking"],
-		"technologies": [],
-		"isEasy": true,
-		"evaluation": ["Theory"]
-	},
-	{
-		"name": "Педагогија",
-		"tags": ["Education", "Societal Skills"],
-		"technologies": [],
-		"isEasy": true,
-		"evaluation": ["Theory"]
-	},
-	{
-		"name": "Професионални вештини",
-		"tags": ["Societal Skills"],
-		"technologies": [],
-		"isEasy": true,
-		"evaluation": ["Project"]
-	},
-	{
-		"name": "Структурно програмирање",
-		"tags": ["Software Engineering", "Computer Science"],
-		"technologies": ["C++"],
-		"isEasy": false,
-		"evaluation": ["Theory", "Code"]
-	},
-	{
-		"name": "Физика",
-		"tags": ["Physics"],
-		"technologies": [],
-		"isEasy": false,
-		"evaluation": ["Theory", "Practical"]
-	},
-	{
-		"name": "Алгоритми и податочни структури",
-		"tags": ["Computer Science", "Software Engineering"],
-		"technologies": ["Java"],
-		"isEasy": false,
-		"evaluation": ["Theory", "Code"]
-	},
-	{
-		"name": "Анализа на софтверските барања",
-		"tags": ["Software Engineering", "Societal Skills"],
-		"technologies": [],
-		"isEasy": true,
-		"evaluation": ["Theory", "Project"]
-	},
-	{
-		"name": "Безжични и мобилни системи",
-		"tags": ["Networking", "Cybersecurity", "Embedded Systems"],
-		"technologies": [],
-		"isEasy": false,
-		"evaluation": ["Theory", "Practical"]
-	},
-	{
-		"name": "Веројатност и статистика",
-		"tags": ["Mathematics", "Data Science", "Computer Science"],
-		"technologies": ["R"],
-		"isEasy": false,
-		"evaluation": ["Theory", "Practical", "Code"]
-	},
-	{
-		"name": "Вештачка интелигенција",
-		"tags": ["AI / ML", "Computer Science"],
-		"technologies": ["Python"],
-		"isEasy": false,
-		"evaluation": ["Theory", "Code"]
-	},
-	{
-		"name": "Визуелно програмирање",
-		"tags": ["Software Engineering", "UI/UX & Digital Media"],
-		"technologies": [".NET"],
-		"isEasy": false,
-		"evaluation": ["Code", "Project"]
-	},
-	{
-		"name": "Вовед во екоинформатиката",
-		"tags": ["Data Science", "Computer Science", "Societal Skills"],
-		"technologies": [],
-		"isEasy": true,
-		"evaluation": ["Theory", "Project"]
-	},
-	{
-		"name": "Вовед во случајни процеси",
-		"tags": ["Mathematics", "Data Science", "Computer Science"],
-		"technologies": [],
-		"isEasy": false,
-		"evaluation": ["Theory", "Practical"]
-	},
-	{
-		"name": "Дигитално процесирање на слика",
-		"tags": ["Multimedia", "AI / ML", "Data Science", "Computer Science"],
-		"technologies": ["Python"],
-		"isEasy": true,
-		"evaluation": ["Theory", "Code", "Project"]
-	},
-	{
-		"name": "Дигитизација",
-		"tags": ["Multimedia"],
-		"technologies": ["Blender"],
-		"isEasy": true,
-		"evaluation": ["Theory", "Project"]
-	},
-	{
-		"name": "Дизајн на алгоритми",
-		"tags": ["Computer Science", "Software Engineering", "Mathematics"],
-		"technologies": ["any"],
-		"isEasy": false,
-		"evaluation": ["Theory", "Code", "Project"]
-	},
-	{
-		"name": "Е-влада",
-		"tags": ["Societal Skills"],
-		"technologies": [],
-		"isEasy": true,
-		"evaluation": ["Theory"]
-	},
-	{
-		"name": "Економија за ИКТ инженери",
-		"tags": ["Societal Skills"],
-		"technologies": [],
-		"isEasy": true,
-		"evaluation": ["Theory"]
-	},
-	{
-		"name": "Електрични кола",
-		"tags": ["Computer Architecture", "Physics"],
-		"technologies": [],
-		"isEasy": false,
-		"evaluation": ["Practical"]
-	},
-	{
-		"name": "Информатичко размислување во образованието",
-		"tags": ["Education", "Societal Skills"],
-		"technologies": [],
-		"isEasy": true,
-		"evaluation": ["Project"]
-	},
-	{
-		"name": "Инженерска математика",
-		"tags": ["Mathematics"],
-		"technologies": [],
-		"isEasy": false,
-		"evaluation": ["Theory", "Practical", "Project"]
-	},
-	{
-		"name": "Интернет програмирање на клиентска страна",
-		"tags": ["Web Development", "Software Engineering"],
-		"technologies": ["HTML", "CSS", "JavaScript"],
-		"isEasy": false,
-		"evaluation": ["Theory", "Code", "Project"]
-	},
-	{
-		"name": "Интернет технологии",
-		"tags": ["Web Development", "Software Engineering"],
-		"technologies": [".NET", "any", "HTML", "CSS"],
-		"isEasy": false,
-		"evaluation": ["Theory", "Code", "Project"]
-	},
-	{
-		"name": "Компјутерска графика",
-		"tags": ["UI/UX & Digital Media", "Multimedia", "Software Engineering"],
-		"technologies": ["C++"],
-		"isEasy": false,
-		"evaluation": ["Theory", "Code", "Project"]
-	},
-	{
-		"name": "Компјутерски мрежи",
-		"tags": ["Networking"],
-		"technologies": [],
-		"isEasy": false,
-		"evaluation": ["Theory", "Practical"]
-	},
-	{
-		"name": "Компјутерски мрежи и безбедност",
-		"tags": ["Networking", "Cybersecurity"],
-		"technologies": [],
-		"isEasy": false,
-		"evaluation": ["Theory", "Practical"]
-	},
-	{
-		"name": "Концепти на информатичко општество",
-		"tags": ["Societal Skills", "Computer Science"],
-		"technologies": ["any"],
-		"isEasy": true,
-		"evaluation": ["Theory", "Project"]
-	},
-	{
-		"name": "Медиуми и комуникации",
-		"tags": ["Multimedia", "Societal Skills"],
-		"technologies": [],
-		"isEasy": true,
-		"evaluation": ["Theory"]
-	},
-	{
-		"name": "Мултимедијални технологии",
-		"tags": ["Multimedia"],
-		"technologies": [],
-		"isEasy": true,
-		"evaluation": ["Theory", "Practical"]
-	},
-	{
-		"name": "Напредно програмирање",
-		"tags": ["Software Engineering", "Computer Science"],
-		"technologies": ["Kotlin"],
-		"isEasy": false,
-		"evaluation": ["Theory", "Code"]
-	},
-	{
-		"name": "Квантно пресметување",
-		"tags": ["Computer Science", "Physics", "Mathematics"],
-		"technologies": [],
-		"isEasy": false,
-		"evaluation": []
-	},
-	{
-		"name": "Оперативни системи",
-		"tags": [
-			"Systems Infrastructure",
-			"Computer Science",
-			"Computer Architecture"
-		],
-		"technologies": ["Docker", "Java"],
-		"isEasy": false,
-		"evaluation": ["Theory", "Practical"]
-	},
-	{
-		"name": "Основи на комуникациски системи",
-		"tags": ["Networking", "Physics"],
-		"technologies": [],
-		"isEasy": false,
-		"evaluation": ["Project"]
-	},
-	{
-		"name": "Основи на теоријата на информации",
-		"tags": ["Computer Science", "Mathematics"],
-		"technologies": [],
-		"isEasy": false,
-		"evaluation": ["Theory", "Practical"]
-	},
-	{
-		"name": "Софтверско инженерство",
-		"tags": ["Software Engineering", "Cloud Engineering & DevOps"],
-		"technologies": ["Git", "Docker"],
-		"isEasy": false,
-		"evaluation": ["Theory", "Practical"]
-	},
-	{
-		"name": "Теорија на информации со дигитални комуникации",
-		"tags": ["Computer Science", "Mathematics"],
-		"technologies": [],
-		"isEasy": false,
-		"evaluation": ["Theory", "Practical"]
-	},
-	{
-		"name": "Управување со техничка поддршка",
-		"tags": ["Societal Skills", "Systems Infrastructure"],
-		"technologies": [],
-		"isEasy": false,
-		"evaluation": ["Theory", "Practical", "Project"]
-	},
-	{
-		"name": "Шаблони за дизајн на кориснички интерфејси",
-		"tags": [
-			"UI/UX & Digital Media",
-			"Web Development",
-			"Software Engineering"
-		],
-		"technologies": ["jQuery", "Figma"],
-		"isEasy": false,
-		"evaluation": ["Theory", "Code"]
-	},
-	{
-		"name": "Агентно-базирани системи",
-		"tags": ["AI / ML", "Software Engineering", "Computer Science"],
-		"technologies": ["Python"],
-		"isEasy": false,
-		"evaluation": ["Project"]
-	},
-	{
-		"name": "Администрација на мрежи",
-		"tags": ["Networking", "Systems Infrastructure", "Cybersecurity"],
-		"technologies": [],
-		"isEasy": false,
-		"evaluation": ["Theory", "Project"]
-	},
-	{
-		"name": "Администрација на системи",
-		"tags": ["Systems Infrastructure", "Networking", "Cybersecurity"],
-		"technologies": [],
-		"isEasy": false,
-		"evaluation": ["Theory", "Practical"]
-	},
-	{
-		"name": "Бази на податоци",
-		"tags": ["Databases", "Software Engineering"],
-		"technologies": [],
-		"isEasy": false,
-		"evaluation": ["Theory", "Code", "Project"]
-	},
-	{
-		"name": "Вградливи микропроцесорски системи",
-		"tags": [
-			"Embedded Systems",
-			"Computer Architecture",
-			"Software Engineering"
-		],
-		"technologies": [],
-		"isEasy": false,
-		"evaluation": ["Theory", "Practical", "Project"]
-	},
-	{
-		"name": "Веб програмирање",
-		"tags": ["Web Development", "Software Engineering", "Databases"],
-		"technologies": ["Spring"],
-		"isEasy": false,
-		"evaluation": ["Theory", "Code", "Project"]
-	},
-	{
-		"name": "Визуелизација",
-		"tags": ["UI/UX & Digital Media", "Data Science", "Multimedia"],
-		"technologies": [],
-		"isEasy": true,
-		"evaluation": ["Project"]
-	},
-	{
-		"name": "Виртуелизација",
-		"tags": ["Cloud Engineering & DevOps", "Systems Infrastructure"],
-		"technologies": [],
-		"isEasy": false,
-		"evaluation": ["Theory", "Practical", "Project"]
-	},
-	{
-		"name": "Вовед во мрежна наука",
-		"tags": ["Networking", "Data Science", "Computer Science"],
-		"technologies": ["Python"],
-		"isEasy": true,
-		"evaluation": ["Project"]
-	},
-	{
-		"name": "Вовед во науката за податоци",
-		"tags": ["Data Science", "Computer Science", "AI / ML"],
-		"technologies": ["Python"],
-		"isEasy": false,
-		"evaluation": ["Theory", "Code", "Project"]
-	},
-	{
-		"name": "Географски информациски системи",
-		"tags": ["Data Science"],
-		"technologies": [],
-		"isEasy": false,
-		"evaluation": ["Project"]
-	},
-	{
-		"name": "Дигитална форензика",
-		"tags": ["Cybersecurity", "Systems Infrastructure"],
-		"technologies": [],
-		"isEasy": true,
-		"evaluation": ["Theory", "Project"]
-	},
-	{
-		"name": "Дигитални библиотеки",
-		"tags": ["Computer Science"],
-		"technologies": [],
-		"isEasy": true,
-		"evaluation": ["Theory"]
-	},
-	{
-		"name": "Дизајн и архитектура на софтвер",
-		"tags": [
-			"Software Engineering",
-			"Cloud Engineering & DevOps",
-			"Systems Infrastructure"
-		],
-		"technologies": ["any"],
-		"isEasy": false,
-		"evaluation": ["Theory", "Project"]
-	},
-	{
-		"name": "Дизајн на интеракцијата човек-компјутер",
-		"tags": [
-			"UI/UX & Digital Media",
-			"Software Engineering",
-			"Web Development"
-		],
-		"technologies": ["Figma", "Django", "HTML", "CSS"],
-		"isEasy": false,
-		"evaluation": ["Theory", "Code", "Project"]
-	},
-	{
-		"name": "Дизајн на образовен софтвер",
-		"tags": ["Education", "Software Engineering"],
-		"technologies": [],
-		"isEasy": true,
-		"evaluation": ["Theory", "Project"]
-	},
-	{
-		"name": "Електронска и мобилна трговија",
-		"tags": [
-			"Web Development",
-			"Societal Skills",
-			"Software Engineering",
-			"UI/UX & Digital Media"
-		],
-		"technologies": ["React"],
-		"isEasy": false,
-		"evaluation": ["Theory", "Code", "Project"]
-	},
-	{
-		"name": "Интегрирани системи",
-		"tags": [
-			"Embedded Systems",
-			"Web Development",
-			"Computer Architecture",
-			"Software Engineering"
-		],
-		"technologies": [".NET"],
-		"isEasy": false,
-		"evaluation": ["Theory", "Practical", "Project"]
-	},
-	{
-		"name": "Информациска безбедност",
-		"tags": ["Cybersecurity", "Networking"],
-		"technologies": ["any"],
-		"isEasy": false,
-		"evaluation": ["Theory", "Practical", "Project"]
-	},
-	{
-		"name": "Инфраструктурно програмирање",
-		"tags": [
-			"Cloud Engineering & DevOps",
-			"Systems Infrastructure",
-			"Software Engineering"
-		],
-		"technologies": [],
-		"isEasy": false,
-		"evaluation": []
-	},
-	{
-		"name": "Компјутерска електроника",
-		"tags": ["Computer Architecture", "Embedded Systems", "Physics"],
-		"technologies": [],
-		"isEasy": false,
-		"evaluation": ["Practical", "Project"]
-	},
-	{
-		"name": "Компјутерска етика",
-		"tags": ["Societal Skills", "Education"],
-		"technologies": [],
-		"isEasy": true,
-		"evaluation": ["Theory", "Project"]
-	},
-	{
-		"name": "Компјутерски звук, музика и говор",
-		"tags": ["Multimedia", "Software Engineering", "UI/UX & Digital Media"],
-		"technologies": [],
-		"isEasy": false,
-		"evaluation": ["Project"]
-	},
-	{
-		"name": "Континуирана интеграција и испорака",
-		"tags": [
-			"Cloud Engineering & DevOps",
-			"Software Engineering",
-			"Systems Infrastructure"
-		],
-		"technologies": ["Git", "Docker", "Jenkins", "Kubernetes"],
-		"isEasy": false,
-		"evaluation": ["Theory", "Practical", "Project"]
-	},
-	{
-		"name": "Криптографија",
-		"tags": ["Cybersecurity", "Mathematics", "Computer Science"],
-		"technologies": [],
-		"isEasy": false,
-		"evaluation": ["Theory", "Practical"]
-	},
-	{
-		"name": "Линеарна алгебра и примени",
-		"tags": ["Mathematics", "Computer Science", "Data Science"],
-		"technologies": [],
-		"isEasy": false,
-		"evaluation": ["Theory", "Practical"]
-	},
-	{
-		"name": "Машинско учење",
-		"tags": ["AI / ML", "Data Science", "Computer Science"],
-		"technologies": ["Python"],
-		"isEasy": false,
-		"evaluation": ["Theory", "Practical", "Project"]
-	},
-	{
-		"name": "Мерење и анализа на сообраќај",
-		"tags": ["Networking", "Data Science", "Cybersecurity"],
-		"technologies": [],
-		"isEasy": true,
-		"evaluation": []
-	},
-	{
-		"name": "Сајбер безбедност",
-		"tags": ["Cybersecurity", "Networking"],
-		"technologies": [],
-		"isEasy": false,
-		"evaluation": ["Theory", "Practical", "Project"]
-	},
-	{
-		"name": "Мултимедиски мрежи",
-		"tags": ["Multimedia", "Networking"],
-		"technologies": [],
-		"isEasy": false,
-		"evaluation": ["Theory", "Practical", "Project"]
-	},
-	{
-		"name": "Мултимедиски системи",
-		"tags": [
-			"Multimedia",
-			"Software Engineering",
-			"Systems Infrastructure",
-			"Computer Architecture"
-		],
-		"technologies": [],
-		"isEasy": true,
-		"evaluation": []
-	},
-	{
-		"name": "Напреден веб дизајн",
-		"tags": [
-			"Web Development",
-			"UI/UX & Digital Media",
-			"Software Engineering"
-		],
-		"technologies": ["Vue", "HTML", "CSS"],
-		"isEasy": false,
-		"evaluation": ["Theory", "Code", "Project"]
-	},
-	{
-		"name": "Основи на роботиката",
-		"tags": [
-			"Embedded Systems",
-			"AI / ML",
-			"Computer Architecture",
-			"Software Engineering"
-		],
-		"technologies": [],
-		"isEasy": false,
-		"evaluation": ["Theory", "Code", "Project"]
-	},
-	{
-		"name": "Паралелно и дистрибуирано процесирање",
-		"tags": [
-			"Systems Infrastructure",
-			"Computer Science",
-			"Software Engineering"
-		],
-		"technologies": ["C++"],
-		"isEasy": false,
-		"evaluation": ["Project"]
-	},
-	{
-		"name": "Паралелно програмирање",
-		"tags": [
-			"Cloud Engineering & DevOps",
-			"Systems Infrastructure",
-			"Software Engineering",
-			"Computer Science"
-		],
-		"technologies": [],
-		"isEasy": false,
-		"evaluation": []
-	},
-	{
-		"name": "Персонализирано учење",
-		"tags": ["Education", "Data Science", "Web Development"],
-		"technologies": [],
-		"isEasy": true,
-		"evaluation": []
-	},
-	{
-		"name": "Податочно рударење",
-		"tags": ["Data Science", "AI / ML", "Computer Science"],
-		"technologies": ["Python"],
-		"isEasy": false,
-		"evaluation": ["Project", "Theory", "Code"]
-	},
-	{
-		"name": "Процесирање на сигналите",
-		"tags": ["Computer Science", "Mathematics", "Multimedia"],
-		"technologies": ["Python"],
-		"isEasy": false,
-		"evaluation": ["Theory", "Code"]
-	},
-	{
-		"name": "Вештачка интелигенција за игри",
-		"tags": ["Game Development", "AI / ML", "Software Engineering"],
-		"technologies": [],
-		"isEasy": false,
-		"evaluation": []
-	},
-	{
-		"name": "Психологија на училишна возраст",
-		"tags": ["Societal Skills", "Education"],
-		"technologies": [],
-		"isEasy": true,
-		"evaluation": ["Theory"]
-	},
-	{
-		"name": "Работа со надарени ученици",
-		"tags": ["Education", "Societal Skills"],
-		"technologies": [],
-		"isEasy": true,
-		"evaluation": ["Theory"]
-	},
-	{
-		"name": "Сервисно ориентирани архитектури",
-		"tags": [
-			"Software Engineering",
-			"Cloud Engineering & DevOps",
-			"Web Development"
-		],
-		"technologies": ["Kotlin"],
-		"isEasy": false,
-		"evaluation": ["Theory", "Project"]
-	},
-	{
-		"name": "Современи компјутерски архитектури",
-		"tags": ["Computer Architecture"],
-		"technologies": [],
-		"isEasy": false,
-		"evaluation": []
-	},
-	{
-		"name": "Софтверски дефинирана безбедност",
-		"tags": ["Cybersecurity", "Networking", "Cloud Engineering & DevOps"],
-		"technologies": [],
-		"isEasy": false,
-		"evaluation": []
-	},
-	{
-		"name": "Софтверски квалитет и тестирање",
-		"tags": ["Software Engineering"],
-		"technologies": ["Java"],
-		"isEasy": false,
-		"evaluation": ["Theory", "Code", "Project"]
-	},
-	{
-		"name": "Автоматизирање на процеси во машинско учење",
-		"tags": [
-			"AI / ML",
-			"Cloud Engineering & DevOps",
-			"Software Engineering",
-			"Data Science"
-		],
-		"technologies": [],
-		"isEasy": false,
-		"evaluation": []
-	},
-	{
-		"name": "Учење на далечина",
-		"tags": ["Education"],
-		"technologies": [],
-		"isEasy": true,
-		"evaluation": ["Theory", "Project"]
-	},
-	{
-		"name": "Основи на теоријата на компјутерските науки",
-		"tags": ["Computer Science", "Mathematics"],
-		"technologies": [],
-		"isEasy": false,
-		"evaluation": ["Theory", "Practical"]
-	},
-	{
-		"name": "Автономна роботика",
-		"tags": [
-			"Embedded Systems",
-			"AI / ML",
-			"Software Engineering",
-			"Computer Architecture"
-		],
-		"technologies": [],
-		"isEasy": false,
-		"evaluation": []
-	},
-	{
-		"name": "Администрација на бази податоци",
-		"tags": ["Databases", "Systems Infrastructure"],
-		"technologies": [],
-		"isEasy": false,
-		"evaluation": []
-	},
-	{
-		"name": "Анализа и дизајн на ИС",
-		"tags": ["Software Engineering", "Societal Skills"],
-		"technologies": ["any"],
-		"isEasy": false,
-		"evaluation": ["Theory", "Practical"]
-	},
-	{
-		"name": "Биолошки инспирирано пресметување",
-		"tags": ["AI / ML", "Computer Science"],
-		"technologies": [],
-		"isEasy": false,
-		"evaluation": []
-	},
-	{
-		"name": "Блоковски вериги и криптовалути",
-		"tags": ["Cybersecurity", "Software Engineering", "Computer Science"],
-		"technologies": [],
-		"isEasy": false,
-		"evaluation": ["Project"]
-	},
-	{
-		"name": "Веб базирани системи",
-		"tags": ["Web Development", "Software Engineering", "AI / ML"],
-		"technologies": [],
-		"isEasy": false,
-		"evaluation": ["Project", "Theory"]
-	},
-	{
-		"name": "Веб пребарувачки системи",
-		"tags": ["Web Development", "Databases", "Computer Science"],
-		"technologies": [],
-		"isEasy": false,
-		"evaluation": []
-	},
-	{
-		"name": "Виртуелна реалност",
-		"tags": ["UI/UX & Digital Media", "Multimedia"],
-		"technologies": ["Unity"],
-		"isEasy": true,
-		"evaluation": ["Theory", "Project"]
-	},
-	{
-		"name": "Вовед во анализа на временските серии",
-		"tags": ["Data Science", "Mathematics", "AI / ML"],
-		"technologies": [],
-		"isEasy": false,
-		"evaluation": []
-	},
-	{
-		"name": "Вовед во биоинформатиката",
-		"tags": ["Data Science", "Computer Science"],
-		"technologies": [],
-		"isEasy": false,
-		"evaluation": ["Theory", "Practical", "Project"]
-	},
-	{
-		"name": "Вовед во когнитивни науки",
-		"tags": ["AI / ML", "Computer Science"],
-		"technologies": [],
-		"isEasy": true,
-		"evaluation": ["Theory", "Project"]
-	},
-	{
-		"name": "Вовед во паметни градови",
-		"tags": ["Data Science", "AI / ML"],
-		"technologies": ["Python"],
-		"isEasy": false,
-		"evaluation": ["Theory", "Project"]
-	},
-	{
-		"name": "Вовед во препознавање на облици",
-		"tags": ["AI / ML", "Data Science", "Computer Science"],
-		"technologies": ["any"],
-		"isEasy": false,
-		"evaluation": ["Theory", "Code", "Project"]
-	},
-	{
-		"name": "Дигитална постпродукција",
-		"tags": ["Multimedia", "UI/UX & Digital Media"],
-		"technologies": [],
-		"isEasy": false,
-		"evaluation": []
-	},
-	{
-		"name": "Дизајн на компјутерски мрежи",
-		"tags": ["Networking"],
-		"technologies": [],
-		"isEasy": false,
-		"evaluation": ["Theory", "Practical", "Project"]
-	},
-	{
-		"name": "Дистрибуирани системи",
-		"tags": [
-			"Cloud Engineering & DevOps",
-			"Systems Infrastructure",
-			"Networking",
-			"Software Engineering"
-		],
-		"technologies": ["Java"],
-		"isEasy": false,
-		"evaluation": ["Theory", "Code"]
-	},
-	{
-		"name": "Дистрибуирано складирање на податоци",
-		"tags": [
-			"Databases",
-			"Cloud Engineering & DevOps",
-			"Systems Infrastructure"
-		],
-		"technologies": [],
-		"isEasy": false,
-		"evaluation": []
-	},
-	{
-		"name": "Етичко хакирање",
-		"tags": ["Cybersecurity", "Networking"],
-		"technologies": [],
-		"isEasy": false,
-		"evaluation": ["Theory", "Project"]
-	},
-	{
-		"name": "ИКТ за развој",
-		"tags": [],
-		"technologies": [],
-		"isEasy": true,
-		"evaluation": []
-	},
-	{
-		"name": "Имплементација на софтверски системи со слободен и отворен код",
-		"tags": [
-			"Software Engineering",
-			"Systems Infrastructure",
-			"Web Development"
-		],
-		"technologies": ["Laravel"],
-		"isEasy": false,
-		"evaluation": ["Theory", "Code", "Project"]
-	},
-	{
-		"name": "Иновации во ИКТ",
-		"tags": ["Societal Skills", "Computer Science", "Software Engineering"],
-		"technologies": [],
-		"isEasy": true,
-		"evaluation": ["Theory", "Project"]
-	},
-	{
-		"name": "Откривање знаење со длабоко учење",
-		"tags": ["AI / ML", "Data Science"],
-		"technologies": ["Python"],
-		"isEasy": false,
-		"evaluation": ["Project"]
-	},
-	{
-		"name": "Интелигентни системи",
-		"tags": ["AI / ML", "Software Engineering", "Data Science"],
-		"technologies": ["Python"],
-		"isEasy": false,
-		"evaluation": []
-	},
-	{
-		"name": "Интернет на нештата",
-		"tags": [
-			"Embedded Systems",
-			"Networking",
-			"Cloud Engineering & DevOps",
-			"Cybersecurity",
-			"AI / ML"
-		],
-		"technologies": [],
-		"isEasy": false,
-		"evaluation": []
-	},
-	{
-		"name": "Компјутерска анимација",
-		"tags": [
-			"UI/UX & Digital Media",
-			"Multimedia",
-			"Game Development",
-			"Software Engineering"
-		],
-		"technologies": ["Blender"],
-		"isEasy": false,
-		"evaluation": ["Project"]
-	},
-	{
-		"name": "Компјутерски поддржано производство",
-		"tags": [
-			"Embedded Systems",
-			"Software Engineering",
-			"Computer Architecture"
-		],
-		"technologies": [],
-		"isEasy": false,
-		"evaluation": []
-	},
-	{
-		"name": "Македонски јазик",
-		"tags": ["Societal Skills", "Education"],
-		"technologies": [],
-		"isEasy": true,
-		"evaluation": ["Theory"]
-	},
-	{
-		"name": "Машинска визија",
-		"tags": ["AI / ML", "Multimedia", "Data Science"],
-		"technologies": ["Python"],
-		"isEasy": false,
-		"evaluation": ["Theory", "Practical", "Project"]
-	},
-	{
-		"name": "Менаџмент информациски системи",
-		"tags": ["Software Engineering", "Societal Skills"],
-		"technologies": [],
-		"isEasy": true,
-		"evaluation": ["Theory", "Project"]
-	},
-	{
-		"name": "Методика на информатиката",
-		"tags": ["Education", "Computer Science"],
-		"technologies": [],
-		"isEasy": true,
-		"evaluation": ["Project"]
-	},
-	{
-		"name": "Методологија на истражувањето во ИКТ",
-		"tags": ["Societal Skills", "Computer Science"],
-		"technologies": [],
-		"isEasy": true,
-		"evaluation": ["Theory"]
-	},
-	{
-		"name": "Мобилни апликации",
-		"tags": ["Software Engineering", "UI/UX & Digital Media", "Databases"],
-		"technologies": ["Swift"],
-		"isEasy": false,
-		"evaluation": ["Project"]
-	},
-	{
-		"name": "Мобилни информациски системи",
-		"tags": ["Software Engineering", "UI/UX & Digital Media", "Databases"],
-		"technologies": ["Flutter", "any"],
-		"isEasy": false,
-		"evaluation": ["Project"]
-	},
-	{
-		"name": "Мобилни платформи и програмирање",
-		"tags": ["Software Engineering", "UI/UX & Digital Media", "Databases"],
-		"technologies": ["Kotlin"],
-		"isEasy": false,
-		"evaluation": ["Project"]
-	},
-	{
-		"name": "Моделирање и менаџирање на бизнис процеси",
-		"tags": ["Societal Skills", "Software Engineering"],
-		"technologies": [],
-		"isEasy": true,
-		"evaluation": ["Theory", "Project"]
-	},
-	{
-		"name": "Моделирање и симулација",
-		"tags": ["Computer Science", "Software Engineering", "Data Science"],
-		"technologies": [],
-		"isEasy": true,
-		"evaluation": []
-	},
-	{
-		"name": "Модерни трендови во роботика",
-		"tags": ["Embedded Systems", "AI / ML", "Software Engineering"],
-		"technologies": [],
-		"isEasy": false,
-		"evaluation": []
-	},
-	{
-		"name": "Мрежна и мобилна форензика",
-		"tags": ["Cybersecurity", "Networking", "Embedded Systems"],
-		"technologies": [],
-		"isEasy": false,
-		"evaluation": ["Project"]
-	},
-	{
-		"name": "Напредна интеракција човек компјутер",
-		"tags": ["UI/UX & Digital Media", "Software Engineering"],
-		"technologies": ["any"],
-		"isEasy": false,
-		"evaluation": ["Theory", "Code", "Project"]
-	},
-	{
-		"name": "Напредни бази на податоци",
-		"tags": ["Databases", "Software Engineering", "Data Science"],
-		"technologies": ["SQL"],
-		"isEasy": false,
-		"evaluation": ["Theory", "Code", "Project"]
-	},
-	{
-		"name": "Web3 апликации",
-		"tags": [
-			"Web Development",
-			"Cybersecurity",
-			"Software Engineering",
-			"Databases"
-		],
-		"technologies": [],
-		"isEasy": false,
-		"evaluation": []
-	},
-	{
-		"name": "Неструктурирани бази на податоци",
-		"tags": ["Databases", "Software Engineering", "Cloud Engineering & DevOps"],
-		"technologies": ["NoSQL"],
-		"isEasy": false,
-		"evaluation": ["Theory", "Code", "Project"]
-	},
-	{
-		"name": "Обработка на природните јазици",
-		"tags": [
-			"AI / ML",
-			"Data Science",
-			"Software Engineering",
-			"Computer Science"
-		],
-		"technologies": ["Python"],
-		"isEasy": false,
-		"evaluation": ["Project"]
-	},
-	{
-		"name": "Операциони истражувања",
-		"tags": [
-			"Mathematics",
-			"Data Science",
-			"Computer Science",
-			"Societal Skills"
-		],
-		"technologies": [],
-		"isEasy": false,
-		"evaluation": []
-	},
-	{
-		"name": "Оптички мрежи",
-		"tags": ["Networking", "Physics"],
-		"technologies": [],
-		"isEasy": false,
-		"evaluation": ["Project"]
-	},
-	{
-		"name": "Пресметување во облак",
-		"tags": [
-			"Cloud Engineering & DevOps",
-			"Systems Infrastructure",
-			"Networking",
-			"Software Engineering"
-		],
-		"technologies": ["Java"],
-		"isEasy": false,
-		"evaluation": ["Theory", "Code", "Project"]
-	},
-	{
-		"name": "Претприемништво",
-		"tags": ["Societal Skills"],
-		"technologies": [],
-		"isEasy": true,
-		"evaluation": []
-	},
-	{
-		"name": "Програмирање на видео игри",
-		"tags": [
-			"Game Development",
-			"Software Engineering",
-			"UI/UX & Digital Media",
-			"Multimedia"
-		],
-		"technologies": ["Python"],
-		"isEasy": false,
-		"evaluation": ["Code", "Project"]
-	},
-	{
-		"name": "Програмски јазици и компајлери",
-		"tags": ["Computer Science", "Software Engineering", "Mathematics"],
-		"technologies": [],
-		"isEasy": false,
-		"evaluation": []
-	},
-	{
-		"name": "Програмски парадигми",
-		"tags": ["Software Engineering", "Computer Science"],
-		"technologies": [],
-		"isEasy": false,
-		"evaluation": ["Theory", "Code"]
-	},
-	{
-		"name": "Вовед во рударење на масивни податоци",
-		"tags": ["Data Science", "AI / ML", "Cloud Engineering & DevOps"],
-		"technologies": [],
-		"isEasy": false,
-		"evaluation": ["Project"]
-	},
-	{
-		"name": "Самостоен проект",
-		"tags": ["Education"],
-		"technologies": [],
-		"isEasy": true,
-		"evaluation": ["Project"]
-	},
-	{
-		"name": "Системи за поддршка при одлучувањето",
-		"tags": [
-			"Data Science",
-			"AI / ML",
-			"Software Engineering",
-			"Societal Skills"
-		],
-		"technologies": ["Python"],
-		"isEasy": true,
-		"evaluation": ["Theory"]
-	},
-	{
-		"name": "Складови на податоци и аналитичка обработка",
-		"tags": ["Databases", "Data Science", "Software Engineering"],
-		"technologies": ["SQL"],
-		"isEasy": false,
-		"evaluation": ["Theory", "Code"]
-	},
-	{
-		"name": "Софтвер за вградливи системи",
-		"tags": [
-			"Embedded Systems",
-			"Software Engineering",
-			"Computer Architecture"
-		],
-		"technologies": ["C", "C++"],
-		"isEasy": false,
-		"evaluation": ["Project"]
-	},
-	{
-		"name": "Софтверски дефинирани мрежи",
-		"tags": [
-			"Networking",
-			"Cloud Engineering & DevOps",
-			"Software Engineering",
-			"Cybersecurity"
-		],
-		"technologies": [],
-		"isEasy": false,
-		"evaluation": []
-	},
-	{
-		"name": "Теорија на графови и социјални мрежи",
-		"tags": ["Mathematics", "Computer Science", "Data Science", "Networking"],
-		"technologies": [],
-		"isEasy": false,
-		"evaluation": []
-	},
-	{
-		"name": "Споделување и пресметување во толпа",
-		"tags": ["Data Science"],
-		"technologies": [],
-		"isEasy": false,
-		"evaluation": []
-	},
-	{
-		"name": "Тимски проект",
-		"tags": [],
-		"technologies": ["any"],
-		"isEasy": true,
-		"evaluation": ["Project"]
-	},
-	{
-		"name": "Управување со ИКТ проекти",
-		"tags": ["Societal Skills", "Software Engineering"],
-		"technologies": ["Git"],
-		"isEasy": true,
-		"evaluation": ["Theory"]
-	},
-	{
-		"name": "Примена на алгоритми и податочни структури",
-		"tags": ["Computer Science", "Software Engineering"],
-		"technologies": ["Java"],
-		"isEasy": false,
-		"evaluation": ["Theory", "Code"]
-	},
-	{
-		"name": "Математика 3",
-		"tags": ["Mathematics", "Data Science", "Computer Science"],
-		"technologies": ["R"],
-		"isEasy": false,
-		"evaluation": ["Theory", "Practical", "Code"]
-	},
-	{
-		"name": "Избрани теми од математика",
-		"tags": ["Mathematics"],
-		"technologies": [],
-		"isEasy": false,
-		"evaluation": ["Theory", "Practical"]
-	},
-	{
-		"name": "Математика 2",
-		"tags": ["Mathematics", "Computer Science"],
-		"technologies": [],
-		"isEasy": false,
-		"evaluation": ["Theory", "Practical"]
-	},
-	{
-		"name": "Тестирање на софтвер",
-		"tags": ["Software Engineering"],
-		"technologies": [],
-		"isEasy": false,
-		"evaluation": []
-	},
-	{
-		"name": "Сензорски системи",
-		"tags": ["Embedded Systems", "Networking", "Data Science"],
-		"technologies": [],
-		"isEasy": false,
-		"evaluation": []
-	},
-	{
-		"name": "Адаптивни и интерактивни веб информациски системи",
-		"tags": [
-			"Web Development",
-			"AI / ML",
-			"Software Engineering",
-			"UI/UX & Digital Media"
-		],
-		"technologies": [],
-		"isEasy": false,
-		"evaluation": []
-	},
-	{
-		"name": "Спорт и здравје",
-		"tags": [],
-		"technologies": [],
-		"isEasy": true,
-		"evaluation": []
-	},
-	{
-		"name": "Деловна пракса",
-		"tags": [],
-		"technologies": ["any"],
-		"isEasy": false,
-		"evaluation": ["Project"]
-	}
-]
Index: ckend/subjects/management/data/courses.json
===================================================================
--- backend/subjects/management/data/courses.json	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,182 +1,0 @@
-[
-	"Архитектура и организација на компјутери",
-	"Бизнис и менаџмент",
-	"Бизнис статистика",
-	"Вовед во бази на податоци и SQL",
-	"Вовед во компјутерските науки",
-	"Дизајн на дигитални кола",
-	"Дискретна математика",
-	"Дискретни структури 1",
-	"Дискретни структури 2",
-	"Избрани теми од математика",
-	"Е-учење",
-	"Калкулус 1",
-	"Калкулус 2",
-	"Компјутерски архитектури",
-	"Компјутерски компоненти",
-	"Креативни вештини за решавање проблеми",
-	"Маркетинг",
-	"Математика 1",
-	"Математика 2",
-	"Објектно ориентирана анализа и дизајн",
-	"Објектно-ориентирано програмирање",
-	"Основи на Веб дизајн",
-	"Основи на сајбер безбедноста",
-	"Педагогија",
-	"Професионални вештини",
-	"Спорт и здравје",
-	"Структурно програмирање",
-	"Физика",
-	"Алгоритми и податочни структури",
-	"Анализа на софтверските барања",
-	"Безжични и мобилни системи",
-	"Веројатност и статистика",
-	"Вештачка интелигенција",
-	"Визуелно програмирање",
-	"Вовед во екоинформатиката",
-	"Вовед во случајни процеси",
-	"Деловна пракса",
-	"Дигитално процесирање на слика",
-	"Дигитизација",
-	"Дизајн на алгоритми",
-	"Е-влада",
-	"Економија за ИКТ инженери",
-	"Електрични кола",
-	"Информатичко размислување во образованието",
-	"Инженерска математика",
-	"Интернет програмирање на клиентска страна",
-	"Интернет технологии",
-	"Компјутерска графика",
-	"Компјутерски архитектури",
-	"Компјутерски мрежи",
-	"Компјутерски мрежи и безбедност",
-	"Концепти на информатичко општество",
-	"Математика 3",
-	"Медиуми и комуникации",
-	"Мултимедијални технологии",
-	"Напредно програмирање",
-	"Квантно пресметување",
-	"Оперативни системи",
-	"Основи на комуникациски системи",
-	"Основи на теоријата на информации",
-	"Примена на алгоритми и податочни структури",
-	"Софтверско инженерство",
-	"Теорија на информации со дигитални комуникации",
-	"Управување со техничка поддршка",
-	"Шаблони за дизајн на кориснички интерфејси",
-	"Агентно-базирани системи",
-	"Администрација на мрежи",
-	"Администрација на системи",
-	"Бази на податоци",
-	"Безжични мултимедиски системи",
-	"Вградливи микропроцесорски системи",
-	"Веб програмирање",
-	"Визуелизација",
-	"Виртуелизација",
-	"Вовед во мрежна наука",
-	"Вовед во науката за податоци",
-	"Географски информациски системи",
-	"Дигитална форензика",
-	"Дигитални библиотеки",
-	"Дизајн и архитектура на софтвер",
-	"Дизајн на интеракцијата човек-компјутер",
-	"Дизајн на образовен софтвер",
-	"Електронска и мобилна трговија",
-	"Интегрирани системи",
-	"Информациска безбедност",
-	"Инфраструктурно програмирање",
-	"Компјутерска електроника",
-	"Компјутерска етика",
-	"Компјутерски звук, музика и говор",
-	"Континуирана интеграција и испорака",
-	"Криптографија",
-	"Линеарна алгебра и примени",
-	"Машинско учење",
-	"Мерење и анализа на сообраќај",
-	"Сајбер безбедност",
-	"Мултимедиски мрежи",
-	"Мултимедиски системи",
-	"Напреден веб дизајн",
-	"Основи на роботиката",
-	"Паралелно и дистрибуирано процесирање",
-	"Паралелно програмирање",
-	"Персонализирано учење",
-	"Податочно рударење",
-	"Процесирање на сигналите",
-	"Вештачка интелигенција за игри",
-	"Психологија на училишна возраст",
-	"Работа со надарени ученици",
-	"Сервисно ориентирани архитектури",
-	"Современи компјутерски архитектури",
-	"Софтверски дефинирана безбедност",
-	"Софтверски квалитет и тестирање",
-	"Автоматизирање на процеси во машинско учење",
-	"Учење на далечина",
-	"Основи на теоријата на компјутерските науки",
-	"Автономна роботика",
-	"Адаптивни и интерактивни веб информациски системи",
-	"Администрација на бази податоци",
-	"Анализа и дизајн на ИС",
-	"Биолошки инспирирано пресметување",
-	"Блоковски вериги и криптовалути",
-	"Веб базирани системи",
-	"Веб пребарувачки системи",
-	"Виртуелна реалност",
-	"Вовед во анализа на временските серии",
-	"Вовед во биоинформатиката",
-	"Вовед во когнитивни науки",
-	"Вовед во паметни градови",
-	"Вовед во препознавање на облици",
-	"Дигитална постпродукција",
-	"Дизајн на компјутерски мрежи",
-	"Дипломска работа",
-	"Дистрибуирани системи",
-	"Дистрибуирано складирање на податоци",
-	"Етичко хакирање",
-	"ИКТ за развој",
-	"Имплементација на софтверски системи со слободен и отворен код",
-	"Иновации во ИКТ",
-	"Откривање знаење со длабоко учење",
-	"Интелигентни системи",
-	"Интернет на нештата",
-	"Компјутерска анимација",
-	"Компјутерски поддржано производство",
-	"Македонски јазик",
-	"Машинска визија",
-	"Менаџмент информациски системи",
-	"Методика на информатиката",
-	"Методологија на истражувањето во ИКТ",
-	"Мобилни апликации",
-	"Мобилни информациски системи",
-	"Мобилни платформи и програмирање",
-	"Моделирање и менаџирање на бизнис процеси",
-	"Моделирање и симулација",
-	"Модерни трендови во роботика",
-	"Мрежна и мобилна форензика",
-	"Напредна интеракција човек компјутер",
-	"Напредни бази на податоци",
-	"Web3 апликации",
-	"Неструктурирани бази на податоци",
-	"Обработка на природните јазици",
-	"Операциони истражувања",
-	"Оптички мрежи",
-	"Пресметковна биологија",
-	"Пресметување во облак",
-	"Претприемништво",
-	"Програмирање на видео игри",
-	"Програмски јазици и компајлери",
-	"Програмски парадигми",
-	"Вовед во рударење на масивни податоци",
-	"Самостоен проект",
-	"Сензорски системи",
-	"Системи за поддршка при одлучувањето",
-	"Складови на податоци и аналитичка обработка",
-	"Дипломска работа",
-	"Софтвер за вградливи системи",
-	"Софтверски дефинирани мрежи",
-	"Теорија на графови и социјални мрежи",
-	"Споделување и пресметување во толпа",
-	"Тестирање на софтвер",
-	"Тимски проект",
-	"Управување со ИКТ проекти"
-]
Index: ckend/subjects/management/data/elective.json
===================================================================
--- backend/subjects/management/data/elective.json	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,3190 +1,0 @@
-{
-	"SIIS23": {
-		"S": {
-			"Е-учење": {
-				"subject": "Е-учење",
-				"semester": 2
-			},
-			"Компјутерски компоненти": {
-				"subject": "Компјутерски компоненти",
-				"semester": 2
-			},
-			"Креативни вештини за решавање проблеми": {
-				"subject": "Креативни вештини за решавање проблеми",
-				"semester": 2
-			},
-			"Основи на Веб дизајн": {
-				"subject": "Основи на Веб дизајн",
-				"semester": 2
-			},
-			"Основи на сајбер безбедноста": {
-				"subject": "Основи на сајбер безбедноста",
-				"semester": 2
-			},
-			"Маркетинг": {
-				"subject": "Маркетинг",
-				"semester": 4
-			},
-			"Електрични кола": {
-				"subject": "Електрични кола",
-				"semester": 4
-			},
-			"Информатичко размислување во образованието": {
-				"subject": "Информатичко размислување во образованието",
-				"semester": 4
-			},
-			"Безжични и мобилни системи": {
-				"subject": "Безжични и мобилни системи",
-				"semester": 4
-			},
-			"Визуелно програмирање": {
-				"subject": "Визуелно програмирање",
-				"semester": 4
-			},
-			"Вовед во екоинформатиката": {
-				"subject": "Вовед во екоинформатиката",
-				"semester": 4
-			},
-			"Вовед во случајни процеси": {
-				"subject": "Вовед во случајни процеси",
-				"semester": 4
-			},
-			"Дигитално процесирање на слика": {
-				"subject": "Дигитално процесирање на слика",
-				"semester": 4
-			},
-			"Дизајн на алгоритми": {
-				"subject": "Дизајн на алгоритми",
-				"semester": 4
-			},
-			"Е-влада": {
-				"subject": "Е-влада",
-				"semester": 4
-			},
-			"Интернет технологии": {
-				"subject": "Интернет технологии",
-				"semester": 4
-			},
-			"Компјутерска графика": {
-				"subject": "Компјутерска графика",
-				"semester": 4
-			},
-			"Концепти на информатичко општество": {
-				"subject": "Концепти на информатичко општество",
-				"semester": 4
-			},
-			"Медиуми и комуникации": {
-				"subject": "Медиуми и комуникации",
-				"semester": 4
-			},
-			"Теорија на информации со дигитални комуникации": {
-				"subject": "Теорија на информации со дигитални комуникации",
-				"semester": 4
-			},
-			"Електронска и мобилна трговија": {
-				"subject": "Електронска и мобилна трговија",
-				"semester": 6
-			},
-			"Машинско учење": {
-				"subject": "Машинско учење",
-				"semester": 6
-			},
-			"Основи на теоријата на компјутерските науки": {
-				"subject": "Основи на теоријата на компјутерските науки",
-				"semester": 6
-			},
-			"Вградливи микропроцесорски системи": {
-				"subject": "Вградливи микропроцесорски системи",
-				"semester": 6
-			},
-			"Процесирање на сигналите": {
-				"subject": "Процесирање на сигналите",
-				"semester": 6
-			},
-			"Работа со надарени ученици": {
-				"subject": "Работа со надарени ученици",
-				"semester": 6
-			},
-			"Администрација на мрежи": {
-				"subject": "Администрација на мрежи",
-				"semester": 6
-			},
-			"Виртуелизација": {
-				"subject": "Виртуелизација",
-				"semester": 6
-			},
-			"Психологија на училишна возраст": {
-				"subject": "Психологија на училишна возраст",
-				"semester": 6
-			},
-			"Агентно-базирани системи": {
-				"subject": "Агентно-базирани системи",
-				"semester": 6
-			},
-			"Вовед во мрежна наука": {
-				"subject": "Вовед во мрежна наука",
-				"semester": 6
-			},
-			"Географски информациски системи": {
-				"subject": "Географски информациски системи",
-				"semester": 6
-			},
-			"Дигитална форензика": {
-				"subject": "Дигитална форензика",
-				"semester": 6
-			},
-			"Дигитални библиотеки": {
-				"subject": "Дигитални библиотеки",
-				"semester": 6
-			},
-			"Компјутерска анимација": {
-				"subject": "Компјутерска анимација",
-				"semester": 6
-			},
-			"Компјутерски звук, музика и говор": {
-				"subject": "Компјутерски звук, музика и говор",
-				"semester": 6
-			},
-			"Континуирана интеграција и испорака": {
-				"subject": "Континуирана интеграција и испорака",
-				"semester": 6
-			},
-			"Криптографија": {
-				"subject": "Криптографија",
-				"semester": 6
-			},
-			"Мерење и анализа на сообраќај": {
-				"subject": "Мерење и анализа на сообраќај",
-				"semester": 6
-			},
-			"Мултимедиски системи": {
-				"subject": "Мултимедиски системи",
-				"semester": 6
-			},
-			"Паралелно програмирање": {
-				"subject": "Паралелно програмирање",
-				"semester": 6
-			},
-			"Податочно рударење": {
-				"subject": "Податочно рударење",
-				"semester": 6
-			},
-			"Вештачка интелигенција за игри": {
-				"subject": "Вештачка интелигенција за игри",
-				"semester": 6
-			},
-			"Сервисно ориентирани архитектури": {
-				"subject": "Сервисно ориентирани архитектури",
-				"semester": 6
-			},
-			"Складови на податоци и аналитичка обработка": {
-				"subject": "Складови на податоци и аналитичка обработка",
-				"semester": 6
-			},
-			"Софтверски дефинирана безбедност": {
-				"subject": "Софтверски дефинирана безбедност",
-				"semester": 6
-			},
-			"Автоматизирање на процеси во машинско учење": {
-				"subject": "Автоматизирање на процеси во машинско учење",
-				"semester": 6
-			},
-			"Учење на далечина": {
-				"subject": "Учење на далечина",
-				"semester": 6
-			},
-			"Методика на информатиката": {
-				"subject": "Методика на информатиката",
-				"semester": 8
-			},
-			"Дизајн на компјутерски мрежи": {
-				"subject": "Дизајн на компјутерски мрежи",
-				"semester": 8
-			},
-			"Адаптивни и интерактивни веб информациски системи": {
-				"subject": "Адаптивни и интерактивни веб информациски системи",
-				"semester": 8
-			},
-			"Македонски јазик": {
-				"subject": "Македонски јазик",
-				"semester": 8
-			},
-			"Биолошки инспирирано пресметување": {
-				"subject": "Биолошки инспирирано пресметување",
-				"semester": 8
-			},
-			"Веб пребарувачки системи": {
-				"subject": "Веб пребарувачки системи",
-				"semester": 8
-			},
-			"Виртуелна реалност": {
-				"subject": "Виртуелна реалност",
-				"semester": 8
-			},
-			"Вовед во когнитивни науки": {
-				"subject": "Вовед во когнитивни науки",
-				"semester": 8
-			},
-			"Етичко хакирање": {
-				"subject": "Етичко хакирање",
-				"semester": 8
-			},
-			"ИКТ за развој": {
-				"subject": "ИКТ за развој",
-				"semester": 8
-			},
-			"Откривање знаење со длабоко учење": {
-				"subject": "Откривање знаење со длабоко учење",
-				"semester": 8
-			},
-			"Интелигентни системи": {
-				"subject": "Интелигентни системи",
-				"semester": 8
-			},
-			"Инфраструктурно програмирање": {
-				"subject": "Инфраструктурно програмирање",
-				"semester": 8
-			},
-			"Програмски јазици и компајлери": {
-				"subject": "Програмски јазици и компајлери",
-				"semester": 8
-			},
-			"Мобилни апликации": {
-				"subject": "Мобилни апликации",
-				"semester": 8
-			},
-			"Моделирање и менаџирање на бизнис процеси": {
-				"subject": "Моделирање и менаџирање на бизнис процеси",
-				"semester": 8
-			},
-			"Моделирање и симулација": {
-				"subject": "Моделирање и симулација",
-				"semester": 8
-			},
-			"Модерни трендови во роботика": {
-				"subject": "Модерни трендови во роботика",
-				"semester": 8
-			},
-			"Web3 апликации": {
-				"subject": "Web3 апликации",
-				"semester": 8
-			},
-			"Неструктурирани бази на податоци": {
-				"subject": "Неструктурирани бази на податоци",
-				"semester": 8
-			},
-			"Операциони истражувања": {
-				"subject": "Операциони истражувања",
-				"semester": 8
-			},
-			"Софтверски дефинирани мрежи": {
-				"subject": "Софтверски дефинирани мрежи",
-				"semester": 8
-			},
-			"Споделување и пресметување во толпа": {
-				"subject": "Споделување и пресметување во толпа",
-				"semester": 8
-			}
-		},
-		"W": {
-			"Мултимедијални технологии": {
-				"subject": "Мултимедијални технологии",
-				"semester": 3
-			},
-			"Основи на теоријата на информации": {
-				"subject": "Основи на теоријата на информации",
-				"semester": 3
-			},
-			"Дигитизација": {
-				"subject": "Дигитизација",
-				"semester": 3
-			},
-			"Економија за ИКТ инженери": {
-				"subject": "Економија за ИКТ инженери",
-				"semester": 3
-			},
-			"Инженерска математика": {
-				"subject": "Инженерска математика",
-				"semester": 3
-			},
-			"Интернет програмирање на клиентска страна": {
-				"subject": "Интернет програмирање на клиентска страна",
-				"semester": 3
-			},
-			"Основи на комуникациски системи": {
-				"subject": "Основи на комуникациски системи",
-				"semester": 3
-			},
-			"Управување со техничка поддршка": {
-				"subject": "Управување со техничка поддршка",
-				"semester": 3
-			},
-			"Шаблони за дизајн на кориснички интерфејси": {
-				"subject": "Шаблони за дизајн на кориснички интерфејси",
-				"semester": 3
-			},
-			"Веб програмирање": {
-				"subject": "Веб програмирање",
-				"semester": 5
-			},
-			"Линеарна алгебра и примени": {
-				"subject": "Линеарна алгебра и примени",
-				"semester": 5
-			},
-			"Паралелно и дистрибуирано процесирање": {
-				"subject": "Паралелно и дистрибуирано процесирање",
-				"semester": 5
-			},
-			"Информациска безбедност": {
-				"subject": "Информациска безбедност",
-				"semester": 5
-			},
-			"Компјутерска електроника": {
-				"subject": "Компјутерска електроника",
-				"semester": 5
-			},
-			"Дизајн на образовен софтвер": {
-				"subject": "Дизајн на образовен софтвер",
-				"semester": 5
-			},
-			"Компјутерска етика": {
-				"subject": "Компјутерска етика",
-				"semester": 5
-			},
-			"Персонализирано учење": {
-				"subject": "Персонализирано учење",
-				"semester": 5
-			},
-			"Администрација на системи": {
-				"subject": "Администрација на системи",
-				"semester": 5
-			},
-			"Сајбер безбедност": {
-				"subject": "Сајбер безбедност",
-				"semester": 5
-			},
-			"Визуелизација": {
-				"subject": "Визуелизација",
-				"semester": 5
-			},
-			"Мултимедиски мрежи": {
-				"subject": "Мултимедиски мрежи",
-				"semester": 5
-			},
-			"Напреден веб дизајн": {
-				"subject": "Напреден веб дизајн",
-				"semester": 5
-			},
-			"Обработка на природните јазици": {
-				"subject": "Обработка на природните јазици",
-				"semester": 5
-			},
-			"Основи на роботиката": {
-				"subject": "Основи на роботиката",
-				"semester": 5
-			},
-			"Современи компјутерски архитектури": {
-				"subject": "Современи компјутерски архитектури",
-				"semester": 5
-			},
-			"Теорија на графови и социјални мрежи": {
-				"subject": "Теорија на графови и социјални мрежи",
-				"semester": 5
-			},
-			"Менаџмент информациски системи": {
-				"subject": "Менаџмент информациски системи",
-				"semester": 7
-			},
-			"Програмски парадигми": {
-				"subject": "Програмски парадигми",
-				"semester": 7
-			},
-			"Софтвер за вградливи системи": {
-				"subject": "Софтвер за вградливи системи",
-				"semester": 7
-			},
-			"Дистрибуирани системи": {
-				"subject": "Дистрибуирани системи",
-				"semester": 7
-			},
-			"Пресметување во облак": {
-				"subject": "Пресметување во облак",
-				"semester": 7
-			},
-			"Автономна роботика": {
-				"subject": "Автономна роботика",
-				"semester": 7
-			},
-			"Администрација на бази податоци": {
-				"subject": "Администрација на бази податоци",
-				"semester": 7
-			},
-			"Анализа и дизајн на ИС": {
-				"subject": "Анализа и дизајн на ИС",
-				"semester": 7
-			},
-			"Вовед во анализа на временските серии": {
-				"subject": "Вовед во анализа на временските серии",
-				"semester": 7
-			},
-			"Веб базирани системи": {
-				"subject": "Веб базирани системи",
-				"semester": 7
-			},
-			"Вовед во биоинформатиката": {
-				"subject": "Вовед во биоинформатиката",
-				"semester": 7
-			},
-			"Вовед во паметни градови": {
-				"subject": "Вовед во паметни градови",
-				"semester": 7
-			},
-			"Вовед во препознавање на облици": {
-				"subject": "Вовед во препознавање на облици",
-				"semester": 7
-			},
-			"Дигитална постпродукција": {
-				"subject": "Дигитална постпродукција",
-				"semester": 7
-			},
-			"Дистрибуирано складирање на податоци": {
-				"subject": "Дистрибуирано складирање на податоци",
-				"semester": 7
-			},
-			"Имплементација на софтверски системи со слободен и отворен код": {
-				"subject": "Имплементација на софтверски системи со слободен и отворен код",
-				"semester": 7
-			},
-			"Иновации во ИКТ": {
-				"subject": "Иновации во ИКТ",
-				"semester": 7
-			},
-			"Интернет на нештата": {
-				"subject": "Интернет на нештата",
-				"semester": 7
-			},
-			"Компјутерски поддржано производство": {
-				"subject": "Компјутерски поддржано производство",
-				"semester": 7
-			},
-			"Блоковски вериги и криптовалути": {
-				"subject": "Блоковски вериги и криптовалути",
-				"semester": 7
-			},
-			"Машинска визија": {
-				"subject": "Машинска визија",
-				"semester": 7
-			},
-			"Методологија на истражувањето во ИКТ": {
-				"subject": "Методологија на истражувањето во ИКТ",
-				"semester": 7
-			},
-			"Мобилни информациски системи": {
-				"subject": "Мобилни информациски системи",
-				"semester": 7
-			},
-			"Мобилни платформи и програмирање": {
-				"subject": "Мобилни платформи и програмирање",
-				"semester": 7
-			},
-			"Мрежна и мобилна форензика": {
-				"subject": "Мрежна и мобилна форензика",
-				"semester": 7
-			},
-			"Напредна интеракција човек компјутер": {
-				"subject": "Напредна интеракција човек компјутер",
-				"semester": 7
-			},
-			"Оптички мрежи": {
-				"subject": "Оптички мрежи",
-				"semester": 7
-			},
-			"Програмирање на видео игри": {
-				"subject": "Програмирање на видео игри",
-				"semester": 7
-			},
-			"Вовед во рударење на масивни податоци": {
-				"subject": "Вовед во рударење на масивни податоци",
-				"semester": 7
-			},
-			"Системи за поддршка при одлучувањето": {
-				"subject": "Системи за поддршка при одлучувањето",
-				"semester": 7
-			},
-			"Квантно пресметување": {
-				"subject": "Квантно пресметување",
-				"semester": 7
-			},
-			"Сензорски системи": {
-				"subject": "Сензорски системи",
-				"semester": 7
-			}
-		}
-	},
-	"IMB23": {
-		"S": {
-			"Е-учење": {
-				"subject": "Е-учење",
-				"semester": 2
-			},
-			"Компјутерски компоненти": {
-				"subject": "Компјутерски компоненти",
-				"semester": 2
-			},
-			"Креативни вештини за решавање проблеми": {
-				"subject": "Креативни вештини за решавање проблеми",
-				"semester": 2
-			},
-			"Основи на Веб дизајн": {
-				"subject": "Основи на Веб дизајн",
-				"semester": 2
-			},
-			"Објектно ориентирана анализа и дизајн": {
-				"subject": "Објектно ориентирана анализа и дизајн",
-				"semester": 2
-			},
-			"Маркетинг": {
-				"subject": "Маркетинг",
-				"semester": 4
-			},
-			"Анализа на софтверските барања": {
-				"subject": "Анализа на софтверските барања",
-				"semester": 4
-			},
-			"Софтверско инженерство": {
-				"subject": "Софтверско инженерство",
-				"semester": 4
-			},
-			"Вештачка интелигенција": {
-				"subject": "Вештачка интелигенција",
-				"semester": 4
-			},
-			"Електрични кола": {
-				"subject": "Електрични кола",
-				"semester": 4
-			},
-			"Информатичко размислување во образованието": {
-				"subject": "Информатичко размислување во образованието",
-				"semester": 4
-			},
-			"Визуелно програмирање": {
-				"subject": "Визуелно програмирање",
-				"semester": 4
-			},
-			"Вовед во екоинформатиката": {
-				"subject": "Вовед во екоинформатиката",
-				"semester": 4
-			},
-			"Вовед во случајни процеси": {
-				"subject": "Вовед во случајни процеси",
-				"semester": 4
-			},
-			"Дигитално процесирање на слика": {
-				"subject": "Дигитално процесирање на слика",
-				"semester": 4
-			},
-			"Дизајн на алгоритми": {
-				"subject": "Дизајн на алгоритми",
-				"semester": 4
-			},
-			"Е-влада": {
-				"subject": "Е-влада",
-				"semester": 4
-			},
-			"Компјутерска графика": {
-				"subject": "Компјутерска графика",
-				"semester": 4
-			},
-			"Концепти на информатичко општество": {
-				"subject": "Концепти на информатичко општество",
-				"semester": 4
-			},
-			"Медиуми и комуникации": {
-				"subject": "Медиуми и комуникации",
-				"semester": 4
-			},
-			"Теорија на информации со дигитални комуникации": {
-				"subject": "Теорија на информации со дигитални комуникации",
-				"semester": 4
-			},
-			"Деловна пракса": {
-				"subject": "Деловна пракса",
-				"semester": 4
-			},
-			"Дизајн на интеракцијата човек-компјутер": {
-				"subject": "Дизајн на интеракцијата човек-компјутер",
-				"semester": 6
-			},
-			"Интегрирани системи": {
-				"subject": "Интегрирани системи",
-				"semester": 6
-			},
-			"Софтверски квалитет и тестирање": {
-				"subject": "Софтверски квалитет и тестирање",
-				"semester": 6
-			},
-			"Електронска и мобилна трговија": {
-				"subject": "Електронска и мобилна трговија",
-				"semester": 6
-			},
-			"Машинско учење": {
-				"subject": "Машинско учење",
-				"semester": 6
-			},
-			"Основи на теоријата на компјутерските науки": {
-				"subject": "Основи на теоријата на компјутерските науки",
-				"semester": 6
-			},
-			"Вградливи микропроцесорски системи": {
-				"subject": "Вградливи микропроцесорски системи",
-				"semester": 6
-			},
-			"Процесирање на сигналите": {
-				"subject": "Процесирање на сигналите",
-				"semester": 6
-			},
-			"Работа со надарени ученици": {
-				"subject": "Работа со надарени ученици",
-				"semester": 6
-			},
-			"Психологија на училишна возраст": {
-				"subject": "Психологија на училишна возраст",
-				"semester": 6
-			},
-			"Агентно-базирани системи": {
-				"subject": "Агентно-базирани системи",
-				"semester": 6
-			},
-			"Вовед во мрежна наука": {
-				"subject": "Вовед во мрежна наука",
-				"semester": 6
-			},
-			"Географски информациски системи": {
-				"subject": "Географски информациски системи",
-				"semester": 6
-			},
-			"Дигитална форензика": {
-				"subject": "Дигитална форензика",
-				"semester": 6
-			},
-			"Дигитални библиотеки": {
-				"subject": "Дигитални библиотеки",
-				"semester": 6
-			},
-			"Компјутерска анимација": {
-				"subject": "Компјутерска анимација",
-				"semester": 6
-			},
-			"Компјутерски звук, музика и говор": {
-				"subject": "Компјутерски звук, музика и говор",
-				"semester": 6
-			},
-			"Континуирана интеграција и испорака": {
-				"subject": "Континуирана интеграција и испорака",
-				"semester": 6
-			},
-			"Криптографија": {
-				"subject": "Криптографија",
-				"semester": 6
-			},
-			"Мерење и анализа на сообраќај": {
-				"subject": "Мерење и анализа на сообраќај",
-				"semester": 6
-			},
-			"Мултимедиски системи": {
-				"subject": "Мултимедиски системи",
-				"semester": 6
-			},
-			"Напредни бази на податоци": {
-				"subject": "Напредни бази на податоци",
-				"semester": 6
-			},
-			"Паралелно програмирање": {
-				"subject": "Паралелно програмирање",
-				"semester": 6
-			},
-			"Податочно рударење": {
-				"subject": "Податочно рударење",
-				"semester": 6
-			},
-			"Вештачка интелигенција за игри": {
-				"subject": "Вештачка интелигенција за игри",
-				"semester": 6
-			},
-			"Сервисно ориентирани архитектури": {
-				"subject": "Сервисно ориентирани архитектури",
-				"semester": 6
-			},
-			"Складови на податоци и аналитичка обработка": {
-				"subject": "Складови на податоци и аналитичка обработка",
-				"semester": 6
-			},
-			"Автоматизирање на процеси во машинско учење": {
-				"subject": "Автоматизирање на процеси во машинско учење",
-				"semester": 6
-			},
-			"Учење на далечина": {
-				"subject": "Учење на далечина",
-				"semester": 6
-			},
-			"Управување со ИКТ проекти": {
-				"subject": "Управување со ИКТ проекти",
-				"semester": 8
-			},
-			"Претприемништво": {
-				"subject": "Претприемништво",
-				"semester": 8
-			},
-			"Методика на информатиката": {
-				"subject": "Методика на информатиката",
-				"semester": 8
-			},
-			"Адаптивни и интерактивни веб информациски системи": {
-				"subject": "Адаптивни и интерактивни веб информациски системи",
-				"semester": 8
-			},
-			"Македонски јазик": {
-				"subject": "Македонски јазик",
-				"semester": 8
-			},
-			"Биолошки инспирирано пресметување": {
-				"subject": "Биолошки инспирирано пресметување",
-				"semester": 8
-			},
-			"Веб пребарувачки системи": {
-				"subject": "Веб пребарувачки системи",
-				"semester": 8
-			},
-			"Виртуелна реалност": {
-				"subject": "Виртуелна реалност",
-				"semester": 8
-			},
-			"Вовед во когнитивни науки": {
-				"subject": "Вовед во когнитивни науки",
-				"semester": 8
-			},
-			"Етичко хакирање": {
-				"subject": "Етичко хакирање",
-				"semester": 8
-			},
-			"ИКТ за развој": {
-				"subject": "ИКТ за развој",
-				"semester": 8
-			},
-			"Откривање знаење со длабоко учење": {
-				"subject": "Откривање знаење со длабоко учење",
-				"semester": 8
-			},
-			"Интелигентни системи": {
-				"subject": "Интелигентни системи",
-				"semester": 8
-			},
-			"Програмски јазици и компајлери": {
-				"subject": "Програмски јазици и компајлери",
-				"semester": 8
-			},
-			"Мобилни апликации": {
-				"subject": "Мобилни апликации",
-				"semester": 8
-			},
-			"Моделирање и менаџирање на бизнис процеси": {
-				"subject": "Моделирање и менаџирање на бизнис процеси",
-				"semester": 8
-			},
-			"Моделирање и симулација": {
-				"subject": "Моделирање и симулација",
-				"semester": 8
-			},
-			"Модерни трендови во роботика": {
-				"subject": "Модерни трендови во роботика",
-				"semester": 8
-			},
-			"Web3 апликации": {
-				"subject": "Web3 апликации",
-				"semester": 8
-			},
-			"Неструктурирани бази на податоци": {
-				"subject": "Неструктурирани бази на податоци",
-				"semester": 8
-			},
-			"Операциони истражувања": {
-				"subject": "Операциони истражувања",
-				"semester": 8
-			},
-			"Софтверски дефинирани мрежи": {
-				"subject": "Софтверски дефинирани мрежи",
-				"semester": 8
-			},
-			"Споделување и пресметување во толпа": {
-				"subject": "Споделување и пресметување во толпа",
-				"semester": 8
-			}
-		},
-		"W": {
-			"Веројатност и статистика": {
-				"subject": "Веројатност и статистика",
-				"semester": 3
-			},
-			"Мултимедијални технологии": {
-				"subject": "Мултимедијални технологии",
-				"semester": 3
-			},
-			"Дигитизација": {
-				"subject": "Дигитизација",
-				"semester": 3
-			},
-			"Економија за ИКТ инженери": {
-				"subject": "Економија за ИКТ инженери",
-				"semester": 3
-			},
-			"Инженерска математика": {
-				"subject": "Инженерска математика",
-				"semester": 3
-			},
-			"Интернет програмирање на клиентска страна": {
-				"subject": "Интернет програмирање на клиентска страна",
-				"semester": 3
-			},
-			"Основи на комуникациски системи": {
-				"subject": "Основи на комуникациски системи",
-				"semester": 3
-			},
-			"Шаблони за дизајн на кориснички интерфејси": {
-				"subject": "Шаблони за дизајн на кориснички интерфејси",
-				"semester": 3
-			},
-			"Математика 3": {
-				"subject": "Математика 3",
-				"semester": 3
-			},
-			"Вовед во науката за податоци": {
-				"subject": "Вовед во науката за податоци",
-				"semester": 5
-			},
-			"Дизајн и архитектура на софтвер": {
-				"subject": "Дизајн и архитектура на софтвер",
-				"semester": 5
-			},
-			"Веб програмирање": {
-				"subject": "Веб програмирање",
-				"semester": 5
-			},
-			"Линеарна алгебра и примени": {
-				"subject": "Линеарна алгебра и примени",
-				"semester": 5
-			},
-			"Паралелно и дистрибуирано процесирање": {
-				"subject": "Паралелно и дистрибуирано процесирање",
-				"semester": 5
-			},
-			"Компјутерска електроника": {
-				"subject": "Компјутерска електроника",
-				"semester": 5
-			},
-			"Дизајн на образовен софтвер": {
-				"subject": "Дизајн на образовен софтвер",
-				"semester": 5
-			},
-			"Компјутерска етика": {
-				"subject": "Компјутерска етика",
-				"semester": 5
-			},
-			"Персонализирано учење": {
-				"subject": "Персонализирано учење",
-				"semester": 5
-			},
-			"Визуелизација": {
-				"subject": "Визуелизација",
-				"semester": 5
-			},
-			"Мултимедиски мрежи": {
-				"subject": "Мултимедиски мрежи",
-				"semester": 5
-			},
-			"Напреден веб дизајн": {
-				"subject": "Напреден веб дизајн",
-				"semester": 5
-			},
-			"Напредно програмирање": {
-				"subject": "Напредно програмирање",
-				"semester": 5
-			},
-			"Обработка на природните јазици": {
-				"subject": "Обработка на природните јазици",
-				"semester": 5
-			},
-			"Основи на роботиката": {
-				"subject": "Основи на роботиката",
-				"semester": 5
-			},
-			"Современи компјутерски архитектури": {
-				"subject": "Современи компјутерски архитектури",
-				"semester": 5
-			},
-			"Теорија на графови и социјални мрежи": {
-				"subject": "Теорија на графови и социјални мрежи",
-				"semester": 5
-			},
-			"Менаџмент информациски системи": {
-				"subject": "Менаџмент информациски системи",
-				"semester": 7
-			},
-			"Тестирање на софтвер": {
-				"subject": "Тестирање на софтвер",
-				"semester": 7
-			},
-			"Програмски парадигми": {
-				"subject": "Програмски парадигми",
-				"semester": 7
-			},
-			"Софтвер за вградливи системи": {
-				"subject": "Софтвер за вградливи системи",
-				"semester": 7
-			},
-			"Автономна роботика": {
-				"subject": "Автономна роботика",
-				"semester": 7
-			},
-			"Администрација на бази податоци": {
-				"subject": "Администрација на бази податоци",
-				"semester": 7
-			},
-			"Анализа и дизајн на ИС": {
-				"subject": "Анализа и дизајн на ИС",
-				"semester": 7
-			},
-			"Вовед во анализа на временските серии": {
-				"subject": "Вовед во анализа на временските серии",
-				"semester": 7
-			},
-			"Веб базирани системи": {
-				"subject": "Веб базирани системи",
-				"semester": 7
-			},
-			"Вовед во биоинформатиката": {
-				"subject": "Вовед во биоинформатиката",
-				"semester": 7
-			},
-			"Вовед во паметни градови": {
-				"subject": "Вовед во паметни градови",
-				"semester": 7
-			},
-			"Вовед во препознавање на облици": {
-				"subject": "Вовед во препознавање на облици",
-				"semester": 7
-			},
-			"Дигитална постпродукција": {
-				"subject": "Дигитална постпродукција",
-				"semester": 7
-			},
-			"Дистрибуирано складирање на податоци": {
-				"subject": "Дистрибуирано складирање на податоци",
-				"semester": 7
-			},
-			"Имплементација на софтверски системи со слободен и отворен код": {
-				"subject": "Имплементација на софтверски системи со слободен и отворен код",
-				"semester": 7
-			},
-			"Иновации во ИКТ": {
-				"subject": "Иновации во ИКТ",
-				"semester": 7
-			},
-			"Интернет на нештата": {
-				"subject": "Интернет на нештата",
-				"semester": 7
-			},
-			"Компјутерски поддржано производство": {
-				"subject": "Компјутерски поддржано производство",
-				"semester": 7
-			},
-			"Блоковски вериги и криптовалути": {
-				"subject": "Блоковски вериги и криптовалути",
-				"semester": 7
-			},
-			"Машинска визија": {
-				"subject": "Машинска визија",
-				"semester": 7
-			},
-			"Методологија на истражувањето во ИКТ": {
-				"subject": "Методологија на истражувањето во ИКТ",
-				"semester": 7
-			},
-			"Мобилни информациски системи": {
-				"subject": "Мобилни информациски системи",
-				"semester": 7
-			},
-			"Мобилни платформи и програмирање": {
-				"subject": "Мобилни платформи и програмирање",
-				"semester": 7
-			},
-			"Мрежна и мобилна форензика": {
-				"subject": "Мрежна и мобилна форензика",
-				"semester": 7
-			},
-			"Напредна интеракција човек компјутер": {
-				"subject": "Напредна интеракција човек компјутер",
-				"semester": 7
-			},
-			"Оптички мрежи": {
-				"subject": "Оптички мрежи",
-				"semester": 7
-			},
-			"Програмирање на видео игри": {
-				"subject": "Програмирање на видео игри",
-				"semester": 7
-			},
-			"Вовед во рударење на масивни податоци": {
-				"subject": "Вовед во рударење на масивни податоци",
-				"semester": 7
-			},
-			"Системи за поддршка при одлучувањето": {
-				"subject": "Системи за поддршка при одлучувањето",
-				"semester": 7
-			},
-			"Квантно пресметување": {
-				"subject": "Квантно пресметување",
-				"semester": 7
-			},
-			"Сензорски системи": {
-				"subject": "Сензорски системи",
-				"semester": 7
-			}
-		}
-	},
-	"PIT23": {
-		"S": {
-			"Е-учење": {
-				"subject": "Е-учење",
-				"semester": 2
-			},
-			"Компјутерски компоненти": {
-				"subject": "Компјутерски компоненти",
-				"semester": 2
-			},
-			"Креативни вештини за решавање проблеми": {
-				"subject": "Креативни вештини за решавање проблеми",
-				"semester": 2
-			},
-			"Основи на сајбер безбедноста": {
-				"subject": "Основи на сајбер безбедноста",
-				"semester": 2
-			},
-			"Објектно ориентирана анализа и дизајн": {
-				"subject": "Објектно ориентирана анализа и дизајн",
-				"semester": 2
-			},
-			"Анализа на софтверските барања": {
-				"subject": "Анализа на софтверските барања",
-				"semester": 4
-			},
-			"Вештачка интелигенција": {
-				"subject": "Вештачка интелигенција",
-				"semester": 4
-			},
-			"Електрични кола": {
-				"subject": "Електрични кола",
-				"semester": 4
-			},
-			"Информатичко размислување во образованието": {
-				"subject": "Информатичко размислување во образованието",
-				"semester": 4
-			},
-			"Безжични и мобилни системи": {
-				"subject": "Безжични и мобилни системи",
-				"semester": 4
-			},
-			"Визуелно програмирање": {
-				"subject": "Визуелно програмирање",
-				"semester": 4
-			},
-			"Вовед во екоинформатиката": {
-				"subject": "Вовед во екоинформатиката",
-				"semester": 4
-			},
-			"Вовед во случајни процеси": {
-				"subject": "Вовед во случајни процеси",
-				"semester": 4
-			},
-			"Дигитално процесирање на слика": {
-				"subject": "Дигитално процесирање на слика",
-				"semester": 4
-			},
-			"Дизајн на алгоритми": {
-				"subject": "Дизајн на алгоритми",
-				"semester": 4
-			},
-			"Е-влада": {
-				"subject": "Е-влада",
-				"semester": 4
-			},
-			"Интернет технологии": {
-				"subject": "Интернет технологии",
-				"semester": 4
-			},
-			"Компјутерска графика": {
-				"subject": "Компјутерска графика",
-				"semester": 4
-			},
-			"Концепти на информатичко општество": {
-				"subject": "Концепти на информатичко општество",
-				"semester": 4
-			},
-			"Медиуми и комуникации": {
-				"subject": "Медиуми и комуникации",
-				"semester": 4
-			},
-			"Теорија на информации со дигитални комуникации": {
-				"subject": "Теорија на информации со дигитални комуникации",
-				"semester": 4
-			},
-			"Интегрирани системи": {
-				"subject": "Интегрирани системи",
-				"semester": 6
-			},
-			"Машинско учење": {
-				"subject": "Машинско учење",
-				"semester": 6
-			},
-			"Основи на теоријата на компјутерските науки": {
-				"subject": "Основи на теоријата на компјутерските науки",
-				"semester": 6
-			},
-			"Вградливи микропроцесорски системи": {
-				"subject": "Вградливи микропроцесорски системи",
-				"semester": 6
-			},
-			"Процесирање на сигналите": {
-				"subject": "Процесирање на сигналите",
-				"semester": 6
-			},
-			"Работа со надарени ученици": {
-				"subject": "Работа со надарени ученици",
-				"semester": 6
-			},
-			"Администрација на мрежи": {
-				"subject": "Администрација на мрежи",
-				"semester": 6
-			},
-			"Виртуелизација": {
-				"subject": "Виртуелизација",
-				"semester": 6
-			},
-			"Психологија на училишна возраст": {
-				"subject": "Психологија на училишна возраст",
-				"semester": 6
-			},
-			"Агентно-базирани системи": {
-				"subject": "Агентно-базирани системи",
-				"semester": 6
-			},
-			"Вовед во мрежна наука": {
-				"subject": "Вовед во мрежна наука",
-				"semester": 6
-			},
-			"Географски информациски системи": {
-				"subject": "Географски информациски системи",
-				"semester": 6
-			},
-			"Дигитална форензика": {
-				"subject": "Дигитална форензика",
-				"semester": 6
-			},
-			"Дигитални библиотеки": {
-				"subject": "Дигитални библиотеки",
-				"semester": 6
-			},
-			"Компјутерска анимација": {
-				"subject": "Компјутерска анимација",
-				"semester": 6
-			},
-			"Компјутерски звук, музика и говор": {
-				"subject": "Компјутерски звук, музика и говор",
-				"semester": 6
-			},
-			"Континуирана интеграција и испорака": {
-				"subject": "Континуирана интеграција и испорака",
-				"semester": 6
-			},
-			"Криптографија": {
-				"subject": "Криптографија",
-				"semester": 6
-			},
-			"Мерење и анализа на сообраќај": {
-				"subject": "Мерење и анализа на сообраќај",
-				"semester": 6
-			},
-			"Мултимедиски системи": {
-				"subject": "Мултимедиски системи",
-				"semester": 6
-			},
-			"Напредни бази на податоци": {
-				"subject": "Напредни бази на податоци",
-				"semester": 6
-			},
-			"Паралелно програмирање": {
-				"subject": "Паралелно програмирање",
-				"semester": 6
-			},
-			"Податочно рударење": {
-				"subject": "Податочно рударење",
-				"semester": 6
-			},
-			"Вештачка интелигенција за игри": {
-				"subject": "Вештачка интелигенција за игри",
-				"semester": 6
-			},
-			"Сервисно ориентирани архитектури": {
-				"subject": "Сервисно ориентирани архитектури",
-				"semester": 6
-			},
-			"Складови на податоци и аналитичка обработка": {
-				"subject": "Складови на податоци и аналитичка обработка",
-				"semester": 6
-			},
-			"Софтверски дефинирана безбедност": {
-				"subject": "Софтверски дефинирана безбедност",
-				"semester": 6
-			},
-			"Автоматизирање на процеси во машинско учење": {
-				"subject": "Автоматизирање на процеси во машинско учење",
-				"semester": 6
-			},
-			"Учење на далечина": {
-				"subject": "Учење на далечина",
-				"semester": 6
-			},
-			"Методика на информатиката": {
-				"subject": "Методика на информатиката",
-				"semester": 8
-			},
-			"Дизајн на компјутерски мрежи": {
-				"subject": "Дизајн на компјутерски мрежи",
-				"semester": 8
-			},
-			"Адаптивни и интерактивни веб информациски системи": {
-				"subject": "Адаптивни и интерактивни веб информациски системи",
-				"semester": 8
-			},
-			"Македонски јазик": {
-				"subject": "Македонски јазик",
-				"semester": 8
-			},
-			"Биолошки инспирирано пресметување": {
-				"subject": "Биолошки инспирирано пресметување",
-				"semester": 8
-			},
-			"Веб пребарувачки системи": {
-				"subject": "Веб пребарувачки системи",
-				"semester": 8
-			},
-			"Виртуелна реалност": {
-				"subject": "Виртуелна реалност",
-				"semester": 8
-			},
-			"Вовед во когнитивни науки": {
-				"subject": "Вовед во когнитивни науки",
-				"semester": 8
-			},
-			"Етичко хакирање": {
-				"subject": "Етичко хакирање",
-				"semester": 8
-			},
-			"ИКТ за развој": {
-				"subject": "ИКТ за развој",
-				"semester": 8
-			},
-			"Откривање знаење со длабоко учење": {
-				"subject": "Откривање знаење со длабоко учење",
-				"semester": 8
-			},
-			"Интелигентни системи": {
-				"subject": "Интелигентни системи",
-				"semester": 8
-			},
-			"Инфраструктурно програмирање": {
-				"subject": "Инфраструктурно програмирање",
-				"semester": 8
-			},
-			"Програмски јазици и компајлери": {
-				"subject": "Програмски јазици и компајлери",
-				"semester": 8
-			},
-			"Мобилни апликации": {
-				"subject": "Мобилни апликации",
-				"semester": 8
-			},
-			"Моделирање и менаџирање на бизнис процеси": {
-				"subject": "Моделирање и менаџирање на бизнис процеси",
-				"semester": 8
-			},
-			"Моделирање и симулација": {
-				"subject": "Моделирање и симулација",
-				"semester": 8
-			},
-			"Модерни трендови во роботика": {
-				"subject": "Модерни трендови во роботика",
-				"semester": 8
-			},
-			"Web3 апликации": {
-				"subject": "Web3 апликации",
-				"semester": 8
-			},
-			"Неструктурирани бази на податоци": {
-				"subject": "Неструктурирани бази на податоци",
-				"semester": 8
-			},
-			"Операциони истражувања": {
-				"subject": "Операциони истражувања",
-				"semester": 8
-			},
-			"Софтверски дефинирани мрежи": {
-				"subject": "Софтверски дефинирани мрежи",
-				"semester": 8
-			},
-			"Споделување и пресметување во толпа": {
-				"subject": "Споделување и пресметување во толпа",
-				"semester": 8
-			}
-		},
-		"W": {
-			"Веројатност и статистика": {
-				"subject": "Веројатност и статистика",
-				"semester": 3
-			},
-			"Мултимедијални технологии": {
-				"subject": "Мултимедијални технологии",
-				"semester": 3
-			},
-			"Основи на теоријата на информации": {
-				"subject": "Основи на теоријата на информации",
-				"semester": 3
-			},
-			"Дигитизација": {
-				"subject": "Дигитизација",
-				"semester": 3
-			},
-			"Инженерска математика": {
-				"subject": "Инженерска математика",
-				"semester": 3
-			},
-			"Интернет програмирање на клиентска страна": {
-				"subject": "Интернет програмирање на клиентска страна",
-				"semester": 3
-			},
-			"Основи на комуникациски системи": {
-				"subject": "Основи на комуникациски системи",
-				"semester": 3
-			},
-			"Управување со техничка поддршка": {
-				"subject": "Управување со техничка поддршка",
-				"semester": 3
-			},
-			"Шаблони за дизајн на кориснички интерфејси": {
-				"subject": "Шаблони за дизајн на кориснички интерфејси",
-				"semester": 3
-			},
-			"Математика 3": {
-				"subject": "Математика 3",
-				"semester": 3
-			},
-			"Дизајн и архитектура на софтвер": {
-				"subject": "Дизајн и архитектура на софтвер",
-				"semester": 5
-			},
-			"Линеарна алгебра и примени": {
-				"subject": "Линеарна алгебра и примени",
-				"semester": 5
-			},
-			"Паралелно и дистрибуирано процесирање": {
-				"subject": "Паралелно и дистрибуирано процесирање",
-				"semester": 5
-			},
-			"Информациска безбедност": {
-				"subject": "Информациска безбедност",
-				"semester": 5
-			},
-			"Компјутерска електроника": {
-				"subject": "Компјутерска електроника",
-				"semester": 5
-			},
-			"Дизајн на образовен софтвер": {
-				"subject": "Дизајн на образовен софтвер",
-				"semester": 5
-			},
-			"Компјутерска етика": {
-				"subject": "Компјутерска етика",
-				"semester": 5
-			},
-			"Персонализирано учење": {
-				"subject": "Персонализирано учење",
-				"semester": 5
-			},
-			"Администрација на системи": {
-				"subject": "Администрација на системи",
-				"semester": 5
-			},
-			"Сајбер безбедност": {
-				"subject": "Сајбер безбедност",
-				"semester": 5
-			},
-			"Визуелизација": {
-				"subject": "Визуелизација",
-				"semester": 5
-			},
-			"Мултимедиски мрежи": {
-				"subject": "Мултимедиски мрежи",
-				"semester": 5
-			},
-			"Напредно програмирање": {
-				"subject": "Напредно програмирање",
-				"semester": 5
-			},
-			"Обработка на природните јазици": {
-				"subject": "Обработка на природните јазици",
-				"semester": 5
-			},
-			"Основи на роботиката": {
-				"subject": "Основи на роботиката",
-				"semester": 5
-			},
-			"Современи компјутерски архитектури": {
-				"subject": "Современи компјутерски архитектури",
-				"semester": 5
-			},
-			"Теорија на графови и социјални мрежи": {
-				"subject": "Теорија на графови и социјални мрежи",
-				"semester": 5
-			},
-			"Програмски парадигми": {
-				"subject": "Програмски парадигми",
-				"semester": 7
-			},
-			"Софтвер за вградливи системи": {
-				"subject": "Софтвер за вградливи системи",
-				"semester": 7
-			},
-			"Дистрибуирани системи": {
-				"subject": "Дистрибуирани системи",
-				"semester": 7
-			},
-			"Пресметување во облак": {
-				"subject": "Пресметување во облак",
-				"semester": 7
-			},
-			"Автономна роботика": {
-				"subject": "Автономна роботика",
-				"semester": 7
-			},
-			"Администрација на бази податоци": {
-				"subject": "Администрација на бази податоци",
-				"semester": 7
-			},
-			"Анализа и дизајн на ИС": {
-				"subject": "Анализа и дизајн на ИС",
-				"semester": 7
-			},
-			"Вовед во анализа на временските серии": {
-				"subject": "Вовед во анализа на временските серии",
-				"semester": 7
-			},
-			"Веб базирани системи": {
-				"subject": "Веб базирани системи",
-				"semester": 7
-			},
-			"Вовед во биоинформатиката": {
-				"subject": "Вовед во биоинформатиката",
-				"semester": 7
-			},
-			"Вовед во паметни градови": {
-				"subject": "Вовед во паметни градови",
-				"semester": 7
-			},
-			"Вовед во препознавање на облици": {
-				"subject": "Вовед во препознавање на облици",
-				"semester": 7
-			},
-			"Дигитална постпродукција": {
-				"subject": "Дигитална постпродукција",
-				"semester": 7
-			},
-			"Дистрибуирано складирање на податоци": {
-				"subject": "Дистрибуирано складирање на податоци",
-				"semester": 7
-			},
-			"Имплементација на софтверски системи со слободен и отворен код": {
-				"subject": "Имплементација на софтверски системи со слободен и отворен код",
-				"semester": 7
-			},
-			"Иновации во ИКТ": {
-				"subject": "Иновации во ИКТ",
-				"semester": 7
-			},
-			"Интернет на нештата": {
-				"subject": "Интернет на нештата",
-				"semester": 7
-			},
-			"Компјутерски поддржано производство": {
-				"subject": "Компјутерски поддржано производство",
-				"semester": 7
-			},
-			"Блоковски вериги и криптовалути": {
-				"subject": "Блоковски вериги и криптовалути",
-				"semester": 7
-			},
-			"Машинска визија": {
-				"subject": "Машинска визија",
-				"semester": 7
-			},
-			"Методологија на истражувањето во ИКТ": {
-				"subject": "Методологија на истражувањето во ИКТ",
-				"semester": 7
-			},
-			"Мобилни информациски системи": {
-				"subject": "Мобилни информациски системи",
-				"semester": 7
-			},
-			"Мобилни платформи и програмирање": {
-				"subject": "Мобилни платформи и програмирање",
-				"semester": 7
-			},
-			"Мрежна и мобилна форензика": {
-				"subject": "Мрежна и мобилна форензика",
-				"semester": 7
-			},
-			"Напредна интеракција човек компјутер": {
-				"subject": "Напредна интеракција човек компјутер",
-				"semester": 7
-			},
-			"Оптички мрежи": {
-				"subject": "Оптички мрежи",
-				"semester": 7
-			},
-			"Програмирање на видео игри": {
-				"subject": "Програмирање на видео игри",
-				"semester": 7
-			},
-			"Вовед во рударење на масивни податоци": {
-				"subject": "Вовед во рударење на масивни податоци",
-				"semester": 7
-			},
-			"Системи за поддршка при одлучувањето": {
-				"subject": "Системи за поддршка при одлучувањето",
-				"semester": 7
-			},
-			"Квантно пресметување": {
-				"subject": "Квантно пресметување",
-				"semester": 7
-			},
-			"Сензорски системи": {
-				"subject": "Сензорски системи",
-				"semester": 7
-			}
-		}
-	},
-	"IE23": {
-		"S": {
-			"Компјутерски компоненти": {
-				"subject": "Компјутерски компоненти",
-				"semester": 2
-			},
-			"Основи на сајбер безбедноста": {
-				"subject": "Основи на сајбер безбедноста",
-				"semester": 2
-			},
-			"Објектно ориентирана анализа и дизајн": {
-				"subject": "Објектно ориентирана анализа и дизајн",
-				"semester": 2
-			},
-			"Маркетинг": {
-				"subject": "Маркетинг",
-				"semester": 4
-			},
-			"Анализа на софтверските барања": {
-				"subject": "Анализа на софтверските барања",
-				"semester": 4
-			},
-			"Софтверско инженерство": {
-				"subject": "Софтверско инженерство",
-				"semester": 4
-			},
-			"Вештачка интелигенција": {
-				"subject": "Вештачка интелигенција",
-				"semester": 4
-			},
-			"Електрични кола": {
-				"subject": "Електрични кола",
-				"semester": 4
-			},
-			"Безжични и мобилни системи": {
-				"subject": "Безжични и мобилни системи",
-				"semester": 4
-			},
-			"Визуелно програмирање": {
-				"subject": "Визуелно програмирање",
-				"semester": 4
-			},
-			"Вовед во екоинформатиката": {
-				"subject": "Вовед во екоинформатиката",
-				"semester": 4
-			},
-			"Вовед во случајни процеси": {
-				"subject": "Вовед во случајни процеси",
-				"semester": 4
-			},
-			"Дигитално процесирање на слика": {
-				"subject": "Дигитално процесирање на слика",
-				"semester": 4
-			},
-			"Дизајн на алгоритми": {
-				"subject": "Дизајн на алгоритми",
-				"semester": 4
-			},
-			"Е-влада": {
-				"subject": "Е-влада",
-				"semester": 4
-			},
-			"Интернет технологии": {
-				"subject": "Интернет технологии",
-				"semester": 4
-			},
-			"Компјутерска графика": {
-				"subject": "Компјутерска графика",
-				"semester": 4
-			},
-			"Концепти на информатичко општество": {
-				"subject": "Концепти на информатичко општество",
-				"semester": 4
-			},
-			"Теорија на информации со дигитални комуникации": {
-				"subject": "Теорија на информации со дигитални комуникации",
-				"semester": 4
-			},
-			"Деловна пракса": {
-				"subject": "Деловна пракса",
-				"semester": 4
-			},
-			"Дизајн на интеракцијата човек-компјутер": {
-				"subject": "Дизајн на интеракцијата човек-компјутер",
-				"semester": 6
-			},
-			"Интегрирани системи": {
-				"subject": "Интегрирани системи",
-				"semester": 6
-			},
-			"Софтверски квалитет и тестирање": {
-				"subject": "Софтверски квалитет и тестирање",
-				"semester": 6
-			},
-			"Електронска и мобилна трговија": {
-				"subject": "Електронска и мобилна трговија",
-				"semester": 6
-			},
-			"Машинско учење": {
-				"subject": "Машинско учење",
-				"semester": 6
-			},
-			"Основи на теоријата на компјутерските науки": {
-				"subject": "Основи на теоријата на компјутерските науки",
-				"semester": 6
-			},
-			"Вградливи микропроцесорски системи": {
-				"subject": "Вградливи микропроцесорски системи",
-				"semester": 6
-			},
-			"Процесирање на сигналите": {
-				"subject": "Процесирање на сигналите",
-				"semester": 6
-			},
-			"Администрација на мрежи": {
-				"subject": "Администрација на мрежи",
-				"semester": 6
-			},
-			"Виртуелизација": {
-				"subject": "Виртуелизација",
-				"semester": 6
-			},
-			"Агентно-базирани системи": {
-				"subject": "Агентно-базирани системи",
-				"semester": 6
-			},
-			"Вовед во мрежна наука": {
-				"subject": "Вовед во мрежна наука",
-				"semester": 6
-			},
-			"Географски информациски системи": {
-				"subject": "Географски информациски системи",
-				"semester": 6
-			},
-			"Дигитална форензика": {
-				"subject": "Дигитална форензика",
-				"semester": 6
-			},
-			"Дигитални библиотеки": {
-				"subject": "Дигитални библиотеки",
-				"semester": 6
-			},
-			"Компјутерска анимација": {
-				"subject": "Компјутерска анимација",
-				"semester": 6
-			},
-			"Компјутерски звук, музика и говор": {
-				"subject": "Компјутерски звук, музика и говор",
-				"semester": 6
-			},
-			"Континуирана интеграција и испорака": {
-				"subject": "Континуирана интеграција и испорака",
-				"semester": 6
-			},
-			"Криптографија": {
-				"subject": "Криптографија",
-				"semester": 6
-			},
-			"Мерење и анализа на сообраќај": {
-				"subject": "Мерење и анализа на сообраќај",
-				"semester": 6
-			},
-			"Мултимедиски системи": {
-				"subject": "Мултимедиски системи",
-				"semester": 6
-			},
-			"Напредни бази на податоци": {
-				"subject": "Напредни бази на податоци",
-				"semester": 6
-			},
-			"Паралелно програмирање": {
-				"subject": "Паралелно програмирање",
-				"semester": 6
-			},
-			"Податочно рударење": {
-				"subject": "Податочно рударење",
-				"semester": 6
-			},
-			"Вештачка интелигенција за игри": {
-				"subject": "Вештачка интелигенција за игри",
-				"semester": 6
-			},
-			"Сервисно ориентирани архитектури": {
-				"subject": "Сервисно ориентирани архитектури",
-				"semester": 6
-			},
-			"Складови на податоци и аналитичка обработка": {
-				"subject": "Складови на податоци и аналитичка обработка",
-				"semester": 6
-			},
-			"Софтверски дефинирана безбедност": {
-				"subject": "Софтверски дефинирана безбедност",
-				"semester": 6
-			},
-			"Автоматизирање на процеси во машинско учење": {
-				"subject": "Автоматизирање на процеси во машинско учење",
-				"semester": 6
-			},
-			"Управување со ИКТ проекти": {
-				"subject": "Управување со ИКТ проекти",
-				"semester": 8
-			},
-			"Претприемништво": {
-				"subject": "Претприемништво",
-				"semester": 8
-			},
-			"Дизајн на компјутерски мрежи": {
-				"subject": "Дизајн на компјутерски мрежи",
-				"semester": 8
-			},
-			"Адаптивни и интерактивни веб информациски системи": {
-				"subject": "Адаптивни и интерактивни веб информациски системи",
-				"semester": 8
-			},
-			"Биолошки инспирирано пресметување": {
-				"subject": "Биолошки инспирирано пресметување",
-				"semester": 8
-			},
-			"Веб пребарувачки системи": {
-				"subject": "Веб пребарувачки системи",
-				"semester": 8
-			},
-			"Виртуелна реалност": {
-				"subject": "Виртуелна реалност",
-				"semester": 8
-			},
-			"Вовед во когнитивни науки": {
-				"subject": "Вовед во когнитивни науки",
-				"semester": 8
-			},
-			"Етичко хакирање": {
-				"subject": "Етичко хакирање",
-				"semester": 8
-			},
-			"ИКТ за развој": {
-				"subject": "ИКТ за развој",
-				"semester": 8
-			},
-			"Откривање знаење со длабоко учење": {
-				"subject": "Откривање знаење со длабоко учење",
-				"semester": 8
-			},
-			"Интелигентни системи": {
-				"subject": "Интелигентни системи",
-				"semester": 8
-			},
-			"Инфраструктурно програмирање": {
-				"subject": "Инфраструктурно програмирање",
-				"semester": 8
-			},
-			"Програмски јазици и компајлери": {
-				"subject": "Програмски јазици и компајлери",
-				"semester": 8
-			},
-			"Мобилни апликации": {
-				"subject": "Мобилни апликации",
-				"semester": 8
-			},
-			"Моделирање и менаџирање на бизнис процеси": {
-				"subject": "Моделирање и менаџирање на бизнис процеси",
-				"semester": 8
-			},
-			"Моделирање и симулација": {
-				"subject": "Моделирање и симулација",
-				"semester": 8
-			},
-			"Модерни трендови во роботика": {
-				"subject": "Модерни трендови во роботика",
-				"semester": 8
-			},
-			"Web3 апликации": {
-				"subject": "Web3 апликации",
-				"semester": 8
-			},
-			"Неструктурирани бази на податоци": {
-				"subject": "Неструктурирани бази на податоци",
-				"semester": 8
-			},
-			"Операциони истражувања": {
-				"subject": "Операциони истражувања",
-				"semester": 8
-			},
-			"Софтверски дефинирани мрежи": {
-				"subject": "Софтверски дефинирани мрежи",
-				"semester": 8
-			},
-			"Споделување и пресметување во толпа": {
-				"subject": "Споделување и пресметување во толпа",
-				"semester": 8
-			}
-		},
-		"W": {
-			"Веројатност и статистика": {
-				"subject": "Веројатност и статистика",
-				"semester": 3
-			},
-			"Основи на теоријата на информации": {
-				"subject": "Основи на теоријата на информации",
-				"semester": 3
-			},
-			"Дигитизација": {
-				"subject": "Дигитизација",
-				"semester": 3
-			},
-			"Економија за ИКТ инженери": {
-				"subject": "Економија за ИКТ инженери",
-				"semester": 3
-			},
-			"Инженерска математика": {
-				"subject": "Инженерска математика",
-				"semester": 3
-			},
-			"Интернет програмирање на клиентска страна": {
-				"subject": "Интернет програмирање на клиентска страна",
-				"semester": 3
-			},
-			"Основи на комуникациски системи": {
-				"subject": "Основи на комуникациски системи",
-				"semester": 3
-			},
-			"Управување со техничка поддршка": {
-				"subject": "Управување со техничка поддршка",
-				"semester": 3
-			},
-			"Шаблони за дизајн на кориснички интерфејси": {
-				"subject": "Шаблони за дизајн на кориснички интерфејси",
-				"semester": 3
-			},
-			"Математика 3": {
-				"subject": "Математика 3",
-				"semester": 3
-			},
-			"Вовед во науката за податоци": {
-				"subject": "Вовед во науката за податоци",
-				"semester": 5
-			},
-			"Дизајн и архитектура на софтвер": {
-				"subject": "Дизајн и архитектура на софтвер",
-				"semester": 5
-			},
-			"Веб програмирање": {
-				"subject": "Веб програмирање",
-				"semester": 5
-			},
-			"Линеарна алгебра и примени": {
-				"subject": "Линеарна алгебра и примени",
-				"semester": 5
-			},
-			"Паралелно и дистрибуирано процесирање": {
-				"subject": "Паралелно и дистрибуирано процесирање",
-				"semester": 5
-			},
-			"Информациска безбедност": {
-				"subject": "Информациска безбедност",
-				"semester": 5
-			},
-			"Компјутерска електроника": {
-				"subject": "Компјутерска електроника",
-				"semester": 5
-			},
-			"Администрација на системи": {
-				"subject": "Администрација на системи",
-				"semester": 5
-			},
-			"Сајбер безбедност": {
-				"subject": "Сајбер безбедност",
-				"semester": 5
-			},
-			"Визуелизација": {
-				"subject": "Визуелизација",
-				"semester": 5
-			},
-			"Мултимедиски мрежи": {
-				"subject": "Мултимедиски мрежи",
-				"semester": 5
-			},
-			"Напреден веб дизајн": {
-				"subject": "Напреден веб дизајн",
-				"semester": 5
-			},
-			"Напредно програмирање": {
-				"subject": "Напредно програмирање",
-				"semester": 5
-			},
-			"Обработка на природните јазици": {
-				"subject": "Обработка на природните јазици",
-				"semester": 5
-			},
-			"Основи на роботиката": {
-				"subject": "Основи на роботиката",
-				"semester": 5
-			},
-			"Современи компјутерски архитектури": {
-				"subject": "Современи компјутерски архитектури",
-				"semester": 5
-			},
-			"Теорија на графови и социјални мрежи": {
-				"subject": "Теорија на графови и социјални мрежи",
-				"semester": 5
-			},
-			"Менаџмент информациски системи": {
-				"subject": "Менаџмент информациски системи",
-				"semester": 7
-			},
-			"Тестирање на софтвер": {
-				"subject": "Тестирање на софтвер",
-				"semester": 7
-			},
-			"Програмски парадигми": {
-				"subject": "Програмски парадигми",
-				"semester": 7
-			},
-			"Софтвер за вградливи системи": {
-				"subject": "Софтвер за вградливи системи",
-				"semester": 7
-			},
-			"Дистрибуирани системи": {
-				"subject": "Дистрибуирани системи",
-				"semester": 7
-			},
-			"Пресметување во облак": {
-				"subject": "Пресметување во облак",
-				"semester": 7
-			},
-			"Автономна роботика": {
-				"subject": "Автономна роботика",
-				"semester": 7
-			},
-			"Администрација на бази податоци": {
-				"subject": "Администрација на бази податоци",
-				"semester": 7
-			},
-			"Анализа и дизајн на ИС": {
-				"subject": "Анализа и дизајн на ИС",
-				"semester": 7
-			},
-			"Вовед во анализа на временските серии": {
-				"subject": "Вовед во анализа на временските серии",
-				"semester": 7
-			},
-			"Веб базирани системи": {
-				"subject": "Веб базирани системи",
-				"semester": 7
-			},
-			"Вовед во биоинформатиката": {
-				"subject": "Вовед во биоинформатиката",
-				"semester": 7
-			},
-			"Вовед во паметни градови": {
-				"subject": "Вовед во паметни градови",
-				"semester": 7
-			},
-			"Вовед во препознавање на облици": {
-				"subject": "Вовед во препознавање на облици",
-				"semester": 7
-			},
-			"Дигитална постпродукција": {
-				"subject": "Дигитална постпродукција",
-				"semester": 7
-			},
-			"Дистрибуирано складирање на податоци": {
-				"subject": "Дистрибуирано складирање на податоци",
-				"semester": 7
-			},
-			"Имплементација на софтверски системи со слободен и отворен код": {
-				"subject": "Имплементација на софтверски системи со слободен и отворен код",
-				"semester": 7
-			},
-			"Иновации во ИКТ": {
-				"subject": "Иновации во ИКТ",
-				"semester": 7
-			},
-			"Интернет на нештата": {
-				"subject": "Интернет на нештата",
-				"semester": 7
-			},
-			"Компјутерски поддржано производство": {
-				"subject": "Компјутерски поддржано производство",
-				"semester": 7
-			},
-			"Блоковски вериги и криптовалути": {
-				"subject": "Блоковски вериги и криптовалути",
-				"semester": 7
-			},
-			"Машинска визија": {
-				"subject": "Машинска визија",
-				"semester": 7
-			},
-			"Методологија на истражувањето во ИКТ": {
-				"subject": "Методологија на истражувањето во ИКТ",
-				"semester": 7
-			},
-			"Мобилни информациски системи": {
-				"subject": "Мобилни информациски системи",
-				"semester": 7
-			},
-			"Мобилни платформи и програмирање": {
-				"subject": "Мобилни платформи и програмирање",
-				"semester": 7
-			},
-			"Мрежна и мобилна форензика": {
-				"subject": "Мрежна и мобилна форензика",
-				"semester": 7
-			},
-			"Напредна интеракција човек компјутер": {
-				"subject": "Напредна интеракција човек компјутер",
-				"semester": 7
-			},
-			"Оптички мрежи": {
-				"subject": "Оптички мрежи",
-				"semester": 7
-			},
-			"Програмирање на видео игри": {
-				"subject": "Програмирање на видео игри",
-				"semester": 7
-			},
-			"Вовед во рударење на масивни податоци": {
-				"subject": "Вовед во рударење на масивни податоци",
-				"semester": 7
-			},
-			"Системи за поддршка при одлучувањето": {
-				"subject": "Системи за поддршка при одлучувањето",
-				"semester": 7
-			},
-			"Квантно пресметување": {
-				"subject": "Квантно пресметување",
-				"semester": 7
-			},
-			"Сензорски системи": {
-				"subject": "Сензорски системи",
-				"semester": 7
-			}
-		}
-	},
-	"KI23": {
-		"S": {
-			"Е-учење": {
-				"subject": "Е-учење",
-				"semester": 2
-			},
-			"Компјутерски компоненти": {
-				"subject": "Компјутерски компоненти",
-				"semester": 2
-			},
-			"Креативни вештини за решавање проблеми": {
-				"subject": "Креативни вештини за решавање проблеми",
-				"semester": 2
-			},
-			"Основи на Веб дизајн": {
-				"subject": "Основи на Веб дизајн",
-				"semester": 2
-			},
-			"Основи на сајбер безбедноста": {
-				"subject": "Основи на сајбер безбедноста",
-				"semester": 2
-			},
-			"Објектно ориентирана анализа и дизајн": {
-				"subject": "Објектно ориентирана анализа и дизајн",
-				"semester": 2
-			},
-			"Маркетинг": {
-				"subject": "Маркетинг",
-				"semester": 4
-			},
-			"Анализа на софтверските барања": {
-				"subject": "Анализа на софтверските барања",
-				"semester": 4
-			},
-			"Вештачка интелигенција": {
-				"subject": "Вештачка интелигенција",
-				"semester": 4
-			},
-			"Информатичко размислување во образованието": {
-				"subject": "Информатичко размислување во образованието",
-				"semester": 4
-			},
-			"Безжични и мобилни системи": {
-				"subject": "Безжични и мобилни системи",
-				"semester": 4
-			},
-			"Визуелно програмирање": {
-				"subject": "Визуелно програмирање",
-				"semester": 4
-			},
-			"Вовед во екоинформатиката": {
-				"subject": "Вовед во екоинформатиката",
-				"semester": 4
-			},
-			"Вовед во случајни процеси": {
-				"subject": "Вовед во случајни процеси",
-				"semester": 4
-			},
-			"Дигитално процесирање на слика": {
-				"subject": "Дигитално процесирање на слика",
-				"semester": 4
-			},
-			"Дизајн на алгоритми": {
-				"subject": "Дизајн на алгоритми",
-				"semester": 4
-			},
-			"Е-влада": {
-				"subject": "Е-влада",
-				"semester": 4
-			},
-			"Интернет технологии": {
-				"subject": "Интернет технологии",
-				"semester": 4
-			},
-			"Компјутерска графика": {
-				"subject": "Компјутерска графика",
-				"semester": 4
-			},
-			"Концепти на информатичко општество": {
-				"subject": "Концепти на информатичко општество",
-				"semester": 4
-			},
-			"Медиуми и комуникации": {
-				"subject": "Медиуми и комуникации",
-				"semester": 4
-			},
-			"Теорија на информации со дигитални комуникации": {
-				"subject": "Теорија на информации со дигитални комуникации",
-				"semester": 4
-			},
-			"Деловна пракса": {
-				"subject": "Деловна пракса",
-				"semester": 4
-			},
-			"Дизајн на интеракцијата човек-компјутер": {
-				"subject": "Дизајн на интеракцијата човек-компјутер",
-				"semester": 6
-			},
-			"Интегрирани системи": {
-				"subject": "Интегрирани системи",
-				"semester": 6
-			},
-			"Софтверски квалитет и тестирање": {
-				"subject": "Софтверски квалитет и тестирање",
-				"semester": 6
-			},
-			"Електронска и мобилна трговија": {
-				"subject": "Електронска и мобилна трговија",
-				"semester": 6
-			},
-			"Машинско учење": {
-				"subject": "Машинско учење",
-				"semester": 6
-			},
-			"Основи на теоријата на компјутерските науки": {
-				"subject": "Основи на теоријата на компјутерските науки",
-				"semester": 6
-			},
-			"Работа со надарени ученици": {
-				"subject": "Работа со надарени ученици",
-				"semester": 6
-			},
-			"Администрација на мрежи": {
-				"subject": "Администрација на мрежи",
-				"semester": 6
-			},
-			"Виртуелизација": {
-				"subject": "Виртуелизација",
-				"semester": 6
-			},
-			"Психологија на училишна возраст": {
-				"subject": "Психологија на училишна возраст",
-				"semester": 6
-			},
-			"Агентно-базирани системи": {
-				"subject": "Агентно-базирани системи",
-				"semester": 6
-			},
-			"Вовед во мрежна наука": {
-				"subject": "Вовед во мрежна наука",
-				"semester": 6
-			},
-			"Географски информациски системи": {
-				"subject": "Географски информациски системи",
-				"semester": 6
-			},
-			"Дигитална форензика": {
-				"subject": "Дигитална форензика",
-				"semester": 6
-			},
-			"Дигитални библиотеки": {
-				"subject": "Дигитални библиотеки",
-				"semester": 6
-			},
-			"Компјутерска анимација": {
-				"subject": "Компјутерска анимација",
-				"semester": 6
-			},
-			"Компјутерски звук, музика и говор": {
-				"subject": "Компјутерски звук, музика и говор",
-				"semester": 6
-			},
-			"Континуирана интеграција и испорака": {
-				"subject": "Континуирана интеграција и испорака",
-				"semester": 6
-			},
-			"Криптографија": {
-				"subject": "Криптографија",
-				"semester": 6
-			},
-			"Мерење и анализа на сообраќај": {
-				"subject": "Мерење и анализа на сообраќај",
-				"semester": 6
-			},
-			"Мултимедиски системи": {
-				"subject": "Мултимедиски системи",
-				"semester": 6
-			},
-			"Напредни бази на податоци": {
-				"subject": "Напредни бази на податоци",
-				"semester": 6
-			},
-			"Паралелно програмирање": {
-				"subject": "Паралелно програмирање",
-				"semester": 6
-			},
-			"Податочно рударење": {
-				"subject": "Податочно рударење",
-				"semester": 6
-			},
-			"Вештачка интелигенција за игри": {
-				"subject": "Вештачка интелигенција за игри",
-				"semester": 6
-			},
-			"Сервисно ориентирани архитектури": {
-				"subject": "Сервисно ориентирани архитектури",
-				"semester": 6
-			},
-			"Софтверски дефинирана безбедност": {
-				"subject": "Софтверски дефинирана безбедност",
-				"semester": 6
-			},
-			"Автоматизирање на процеси во машинско учење": {
-				"subject": "Автоматизирање на процеси во машинско учење",
-				"semester": 6
-			},
-			"Учење на далечина": {
-				"subject": "Учење на далечина",
-				"semester": 6
-			},
-			"Претприемништво": {
-				"subject": "Претприемништво",
-				"semester": 8
-			},
-			"Методика на информатиката": {
-				"subject": "Методика на информатиката",
-				"semester": 8
-			},
-			"Дизајн на компјутерски мрежи": {
-				"subject": "Дизајн на компјутерски мрежи",
-				"semester": 8
-			},
-			"Адаптивни и интерактивни веб информациски системи": {
-				"subject": "Адаптивни и интерактивни веб информациски системи",
-				"semester": 8
-			},
-			"Македонски јазик": {
-				"subject": "Македонски јазик",
-				"semester": 8
-			},
-			"Биолошки инспирирано пресметување": {
-				"subject": "Биолошки инспирирано пресметување",
-				"semester": 8
-			},
-			"Веб пребарувачки системи": {
-				"subject": "Веб пребарувачки системи",
-				"semester": 8
-			},
-			"Виртуелна реалност": {
-				"subject": "Виртуелна реалност",
-				"semester": 8
-			},
-			"Вовед во когнитивни науки": {
-				"subject": "Вовед во когнитивни науки",
-				"semester": 8
-			},
-			"Етичко хакирање": {
-				"subject": "Етичко хакирање",
-				"semester": 8
-			},
-			"ИКТ за развој": {
-				"subject": "ИКТ за развој",
-				"semester": 8
-			},
-			"Откривање знаење со длабоко учење": {
-				"subject": "Откривање знаење со длабоко учење",
-				"semester": 8
-			},
-			"Интелигентни системи": {
-				"subject": "Интелигентни системи",
-				"semester": 8
-			},
-			"Инфраструктурно програмирање": {
-				"subject": "Инфраструктурно програмирање",
-				"semester": 8
-			},
-			"Програмски јазици и компајлери": {
-				"subject": "Програмски јазици и компајлери",
-				"semester": 8
-			},
-			"Мобилни апликации": {
-				"subject": "Мобилни апликации",
-				"semester": 8
-			},
-			"Моделирање и менаџирање на бизнис процеси": {
-				"subject": "Моделирање и менаџирање на бизнис процеси",
-				"semester": 8
-			},
-			"Моделирање и симулација": {
-				"subject": "Моделирање и симулација",
-				"semester": 8
-			},
-			"Web3 апликации": {
-				"subject": "Web3 апликации",
-				"semester": 8
-			},
-			"Неструктурирани бази на податоци": {
-				"subject": "Неструктурирани бази на податоци",
-				"semester": 8
-			},
-			"Операциони истражувања": {
-				"subject": "Операциони истражувања",
-				"semester": 8
-			},
-			"Софтверски дефинирани мрежи": {
-				"subject": "Софтверски дефинирани мрежи",
-				"semester": 8
-			},
-			"Споделување и пресметување во толпа": {
-				"subject": "Споделување и пресметување во толпа",
-				"semester": 8
-			}
-		},
-		"W": {
-			"Мултимедијални технологии": {
-				"subject": "Мултимедијални технологии",
-				"semester": 3
-			},
-			"Основи на теоријата на информации": {
-				"subject": "Основи на теоријата на информации",
-				"semester": 3
-			},
-			"Дигитизација": {
-				"subject": "Дигитизација",
-				"semester": 3
-			},
-			"Економија за ИКТ инженери": {
-				"subject": "Економија за ИКТ инженери",
-				"semester": 3
-			},
-			"Инженерска математика": {
-				"subject": "Инженерска математика",
-				"semester": 3
-			},
-			"Интернет програмирање на клиентска страна": {
-				"subject": "Интернет програмирање на клиентска страна",
-				"semester": 3
-			},
-			"Основи на комуникациски системи": {
-				"subject": "Основи на комуникациски системи",
-				"semester": 3
-			},
-			"Управување со техничка поддршка": {
-				"subject": "Управување со техничка поддршка",
-				"semester": 3
-			},
-			"Шаблони за дизајн на кориснички интерфејси": {
-				"subject": "Шаблони за дизајн на кориснички интерфејси",
-				"semester": 3
-			},
-			"Математика 3": {
-				"subject": "Математика 3",
-				"semester": 3
-			},
-			"Вовед во науката за податоци": {
-				"subject": "Вовед во науката за податоци",
-				"semester": 5
-			},
-			"Дизајн и архитектура на софтвер": {
-				"subject": "Дизајн и архитектура на софтвер",
-				"semester": 5
-			},
-			"Веб програмирање": {
-				"subject": "Веб програмирање",
-				"semester": 5
-			},
-			"Линеарна алгебра и примени": {
-				"subject": "Линеарна алгебра и примени",
-				"semester": 5
-			},
-			"Паралелно и дистрибуирано процесирање": {
-				"subject": "Паралелно и дистрибуирано процесирање",
-				"semester": 5
-			},
-			"Дизајн на образовен софтвер": {
-				"subject": "Дизајн на образовен софтвер",
-				"semester": 5
-			},
-			"Компјутерска етика": {
-				"subject": "Компјутерска етика",
-				"semester": 5
-			},
-			"Персонализирано учење": {
-				"subject": "Персонализирано учење",
-				"semester": 5
-			},
-			"Администрација на системи": {
-				"subject": "Администрација на системи",
-				"semester": 5
-			},
-			"Сајбер безбедност": {
-				"subject": "Сајбер безбедност",
-				"semester": 5
-			},
-			"Визуелизација": {
-				"subject": "Визуелизација",
-				"semester": 5
-			},
-			"Мултимедиски мрежи": {
-				"subject": "Мултимедиски мрежи",
-				"semester": 5
-			},
-			"Напреден веб дизајн": {
-				"subject": "Напреден веб дизајн",
-				"semester": 5
-			},
-			"Напредно програмирање": {
-				"subject": "Напредно програмирање",
-				"semester": 5
-			},
-			"Обработка на природните јазици": {
-				"subject": "Обработка на природните јазици",
-				"semester": 5
-			},
-			"Современи компјутерски архитектури": {
-				"subject": "Современи компјутерски архитектури",
-				"semester": 5
-			},
-			"Теорија на графови и социјални мрежи": {
-				"subject": "Теорија на графови и социјални мрежи",
-				"semester": 5
-			},
-			"Менаџмент информациски системи": {
-				"subject": "Менаџмент информациски системи",
-				"semester": 7
-			},
-			"Тестирање на софтвер": {
-				"subject": "Тестирање на софтвер",
-				"semester": 7
-			},
-			"Програмски парадигми": {
-				"subject": "Програмски парадигми",
-				"semester": 7
-			},
-			"Дистрибуирани системи": {
-				"subject": "Дистрибуирани системи",
-				"semester": 7
-			},
-			"Пресметување во облак": {
-				"subject": "Пресметување во облак",
-				"semester": 7
-			},
-			"Автономна роботика": {
-				"subject": "Автономна роботика",
-				"semester": 7
-			},
-			"Администрација на бази податоци": {
-				"subject": "Администрација на бази податоци",
-				"semester": 7
-			},
-			"Анализа и дизајн на ИС": {
-				"subject": "Анализа и дизајн на ИС",
-				"semester": 7
-			},
-			"Вовед во анализа на временските серии": {
-				"subject": "Вовед во анализа на временските серии",
-				"semester": 7
-			},
-			"Веб базирани системи": {
-				"subject": "Веб базирани системи",
-				"semester": 7
-			},
-			"Вовед во биоинформатиката": {
-				"subject": "Вовед во биоинформатиката",
-				"semester": 7
-			},
-			"Вовед во паметни градови": {
-				"subject": "Вовед во паметни градови",
-				"semester": 7
-			},
-			"Вовед во препознавање на облици": {
-				"subject": "Вовед во препознавање на облици",
-				"semester": 7
-			},
-			"Дигитална постпродукција": {
-				"subject": "Дигитална постпродукција",
-				"semester": 7
-			},
-			"Дистрибуирано складирање на податоци": {
-				"subject": "Дистрибуирано складирање на податоци",
-				"semester": 7
-			},
-			"Имплементација на софтверски системи со слободен и отворен код": {
-				"subject": "Имплементација на софтверски системи со слободен и отворен код",
-				"semester": 7
-			},
-			"Иновации во ИКТ": {
-				"subject": "Иновации во ИКТ",
-				"semester": 7
-			},
-			"Компјутерски поддржано производство": {
-				"subject": "Компјутерски поддржано производство",
-				"semester": 7
-			},
-			"Блоковски вериги и криптовалути": {
-				"subject": "Блоковски вериги и криптовалути",
-				"semester": 7
-			},
-			"Машинска визија": {
-				"subject": "Машинска визија",
-				"semester": 7
-			},
-			"Методологија на истражувањето во ИКТ": {
-				"subject": "Методологија на истражувањето во ИКТ",
-				"semester": 7
-			},
-			"Мобилни информациски системи": {
-				"subject": "Мобилни информациски системи",
-				"semester": 7
-			},
-			"Мобилни платформи и програмирање": {
-				"subject": "Мобилни платформи и програмирање",
-				"semester": 7
-			},
-			"Мрежна и мобилна форензика": {
-				"subject": "Мрежна и мобилна форензика",
-				"semester": 7
-			},
-			"Напредна интеракција човек компјутер": {
-				"subject": "Напредна интеракција човек компјутер",
-				"semester": 7
-			},
-			"Оптички мрежи": {
-				"subject": "Оптички мрежи",
-				"semester": 7
-			},
-			"Програмирање на видео игри": {
-				"subject": "Програмирање на видео игри",
-				"semester": 7
-			},
-			"Вовед во рударење на масивни податоци": {
-				"subject": "Вовед во рударење на масивни податоци",
-				"semester": 7
-			},
-			"Системи за поддршка при одлучувањето": {
-				"subject": "Системи за поддршка при одлучувањето",
-				"semester": 7
-			},
-			"Квантно пресметување": {
-				"subject": "Квантно пресметување",
-				"semester": 7
-			},
-			"Сензорски системи": {
-				"subject": "Сензорски системи",
-				"semester": 7
-			}
-		}
-	},
-	"KN23": {
-		"S": {
-			"Е-учење": {
-				"subject": "Е-учење",
-				"semester": 2
-			},
-			"Компјутерски компоненти": {
-				"subject": "Компјутерски компоненти",
-				"semester": 2
-			},
-			"Креативни вештини за решавање проблеми": {
-				"subject": "Креативни вештини за решавање проблеми",
-				"semester": 2
-			},
-			"Основи на Веб дизајн": {
-				"subject": "Основи на Веб дизајн",
-				"semester": 2
-			},
-			"Основи на сајбер безбедноста": {
-				"subject": "Основи на сајбер безбедноста",
-				"semester": 2
-			},
-			"Објектно ориентирана анализа и дизајн": {
-				"subject": "Објектно ориентирана анализа и дизајн",
-				"semester": 2
-			},
-			"Маркетинг": {
-				"subject": "Маркетинг",
-				"semester": 4
-			},
-			"Анализа на софтверските барања": {
-				"subject": "Анализа на софтверските барања",
-				"semester": 4
-			},
-			"Електрични кола": {
-				"subject": "Електрични кола",
-				"semester": 4
-			},
-			"Информатичко размислување во образованието": {
-				"subject": "Информатичко размислување во образованието",
-				"semester": 4
-			},
-			"Безжични и мобилни системи": {
-				"subject": "Безжични и мобилни системи",
-				"semester": 4
-			},
-			"Визуелно програмирање": {
-				"subject": "Визуелно програмирање",
-				"semester": 4
-			},
-			"Вовед во екоинформатиката": {
-				"subject": "Вовед во екоинформатиката",
-				"semester": 4
-			},
-			"Вовед во случајни процеси": {
-				"subject": "Вовед во случајни процеси",
-				"semester": 4
-			},
-			"Дигитално процесирање на слика": {
-				"subject": "Дигитално процесирање на слика",
-				"semester": 4
-			},
-			"Дизајн на алгоритми": {
-				"subject": "Дизајн на алгоритми",
-				"semester": 4
-			},
-			"Е-влада": {
-				"subject": "Е-влада",
-				"semester": 4
-			},
-			"Интернет технологии": {
-				"subject": "Интернет технологии",
-				"semester": 4
-			},
-			"Компјутерска графика": {
-				"subject": "Компјутерска графика",
-				"semester": 4
-			},
-			"Концепти на информатичко општество": {
-				"subject": "Концепти на информатичко општество",
-				"semester": 4
-			},
-			"Медиуми и комуникации": {
-				"subject": "Медиуми и комуникации",
-				"semester": 4
-			},
-			"Теорија на информации со дигитални комуникации": {
-				"subject": "Теорија на информации со дигитални комуникации",
-				"semester": 4
-			},
-			"Деловна пракса": {
-				"subject": "Деловна пракса",
-				"semester": 4
-			},
-			"Интегрирани системи": {
-				"subject": "Интегрирани системи",
-				"semester": 6
-			},
-			"Софтверски квалитет и тестирање": {
-				"subject": "Софтверски квалитет и тестирање",
-				"semester": 6
-			},
-			"Електронска и мобилна трговија": {
-				"subject": "Електронска и мобилна трговија",
-				"semester": 6
-			},
-			"Вградливи микропроцесорски системи": {
-				"subject": "Вградливи микропроцесорски системи",
-				"semester": 6
-			},
-			"Процесирање на сигналите": {
-				"subject": "Процесирање на сигналите",
-				"semester": 6
-			},
-			"Работа со надарени ученици": {
-				"subject": "Работа со надарени ученици",
-				"semester": 6
-			},
-			"Администрација на мрежи": {
-				"subject": "Администрација на мрежи",
-				"semester": 6
-			},
-			"Виртуелизација": {
-				"subject": "Виртуелизација",
-				"semester": 6
-			},
-			"Психологија на училишна возраст": {
-				"subject": "Психологија на училишна возраст",
-				"semester": 6
-			},
-			"Агентно-базирани системи": {
-				"subject": "Агентно-базирани системи",
-				"semester": 6
-			},
-			"Вовед во мрежна наука": {
-				"subject": "Вовед во мрежна наука",
-				"semester": 6
-			},
-			"Географски информациски системи": {
-				"subject": "Географски информациски системи",
-				"semester": 6
-			},
-			"Дигитална форензика": {
-				"subject": "Дигитална форензика",
-				"semester": 6
-			},
-			"Дигитални библиотеки": {
-				"subject": "Дигитални библиотеки",
-				"semester": 6
-			},
-			"Компјутерска анимација": {
-				"subject": "Компјутерска анимација",
-				"semester": 6
-			},
-			"Компјутерски звук, музика и говор": {
-				"subject": "Компјутерски звук, музика и говор",
-				"semester": 6
-			},
-			"Континуирана интеграција и испорака": {
-				"subject": "Континуирана интеграција и испорака",
-				"semester": 6
-			},
-			"Криптографија": {
-				"subject": "Криптографија",
-				"semester": 6
-			},
-			"Мерење и анализа на сообраќај": {
-				"subject": "Мерење и анализа на сообраќај",
-				"semester": 6
-			},
-			"Мултимедиски системи": {
-				"subject": "Мултимедиски системи",
-				"semester": 6
-			},
-			"Напредни бази на податоци": {
-				"subject": "Напредни бази на податоци",
-				"semester": 6
-			},
-			"Паралелно програмирање": {
-				"subject": "Паралелно програмирање",
-				"semester": 6
-			},
-			"Податочно рударење": {
-				"subject": "Податочно рударење",
-				"semester": 6
-			},
-			"Вештачка интелигенција за игри": {
-				"subject": "Вештачка интелигенција за игри",
-				"semester": 6
-			},
-			"Сервисно ориентирани архитектури": {
-				"subject": "Сервисно ориентирани архитектури",
-				"semester": 6
-			},
-			"Софтверски дефинирана безбедност": {
-				"subject": "Софтверски дефинирана безбедност",
-				"semester": 6
-			},
-			"Автоматизирање на процеси во машинско учење": {
-				"subject": "Автоматизирање на процеси во машинско учење",
-				"semester": 6
-			},
-			"Учење на далечина": {
-				"subject": "Учење на далечина",
-				"semester": 6
-			},
-			"Управување со ИКТ проекти": {
-				"subject": "Управување со ИКТ проекти",
-				"semester": 8
-			},
-			"Претприемништво": {
-				"subject": "Претприемништво",
-				"semester": 8
-			},
-			"Методика на информатиката": {
-				"subject": "Методика на информатиката",
-				"semester": 8
-			},
-			"Дизајн на компјутерски мрежи": {
-				"subject": "Дизајн на компјутерски мрежи",
-				"semester": 8
-			},
-			"Адаптивни и интерактивни веб информациски системи": {
-				"subject": "Адаптивни и интерактивни веб информациски системи",
-				"semester": 8
-			},
-			"Македонски јазик": {
-				"subject": "Македонски јазик",
-				"semester": 8
-			},
-			"Биолошки инспирирано пресметување": {
-				"subject": "Биолошки инспирирано пресметување",
-				"semester": 8
-			},
-			"Веб пребарувачки системи": {
-				"subject": "Веб пребарувачки системи",
-				"semester": 8
-			},
-			"Виртуелна реалност": {
-				"subject": "Виртуелна реалност",
-				"semester": 8
-			},
-			"Вовед во когнитивни науки": {
-				"subject": "Вовед во когнитивни науки",
-				"semester": 8
-			},
-			"Етичко хакирање": {
-				"subject": "Етичко хакирање",
-				"semester": 8
-			},
-			"ИКТ за развој": {
-				"subject": "ИКТ за развој",
-				"semester": 8
-			},
-			"Откривање знаење со длабоко учење": {
-				"subject": "Откривање знаење со длабоко учење",
-				"semester": 8
-			},
-			"Интелигентни системи": {
-				"subject": "Интелигентни системи",
-				"semester": 8
-			},
-			"Инфраструктурно програмирање": {
-				"subject": "Инфраструктурно програмирање",
-				"semester": 8
-			},
-			"Програмски јазици и компајлери": {
-				"subject": "Програмски јазици и компајлери",
-				"semester": 8
-			},
-			"Мобилни апликации": {
-				"subject": "Мобилни апликации",
-				"semester": 8
-			},
-			"Моделирање и менаџирање на бизнис процеси": {
-				"subject": "Моделирање и менаџирање на бизнис процеси",
-				"semester": 8
-			},
-			"Моделирање и симулација": {
-				"subject": "Моделирање и симулација",
-				"semester": 8
-			},
-			"Модерни трендови во роботика": {
-				"subject": "Модерни трендови во роботика",
-				"semester": 8
-			},
-			"Web3 апликации": {
-				"subject": "Web3 апликации",
-				"semester": 8
-			},
-			"Неструктурирани бази на податоци": {
-				"subject": "Неструктурирани бази на податоци",
-				"semester": 8
-			},
-			"Операциони истражувања": {
-				"subject": "Операциони истражувања",
-				"semester": 8
-			},
-			"Софтверски дефинирани мрежи": {
-				"subject": "Софтверски дефинирани мрежи",
-				"semester": 8
-			},
-			"Споделување и пресметување во толпа": {
-				"subject": "Споделување и пресметување во толпа",
-				"semester": 8
-			}
-		},
-		"W": {
-			"Мултимедијални технологии": {
-				"subject": "Мултимедијални технологии",
-				"semester": 3
-			},
-			"Основи на теоријата на информации": {
-				"subject": "Основи на теоријата на информации",
-				"semester": 3
-			},
-			"Дигитизација": {
-				"subject": "Дигитизација",
-				"semester": 3
-			},
-			"Економија за ИКТ инженери": {
-				"subject": "Економија за ИКТ инженери",
-				"semester": 3
-			},
-			"Инженерска математика": {
-				"subject": "Инженерска математика",
-				"semester": 3
-			},
-			"Интернет програмирање на клиентска страна": {
-				"subject": "Интернет програмирање на клиентска страна",
-				"semester": 3
-			},
-			"Основи на комуникациски системи": {
-				"subject": "Основи на комуникациски системи",
-				"semester": 3
-			},
-			"Управување со техничка поддршка": {
-				"subject": "Управување со техничка поддршка",
-				"semester": 3
-			},
-			"Шаблони за дизајн на кориснички интерфејси": {
-				"subject": "Шаблони за дизајн на кориснички интерфејси",
-				"semester": 3
-			},
-			"Математика 3": {
-				"subject": "Математика 3",
-				"semester": 3
-			},
-			"Вовед во науката за податоци": {
-				"subject": "Вовед во науката за податоци",
-				"semester": 5
-			},
-			"Дизајн и архитектура на софтвер": {
-				"subject": "Дизајн и архитектура на софтвер",
-				"semester": 5
-			},
-			"Информациска безбедност": {
-				"subject": "Информациска безбедност",
-				"semester": 5
-			},
-			"Компјутерска електроника": {
-				"subject": "Компјутерска електроника",
-				"semester": 5
-			},
-			"Дизајн на образовен софтвер": {
-				"subject": "Дизајн на образовен софтвер",
-				"semester": 5
-			},
-			"Компјутерска етика": {
-				"subject": "Компјутерска етика",
-				"semester": 5
-			},
-			"Персонализирано учење": {
-				"subject": "Персонализирано учење",
-				"semester": 5
-			},
-			"Администрација на системи": {
-				"subject": "Администрација на системи",
-				"semester": 5
-			},
-			"Сајбер безбедност": {
-				"subject": "Сајбер безбедност",
-				"semester": 5
-			},
-			"Визуелизација": {
-				"subject": "Визуелизација",
-				"semester": 5
-			},
-			"Мултимедиски мрежи": {
-				"subject": "Мултимедиски мрежи",
-				"semester": 5
-			},
-			"Напреден веб дизајн": {
-				"subject": "Напреден веб дизајн",
-				"semester": 5
-			},
-			"Обработка на природните јазици": {
-				"subject": "Обработка на природните јазици",
-				"semester": 5
-			},
-			"Основи на роботиката": {
-				"subject": "Основи на роботиката",
-				"semester": 5
-			},
-			"Современи компјутерски архитектури": {
-				"subject": "Современи компјутерски архитектури",
-				"semester": 5
-			},
-			"Теорија на графови и социјални мрежи": {
-				"subject": "Теорија на графови и социјални мрежи",
-				"semester": 5
-			},
-			"Менаџмент информациски системи": {
-				"subject": "Менаџмент информациски системи",
-				"semester": 7
-			},
-			"Софтвер за вградливи системи": {
-				"subject": "Софтвер за вградливи системи",
-				"semester": 7
-			},
-			"Дистрибуирани системи": {
-				"subject": "Дистрибуирани системи",
-				"semester": 7
-			},
-			"Пресметување во облак": {
-				"subject": "Пресметување во облак",
-				"semester": 7
-			},
-			"Автономна роботика": {
-				"subject": "Автономна роботика",
-				"semester": 7
-			},
-			"Администрација на бази податоци": {
-				"subject": "Администрација на бази податоци",
-				"semester": 7
-			},
-			"Анализа и дизајн на ИС": {
-				"subject": "Анализа и дизајн на ИС",
-				"semester": 7
-			},
-			"Вовед во анализа на временските серии": {
-				"subject": "Вовед во анализа на временските серии",
-				"semester": 7
-			},
-			"Веб базирани системи": {
-				"subject": "Веб базирани системи",
-				"semester": 7
-			},
-			"Вовед во биоинформатиката": {
-				"subject": "Вовед во биоинформатиката",
-				"semester": 7
-			},
-			"Вовед во паметни градови": {
-				"subject": "Вовед во паметни градови",
-				"semester": 7
-			},
-			"Вовед во препознавање на облици": {
-				"subject": "Вовед во препознавање на облици",
-				"semester": 7
-			},
-			"Дигитална постпродукција": {
-				"subject": "Дигитална постпродукција",
-				"semester": 7
-			},
-			"Дистрибуирано складирање на податоци": {
-				"subject": "Дистрибуирано складирање на податоци",
-				"semester": 7
-			},
-			"Имплементација на софтверски системи со слободен и отворен код": {
-				"subject": "Имплементација на софтверски системи со слободен и отворен код",
-				"semester": 7
-			},
-			"Иновации во ИКТ": {
-				"subject": "Иновации во ИКТ",
-				"semester": 7
-			},
-			"Интернет на нештата": {
-				"subject": "Интернет на нештата",
-				"semester": 7
-			},
-			"Компјутерски поддржано производство": {
-				"subject": "Компјутерски поддржано производство",
-				"semester": 7
-			},
-			"Блоковски вериги и криптовалути": {
-				"subject": "Блоковски вериги и криптовалути",
-				"semester": 7
-			},
-			"Машинска визија": {
-				"subject": "Машинска визија",
-				"semester": 7
-			},
-			"Мобилни информациски системи": {
-				"subject": "Мобилни информациски системи",
-				"semester": 7
-			},
-			"Мобилни платформи и програмирање": {
-				"subject": "Мобилни платформи и програмирање",
-				"semester": 7
-			},
-			"Мрежна и мобилна форензика": {
-				"subject": "Мрежна и мобилна форензика",
-				"semester": 7
-			},
-			"Напредна интеракција човек компјутер": {
-				"subject": "Напредна интеракција човек компјутер",
-				"semester": 7
-			},
-			"Оптички мрежи": {
-				"subject": "Оптички мрежи",
-				"semester": 7
-			},
-			"Програмирање на видео игри": {
-				"subject": "Програмирање на видео игри",
-				"semester": 7
-			},
-			"Вовед во рударење на масивни податоци": {
-				"subject": "Вовед во рударење на масивни податоци",
-				"semester": 7
-			},
-			"Системи за поддршка при одлучувањето": {
-				"subject": "Системи за поддршка при одлучувањето",
-				"semester": 7
-			},
-			"Квантно пресметување": {
-				"subject": "Квантно пресметување",
-				"semester": 7
-			},
-			"Сензорски системи": {
-				"subject": "Сензорски системи",
-				"semester": 7
-			}
-		}
-	}
-}
Index: ckend/subjects/management/data/formatted_prereqs.json
===================================================================
--- backend/subjects/management/data/formatted_prereqs.json	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,1068 +1,0 @@
-{
-	"Бизнис и менаџмент": {
-		"prerequisite": {}
-	},
-	"Вовед во компјутерските науки": {
-		"prerequisite": {}
-	},
-	"Дизајн на дигитални кола": {
-		"prerequisite": {}
-	},
-	"Дискретни структури 1": {
-		"prerequisite": {}
-	},
-	"Математика 1": {
-		"prerequisite": {}
-	},
-	"Калкулус 1": {
-		"prerequisite": {}
-	},
-	"Педагогија": {
-		"prerequisite": {}
-	},
-	"Професионални вештини": {
-		"prerequisite": {}
-	},
-	"Структурно програмирање": {
-		"prerequisite": {}
-	},
-	"Физика": {
-		"prerequisite": {}
-	},
-	"Архитектура и организација на компјутери": {
-		"prerequisite": {}
-	},
-	"Бизнис статистика": {
-		"prerequisite": {}
-	},
-	"Дискретна математика": {
-		"prerequisite": {}
-	},
-	"Дискретни структури 2": {
-		"prerequisite": {}
-	},
-	"Е-учење": {
-		"prerequisite": {}
-	},
-	"Калкулус 2": {
-		"prerequisite": {}
-	},
-	"Компјутерски архитектури": {
-		"prerequisite": {}
-	},
-	"Компјутерски компоненти": {
-		"prerequisite": {}
-	},
-	"Креативни вештини за решавање проблеми": {
-		"prerequisite": {}
-	},
-	"Маркетинг": {
-		"prerequisite": {
-			"credits": 36
-		}
-	},
-	"Објектно ориентирана анализа и дизајн": {
-		"prerequisite": {}
-	},
-	"Објектно-ориентирано програмирање": {
-		"prerequisite": {}
-	},
-	"Основи на Веб дизајн": {
-		"prerequisite": {}
-	},
-	"Основи на сајбер безбедноста": {
-		"prerequisite": {}
-	},
-	"Алгоритми и податочни структури": {
-		"prerequisite": {
-			"subjects": ["структурно програмирање"]
-		}
-	},
-	"Веројатност и статистика": {
-		"prerequisite": {
-			"subjects": ["калкулус 1", "математика 1"]
-		}
-	},
-	"Дигитизација": {
-		"prerequisite": {
-			"subjects": ["вовед во компјутерските науки"]
-		}
-	},
-	"Економија за ИКТ инженери": {
-		"prerequisite": {
-			"subjects": ["бизнис и менаџмент"]
-		}
-	},
-	"Инженерска математика": {
-		"prerequisite": {
-			"subjects": ["калкулус 1", "математика 1"]
-		}
-	},
-	"Интернет програмирање на клиентска страна": {
-		"prerequisite": {
-			"subjects": ["структурно програмирање"]
-		}
-	},
-	"Компјутерски мрежи": {
-		"prerequisite": {
-			"credits": 18
-		}
-	},
-	"Компјутерски мрежи и безбедност": {
-		"prerequisite": {
-			"credits": 18
-		}
-	},
-	"Мултимедијални технологии": {
-		"prerequisite": {
-			"subjects": ["вовед во компјутерските науки"]
-		}
-	},
-	"Напредно програмирање": {
-		"prerequisite": {
-			"subjects": ["објектно-ориентирано програмирање"]
-		}
-	},
-	"Основи на комуникациски системи": {
-		"prerequisite": {
-			"subjects": ["калкулус 1", "математика 1"]
-		}
-	},
-	"Основи на теоријата на информации": {
-		"prerequisite": {
-			"subjects": ["калкулус 1", "математика 1"]
-		}
-	},
-	"Управување со техничка поддршка": {
-		"prerequisite": {
-			"credits": 18
-		}
-	},
-	"Шаблони за дизајн на кориснички интерфејси": {
-		"prerequisite": {
-			"subjects": ["структурно програмирање"]
-		}
-	},
-	"Анализа на софтверските барања": {
-		"prerequisite": {
-			"subjects": [
-				"објектно ориентирана анализа и дизајн",
-				"објектно-ориентирано програмирање"
-			]
-		}
-	},
-	"Безжични и мобилни системи": {
-		"prerequisite": {
-			"credits": 36
-		}
-	},
-	"Вештачка интелигенција": {
-		"prerequisite": {
-			"credits": 36
-		}
-	},
-	"Визуелно програмирање": {
-		"prerequisite": {
-			"subjects": ["објектно-ориентирано програмирање"]
-		}
-	},
-	"Вовед во екоинформатиката": {
-		"prerequisite": {
-			"subjects": ["вовед во компјутерските науки"]
-		}
-	},
-	"Вовед во случајни процеси": {
-		"prerequisite": {
-			"credits": 36
-		}
-	},
-	"Дигитално процесирање на слика": {
-		"prerequisite": {
-			"subjects": [
-				"дискретна математика",
-				"дискретни структури 2",
-				"математика 2",
-				"избрани теми од математика"
-			]
-		}
-	},
-	"Дизајн на алгоритми": {
-		"prerequisite": {
-			"subjects": [
-				"дискретна математика",
-				"дискретни структури 2",
-				"математика 2",
-				"избрани теми од математика"
-			]
-		}
-	},
-	"Е-влада": {
-		"prerequisite": {
-			"subjects": ["бизнис и менаџмент"]
-		}
-	},
-	"Електрични кола": {
-		"prerequisite": {
-			"credits": 36
-		}
-	},
-	"Информатичко размислување во образованието": {
-		"prerequisite": {
-			"subjects": ["вовед во компјутерските науки"]
-		}
-	},
-	"Интернет технологии": {
-		"prerequisite": {
-			"subjects": ["објектно-ориентирано програмирање"]
-		}
-	},
-	"Компјутерска графика": {
-		"prerequisite": {
-			"subjects": ["објектно-ориентирано програмирање"]
-		}
-	},
-	"Концепти на информатичко општество": {
-		"prerequisite": {
-			"subjects": ["вовед во компјутерските науки"]
-		}
-	},
-	"Медиуми и комуникации": {
-		"prerequisite": {
-			"subjects": ["вовед во компјутерските науки"]
-		}
-	},
-	"Квантно пресметување": {
-		"prerequisite": {
-			"subjects": [
-				"архитектура и организација на компјутери",
-				"компјутерски архитектури"
-			]
-		}
-	},
-	"Оперативни системи": {
-		"prerequisite": {
-			"subjects": [
-				"архитектура и организација на компјутери",
-				"компјутерски архитектури"
-			]
-		}
-	},
-	"Софтверско инженерство": {
-		"prerequisite": {
-			"subjects": ["објектно-ориентирано програмирање"]
-		}
-	},
-	"Теорија на информации со дигитални комуникации": {
-		"prerequisite": {
-			"subjects": [
-				"веројатност и статистика",
-				"математика 3",
-				"бизнис статистика"
-			]
-		}
-	},
-	"Администрација на системи": {
-		"prerequisite": {
-			"subjects": ["компјутерски мрежи", "компјутерски мрежи и безбедност"]
-		}
-	},
-	"Бази на податоци": {
-		"prerequisite": {
-			"subjects": [
-				"алгоритми и податочни структури",
-				"примена на алгоритми и податочни структури"
-			]
-		}
-	},
-	"Веб програмирање": {
-		"prerequisite": {
-			"subjects": [
-				"алгоритми и податочни структури",
-				"примена на алгоритми и податочни структури"
-			]
-		}
-	},
-	"Визуелизација": {
-		"prerequisite": {
-			"subjects": [
-				"алгоритми и податочни структури",
-				"примена на алгоритми и податочни структури"
-			]
-		}
-	},
-	"Вовед во науката за податоци": {
-		"prerequisite": {
-			"subjects": [
-				"бизнис статистика",
-				"веројатност и статистика",
-				"основи на теоријата на информации",
-				"математика 3"
-			]
-		}
-	},
-	"Дизајн и архитектура на софтвер": {
-		"prerequisite": {
-			"subjects": [
-				"објектно ориентирана анализа и дизајн",
-				"објектно-ориентирано програмирање"
-			]
-		}
-	},
-	"Дизајн на образовен софтвер": {
-		"prerequisite": {
-			"credits": 60
-		}
-	},
-	"Информациска безбедност": {
-		"prerequisite": {
-			"subjects": ["компјутерски мрежи", "компјутерски мрежи и безбедност"]
-		}
-	},
-	"Компјутерска електроника": {
-		"prerequisite": {
-			"subjects": ["дизајн на дигитални кола", "вовед во компјутерските науки"]
-		}
-	},
-	"Компјутерска етика": {
-		"prerequisite": {
-			"subjects": [
-				"алгоритми и податочни структури",
-				"примена на алгоритми и податочни структури"
-			]
-		}
-	},
-	"Компјутерски звук, музика и говор": {
-		"prerequisite": {
-			"subjects": [
-				"алгоритми и податочни структури",
-				"примена на алгоритми и податочни структури"
-			]
-		}
-	},
-	"Линеарна алгебра и примени": {
-		"prerequisite": {
-			"subjects": [
-				"дискретна математика",
-				"дискретни структури 2",
-				"математика 2",
-				"избрани теми од математика"
-			]
-		}
-	},
-	"Сајбер безбедност": {
-		"prerequisite": {
-			"subjects": ["компјутерски мрежи", "компјутерски мрежи и безбедност"]
-		}
-	},
-	"Мултимедиски мрежи": {
-		"prerequisite": {
-			"subjects": ["компјутерски мрежи", "компјутерски мрежи и безбедност"]
-		}
-	},
-	"Напреден веб дизајн": {
-		"prerequisite": {
-			"subjects": ["објектно-ориентирано програмирање"]
-		}
-	},
-	"Основи на роботиката": {
-		"prerequisite": {
-			"subjects": [
-				"алгоритми и податочни структури",
-				"примена на алгоритми и податочни структури"
-			]
-		}
-	},
-	"Паралелно и дистрибуирано процесирање": {
-		"prerequisite": {
-			"subjects": [
-				"алгоритми и податочни структури",
-				"примена на алгоритми и податочни структури"
-			]
-		}
-	},
-	"Агентно-базирани системи": {
-		"prerequisite": {
-			"subjects": [
-				"вештачка интелигенција",
-				"математика 3",
-				"веројатност и статистика",
-				"бизнис статистика"
-			]
-		}
-	},
-	"Администрација на мрежи": {
-		"prerequisite": {
-			"subjects": ["компјутерски мрежи", "компјутерски мрежи и безбедност"]
-		}
-	},
-	"Безжични мултимедиски системи": {
-		"prerequisite": {
-			"subjects": ["безжични и мобилни системи"]
-		}
-	},
-	"Вградливи микропроцесорски системи": {
-		"prerequisite": {
-			"subjects": [
-				"архитектура и организација на компјутери",
-				"компјутерски архитектури"
-			]
-		}
-	},
-	"Виртуелизација": {
-		"prerequisite": {
-			"subjects": ["оперативни системи"]
-		}
-	},
-	"Вовед во мрежна наука": {
-		"prerequisite": {
-			"subjects": [
-				"веројатност и статистика",
-				"основи на теоријата на информации",
-				"математика 3",
-				"бизнис статистика"
-			]
-		}
-	},
-	"Географски информациски системи": {
-		"prerequisite": {
-			"credits": 90
-		}
-	},
-	"Дигитална форензика": {
-		"prerequisite": {
-			"subjects": ["оперативни системи"]
-		}
-	},
-	"Дигитални библиотеки": {
-		"prerequisite": {
-			"credits": 90
-		}
-	},
-	"Дизајн на интеракцијата човек-компјутер": {
-		"prerequisite": {
-			"subjects": [
-				"алгоритми и податочни структури",
-				"примена на алгоритми и податочни структури"
-			]
-		}
-	},
-	"Електронска и мобилна трговија": {
-		"prerequisite": {
-			"subjects": ["бази на податоци"]
-		}
-	},
-	"Интегрирани системи": {
-		"prerequisite": {
-			"subjects": ["анализа на софтверските барања", "софтверско инженерство"]
-		}
-	},
-	"Инфраструктурно програмирање": {
-		"prerequisite": {
-			"subjects": ["компјутерски мрежи", "компјутерски мрежи и безбедност"]
-		}
-	},
-	"Континуирана интеграција и испорака": {
-		"prerequisite": {
-			"subjects": ["оперативни системи"]
-		}
-	},
-	"Криптографија": {
-		"prerequisite": {
-			"subjects": [
-				"дискретни структури 2",
-				"дискретна математика",
-				"математика 2",
-				"избрани теми од математика"
-			]
-		}
-	},
-	"Машинско учење": {
-		"prerequisite": {
-			"subjects": [
-				"веројатност и статистика",
-				"бизнис статистика",
-				"математика 3"
-			]
-		}
-	},
-	"Мерење и анализа на сообраќај": {
-		"prerequisite": {
-			"subjects": [
-				"веројатност и статистика",
-				"основи на теоријата на информации",
-				"бизнис статистика",
-				"математика 3"
-			]
-		}
-	},
-	"Мултимедиски системи": {
-		"prerequisite": {
-			"subjects": [
-				"алгоритми и податочни структури",
-				"примена на алгоритми и податочни структури"
-			]
-		}
-	},
-	"Паралелно програмирање": {
-		"prerequisite": {
-			"subjects": [
-				"алгоритми и податочни структури",
-				"примена на алгоритми и податочни структури"
-			]
-		}
-	},
-	"Персонализирано учење": {
-		"prerequisite": {
-			"subjects": [
-				"алгоритми и податочни структури",
-				"примена на алгоритми и податочни структури"
-			]
-		}
-	},
-	"Податочно рударење": {
-		"prerequisite": {
-			"subjects": [
-				"веројатност и статистика",
-				"математика 3",
-				"основи на теоријата на информации",
-				"бизнис статистика"
-			]
-		}
-	},
-	"Процесирање на сигналите": {
-		"prerequisite": {
-			"subjects": ["математика 1", "калкулус 1"]
-		}
-	},
-	"Вештачка интелигенција за игри": {
-		"prerequisite": {
-			"subjects": [
-				"алгоритми и податочни структури",
-				"примена на алгоритми и податочни структури",
-				"вештачка интелигенција"
-			]
-		}
-	},
-	"Психологија на училишна возраст": {
-		"prerequisite": {}
-	},
-	"Работа со надарени ученици": {
-		"prerequisite": {
-			"subjects": [
-				"алгоритми и податочни структури",
-				"примена на алгоритми и податочни структури"
-			]
-		}
-	},
-	"Сервисно ориентирани архитектури": {
-		"prerequisite": {
-			"subjects": [
-				"алгоритми и податочни структури",
-				"примена на алгоритми и податочни структури"
-			]
-		}
-	},
-	"Софтверски дефинирана безбедност": {
-		"prerequisite": {
-			"credits": 100
-		}
-	},
-	"Современи компјутерски архитектури": {
-		"prerequisite": {
-			"subjects": [
-				"архитектура и организација на компјутери",
-				"компјутерски архитектури"
-			]
-		}
-	},
-	"Софтверски квалитет и тестирање": {
-		"prerequisite": {
-			"subjects": ["софтверско инженерство", "дизајн и архитектура на софтвер"]
-		}
-	},
-	"Автоматизирање на процеси во машинско учење": {
-		"prerequisite": {
-			"subjects": [
-				"алгоритми и податочни структури",
-				"примена на алгоритми и податочни структури"
-			]
-		}
-	},
-	"Учење на далечина": {
-		"prerequisite": {
-			"subjects": [
-				"алгоритми и податочни структури",
-				"примена на алгоритми и податочни структури"
-			]
-		}
-	},
-	"Основи на теоријата на компјутерските науки": {
-		"prerequisite": {
-			"subjects": [
-				"дискретна математика",
-				"дискретни структури 2",
-				"математика 2",
-				"избрани теми од математика"
-			]
-		}
-	},
-	"Автономна роботика": {
-		"prerequisite": {
-			"subjects": ["основи на роботиката", "алгоритми и податочни структури"]
-		}
-	},
-	"Администрација на бази податоци": {
-		"prerequisite": {
-			"subjects": ["бази на податоци"]
-		}
-	},
-	"Анализа и дизајн на ИС": {
-		"prerequisite": {
-			"subjects": ["бази на податоци"]
-		}
-	},
-	"Веб базирани системи": {
-		"prerequisite": {
-			"subjects": [
-				"алгоритми и податочни структури",
-				"примена на алгоритми и податочни структури"
-			]
-		}
-	},
-	"Вовед во анализа на временските серии": {
-		"prerequisite": {
-			"subjects": [
-				"вештачка интелигенција",
-				"вовед во науката за податоци",
-				"машинско учење"
-			]
-		}
-	},
-	"Вовед во биоинформатиката": {
-		"prerequisite": {
-			"subjects": [
-				"вештачка интелигенција",
-				"машинско учење",
-				"вовед во науката за податоци"
-			]
-		}
-	},
-	"Вовед во паметни градови": {
-		"prerequisite": {
-			"subjects": [
-				"вештачка интелигенција",
-				"вовед во науката за податоци",
-				"машинско учење"
-			]
-		}
-	},
-	"Вовед во препознавање на облици": {
-		"prerequisite": {
-			"subjects": [
-				"вештачка интелигенција",
-				"вовед во науката за податоци",
-				"машинско учење"
-			]
-		}
-	},
-	"Дигитална постпродукција": {
-		"prerequisite": {
-			"subjects": [
-				"алгоритми и податочни структури",
-				"примена на алгоритми и податочни структури"
-			]
-		}
-	},
-	"Дистрибуирани системи": {
-		"prerequisite": {
-			"subjects": ["компјутерски мрежи", "компјутерски мрежи и безбедност"]
-		}
-	},
-	"Дистрибуирано складирање на податоци": {
-		"prerequisite": {
-			"subjects": ["компјутерски мрежи", "компјутерски мрежи и безбедност"]
-		}
-	},
-	"Имплементација на софтверски системи со слободен и отворен код": {
-		"prerequisite": {
-			"subjects": [
-				"алгоритми и податочни структури",
-				"примена на алгоритми и податочни структури"
-			]
-		}
-	},
-	"Иновации во ИКТ": {
-		"prerequisite": {
-			"subjects": ["бизнис и менаџмент"]
-		}
-	},
-	"Интернет на нештата": {
-		"prerequisite": {
-			"subjects": ["компјутерски мрежи", "компјутерски мрежи и безбедност"]
-		}
-	},
-	"Компјутерски поддржано производство": {
-		"prerequisite": {
-			"subjects": [
-				"архитектура и организација на компјутери",
-				"компјутерски архитектури"
-			]
-		}
-	},
-	"Машинска визија": {
-		"prerequisite": {
-			"credits": 120
-		}
-	},
-	"Менаџмент информациски системи": {
-		"prerequisite": {
-			"subjects": ["софтверско инженерство", "анализа на софтверските барања"]
-		}
-	},
-	"Методологија на истражувањето во ИКТ": {
-		"prerequisite": {
-			"credits": 150
-		}
-	},
-	"Мобилни информациски системи": {
-		"prerequisite": {
-			"subjects": [
-				"алгоритми и податочни структури",
-				"примена на алгоритми и податочни структури"
-			]
-		}
-	},
-	"Мобилни платформи и програмирање": {
-		"prerequisite": {
-			"subjects": [
-				"алгоритми и податочни структури",
-				"примена на алгоритми и податочни структури"
-			]
-		}
-	},
-	"Моделирање и симулација": {
-		"prerequisite": {
-			"subjects": [
-				"веројатност и статистика",
-				"основи на теоријата на информации",
-				"бизнис статистика",
-				"математика 3"
-			]
-		}
-	},
-	"Мрежна и мобилна форензика": {
-		"prerequisite": {
-			"subjects": ["компјутерски мрежи", "компјутерски мрежи и безбедност"]
-		}
-	},
-	"Напредна интеракција човек компјутер": {
-		"prerequisite": {
-			"subjects": [
-				"дизајн на интеракцијата човек-компјутер",
-				"алгоритми и податочни структури",
-				"Примена на алгоритми и податочни структури"
-			]
-		}
-	},
-	"Обработка на природните јазици": {
-		"prerequisite": {
-			"subjects": [
-				"алгоритми и податочни структури",
-				"примена на алгоритми и податочни структури"
-			]
-		}
-	},
-	"Операциони истражувања": {
-		"prerequisite": {
-			"subjects": [
-				"веројатност и статистика",
-				"основи на теоријата на информации",
-				"математика 3",
-				"бизнис статистика"
-			]
-		}
-	},
-	"Оптички мрежи": {
-		"prerequisite": {
-			"subjects": ["компјутерски мрежи", "компјутерски мрежи и безбедност"]
-		}
-	},
-	"Пресметување во облак": {
-		"prerequisite": {
-			"subjects": ["бази на податоци"]
-		}
-	},
-	"Програмирање на видео игри": {
-		"prerequisite": {
-			"subjects": [
-				"алгоритми и податочни структури",
-				"примена на алгоритми и податочни структури"
-			]
-		}
-	},
-	"Програмски парадигми": {
-		"prerequisite": {
-			"subjects": [
-				"алгоритми и податочни структури",
-				"примена на алгоритми и податочни структури"
-			]
-		}
-	},
-	"Вовед во рударење на масивни податоци": {
-		"prerequisite": {
-			"subjects": [
-				"алгоритми и податочни структури",
-				"примена на алгоритми и податочни структури"
-			]
-		}
-	},
-	"Самостоен проект": {
-		"prerequisite": {
-			"credits": 150
-		}
-	},
-	"Системи за поддршка при одлучувањето": {
-		"prerequisite": {
-			"subjects": [
-				"вештачка интелигенција",
-				"вовед во науката за податоци",
-				"машинско учење"
-			]
-		}
-	},
-	"Софтвер за вградливи системи": {
-		"prerequisite": {
-			"subjects": [
-				"алгоритми и податочни структури",
-				"примена на алгоритми и податочни структури"
-			]
-		}
-	},
-	"Софтверски дефинирани мрежи": {
-		"prerequisite": {
-			"subjects": ["компјутерски мрежи", "компјутерски мрежи и безбедност"]
-		}
-	},
-	"Теорија на графови и социјални мрежи": {
-		"prerequisite": {
-			"subjects": [
-				"алгоритми и податочни структури",
-				"примена на алгоритми и податочни структури"
-			]
-		}
-	},
-	"Тимски проект": {
-		"prerequisite": {
-			"credits": 150
-		}
-	},
-	"Биолошки инспирирано пресметување": {
-		"prerequisite": {
-			"subjects": [
-				"алгоритми и податочни структури",
-				"примена на алгоритми и податочни структури"
-			]
-		}
-	},
-	"Блоковски вериги и криптовалути": {
-		"prerequisite": {
-			"subjects": [
-				"алгоритми и податочни структури",
-				"примена на алгоритми и податочни структури"
-			]
-		}
-	},
-	"Веб пребарувачки системи": {
-		"prerequisite": {
-			"subjects": [
-				"вештачка интелигенција",
-				"вовед во науката за податоци",
-				"машинско учење"
-			]
-		}
-	},
-	"Виртуелна реалност": {
-		"prerequisite": {
-			"subjects": [
-				"алгоритми и податочни структури",
-				"примена на алгоритми и податочни структури"
-			]
-		}
-	},
-	"Вовед во когнитивни науки": {
-		"prerequisite": {
-			"credits": 120
-		}
-	},
-	"Дизајн на компјутерски мрежи": {
-		"prerequisite": {
-			"subjects": ["компјутерски мрежи", "компјутерски мрежи и безбедност"]
-		}
-	},
-	"Дипломска работа": {
-		"prerequisite": {
-			"credits": 204
-		}
-	},
-	"Етичко хакирање": {
-		"prerequisite": {
-			"subjects": ["компјутерски мрежи", "компјутерски мрежи и безбедност"]
-		}
-	},
-	"ИКТ за развој": {
-		"prerequisite": {
-			"subjects": ["бизнис и менаџмент"]
-		}
-	},
-	"Откривање знаење со длабоко учење": {
-		"prerequisite": {
-			"subjects": [
-				"вештачка интелигенција",
-				"вовед во науката за податоци",
-				"машинско учење"
-			]
-		}
-	},
-	"Интелигентни системи": {
-		"prerequisite": {
-			"subjects": [
-				"вештачка интелигенција",
-				"вовед во науката за податоци",
-				"машинско учење"
-			]
-		}
-	},
-	"Компјутерска анимација": {
-		"prerequisite": {
-			"subjects": [
-				"алгоритми и податочни структури",
-				"примена на алгоритми и податочни структури"
-			]
-		}
-	},
-	"Македонски јазик": {
-		"prerequisite": {}
-	},
-	"Методика на информатиката": {
-		"prerequisite": {
-			"credits": 150
-		}
-	},
-	"Мобилни апликации": {
-		"prerequisite": {
-			"subjects": [
-				"алгоритми и податочни структури",
-				"примена на алгоритми и податочни структури"
-			]
-		}
-	},
-	"Моделирање и менаџирање на бизнис процеси": {
-		"prerequisite": {
-			"subjects": ["објектно-ориентирано програмирање"]
-		}
-	},
-	"Модерни трендови во роботика": {
-		"prerequisite": {
-			"subjects": ["оперативни системи"]
-		}
-	},
-	"Напредни бази на податоци": {
-		"prerequisite": {
-			"credits": 90
-		}
-	},
-	"Web3 апликации": {
-		"prerequisite": {
-			"subjects": [
-				"алгоритми и податочни структури",
-				"примена на алгоритми и податочни структури"
-			]
-		}
-	},
-	"Неструктурирани бази на податоци": {
-		"prerequisite": {
-			"subjects": ["бази на податоци"]
-		}
-	},
-	"Пресметковна биологија": {
-		"prerequisite": {
-			"subjects": ["машинско учење"]
-		}
-	},
-	"Претприемништво": {
-		"prerequisite": {
-			"credits": 120
-		}
-	},
-	"Програмски јазици и компајлери": {
-		"prerequisite": {
-			"subjects": [
-				"алгоритми и податочни структури",
-				"примена на алгоритми и податочни структури"
-			]
-		}
-	},
-	"Складови на податоци и аналитичка обработка": {
-		"prerequisite": {
-			"credits": 100
-		}
-	},
-	"Споделување и пресметување во толпа": {
-		"prerequisite": {
-			"subjects": [
-				"вештачка интелигенција",
-				"вовед во науката за податоци",
-				"машинско учење"
-			]
-		}
-	},
-	"Управување со ИКТ проекти": {
-		"prerequisite": {
-			"subjects": ["софтверско инженерство", "анализа на софтверските барања"]
-		}
-	},
-	"Вовед во бази на податоци и SQL": {
-		"prerequisite": {}
-	},
-	"Примена на алгоритми и податочни структури": {
-		"prerequisite": {
-			"subjects": ["структурно програмирање"]
-		}
-	},
-	"Математика 3": {
-		"prerequisite": {}
-	},
-	"Избрани теми од математика": {
-		"prerequisite": {}
-	},
-	"Математика 2": {
-		"prerequisite": {}
-	},
-	"Тестирање на софтвер": {
-		"prerequisite": {}
-	},
-	"Сензорски системи": {
-		"prerequisite": {
-			"subjects": [
-				"архитектура и организација на компјутери",
-				"компјутерски архитектури"
-			]
-		}
-	},
-	"Адаптивни и интерактивни веб информациски системи": {
-		"prerequisite": {
-			"subjects": [
-				"алгоритми и податочни структури",
-				"примена на алгоритми и податочни структури"
-			]
-		}
-	},
-	"Спорт и здравје": {
-		"prerequisite": {}
-	},
-	"Деловна пракса": {
-		"prerequisite": {
-			"credits": 36
-		}
-	}
-}
Index: ckend/subjects/management/data/information.json
===================================================================
--- backend/subjects/management/data/information.json	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,1058 +1,0 @@
-[
-	{
-		"code": "F18L1S003, F23L1S003",
-		"course": "Архитектура и организација на компјутери",
-		"level": 1,
-		"link": "https://finki.ukim.mk/subject/F23L1S003"
-	},
-	{
-		"code": "F18L1W005, F23L1W005",
-		"course": "Бизнис и менаџмент",
-		"level": 1,
-		"link": "https://finki.ukim.mk/subject/F23L1W005"
-	},
-	{
-		"code": "F18L1S023, F23L1S023",
-		"course": "Бизнис статистика",
-		"level": 1,
-		"link": "https://finki.ukim.mk/subject/F23L1S023"
-	},
-	{
-		"code": "F18L1W007, F23L1W007",
-		"course": "Вовед во компјутерските науки",
-		"level": 1,
-		"link": "https://finki.ukim.mk/subject/F23L1W007"
-	},
-	{
-		"code": "F18L1W041, F23L2W041",
-		"course": "Дизајн на дигитални кола",
-		"level": 2,
-		"link": "https://finki.ukim.mk/subject/F23L2W041"
-	},
-	{
-		"code": "F18L1W011, F23L2S011",
-		"course": "Дискретна математика",
-		"level": 2,
-		"link": "https://finki.ukim.mk/subject/F23L2S011"
-	},
-	{
-		"code": "F18L1W031, F23L2W031",
-		"course": "Дискретни структури 1",
-		"level": 2,
-		"link": "https://finki.ukim.mk/subject/F23L2W031"
-	},
-	{
-		"code": "F18L1S032, F23L2S032",
-		"course": "Дискретни структури 2",
-		"level": 2,
-		"link": "https://finki.ukim.mk/subject/F23L2S032"
-	},
-	{
-		"code": "F18L1S052, F23L1S052",
-		"course": "Е-учење",
-		"level": 1,
-		"link": "https://finki.ukim.mk/subject/F23L1S052"
-	},
-	{
-		"code": "F18L1S013, F23L2W002",
-		"course": "Математика 1",
-		"level": 2,
-		"link": "https://finki.ukim.mk/subject/F23L2W002"
-	},
-	{
-		"code": "F18L1W033, F23L2W033",
-		"course": "Калкулус 1",
-		"level": 2,
-		"link": "https://finki.ukim.mk/subject/F23L2W033"
-	},
-	{
-		"code": "F18L1S034, F23L2S034",
-		"course": "Калкулус 2",
-		"level": 2,
-		"link": "https://finki.ukim.mk/subject/F23L2S034"
-	},
-	{
-		"code": "F18L1S045, F23L1S045",
-		"course": "Компјутерски архитектури",
-		"level": 1,
-		"link": "https://finki.ukim.mk/subject/F23L1S045"
-	},
-	{
-		"code": "F18L1S116, F23L1S116",
-		"course": "Компјутерски компоненти",
-		"level": 1,
-		"link": "https://finki.ukim.mk/subject/F23L1S116"
-	},
-	{
-		"code": "F18L1S120, F23L1S120",
-		"course": "Креативни вештини за решавање проблеми",
-		"level": 1,
-		"link": "https://finki.ukim.mk/subject/F23L1S120"
-	},
-	{
-		"code": "F18L1S026, F23L2S026",
-		"course": "Маркетинг",
-		"level": 2,
-		"link": "https://finki.ukim.mk/subject/F23L1S026"
-	},
-	{
-		"code": "F18L1S015, F23L2S015",
-		"course": "Објектно ориентирана анализа и дизајн",
-		"level": 2,
-		"link": "https://finki.ukim.mk/subject/F23L2S015"
-	},
-	{
-		"code": "F18L1S016, F23L1S016",
-		"course": "Објектно-ориентирано програмирање",
-		"level": 1,
-		"link": "https://finki.ukim.mk/subject/F23L1S016"
-	},
-	{
-		"code": "F18L1S146, F23L1S146",
-		"course": "Основи на Веб дизајн",
-		"level": 1,
-		"link": "https://finki.ukim.mk/subject/F23L1S146"
-	},
-	{
-		"code": "F18L1S066, F23L1S066",
-		"course": "Основи на сајбер безбедноста",
-		"level": 1,
-		"link": "https://finki.ukim.mk/subject/F23L2S066"
-	},
-	{
-		"code": "F18L1W070, F23L2W070",
-		"course": "Педагогија",
-		"level": 2,
-		"link": "https://finki.ukim.mk/subject/F23L2W070"
-	},
-	{
-		"code": "F18L1W018, F23L1W018",
-		"course": "Професионални вештини",
-		"level": 1,
-		"link": "https://finki.ukim.mk/subject/F23L1W018"
-	},
-	{
-		"code": "F18L1W020, F23L1W020",
-		"course": "Структурно програмирање",
-		"level": 1,
-		"link": "https://finki.ukim.mk/subject/F23L1W020"
-	},
-	{
-		"code": "F18L1W049, F23L2W049",
-		"course": "Физика",
-		"level": 2,
-		"link": "https://finki.ukim.mk/subject/F23L2W049"
-	},
-	{
-		"code": "F18L2W001, F23L2W001",
-		"course": "Алгоритми и податочни структури",
-		"level": 2,
-		"link": "https://finki.ukim.mk/subject/F23L2W001"
-	},
-	{
-		"code": "F18L2S002, F23L2S002",
-		"course": "Анализа на софтверските барања",
-		"level": 2,
-		"link": "https://finki.ukim.mk/subject/F23L2S002"
-	},
-	{
-		"code": "F18L2S061, F23L2S061",
-		"course": "Безжични и мобилни системи",
-		"level": 2,
-		"link": "https://finki.ukim.mk/subject/F23L2S061"
-	},
-	{
-		"code": "F18L2W006, F23L2W006",
-		"course": "Веројатност и статистика",
-		"level": 2,
-		"link": "https://finki.ukim.mk/subject/F23L2W006"
-	},
-	{
-		"code": "F18L2S030, F23L2S030",
-		"course": "Вештачка интелигенција",
-		"level": 2,
-		"link": "https://finki.ukim.mk/subject/F23L2S030"
-	},
-	{
-		"code": "F18L2S082, F23L2S082",
-		"course": "Визуелно програмирање",
-		"level": 2,
-		"link": "https://finki.ukim.mk/subject/F23L2S082"
-	},
-	{
-		"code": "F18L2S084, F23L2S084",
-		"course": "Вовед во екоинформатиката",
-		"level": 2,
-		"link": "https://finki.ukim.mk/subject/F23L2S084"
-	},
-	{
-		"code": "F18L2S090, F23L2S090",
-		"course": "Вовед во случајни процеси",
-		"level": 2,
-		"link": "https://finki.ukim.mk/subject/F23L2S090"
-	},
-	{
-		"code": "F18L2S095, F23L2S095",
-		"course": "Дигитално процесирање на слика",
-		"level": 2,
-		"link": "https://finki.ukim.mk/subject/F23L2S095"
-	},
-	{
-		"code": "F18L2W096, F23L2W096",
-		"course": "Дигитизација",
-		"level": 2,
-		"link": "https://finki.ukim.mk/subject/F23L2W096"
-	},
-	{
-		"code": "F18L2S097, F23L2S097",
-		"course": "Дизајн на алгоритми",
-		"level": 2,
-		"link": "https://finki.ukim.mk/subject/F23L2S097"
-	},
-	{
-		"code": "F18L2S099, F23L2S099",
-		"course": "Е-влада",
-		"level": 2,
-		"link": "https://finki.ukim.mk/subject/F23L2S099"
-	},
-	{
-		"code": "F18L2S100, F23L2W100",
-		"course": "Економија за ИКТ инженери",
-		"level": 2,
-		"link": "https://finki.ukim.mk/subject/F23L2W100"
-	},
-	{
-		"code": "F18L2S042, F23L2S042",
-		"course": "Електрични кола",
-		"level": 2,
-		"link": "https://finki.ukim.mk/subject/F23L2S042"
-	},
-	{
-		"code": "F18L2S051, F23L2S051",
-		"course": "Информатичко размислување во образованието",
-		"level": 2,
-		"link": "https://finki.ukim.mk/subject/F23L2S051"
-	},
-	{
-		"code": "F18L2W104, F23L2W104",
-		"course": "Инженерска математика",
-		"level": 2,
-		"link": "https://finki.ukim.mk/subject/F23L2W104"
-	},
-	{
-		"code": "F18L2W109, F23L2W109",
-		"course": "Интернет програмирање на клиентска страна",
-		"level": 2,
-		"link": "https://finki.ukim.mk/subject/F23L2W109"
-	},
-	{
-		"code": "F18L2S110, F23L2S110",
-		"course": "Интернет технологии",
-		"level": 2,
-		"link": "https://finki.ukim.mk/subject/F23L2S110"
-	},
-	{
-		"code": "F18L2S114, F23L2S114",
-		"course": "Компјутерска графика",
-		"level": 2,
-		"link": "https://finki.ukim.mk/subject/F23L2S114"
-	},
-	{
-		"code": "F18L2W046, F23L2W046",
-		"course": "Компјутерски мрежи",
-		"level": 2,
-		"link": "https://finki.ukim.mk/subject/F23L2W046"
-	},
-	{
-		"code": "F18L2W014, F23L2W014",
-		"course": "Компјутерски мрежи и безбедност",
-		"level": 2,
-		"link": "https://finki.ukim.mk/subject/F23L2W014"
-	},
-	{
-		"code": "F18L2S119, F23L2S119",
-		"course": "Концепти на информатичко општество",
-		"level": 2,
-		"link": "https://finki.ukim.mk/subject/F23L2S119"
-	},
-	{
-		"code": "F18L2S124, F23L2S124",
-		"course": "Медиуми и комуникации",
-		"level": 2,
-		"link": "https://finki.ukim.mk/subject/F23L2S124"
-	},
-	{
-		"code": "F18L3W055, F23L2W055",
-		"course": "Мултимедијални технологии",
-		"level": 2,
-		"link": "https://finki.ukim.mk/subject/F23L2W055"
-	},
-	{
-		"code": "F18L2W140, F23L3W140",
-		"course": "Напредно програмирање",
-		"level": 2,
-		"link": "https://finki.ukim.mk/subject/F23L3W140"
-	},
-	{
-		"code": "F18L2S143, F23L3W162",
-		"course": "Квантно пресметување",
-		"level": 2,
-		"link": "https://finki.ukim.mk/subject/F23L3W162"
-	},
-	{
-		"code": "F18L2S017, F23L2S017",
-		"course": "Оперативни системи",
-		"level": 2,
-		"link": "https://finki.ukim.mk/subject/F23L2S017"
-	},
-	{
-		"code": "F18L2W147, F23L2W147",
-		"course": "Основи на комуникациски системи",
-		"level": 2,
-		"link": "https://finki.ukim.mk/subject/F23L2W147"
-	},
-	{
-		"code": "F18L2W067, F23L2W067",
-		"course": "Основи на теоријата на информации",
-		"level": 2,
-		"link": "https://finki.ukim.mk/subject/F23L2W067"
-	},
-	{
-		"code": "F18L2S029, F23L2S029",
-		"course": "Софтверско инженерство",
-		"level": 2,
-		"link": "https://finki.ukim.mk/subject/F23L2S029"
-	},
-	{
-		"code": "F18L2S164, F23L2S164",
-		"course": "Теорија на информации со дигитални комуникации",
-		"level": 2,
-		"link": "https://finki.ukim.mk/subject/F23L2S164"
-	},
-	{
-		"code": "F18L2W165, F23L2W165",
-		"course": "Управување со техничка поддршка",
-		"level": 2,
-		"link": "https://finki.ukim.mk/subject/F23L2W165"
-	},
-	{
-		"code": "F18L2W167, F23L2W167",
-		"course": "Шаблони за дизајн на кориснички интерфејси",
-		"level": 2,
-		"link": "https://finki.ukim.mk/subject/F23L2W167"
-	},
-	{
-		"code": "F18L3S073, F23L3S073",
-		"course": "Агентно-базирани системи",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3S073"
-	},
-	{
-		"code": "F18L3S059, F23L3S059",
-		"course": "Администрација на мрежи",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3S059"
-	},
-	{
-		"code": "F18L3W060, F23L3W060",
-		"course": "Администрација на системи",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3W060"
-	},
-	{
-		"code": "F18L3W004, F23L3W004",
-		"course": "Бази на податоци",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3W004"
-	},
-	{
-		"code": "F18L3S040, F23L3S040",
-		"course": "Вградливи микропроцесорски системи",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3S040"
-	},
-	{
-		"code": "F18L3W024, F23L3W024",
-		"course": "Веб програмирање",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3W024"
-	},
-	{
-		"code": "F18L3W081, F23L3W081",
-		"course": "Визуелизација",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3W081"
-	},
-	{
-		"code": "F18L3S062, F23L3S062",
-		"course": "Виртуелизација",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3S062"
-	},
-	{
-		"code": "F18L3S087, F23L3S087",
-		"course": "Вовед во мрежна наука",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3S087"
-	},
-	{
-		"code": "F18L3W008, F23L3W008",
-		"course": "Вовед во науката за податоци",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3W008"
-	},
-	{
-		"code": "F18L3S091, F23L3S091",
-		"course": "Географски информациски системи",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3S091"
-	},
-	{
-		"code": "F18L3S093, F23L3S093",
-		"course": "Дигитална форензика",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3S093"
-	},
-	{
-		"code": "F18L3S094, F23L3S094",
-		"course": "Дигитални библиотеки",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3S094"
-	},
-	{
-		"code": "F18L3W009, F23L3W009",
-		"course": "Дизајн и архитектура на софтвер",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3W009"
-	},
-	{
-		"code": "F18L3S010, F23L3S010",
-		"course": "Дизајн на интеракцијата човек-компјутер",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3S010"
-	},
-	{
-		"code": "F18L3W050, F23L3W050",
-		"course": "Дизајн на образовен софтвер",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3W050"
-	},
-	{
-		"code": "F18L3S025, F23L3S025",
-		"course": "Електронска и мобилна трговија",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3S025"
-	},
-	{
-		"code": "F18L3S012, F23L3S012",
-		"course": "Интегрирани системи",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3S012"
-	},
-	{
-		"code": "F18L3W043, F23L3W043",
-		"course": "Информациска безбедност",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3W043"
-	},
-	{
-		"code": "F18L3S111, F23L3S111",
-		"course": "Инфраструктурно програмирање",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3S111"
-	},
-	{
-		"code": "F18L3W044, F23L3W044",
-		"course": "Компјутерска електроника",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3W044"
-	},
-	{
-		"code": "F18L3W053, F23L3W053",
-		"course": "Компјутерска етика",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3W053"
-	},
-	{
-		"code": "F18L3W115, F23L3S115",
-		"course": "Компјутерски звук, музика и говор",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3S115"
-	},
-	{
-		"code": "F18L3S118, F23L3S118",
-		"course": "Континуирана интеграција и испорака",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3S118"
-	},
-	{
-		"code": "F18L3S122, F23L3S122",
-		"course": "Криптографија",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3S122"
-	},
-	{
-		"code": "F18L3W035, F23L3W035",
-		"course": "Линеарна алгебра и примени",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3W035"
-	},
-	{
-		"code": "F18L3S036, F23L3S036",
-		"course": "Машинско учење",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3S036"
-	},
-	{
-		"code": "F18L3S125, F23L3S125",
-		"course": "Мерење и анализа на сообраќај",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3S125"
-	},
-	{
-		"code": "F18L3W065, F23L3W065",
-		"course": "Сајбер безбедност",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3W065"
-	},
-	{
-		"code": "F18L3W134, F23L3W134",
-		"course": "Мултимедиски мрежи",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3W134"
-	},
-	{
-		"code": "F18L3S135, F23L3S135",
-		"course": "Мултимедиски системи",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3S135"
-	},
-	{
-		"code": "F18L3W136, F23L3W136",
-		"course": "Напреден веб дизајн",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3W136"
-	},
-	{
-		"code": "F18L3W148, F23L3W148",
-		"course": "Основи на роботиката",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3W148"
-	},
-	{
-		"code": "F18L3W037, F23L3W037",
-		"course": "Паралелно и дистрибуирано процесирање",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3W037"
-	},
-	{
-		"code": "F18L3S149, F23L3S149",
-		"course": "Паралелно програмирање",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3S149"
-	},
-	{
-		"code": "F18L3S056, F23L3W056",
-		"course": "Персонализирано учење",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3W056"
-	},
-	{
-		"code": "F18L3S150, F23L3S150",
-		"course": "Податочно рударење",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3S150"
-	},
-	{
-		"code": "F18L3S047, F23L3S047",
-		"course": "Процесирање на сигналите",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3S047"
-	},
-	{
-		"code": "F18L3S153, F23L3S153",
-		"course": "Вештачка интелигенција за игри",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3S153"
-	},
-	{
-		"code": "F18L3S071, F23L3S071",
-		"course": "Психологија на училишна возраст",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3S071"
-	},
-	{
-		"code": "F18L3S057, F23L3S057",
-		"course": "Работа со надарени ученици",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3S057"
-	},
-	{
-		"code": "F18L3S155, F23L3S155",
-		"course": "Сервисно ориентирани архитектури",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3S155"
-	},
-	{
-		"code": "F18L3S158, F23L3W158",
-		"course": "Современи компјутерски архитектури",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3W158"
-	},
-	{
-		"code": "F18L3S159, F23L3S159",
-		"course": "Софтверски дефинирана безбедност",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3S159"
-	},
-	{
-		"code": "F18L3S019, F23L3S019",
-		"course": "Софтверски квалитет и тестирање",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3S019"
-	},
-	{
-		"code": "F18L3S163, F23L3S163",
-		"course": "Автоматизирање на процеси во машинско учење",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3S163"
-	},
-	{
-		"code": "F18L3S166, F23L3S166",
-		"course": "Учење на далечина",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3S166"
-	},
-	{
-		"code": "F18L3S039, F23L3S039",
-		"course": "Основи на теоријата на компјутерските науки",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3S039"
-	},
-	{
-		"code": "F18L3W072, F23L3W072",
-		"course": "Автономна роботика",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3W072"
-	},
-	{
-		"code": "F18L3W074, F23L3W074",
-		"course": "Администрација на бази податоци",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3W074"
-	},
-	{
-		"code": "F18L3W075, F23L3W075",
-		"course": "Анализа и дизајн на ИС",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3W075"
-	},
-	{
-		"code": "F18L3S07, F23L3S078",
-		"course": "Биолошки инспирирано пресметување",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3S078"
-	},
-	{
-		"code": "F18L3S121, F23L3W121",
-		"course": "Блоковски вериги и криптовалути",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3W121"
-	},
-	{
-		"code": "F18L3W079, F23L3W079",
-		"course": "Веб базирани системи",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3W079"
-	},
-	{
-		"code": "F18L3S080, F23L3S080",
-		"course": "Веб пребарувачки системи",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3S080"
-	},
-	{
-		"code": "F18L3S083, F23L3S083",
-		"course": "Виртуелна реалност",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3S083"
-	},
-	{
-		"code": "F18L3W076, F23L3W076",
-		"course": "Вовед во анализа на временските серии",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3W076"
-	},
-	{
-		"code": "F18L3W085, F23L3W085",
-		"course": "Вовед во биоинформатиката",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3W085"
-	},
-	{
-		"code": "F18L3S086, F23L3S086",
-		"course": "Вовед во когнитивни науки",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3S086"
-	},
-	{
-		"code": "F18L3W088, F23L3W088",
-		"course": "Вовед во паметни градови",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3W088"
-	},
-	{
-		"code": "F18L3W089, F23L3W089",
-		"course": "Вовед во препознавање на облици",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3W089"
-	},
-	{
-		"code": "F18L3W092, F23L3W092",
-		"course": "Дигитална постпродукција",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3W092"
-	},
-	{
-		"code": "F18L3S063, F23L3S063",
-		"course": "Дизајн на компјутерски мрежи",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3S063"
-	},
-	{
-		"code": "F18L3W064, F23L3W064",
-		"course": "Дистрибуирани системи",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3W064"
-	},
-	{
-		"code": "F18L3W098, F23L3W098",
-		"course": "Дистрибуирано складирање на податоци",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3W098"
-	},
-	{
-		"code": "F18L3S101, F23L3S101",
-		"course": "Етичко хакирање",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3S101"
-	},
-	{
-		"code": "F18L3S102, F23L3S102",
-		"course": "ИКТ за развој",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3S102"
-	},
-	{
-		"code": "F18L3W103, F23L3W103",
-		"course": "Имплементација на софтверски системи со слободен и отворен код",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3W103"
-	},
-	{
-		"code": "F18L3W105, F23L3W105",
-		"course": "Иновации во ИКТ",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3W105"
-	},
-	{
-		"code": "F18L3S106, F23L3S106",
-		"course": "Откривање знаење со длабоко учење",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3S106"
-	},
-	{
-		"code": "F18L3S107, F23L3S107",
-		"course": "Интелигентни системи",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3S107"
-	},
-	{
-		"code": "F18L3W108, F23L3W108",
-		"course": "Интернет на нештата",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3W108"
-	},
-	{
-		"code": "F18L3S113, F23L3S113",
-		"course": "Компјутерска анимација",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3S113"
-	},
-	{
-		"code": "F18L3W117, F23L3W117",
-		"course": "Компјутерски поддржано производство",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3W117"
-	},
-	{
-		"code": "F18L3S069, F23L3S070",
-		"course": "Македонски јазик",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3S070"
-	},
-	{
-		"code": "F18L3W123, F23L3W123",
-		"course": "Машинска визија",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3W123"
-	},
-	{
-		"code": "F18L3W027, F23L3W027",
-		"course": "Менаџмент информациски системи",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3W027"
-	},
-	{
-		"code": "F18L3S054, F23L3S054",
-		"course": "Методика на информатиката",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3S054"
-	},
-	{
-		"code": "F18L3W126, F23L3W126",
-		"course": "Методологија на истражувањето во ИКТ",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3W126"
-	},
-	{
-		"code": "F18L3S127, F23L3S127",
-		"course": "Мобилни апликации",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3S127"
-	},
-	{
-		"code": "F18L3W128, F23L3W128",
-		"course": "Мобилни информациски системи",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3W128"
-	},
-	{
-		"code": "F18L3W129, F23L3W129",
-		"course": "Мобилни платформи и програмирање",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3W129"
-	},
-	{
-		"code": "F18L3S130, F23L3S130",
-		"course": "Моделирање и менаџирање на бизнис процеси",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3S130"
-	},
-	{
-		"code": "F18L3W131, F23L3S131",
-		"course": "Моделирање и симулација",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3S131"
-	},
-	{
-		"code": "F18L3S132, F23L3S132",
-		"course": "Модерни трендови во роботика",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3S132"
-	},
-	{
-		"code": "F18L3W133, F23L3W133",
-		"course": "Мрежна и мобилна форензика",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3W133"
-	},
-	{
-		"code": "F18L3W137, F23L3W137",
-		"course": "Напредна интеракција човек компјутер",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3W137"
-	},
-	{
-		"code": "F18L3S138, F23L3S138",
-		"course": "Напредни бази на податоци",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3S138"
-	},
-	{
-		"code": "F18L3S139, F23L3S139",
-		"course": "Web3 апликации",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3S139"
-	},
-	{
-		"code": "F18L3S141, F23L3S141",
-		"course": "Неструктурирани бази на податоци",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3S141"
-	},
-	{
-		"code": "F18L3W142, F23L3W142",
-		"course": "Обработка на природните јазици",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3W142"
-	},
-	{
-		"code": "F18L3W144, F23L3S144",
-		"course": "Операциони истражувања",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3S144"
-	},
-	{
-		"code": "F18L3W145, F23L3W145",
-		"course": "Оптички мрежи",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3W145"
-	},
-	{
-		"code": "F18L3S151",
-		"course": "Пресметковна биологија",
-		"level": 3,
-		"link": "https://www.finki.ukim.mk/mk/subject/%D0%BF%D1%80%D0%B5%D1%81%D0%BC%D0%B5%D1%82%D0%BA%D0%BE%D0%B2%D0%BD%D0%B0-%D0%B1%D0%B8%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%98%D0%B0"
-	},
-	{
-		"code": "F18L3W068, F23L3W068",
-		"course": "Пресметување во облак",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3W068"
-	},
-	{
-		"code": "F18L3S028, F23L3S028",
-		"course": "Претприемништво",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3S028"
-	},
-	{
-		"code": "F18L3W152, F23L3W152",
-		"course": "Програмирање на видео игри",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3W152"
-	},
-	{
-		"code": "F18L3S112, F23L3S112",
-		"course": "Програмски јазици и компајлери",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3S112"
-	},
-	{
-		"code": "F18L3W038, F23L3W038",
-		"course": "Програмски парадигми",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3W038"
-	},
-	{
-		"code": "F18L3W154, F23L3W154",
-		"course": "Вовед во рударење на масивни податоци",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3W154"
-	},
-	{
-		"code": "F18L3W058, F23L3W058",
-		"course": "Самостоен проект",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3W058"
-	},
-	{
-		"code": "F18L3W156, F23L3W156",
-		"course": "Системи за поддршка при одлучувањето",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3W156"
-	},
-	{
-		"code": "F18L3S157, F23L3S157",
-		"course": "Складови на податоци и аналитичка обработка",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3S157"
-	},
-	{
-		"code": "F18L3W048, F23L3W048",
-		"course": "Софтвер за вградливи системи",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3W048"
-	},
-	{
-		"code": "F18L3W160, F23L3S160",
-		"course": "Софтверски дефинирани мрежи",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3S160"
-	},
-	{
-		"code": "F18L3W161, F23L3W161",
-		"course": "Теорија на графови и социјални мрежи",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3W161"
-	},
-	{
-		"code": "F18L3S162, F23L3S162",
-		"course": "Споделување и пресметување во толпа",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3S162"
-	},
-	{
-		"code": "F18L3W021, F23L3W021",
-		"course": "Тимски проект",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3W021"
-	},
-	{
-		"code": "F18L3S022, F23L3S022",
-		"course": "Управување со ИКТ проекти",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3S022"
-	},
-	{
-		"code": "F23L1W003",
-		"course": "Вовед во бази на податоци и SQL",
-		"level": 1,
-		"link": "https://finki.ukim.mk/subject/F23L1W003"
-	},
-	{
-		"code": "F23L2W201",
-		"course": "Примена на алгоритми и податочни структури",
-		"level": 2,
-		"link": "https://finki.ukim.mk/subject/F23L2W201"
-	},
-	{
-		"code": "F23L3W001",
-		"course": "Математика 3",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3W001"
-	},
-	{
-		"code": "F23L2W003",
-		"course": "Избрани теми од математика",
-		"level": 2,
-		"link": "https://finki.ukim.mk/subject/F23L2W003"
-	},
-	{
-		"code": "F23L2S001",
-		"course": "Математика 2",
-		"level": 2,
-		"link": "https://finki.ukim.mk/subject/F23L2S001"
-	},
-	{
-		"code": "F23L3W033",
-		"course": "Тестирање на софтвер",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3W033"
-	},
-	{
-		"code": "F23L3W200",
-		"course": "Сензорски системи",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3W200"
-	},
-	{
-		"code": "F23L3S069",
-		"course": "Адаптивни и интерактивни веб информациски системи",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3S069"
-	},
-	{
-		"code": "F23L1W004",
-		"course": "Спорт и здравје",
-		"level": 1,
-		"link": "https://finki.ukim.mk/subject/F23L1W004"
-	},
-	{
-		"code": "F23L3S100",
-		"course": "Деловна пракса",
-		"level": 3,
-		"link": "https://finki.ukim.mk/subject/F23L3S100"
-	}
-]
Index: ckend/subjects/management/data/mandatory.json
===================================================================
--- backend/subjects/management/data/mandatory.json	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,338 +1,0 @@
-{
-	"SIIS23": {
-		"1": [
-			"Спорт и здравје",
-			"Бизнис и менаџмент",
-			"Вовед во компјутерските науки",
-			"Професионални вештини",
-			"Структурно програмирање",
-			"Математика 1"
-		],
-		"2": [
-			"Архитектура и организација на компјутери",
-			"Објектно-ориентирано програмирање",
-			"Математика 2",
-			"Објектно ориентирана анализа и дизајн",
-			"F23L1S"
-		],
-		"3": [
-			"Алгоритми и податочни структури",
-			"Компјутерски мрежи и безбедност",
-			"Математика 3",
-			"F23L2W",
-			"F23L2W"
-		],
-		"4": [
-			"Анализа на софтверските барања",
-			"Оперативни системи",
-			"Вештачка интелигенција",
-			"Деловна пракса",
-			"F23L2S"
-		],
-		"5": [
-			"Бази на податоци",
-			"Вовед во науката за податоци",
-			"Дизајн и архитектура на софтвер",
-			"Напредно програмирање",
-			"F23L2W"
-		],
-		"6": [
-			"Дизајн на интеракцијата човек-компјутер",
-			"Интегрирани системи",
-			"Софтверски квалитет и тестирање",
-			"Напредни бази на податоци",
-			"F23L2S"
-		],
-		"7": ["Тимски проект", "F23L3W", "F23L3W", "F23L3W", "F23L3W"],
-		"8": [
-			"Управување со ИКТ проекти",
-			"Претприемништво",
-			"Дипломска работа",
-			"F23L2S",
-			"F23L3S"
-		]
-	},
-	"IMB23": {
-		"1": [
-			"Спорт и здравје",
-			"Бизнис и менаџмент",
-			"Вовед во компјутерските науки",
-			"Професионални вештини",
-			"Структурно програмирање",
-			"Математика 1"
-		],
-		"2": [
-			"Објектно-ориентирано програмирање",
-			"Компјутерски архитектури",
-			"Математика 2",
-			"Основи на сајбер безбедноста",
-			"F23L1S"
-		],
-		"3": [
-			"Компјутерски мрежи",
-			"Основи на теоријата на информации",
-			"Управување со техничка поддршка",
-			"Примена на алгоритми и податочни структури",
-			"F23L2W"
-		],
-		"4": [
-			"Оперативни системи",
-			"Безжични и мобилни системи",
-			"Интернет технологии",
-			"F23L2S",
-			"F23L2S"
-		],
-		"5": [
-			"Бази на податоци",
-			"Администрација на системи",
-			"Сајбер безбедност",
-			"F23L2W",
-			"F23L2W"
-		],
-		"6": [
-			"Администрација на мрежи",
-			"Виртуелизација",
-			"Софтверски дефинирана безбедност",
-			"F23L2S",
-			"F23L3S"
-		],
-		"7": [
-			"Тимски проект",
-			"Дистрибуирани системи",
-			"Пресметување во облак",
-			"F23L3W",
-			"F23L3W"
-		],
-		"8": [
-			"Дизајн на компјутерски мрежи",
-			"Инфраструктурно програмирање",
-			"Дипломска работа",
-			"F23L3S",
-			"F23L3S"
-		]
-	},
-	"PIT23": {
-		"1": [
-			"Спорт и здравје",
-			"Бизнис и менаџмент",
-			"Вовед во компјутерските науки",
-			"Професионални вештини",
-			"Структурно програмирање",
-			"Избрани теми од математика"
-		],
-		"2": [
-			"Архитектура и организација на компјутери",
-			"Објектно-ориентирано програмирање",
-			"Бизнис статистика",
-			"Основи на Веб дизајн",
-			"F23L1S"
-		],
-		"3": [
-			"Компјутерски мрежи и безбедност",
-			"Економија за ИКТ инженери",
-			"Примена на алгоритми и податочни структури",
-			"F23L2W",
-			"F23L2W"
-		],
-		"4": [
-			"Маркетинг",
-			"Оперативни системи",
-			"Софтверско инженерство",
-			"Деловна пракса",
-			"F23L2S"
-		],
-		"5": [
-			"Бази на податоци",
-			"Вовед во науката за податоци",
-			"Веб програмирање",
-			"Напреден веб дизајн",
-			"F23L2W"
-		],
-		"6": [
-			"Дизајн на интеракцијата човек-компјутер",
-			"Електронска и мобилна трговија",
-			"F23L2S",
-			"F23L2S",
-			"F23L3S"
-		],
-		"7": [
-			"Тимски проект",
-			"Менаџмент информациски системи",
-			"Тестирање на софтвер",
-			"F23L3W",
-			"F23L3W"
-		],
-		"8": [
-			"Управување со ИКТ проекти",
-			"Претприемништво",
-			"Дипломска работа",
-			"F23L3S",
-			"F23L3S"
-		]
-	},
-	"IE23": {
-		"1": [
-			"Спорт и здравје",
-			"Вовед во компјутерските науки",
-			"Професионални вештини",
-			"Структурно програмирање",
-			"Математика 1",
-			"Педагогија"
-		],
-		"2": [
-			"Објектно-ориентирано програмирање",
-			"Компјутерски архитектури",
-			"Е-учење",
-			"Основи на Веб дизајн",
-			"Математика 2"
-		],
-		"3": [
-			"Компјутерски мрежи и безбедност",
-			"Мултимедијални технологии",
-			"Примена на алгоритми и податочни структури",
-			"F23L2W",
-			"F23L2W"
-		],
-		"4": [
-			"Креативни вештини за решавање проблеми",
-			"Оперативни системи",
-			"Информатичко размислување во образованието",
-			"Медиуми и комуникации",
-			"F23L2S"
-		],
-		"5": [
-			"Бази на податоци",
-			"Дизајн на образовен софтвер",
-			"Компјутерска етика",
-			"Персонализирано учење",
-			"F23L2W"
-		],
-		"6": [
-			"Работа со надарени ученици",
-			"Психологија на училишна возраст",
-			"Учење на далечина",
-			"F23L2S",
-			"F23L2S"
-		],
-		"7": ["Самостоен проект", "F23L3W", "F23L3W", "F23L3W", "F23L3W"],
-		"8": [
-			"Методика на информатиката",
-			"Македонски јазик",
-			"Дипломска работа",
-			"F23L3S",
-			"F23L3S"
-		]
-	},
-	"KI23": {
-		"1": [
-			"Спорт и здравје",
-			"Професионални вештини",
-			"Структурно програмирање",
-			"Калкулус 1",
-			"Дизајн на дигитални кола",
-			"Физика"
-		],
-		"2": [
-			"Објектно-ориентирано програмирање",
-			"Компјутерски архитектури",
-			"Дискретна математика",
-			"Калкулус 2",
-			"F23L1S"
-		],
-		"3": [
-			"Алгоритми и податочни структури",
-			"Веројатност и статистика",
-			"Компјутерски мрежи",
-			"F23L2W",
-			"F23L2W"
-		],
-		"4": [
-			"Оперативни системи",
-			"Софтверско инженерство",
-			"Електрични кола",
-			"F23L2S",
-			"F23L2S"
-		],
-		"5": [
-			"Бази на податоци",
-			"Информациска безбедност",
-			"Компјутерска електроника",
-			"Основи на роботиката",
-			"F23L2W"
-		],
-		"6": [
-			"Вградливи микропроцесорски системи",
-			"Процесирање на сигналите",
-			"Складови на податоци и аналитичка обработка",
-			"F23L2S",
-			"F23L3S"
-		],
-		"7": [
-			"Тимски проект",
-			"Софтвер за вградливи системи",
-			"Интернет на нештата",
-			"F23L3W",
-			"F23L3W"
-		],
-		"8": [
-			"Управување со ИКТ проекти",
-			"Модерни трендови во роботика",
-			"Дипломска работа",
-			"F23L3S",
-			"F23L3S"
-		]
-	},
-	"KN23": {
-		"1": [
-			"Спорт и здравје",
-			"Вовед во компјутерските науки",
-			"Професионални вештини",
-			"Структурно програмирање",
-			"Дискретни структури 1",
-			"Калкулус 1"
-		],
-		"2": [
-			"Архитектура и организација на компјутери",
-			"Објектно-ориентирано програмирање",
-			"Дискретни структури 2",
-			"Калкулус 2",
-			"F23L1S"
-		],
-		"3": [
-			"Алгоритми и податочни структури",
-			"Веројатност и статистика",
-			"Компјутерски мрежи и безбедност",
-			"Линеарна алгебра и примени",
-			"F23L2W"
-		],
-		"4": [
-			"Оперативни системи",
-			"Софтверско инженерство",
-			"Вештачка интелигенција",
-			"F23L2S",
-			"F23L2S"
-		],
-		"5": [
-			"Бази на податоци",
-			"Веб програмирање",
-			"Паралелно и дистрибуирано процесирање",
-			"Напредно програмирање",
-			"F23L2W"
-		],
-		"6": [
-			"Дизајн на интеракцијата човек-компјутер",
-			"Машинско учење",
-			"Основи на теоријата на компјутерските науки",
-			"Складови на податоци и аналитичка обработка",
-			"F23L2S"
-		],
-		"7": [
-			"Тимски проект",
-			"Програмски парадигми",
-			"Методологија на истражувањето во ИКТ",
-			"F23L3W",
-			"F23L3W"
-		],
-		"8": ["Дипломска работа", "F23L3S", "F23L3S", "F23L3S", "F23L3S"]
-	}
-}
Index: ckend/subjects/management/data/participants.json
===================================================================
--- backend/subjects/management/data/participants.json	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,3045 +1,0 @@
-[
-	{
-		"course": "Архитектура и организација на компјутери",
-		"2024/2025": 1063,
-		"2023/2024": 1311,
-		"2022/2023": 1350,
-		"2021/2022": 1362,
-		"2020/2021": 1255,
-		"2019/2020": 1476,
-		"2018/2019": 1395,
-		"2017/2018": 1347,
-		"2016/2017": 0,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Бизнис и менаџмент",
-		"2024/2025": 814,
-		"2023/2024": 989,
-		"2022/2023": 951,
-		"2021/2022": 920,
-		"2020/2021": 886,
-		"2019/2020": 833,
-		"2018/2019": 723,
-		"2017/2018": 0,
-		"2016/2017": 0,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Бизнис статистика",
-		"2024/2025": 830,
-		"2023/2024": 801,
-		"2022/2023": 698,
-		"2021/2022": 611,
-		"2020/2021": 554,
-		"2019/2020": 461,
-		"2018/2019": 281,
-		"2017/2018": 0,
-		"2016/2017": 0,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Вовед во бази на податоци и SQL",
-		"2024/2025": 51,
-		"2023/2024": 55,
-		"2022/2023": 0,
-		"2021/2022": 0,
-		"2020/2021": 0,
-		"2019/2020": 0,
-		"2018/2019": 0,
-		"2017/2018": 0,
-		"2016/2017": 0,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Вовед во компјутерските науки",
-		"2024/2025": 891,
-		"2023/2024": 1096,
-		"2022/2023": 1155,
-		"2021/2022": 1131,
-		"2020/2021": 937,
-		"2019/2020": 1099,
-		"2018/2019": 963,
-		"2017/2018": 0,
-		"2016/2017": 0,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Дизајн на дигитални кола",
-		"2024/2025": 33,
-		"2023/2024": 59,
-		"2022/2023": 157,
-		"2021/2022": 105,
-		"2020/2021": 68,
-		"2019/2020": 148,
-		"2018/2019": 117,
-		"2017/2018": 0,
-		"2016/2017": 0,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Дискретна математика",
-		"2024/2025": 33,
-		"2023/2024": 0,
-		"2022/2023": 1602,
-		"2021/2022": 1478,
-		"2020/2021": 1415,
-		"2019/2020": 1319,
-		"2018/2019": 768,
-		"2017/2018": 0,
-		"2016/2017": 0,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 51,
-		"2011/2012": 0
-	},
-	{
-		"course": "Дискретни структури 1",
-		"2024/2025": 100,
-		"2023/2024": 121,
-		"2022/2023": 163,
-		"2021/2022": 152,
-		"2020/2021": 107,
-		"2019/2020": 161,
-		"2018/2019": 107,
-		"2017/2018": 0,
-		"2016/2017": 0,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Дискретни структури 2",
-		"2024/2025": 103,
-		"2023/2024": 136,
-		"2022/2023": 163,
-		"2021/2022": 168,
-		"2020/2021": 132,
-		"2019/2020": 153,
-		"2018/2019": 102,
-		"2017/2018": 0,
-		"2016/2017": 0,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 42,
-		"2011/2012": 0
-	},
-	{
-		"course": "Избрани теми од математика",
-		"2024/2025": 731,
-		"2023/2024": 777,
-		"2022/2023": 0,
-		"2021/2022": 0,
-		"2020/2021": 0,
-		"2019/2020": 0,
-		"2018/2019": 0,
-		"2017/2018": 0,
-		"2016/2017": 0,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Е-учење",
-		"2024/2025": 77,
-		"2023/2024": 62,
-		"2022/2023": 56,
-		"2021/2022": 59,
-		"2020/2021": 72,
-		"2019/2020": 46,
-		"2018/2019": 111,
-		"2017/2018": 92,
-		"2016/2017": 223,
-		"2015/2016": 215,
-		"2014/2015": 116,
-		"2013/2014": 81,
-		"2012/2013": 61,
-		"2011/2012": 0
-	},
-	{
-		"course": "Математика 1",
-		"2024/2025": 980,
-		"2023/2024": 975,
-		"2022/2023": 923,
-		"2021/2022": 834,
-		"2020/2021": 663,
-		"2019/2020": 688,
-		"2018/2019": 449,
-		"2017/2018": 0,
-		"2016/2017": 0,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Калкулус 1",
-		"2024/2025": 144,
-		"2023/2024": 222,
-		"2022/2023": 363,
-		"2021/2022": 302,
-		"2020/2021": 222,
-		"2019/2020": 391,
-		"2018/2019": 392,
-		"2017/2018": 731,
-		"2016/2017": 674,
-		"2015/2016": 683,
-		"2014/2015": 748,
-		"2013/2014": 0,
-		"2012/2013": 550,
-		"2011/2012": 0
-	},
-	{
-		"course": "Спорт и здравје",
-		"2024/2025": 0,
-		"2023/2024": 0,
-		"2022/2023": 0,
-		"2021/2022": 0,
-		"2020/2021": 0,
-		"2019/2020": 0,
-		"2018/2019": 0,
-		"2017/2018": 0,
-		"2016/2017": 0,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Калкулус 2",
-		"2024/2025": 189,
-		"2023/2024": 269,
-		"2022/2023": 380,
-		"2021/2022": 357,
-		"2020/2021": 307,
-		"2019/2020": 471,
-		"2018/2019": 559,
-		"2017/2018": 827,
-		"2016/2017": 801,
-		"2015/2016": 751,
-		"2014/2015": 804,
-		"2013/2014": 752,
-		"2012/2013": 554,
-		"2011/2012": 0
-	},
-	{
-		"course": "Компјутерски архитектури",
-		"2024/2025": 186,
-		"2023/2024": 231,
-		"2022/2023": 338,
-		"2021/2022": 272,
-		"2020/2021": 164,
-		"2019/2020": 268,
-		"2018/2019": 184,
-		"2017/2018": 56,
-		"2016/2017": 67,
-		"2015/2016": 74,
-		"2014/2015": 111,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Компјутерски компоненти",
-		"2024/2025": 92,
-		"2023/2024": 86,
-		"2022/2023": 88,
-		"2021/2022": 117,
-		"2020/2021": 124,
-		"2019/2020": 200,
-		"2018/2019": 544,
-		"2017/2018": 426,
-		"2016/2017": 570,
-		"2015/2016": 0,
-		"2014/2015": 263,
-		"2013/2014": 329,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Креативни вештини за решавање проблеми",
-		"2024/2025": 98,
-		"2023/2024": 88,
-		"2022/2023": 44,
-		"2021/2022": 37,
-		"2020/2021": 29,
-		"2019/2020": 38,
-		"2018/2019": 23,
-		"2017/2018": 0,
-		"2016/2017": 0,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Маркетинг",
-		"2024/2025": 450,
-		"2023/2024": 220,
-		"2022/2023": 593,
-		"2021/2022": 506,
-		"2020/2021": 540,
-		"2019/2020": 546,
-		"2018/2019": 882,
-		"2017/2018": 559,
-		"2016/2017": 451,
-		"2015/2016": 480,
-		"2014/2015": 345,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Математика 2",
-		"2024/2025": 657,
-		"2023/2024": 1056,
-		"2022/2023": 0,
-		"2021/2022": 0,
-		"2020/2021": 0,
-		"2019/2020": 0,
-		"2018/2019": 0,
-		"2017/2018": 1,
-		"2016/2017": 0,
-		"2015/2016": 1,
-		"2014/2015": 1,
-		"2013/2014": 0,
-		"2012/2013": 9,
-		"2011/2012": 0
-	},
-	{
-		"course": "Објектно ориентирана анализа и дизајн",
-		"2024/2025": 433,
-		"2023/2024": 464,
-		"2022/2023": 489,
-		"2021/2022": 553,
-		"2020/2021": 475,
-		"2019/2020": 502,
-		"2018/2019": 546,
-		"2017/2018": 119,
-		"2016/2017": 114,
-		"2015/2016": 73,
-		"2014/2015": 58,
-		"2013/2014": 34,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Објектно-ориентирано програмирање",
-		"2024/2025": 1679,
-		"2023/2024": 1687,
-		"2022/2023": 1797,
-		"2021/2022": 1694,
-		"2020/2021": 1391,
-		"2019/2020": 1574,
-		"2018/2019": 1445,
-		"2017/2018": 1243,
-		"2016/2017": 1218,
-		"2015/2016": 1091,
-		"2014/2015": 950,
-		"2013/2014": 915,
-		"2012/2013": 70,
-		"2011/2012": 81
-	},
-	{
-		"course": "Основи на Веб дизајн",
-		"2024/2025": 824,
-		"2023/2024": 1023,
-		"2022/2023": 999,
-		"2021/2022": 968,
-		"2020/2021": 774,
-		"2019/2020": 966,
-		"2018/2019": 855,
-		"2017/2018": 780,
-		"2016/2017": 740,
-		"2015/2016": 661,
-		"2014/2015": 630,
-		"2013/2014": 532,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Основи на сајбер безбедноста",
-		"2024/2025": 457,
-		"2023/2024": 458,
-		"2022/2023": 213,
-		"2021/2022": 188,
-		"2020/2021": 117,
-		"2019/2020": 166,
-		"2018/2019": 98,
-		"2017/2018": 0,
-		"2016/2017": 0,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Педагогија",
-		"2024/2025": 1,
-		"2023/2024": 7,
-		"2022/2023": 30,
-		"2021/2022": 50,
-		"2020/2021": 44,
-		"2019/2020": 0,
-		"2018/2019": 0,
-		"2017/2018": 0,
-		"2016/2017": 0,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Професионални вештини",
-		"2024/2025": 958,
-		"2023/2024": 972,
-		"2022/2023": 1132,
-		"2021/2022": 1051,
-		"2020/2021": 796,
-		"2019/2020": 1070,
-		"2018/2019": 932,
-		"2017/2018": 788,
-		"2016/2017": 733,
-		"2015/2016": 646,
-		"2014/2015": 677,
-		"2013/2014": 587,
-		"2012/2013": 470,
-		"2011/2012": 0
-	},
-	{
-		"course": "Структурно програмирање",
-		"2024/2025": 1621,
-		"2023/2024": 1757,
-		"2022/2023": 1815,
-		"2021/2022": 1649,
-		"2020/2021": 1372,
-		"2019/2020": 1558,
-		"2018/2019": 1355,
-		"2017/2018": 1231,
-		"2016/2017": 1216,
-		"2015/2016": 1105,
-		"2014/2015": 1118,
-		"2013/2014": 1003,
-		"2012/2013": 72,
-		"2011/2012": 87
-	},
-	{
-		"course": "Физика",
-		"2024/2025": 29,
-		"2023/2024": 79,
-		"2022/2023": 174,
-		"2021/2022": 104,
-		"2020/2021": 64,
-		"2019/2020": 143,
-		"2018/2019": 86,
-		"2017/2018": 63,
-		"2016/2017": 69,
-		"2015/2016": 79,
-		"2014/2015": 70,
-		"2013/2014": 69,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Алгоритми и податочни структури",
-		"2024/2025": 1131,
-		"2023/2024": 1737,
-		"2022/2023": 1726,
-		"2021/2022": 1596,
-		"2020/2021": 1951,
-		"2019/2020": 1596,
-		"2018/2019": 1280,
-		"2017/2018": 1054,
-		"2016/2017": 813,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 582,
-		"2012/2013": 210,
-		"2011/2012": 0
-	},
-	{
-		"course": "Анализа на софтверските барања",
-		"2024/2025": 311,
-		"2023/2024": 373,
-		"2022/2023": 337,
-		"2021/2022": 304,
-		"2020/2021": 325,
-		"2019/2020": 265,
-		"2018/2019": 49,
-		"2017/2018": 32,
-		"2016/2017": 18,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Безжични и мобилни системи",
-		"2024/2025": 140,
-		"2023/2024": 207,
-		"2022/2023": 152,
-		"2021/2022": 136,
-		"2020/2021": 186,
-		"2019/2020": 297,
-		"2018/2019": 280,
-		"2017/2018": 111,
-		"2016/2017": 61,
-		"2015/2016": 88,
-		"2014/2015": 174,
-		"2013/2014": 0,
-		"2012/2013": 27,
-		"2011/2012": 0
-	},
-	{
-		"course": "Веројатност и статистика",
-		"2024/2025": 527,
-		"2023/2024": 842,
-		"2022/2023": 937,
-		"2021/2022": 909,
-		"2020/2021": 892,
-		"2019/2020": 803,
-		"2018/2019": 734,
-		"2017/2018": 672,
-		"2016/2017": 584,
-		"2015/2016": 596,
-		"2014/2015": 501,
-		"2013/2014": 410,
-		"2012/2013": 224,
-		"2011/2012": 0
-	},
-	{
-		"course": "Вештачка интелигенција",
-		"2024/2025": 476,
-		"2023/2024": 341,
-		"2022/2023": 305,
-		"2021/2022": 283,
-		"2020/2021": 339,
-		"2019/2020": 412,
-		"2018/2019": 469,
-		"2017/2018": 408,
-		"2016/2017": 369,
-		"2015/2016": 318,
-		"2014/2015": 345,
-		"2013/2014": 215,
-		"2012/2013": 126,
-		"2011/2012": 0
-	},
-	{
-		"course": "Визуелно програмирање",
-		"2024/2025": 116,
-		"2023/2024": 211,
-		"2022/2023": 198,
-		"2021/2022": 115,
-		"2020/2021": 224,
-		"2019/2020": 219,
-		"2018/2019": 196,
-		"2017/2018": 235,
-		"2016/2017": 172,
-		"2015/2016": 206,
-		"2014/2015": 209,
-		"2013/2014": 200,
-		"2012/2013": 158,
-		"2011/2012": 0
-	},
-	{
-		"course": "Вовед во екоинформатиката",
-		"2024/2025": 70,
-		"2023/2024": 79,
-		"2022/2023": 94,
-		"2021/2022": 148,
-		"2020/2021": 154,
-		"2019/2020": 81,
-		"2018/2019": 0,
-		"2017/2018": 0,
-		"2016/2017": 0,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Вовед во случајни процеси",
-		"2024/2025": 14,
-		"2023/2024": 14,
-		"2022/2023": 17,
-		"2021/2022": 5,
-		"2020/2021": 0,
-		"2019/2020": 15,
-		"2018/2019": 12,
-		"2017/2018": 0,
-		"2016/2017": 5,
-		"2015/2016": 9,
-		"2014/2015": 9,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Дигитално процесирање на слика",
-		"2024/2025": 131,
-		"2023/2024": 225,
-		"2022/2023": 128,
-		"2021/2022": 58,
-		"2020/2021": 68,
-		"2019/2020": 160,
-		"2018/2019": 123,
-		"2017/2018": 135,
-		"2016/2017": 70,
-		"2015/2016": 91,
-		"2014/2015": 66,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Дигитизација",
-		"2024/2025": 224,
-		"2023/2024": 75,
-		"2022/2023": 78,
-		"2021/2022": 48,
-		"2020/2021": 44,
-		"2019/2020": 50,
-		"2018/2019": 11,
-		"2017/2018": 10,
-		"2016/2017": 6,
-		"2015/2016": 8,
-		"2014/2015": 0,
-		"2013/2014": 8,
-		"2012/2013": 15,
-		"2011/2012": 0
-	},
-	{
-		"course": "Дизајн на алгоритми",
-		"2024/2025": 24,
-		"2023/2024": 46,
-		"2022/2023": 45,
-		"2021/2022": 29,
-		"2020/2021": 42,
-		"2019/2020": 50,
-		"2018/2019": 38,
-		"2017/2018": 41,
-		"2016/2017": 48,
-		"2015/2016": 57,
-		"2014/2015": 37,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Е-влада",
-		"2024/2025": 360,
-		"2023/2024": 620,
-		"2022/2023": 575,
-		"2021/2022": 624,
-		"2020/2021": 790,
-		"2019/2020": 932,
-		"2018/2019": 365,
-		"2017/2018": 479,
-		"2016/2017": 295,
-		"2015/2016": 265,
-		"2014/2015": 173,
-		"2013/2014": 66,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Деловна пракса",
-		"2024/2025": 0,
-		"2023/2024": 0,
-		"2022/2023": 0,
-		"2021/2022": 0,
-		"2020/2021": 0,
-		"2019/2020": 0,
-		"2018/2019": 0,
-		"2017/2018": 37,
-		"2016/2017": 120,
-		"2015/2016": 335,
-		"2014/2015": 265,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Економија за ИКТ инженери",
-		"2024/2025": 659,
-		"2023/2024": 581,
-		"2022/2023": 527,
-		"2021/2022": 465,
-		"2020/2021": 403,
-		"2019/2020": 346,
-		"2018/2019": 0,
-		"2017/2018": 0,
-		"2016/2017": 0,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Електрични кола",
-		"2024/2025": 42,
-		"2023/2024": 64,
-		"2022/2023": 68,
-		"2021/2022": 54,
-		"2020/2021": 52,
-		"2019/2020": 44,
-		"2018/2019": 19,
-		"2017/2018": 65,
-		"2016/2017": 60,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Информатичко размислување во образованието",
-		"2024/2025": 35,
-		"2023/2024": 24,
-		"2022/2023": 29,
-		"2021/2022": 25,
-		"2020/2021": 37,
-		"2019/2020": 61,
-		"2018/2019": 119,
-		"2017/2018": 28,
-		"2016/2017": 10,
-		"2015/2016": 20,
-		"2014/2015": 36,
-		"2013/2014": 33,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Инженерска математика",
-		"2024/2025": 44,
-		"2023/2024": 19,
-		"2022/2023": 25,
-		"2021/2022": 20,
-		"2020/2021": 30,
-		"2019/2020": 30,
-		"2018/2019": 24,
-		"2017/2018": 26,
-		"2016/2017": 32,
-		"2015/2016": 36,
-		"2014/2015": 81,
-		"2013/2014": 125,
-		"2012/2013": 141,
-		"2011/2012": 0
-	},
-	{
-		"course": "Интернет програмирање на клиентска страна",
-		"2024/2025": 634,
-		"2023/2024": 872,
-		"2022/2023": 858,
-		"2021/2022": 731,
-		"2020/2021": 744,
-		"2019/2020": 609,
-		"2018/2019": 426,
-		"2017/2018": 306,
-		"2016/2017": 147,
-		"2015/2016": 232,
-		"2014/2015": 393,
-		"2013/2014": 208,
-		"2012/2013": 164,
-		"2011/2012": 0
-	},
-	{
-		"course": "Интернет технологии",
-		"2024/2025": 286,
-		"2023/2024": 288,
-		"2022/2023": 335,
-		"2021/2022": 384,
-		"2020/2021": 513,
-		"2019/2020": 464,
-		"2018/2019": 370,
-		"2017/2018": 305,
-		"2016/2017": 288,
-		"2015/2016": 318,
-		"2014/2015": 351,
-		"2013/2014": 277,
-		"2012/2013": 154,
-		"2011/2012": 0
-	},
-	{
-		"course": "Компјутерска графика",
-		"2024/2025": 18,
-		"2023/2024": 32,
-		"2022/2023": 64,
-		"2021/2022": 65,
-		"2020/2021": 36,
-		"2019/2020": 25,
-		"2018/2019": 29,
-		"2017/2018": 23,
-		"2016/2017": 26,
-		"2015/2016": 39,
-		"2014/2015": 0,
-		"2013/2014": 68,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Компјутерски мрежи",
-		"2024/2025": 212,
-		"2023/2024": 213,
-		"2022/2023": 264,
-		"2021/2022": 302,
-		"2020/2021": 534,
-		"2019/2020": 758,
-		"2018/2019": 1230,
-		"2017/2018": 1178,
-		"2016/2017": 0,
-		"2015/2016": 927,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Компјутерски мрежи и безбедност",
-		"2024/2025": 1389,
-		"2023/2024": 1306,
-		"2022/2023": 1235,
-		"2021/2022": 1002,
-		"2020/2021": 994,
-		"2019/2020": 672,
-		"2018/2019": 0,
-		"2017/2018": 0,
-		"2016/2017": 0,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Концепти на информатичко општество",
-		"2024/2025": 220,
-		"2023/2024": 479,
-		"2022/2023": 574,
-		"2021/2022": 532,
-		"2020/2021": 636,
-		"2019/2020": 496,
-		"2018/2019": 325,
-		"2017/2018": 363,
-		"2016/2017": 232,
-		"2015/2016": 138,
-		"2014/2015": 84,
-		"2013/2014": 113,
-		"2012/2013": 47,
-		"2011/2012": 0
-	},
-	{
-		"course": "Математика 3",
-		"2024/2025": 367,
-		"2023/2024": 0,
-		"2022/2023": 0,
-		"2021/2022": 0,
-		"2020/2021": 0,
-		"2019/2020": 0,
-		"2018/2019": 0,
-		"2017/2018": 0,
-		"2016/2017": 0,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Медиуми и комуникации",
-		"2024/2025": 184,
-		"2023/2024": 310,
-		"2022/2023": 429,
-		"2021/2022": 311,
-		"2020/2021": 250,
-		"2019/2020": 206,
-		"2018/2019": 117,
-		"2017/2018": 160,
-		"2016/2017": 0,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Мултимедијални технологии",
-		"2024/2025": 235,
-		"2023/2024": 43,
-		"2022/2023": 62,
-		"2021/2022": 32,
-		"2020/2021": 27,
-		"2019/2020": 11,
-		"2018/2019": 0,
-		"2017/2018": 0,
-		"2016/2017": 0,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 37,
-		"2012/2013": 31,
-		"2011/2012": 0
-	},
-	{
-		"course": "Напредно програмирање",
-		"2024/2025": 253,
-		"2023/2024": 683,
-		"2022/2023": 532,
-		"2021/2022": 421,
-		"2020/2021": 492,
-		"2019/2020": 275,
-		"2018/2019": 253,
-		"2017/2018": 237,
-		"2016/2017": 201,
-		"2015/2016": 157,
-		"2014/2015": 163,
-		"2013/2014": 152,
-		"2012/2013": 77,
-		"2011/2012": 0
-	},
-	{
-		"course": "Квантно пресметување",
-		"2024/2025": 0,
-		"2023/2024": 0,
-		"2022/2023": 0,
-		"2021/2022": 0,
-		"2020/2021": 0,
-		"2019/2020": 0,
-		"2018/2019": 0,
-		"2017/2018": 0,
-		"2016/2017": 0,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Оперативни системи",
-		"2024/2025": 1460,
-		"2023/2024": 1444,
-		"2022/2023": 1322,
-		"2021/2022": 1125,
-		"2020/2021": 1253,
-		"2019/2020": 1187,
-		"2018/2019": 1026,
-		"2017/2018": 918,
-		"2016/2017": 828,
-		"2015/2016": 728,
-		"2014/2015": 630,
-		"2013/2014": 574,
-		"2012/2013": 252,
-		"2011/2012": 0
-	},
-	{
-		"course": "Основи на комуникациски системи",
-		"2024/2025": 10,
-		"2023/2024": 9,
-		"2022/2023": 10,
-		"2021/2022": 14,
-		"2020/2021": 8,
-		"2019/2020": 36,
-		"2018/2019": 0,
-		"2017/2018": 0,
-		"2016/2017": 0,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Основи на теоријата на информации",
-		"2024/2025": 65,
-		"2023/2024": 59,
-		"2022/2023": 54,
-		"2021/2022": 41,
-		"2020/2021": 38,
-		"2019/2020": 26,
-		"2018/2019": 0,
-		"2017/2018": 0,
-		"2016/2017": 0,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Примена на алгоритми и податочни структури",
-		"2024/2025": 289,
-		"2023/2024": 58,
-		"2022/2023": 0,
-		"2021/2022": 0,
-		"2020/2021": 0,
-		"2019/2020": 0,
-		"2018/2019": 0,
-		"2017/2018": 1054,
-		"2016/2017": 813,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Софтверско инженерство",
-		"2024/2025": 409,
-		"2023/2024": 633,
-		"2022/2023": 564,
-		"2021/2022": 513,
-		"2020/2021": 652,
-		"2019/2020": 628,
-		"2018/2019": 692,
-		"2017/2018": 687,
-		"2016/2017": 450,
-		"2015/2016": 390,
-		"2014/2015": 406,
-		"2013/2014": 151,
-		"2012/2013": 242,
-		"2011/2012": 0
-	},
-	{
-		"course": "Теорија на информации со дигитални комуникации",
-		"2024/2025": 22,
-		"2023/2024": 16,
-		"2022/2023": 20,
-		"2021/2022": 37,
-		"2020/2021": 50,
-		"2019/2020": 85,
-		"2018/2019": 102,
-		"2017/2018": 119,
-		"2016/2017": 116,
-		"2015/2016": 107,
-		"2014/2015": 100,
-		"2013/2014": 99,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Управување со техничка поддршка",
-		"2024/2025": 579,
-		"2023/2024": 346,
-		"2022/2023": 358,
-		"2021/2022": 435,
-		"2020/2021": 419,
-		"2019/2020": 231,
-		"2018/2019": 382,
-		"2017/2018": 250,
-		"2016/2017": 184,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Шаблони за дизајн на кориснички интерфејси",
-		"2024/2025": 416,
-		"2023/2024": 340,
-		"2022/2023": 406,
-		"2021/2022": 332,
-		"2020/2021": 410,
-		"2019/2020": 484,
-		"2018/2019": 565,
-		"2017/2018": 492,
-		"2016/2017": 436,
-		"2015/2016": 408,
-		"2014/2015": 335,
-		"2013/2014": 441,
-		"2012/2013": 176,
-		"2011/2012": 0
-	},
-	{
-		"course": "Агентно-базирани системи",
-		"2024/2025": 58,
-		"2023/2024": 50,
-		"2022/2023": 13,
-		"2021/2022": 24,
-		"2020/2021": 19,
-		"2019/2020": 0,
-		"2018/2019": 0,
-		"2017/2018": 0,
-		"2016/2017": 0,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Администрација на мрежи",
-		"2024/2025": 87,
-		"2023/2024": 71,
-		"2022/2023": 48,
-		"2021/2022": 47,
-		"2020/2021": 43,
-		"2019/2020": 6,
-		"2018/2019": 5,
-		"2017/2018": 25,
-		"2016/2017": 20,
-		"2015/2016": 16,
-		"2014/2015": 22,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Администрација на системи",
-		"2024/2025": 148,
-		"2023/2024": 171,
-		"2022/2023": 70,
-		"2021/2022": 105,
-		"2020/2021": 79,
-		"2019/2020": 25,
-		"2018/2019": 33,
-		"2017/2018": 30,
-		"2016/2017": 26,
-		"2015/2016": 31,
-		"2014/2015": 26,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Бази на податоци",
-		"2024/2025": 1251,
-		"2023/2024": 1183,
-		"2022/2023": 985,
-		"2021/2022": 1138,
-		"2020/2021": 812,
-		"2019/2020": 871,
-		"2018/2019": 753,
-		"2017/2018": 668,
-		"2016/2017": 619,
-		"2015/2016": 547,
-		"2014/2015": 86,
-		"2013/2014": 123,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Безжични мултимедиски системи",
-		"2024/2025": 0,
-		"2023/2024": 0,
-		"2022/2023": 32,
-		"2021/2022": 72,
-		"2020/2021": 134,
-		"2019/2020": 427,
-		"2018/2019": 282,
-		"2017/2018": 40,
-		"2016/2017": 12,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Вградливи микропроцесорски системи",
-		"2024/2025": 52,
-		"2023/2024": 59,
-		"2022/2023": 63,
-		"2021/2022": 51,
-		"2020/2021": 59,
-		"2019/2020": 0,
-		"2018/2019": 0,
-		"2017/2018": 0,
-		"2016/2017": 0,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Веб програмирање",
-		"2024/2025": 895,
-		"2023/2024": 778,
-		"2022/2023": 571,
-		"2021/2022": 572,
-		"2020/2021": 308,
-		"2019/2020": 277,
-		"2018/2019": 213,
-		"2017/2018": 193,
-		"2016/2017": 137,
-		"2015/2016": 145,
-		"2014/2015": 140,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Визуелизација",
-		"2024/2025": 86,
-		"2023/2024": 0,
-		"2022/2023": 214,
-		"2021/2022": 304,
-		"2020/2021": 167,
-		"2019/2020": 46,
-		"2018/2019": 29,
-		"2017/2018": 7,
-		"2016/2017": 11,
-		"2015/2016": 0,
-		"2014/2015": 9,
-		"2013/2014": 0,
-		"2012/2013": 9,
-		"2011/2012": 0
-	},
-	{
-		"course": "Виртуелизација",
-		"2024/2025": 62,
-		"2023/2024": 36,
-		"2022/2023": 30,
-		"2021/2022": 42,
-		"2020/2021": 68,
-		"2019/2020": 0,
-		"2018/2019": 0,
-		"2017/2018": 0,
-		"2016/2017": 0,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Вовед во мрежна наука",
-		"2024/2025": 14,
-		"2023/2024": 19,
-		"2022/2023": 28,
-		"2021/2022": 21,
-		"2020/2021": 13,
-		"2019/2020": 8,
-		"2018/2019": 13,
-		"2017/2018": 0,
-		"2016/2017": 0,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Вовед во науката за податоци",
-		"2024/2025": 820,
-		"2023/2024": 704,
-		"2022/2023": 404,
-		"2021/2022": 309,
-		"2020/2021": 165,
-		"2019/2020": 0,
-		"2018/2019": 0,
-		"2017/2018": 0,
-		"2016/2017": 0,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Географски информациски системи",
-		"2024/2025": 15,
-		"2023/2024": 25,
-		"2022/2023": 27,
-		"2021/2022": 62,
-		"2020/2021": 75,
-		"2019/2020": 346,
-		"2018/2019": 336,
-		"2017/2018": 396,
-		"2016/2017": 244,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Дигитална форензика",
-		"2024/2025": 106,
-		"2023/2024": 130,
-		"2022/2023": 134,
-		"2021/2022": 44,
-		"2020/2021": 40,
-		"2019/2020": 0,
-		"2018/2019": 0,
-		"2017/2018": 0,
-		"2016/2017": 0,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Дигитални библиотеки",
-		"2024/2025": 135,
-		"2023/2024": 192,
-		"2022/2023": 204,
-		"2021/2022": 536,
-		"2020/2021": 389,
-		"2019/2020": 257,
-		"2018/2019": 138,
-		"2017/2018": 147,
-		"2016/2017": 106,
-		"2015/2016": 59,
-		"2014/2015": 6,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Дизајн и архитектура на софтвер",
-		"2024/2025": 396,
-		"2023/2024": 369,
-		"2022/2023": 298,
-		"2021/2022": 322,
-		"2020/2021": 277,
-		"2019/2020": 25,
-		"2018/2019": 19,
-		"2017/2018": 17,
-		"2016/2017": 28,
-		"2015/2016": 19,
-		"2014/2015": 92,
-		"2013/2014": 24,
-		"2012/2013": 55,
-		"2011/2012": 0
-	},
-	{
-		"course": "Дизајн на интеракцијата човек-компјутер",
-		"2024/2025": 758,
-		"2023/2024": 750,
-		"2022/2023": 495,
-		"2021/2022": 564,
-		"2020/2021": 369,
-		"2019/2020": 169,
-		"2018/2019": 291,
-		"2017/2018": 216,
-		"2016/2017": 266,
-		"2015/2016": 250,
-		"2014/2015": 116,
-		"2013/2014": 169,
-		"2012/2013": 164,
-		"2011/2012": 0
-	},
-	{
-		"course": "Дизајн на образовен софтвер",
-		"2024/2025": 180,
-		"2023/2024": 118,
-		"2022/2023": 89,
-		"2021/2022": 122,
-		"2020/2021": 163,
-		"2019/2020": 223,
-		"2018/2019": 179,
-		"2017/2018": 15,
-		"2016/2017": 22,
-		"2015/2016": 9,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 37,
-		"2011/2012": 0
-	},
-	{
-		"course": "Електронска и мобилна трговија",
-		"2024/2025": 568,
-		"2023/2024": 646,
-		"2022/2023": 524,
-		"2021/2022": 645,
-		"2020/2021": 495,
-		"2019/2020": 593,
-		"2018/2019": 468,
-		"2017/2018": 430,
-		"2016/2017": 305,
-		"2015/2016": 155,
-		"2014/2015": 69,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Интегрирани системи",
-		"2024/2025": 460,
-		"2023/2024": 442,
-		"2022/2023": 325,
-		"2021/2022": 361,
-		"2020/2021": 261,
-		"2019/2020": 0,
-		"2018/2019": 0,
-		"2017/2018": 0,
-		"2016/2017": 0,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Информациска безбедност",
-		"2024/2025": 77,
-		"2023/2024": 105,
-		"2022/2023": 97,
-		"2021/2022": 73,
-		"2020/2021": 148,
-		"2019/2020": 31,
-		"2018/2019": 42,
-		"2017/2018": 33,
-		"2016/2017": 29,
-		"2015/2016": 25,
-		"2014/2015": 56,
-		"2013/2014": 63,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Инфраструктурно програмирање",
-		"2024/2025": 0,
-		"2023/2024": 11,
-		"2022/2023": 6,
-		"2021/2022": 13,
-		"2020/2021": 0,
-		"2019/2020": 0,
-		"2018/2019": 0,
-		"2017/2018": 0,
-		"2016/2017": 0,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Компјутерска електроника",
-		"2024/2025": 30,
-		"2023/2024": 34,
-		"2022/2023": 21,
-		"2021/2022": 23,
-		"2020/2021": 27,
-		"2019/2020": 12,
-		"2018/2019": 30,
-		"2017/2018": 0,
-		"2016/2017": 0,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Компјутерска етика",
-		"2024/2025": 169,
-		"2023/2024": 224,
-		"2022/2023": 315,
-		"2021/2022": 528,
-		"2020/2021": 163,
-		"2019/2020": 151,
-		"2018/2019": 190,
-		"2017/2018": 123,
-		"2016/2017": 113,
-		"2015/2016": 84,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Компјутерски звук, музика и говор",
-		"2024/2025": 21,
-		"2023/2024": 22,
-		"2022/2023": 15,
-		"2021/2022": 18,
-		"2020/2021": 0,
-		"2019/2020": 0,
-		"2018/2019": 0,
-		"2017/2018": 0,
-		"2016/2017": 0,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Континуирана интеграција и испорака",
-		"2024/2025": 232,
-		"2023/2024": 299,
-		"2022/2023": 147,
-		"2021/2022": 101,
-		"2020/2021": 27,
-		"2019/2020": 0,
-		"2018/2019": 0,
-		"2017/2018": 0,
-		"2016/2017": 0,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Криптографија",
-		"2024/2025": 31,
-		"2023/2024": 37,
-		"2022/2023": 44,
-		"2021/2022": 57,
-		"2020/2021": 63,
-		"2019/2020": 49,
-		"2018/2019": 66,
-		"2017/2018": 49,
-		"2016/2017": 29,
-		"2015/2016": 41,
-		"2014/2015": 43,
-		"2013/2014": 15,
-		"2012/2013": 18,
-		"2011/2012": 0
-	},
-	{
-		"course": "Линеарна алгебра и примени",
-		"2024/2025": 137,
-		"2023/2024": 138,
-		"2022/2023": 102,
-		"2021/2022": 87,
-		"2020/2021": 78,
-		"2019/2020": 31,
-		"2018/2019": 27,
-		"2017/2018": 0,
-		"2016/2017": 0,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Машинско учење",
-		"2024/2025": 114,
-		"2023/2024": 101,
-		"2022/2023": 124,
-		"2021/2022": 75,
-		"2020/2021": 126,
-		"2019/2020": 92,
-		"2018/2019": 46,
-		"2017/2018": 86,
-		"2016/2017": 0,
-		"2015/2016": 35,
-		"2014/2015": 36,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Мерење и анализа на сообраќај",
-		"2024/2025": 0,
-		"2023/2024": 0,
-		"2022/2023": 0,
-		"2021/2022": 7,
-		"2020/2021": 0,
-		"2019/2020": 0,
-		"2018/2019": 9,
-		"2017/2018": 0,
-		"2016/2017": 8,
-		"2015/2016": 18,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Сајбер безбедност",
-		"2024/2025": 167,
-		"2023/2024": 115,
-		"2022/2023": 74,
-		"2021/2022": 107,
-		"2020/2021": 91,
-		"2019/2020": 86,
-		"2018/2019": 153,
-		"2017/2018": 48,
-		"2016/2017": 67,
-		"2015/2016": 18,
-		"2014/2015": 27,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Мултимедиски мрежи",
-		"2024/2025": 95,
-		"2023/2024": 117,
-		"2022/2023": 109,
-		"2021/2022": 246,
-		"2020/2021": 122,
-		"2019/2020": 15,
-		"2018/2019": 0,
-		"2017/2018": 10,
-		"2016/2017": 19,
-		"2015/2016": 7,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Мултимедиски системи",
-		"2024/2025": 350,
-		"2023/2024": 367,
-		"2022/2023": 374,
-		"2021/2022": 385,
-		"2020/2021": 753,
-		"2019/2020": 198,
-		"2018/2019": 142,
-		"2017/2018": 25,
-		"2016/2017": 40,
-		"2015/2016": 11,
-		"2014/2015": 20,
-		"2013/2014": 18,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Напреден веб дизајн",
-		"2024/2025": 159,
-		"2023/2024": 178,
-		"2022/2023": 207,
-		"2021/2022": 266,
-		"2020/2021": 382,
-		"2019/2020": 245,
-		"2018/2019": 162,
-		"2017/2018": 201,
-		"2016/2017": 165,
-		"2015/2016": 188,
-		"2014/2015": 252,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Основи на роботиката",
-		"2024/2025": 86,
-		"2023/2024": 142,
-		"2022/2023": 86,
-		"2021/2022": 51,
-		"2020/2021": 36,
-		"2019/2020": 30,
-		"2018/2019": 16,
-		"2017/2018": 37,
-		"2016/2017": 23,
-		"2015/2016": 24,
-		"2014/2015": 22,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Паралелно и дистрибуирано процесирање",
-		"2024/2025": 76,
-		"2023/2024": 86,
-		"2022/2023": 55,
-		"2021/2022": 65,
-		"2020/2021": 48,
-		"2019/2020": 0,
-		"2018/2019": 14,
-		"2017/2018": 10,
-		"2016/2017": 14,
-		"2015/2016": 8,
-		"2014/2015": 10,
-		"2013/2014": 0,
-		"2012/2013": 14,
-		"2011/2012": 0
-	},
-	{
-		"course": "Паралелно програмирање",
-		"2024/2025": 10,
-		"2023/2024": 12,
-		"2022/2023": 11,
-		"2021/2022": 7,
-		"2020/2021": 11,
-		"2019/2020": 19,
-		"2018/2019": 23,
-		"2017/2018": 27,
-		"2016/2017": 23,
-		"2015/2016": 33,
-		"2014/2015": 17,
-		"2013/2014": 18,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Персонализирано учење",
-		"2024/2025": 0,
-		"2023/2024": 10,
-		"2022/2023": 0,
-		"2021/2022": 0,
-		"2020/2021": 0,
-		"2019/2020": 0,
-		"2018/2019": 0,
-		"2017/2018": 0,
-		"2016/2017": 0,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Податочно рударење",
-		"2024/2025": 66,
-		"2023/2024": 36,
-		"2022/2023": 29,
-		"2021/2022": 36,
-		"2020/2021": 0,
-		"2019/2020": 89,
-		"2018/2019": 58,
-		"2017/2018": 51,
-		"2016/2017": 81,
-		"2015/2016": 42,
-		"2014/2015": 0,
-		"2013/2014": 46,
-		"2012/2013": 26,
-		"2011/2012": 0
-	},
-	{
-		"course": "Процесирање на сигналите",
-		"2024/2025": 27,
-		"2023/2024": 27,
-		"2022/2023": 15,
-		"2021/2022": 24,
-		"2020/2021": 26,
-		"2019/2020": 0,
-		"2018/2019": 0,
-		"2017/2018": 0,
-		"2016/2017": 0,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Вештачка интелигенција за игри",
-		"2024/2025": 0,
-		"2023/2024": 1,
-		"2022/2023": 0,
-		"2021/2022": 9,
-		"2020/2021": 0,
-		"2019/2020": 16,
-		"2018/2019": 12,
-		"2017/2018": 18,
-		"2016/2017": 25,
-		"2015/2016": 23,
-		"2014/2015": 21,
-		"2013/2014": 13,
-		"2012/2013": 22,
-		"2011/2012": 0
-	},
-	{
-		"course": "Психологија на училишна возраст",
-		"2024/2025": 710,
-		"2023/2024": 522,
-		"2022/2023": 362,
-		"2021/2022": 240,
-		"2020/2021": 43,
-		"2019/2020": 0,
-		"2018/2019": 0,
-		"2017/2018": 0,
-		"2016/2017": 0,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Работа со надарени ученици",
-		"2024/2025": 40,
-		"2023/2024": 9,
-		"2022/2023": 0,
-		"2021/2022": 0,
-		"2020/2021": 0,
-		"2019/2020": 0,
-		"2018/2019": 0,
-		"2017/2018": 0,
-		"2016/2017": 0,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Сервисно ориентирани архитектури",
-		"2024/2025": 78,
-		"2023/2024": 23,
-		"2022/2023": 33,
-		"2021/2022": 38,
-		"2020/2021": 39,
-		"2019/2020": 35,
-		"2018/2019": 30,
-		"2017/2018": 28,
-		"2016/2017": 44,
-		"2015/2016": 33,
-		"2014/2015": 20,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Современи компјутерски архитектури",
-		"2024/2025": 0,
-		"2023/2024": 9,
-		"2022/2023": 0,
-		"2021/2022": 4,
-		"2020/2021": 5,
-		"2019/2020": 0,
-		"2018/2019": 0,
-		"2017/2018": 14,
-		"2016/2017": 16,
-		"2015/2016": 11,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Софтверски дефинирана безбедност",
-		"2024/2025": 13,
-		"2023/2024": 0,
-		"2022/2023": 0,
-		"2021/2022": 0,
-		"2020/2021": 0,
-		"2019/2020": 0,
-		"2018/2019": 0,
-		"2017/2018": 0,
-		"2016/2017": 0,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Софтверски квалитет и тестирање",
-		"2024/2025": 427,
-		"2023/2024": 405,
-		"2022/2023": 325,
-		"2021/2022": 387,
-		"2020/2021": 301,
-		"2019/2020": 62,
-		"2018/2019": 91,
-		"2017/2018": 58,
-		"2016/2017": 43,
-		"2015/2016": 71,
-		"2014/2015": 39,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Автоматизирање на процеси во машинско учење",
-		"2024/2025": 22,
-		"2023/2024": 0,
-		"2022/2023": 0,
-		"2021/2022": 0,
-		"2020/2021": 7,
-		"2019/2020": 0,
-		"2018/2019": 0,
-		"2017/2018": 0,
-		"2016/2017": 0,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Учење на далечина",
-		"2024/2025": 130,
-		"2023/2024": 106,
-		"2022/2023": 142,
-		"2021/2022": 138,
-		"2020/2021": 172,
-		"2019/2020": 139,
-		"2018/2019": 144,
-		"2017/2018": 254,
-		"2016/2017": 208,
-		"2015/2016": 63,
-		"2014/2015": 24,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Основи на теоријата на компјутерските науки",
-		"2024/2025": 97,
-		"2023/2024": 124,
-		"2022/2023": 90,
-		"2021/2022": 99,
-		"2020/2021": 64,
-		"2019/2020": 15,
-		"2018/2019": 37,
-		"2017/2018": 35,
-		"2016/2017": 47,
-		"2015/2016": 48,
-		"2014/2015": 68,
-		"2013/2014": 86,
-		"2012/2013": 81,
-		"2011/2012": 0
-	},
-	{
-		"course": "Автономна роботика",
-		"2024/2025": 0,
-		"2023/2024": 0,
-		"2022/2023": 0,
-		"2021/2022": 0,
-		"2020/2021": 0,
-		"2019/2020": 0,
-		"2018/2019": 0,
-		"2017/2018": 0,
-		"2016/2017": 0,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Адаптивни и интерактивни веб информациски системи",
-		"2024/2025": 0,
-		"2023/2024": 0,
-		"2022/2023": 0,
-		"2021/2022": 0,
-		"2020/2021": 0,
-		"2019/2020": 0,
-		"2018/2019": 0,
-		"2017/2018": 0,
-		"2016/2017": 0,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Администрација на бази податоци",
-		"2024/2025": 10,
-		"2023/2024": 12,
-		"2022/2023": 10,
-		"2021/2022": 6,
-		"2020/2021": 0,
-		"2019/2020": 0,
-		"2018/2019": 0,
-		"2017/2018": 0,
-		"2016/2017": 0,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Анализа и дизајн на ИС",
-		"2024/2025": 60,
-		"2023/2024": 110,
-		"2022/2023": 165,
-		"2021/2022": 113,
-		"2020/2021": 312,
-		"2019/2020": 84,
-		"2018/2019": 49,
-		"2017/2018": 65,
-		"2016/2017": 17,
-		"2015/2016": 11,
-		"2014/2015": 14,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Биолошки инспирирано пресметување",
-		"2024/2025": 13,
-		"2023/2024": 6,
-		"2022/2023": 7,
-		"2021/2022": 11,
-		"2020/2021": 0,
-		"2019/2020": 0,
-		"2018/2019": 0,
-		"2017/2018": 0,
-		"2016/2017": 0,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Блоковски вериги и криптовалути",
-		"2024/2025": 0,
-		"2023/2024": 14,
-		"2022/2023": 10,
-		"2021/2022": 41,
-		"2020/2021": 0,
-		"2019/2020": 0,
-		"2018/2019": 0,
-		"2017/2018": 0,
-		"2016/2017": 17,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Веб базирани системи",
-		"2024/2025": 63,
-		"2023/2024": 102,
-		"2022/2023": 140,
-		"2021/2022": 173,
-		"2020/2021": 134,
-		"2019/2020": 139,
-		"2018/2019": 65,
-		"2017/2018": 73,
-		"2016/2017": 59,
-		"2015/2016": 109,
-		"2014/2015": 80,
-		"2013/2014": 9,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Веб пребарувачки системи",
-		"2024/2025": 4,
-		"2023/2024": 3,
-		"2022/2023": 5,
-		"2021/2022": 0,
-		"2020/2021": 0,
-		"2019/2020": 0,
-		"2018/2019": 0,
-		"2017/2018": 0,
-		"2016/2017": 0,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Виртуелна реалност",
-		"2024/2025": 82,
-		"2023/2024": 131,
-		"2022/2023": 162,
-		"2021/2022": 107,
-		"2020/2021": 210,
-		"2019/2020": 105,
-		"2018/2019": 45,
-		"2017/2018": 56,
-		"2016/2017": 52,
-		"2015/2016": 24,
-		"2014/2015": 9,
-		"2013/2014": 44,
-		"2012/2013": 21,
-		"2011/2012": 0
-	},
-	{
-		"course": "Вовед во анализа на временските серии",
-		"2024/2025": 8,
-		"2023/2024": 0,
-		"2022/2023": 0,
-		"2021/2022": 0,
-		"2020/2021": 0,
-		"2019/2020": 0,
-		"2018/2019": 0,
-		"2017/2018": 0,
-		"2016/2017": 0,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Вовед во биоинформатиката",
-		"2024/2025": 20,
-		"2023/2024": 21,
-		"2022/2023": 10,
-		"2021/2022": 22,
-		"2020/2021": 0,
-		"2019/2020": 0,
-		"2018/2019": 0,
-		"2017/2018": 0,
-		"2016/2017": 52,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Вовед во когнитивни науки",
-		"2024/2025": 41,
-		"2023/2024": 56,
-		"2022/2023": 139,
-		"2021/2022": 281,
-		"2020/2021": 343,
-		"2019/2020": 237,
-		"2018/2019": 229,
-		"2017/2018": 163,
-		"2016/2017": 130,
-		"2015/2016": 91,
-		"2014/2015": 71,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Вовед во паметни градови",
-		"2024/2025": 0,
-		"2023/2024": 41,
-		"2022/2023": 13,
-		"2021/2022": 21,
-		"2020/2021": 0,
-		"2019/2020": 0,
-		"2018/2019": 0,
-		"2017/2018": 0,
-		"2016/2017": 0,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Вовед во препознавање на облици",
-		"2024/2025": 8,
-		"2023/2024": 8,
-		"2022/2023": 9,
-		"2021/2022": 18,
-		"2020/2021": 20,
-		"2019/2020": 32,
-		"2018/2019": 24,
-		"2017/2018": 16,
-		"2016/2017": 27,
-		"2015/2016": 10,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Дигитална постпродукција",
-		"2024/2025": 0,
-		"2023/2024": 0,
-		"2022/2023": 0,
-		"2021/2022": 0,
-		"2020/2021": 0,
-		"2019/2020": 0,
-		"2018/2019": 0,
-		"2017/2018": 0,
-		"2016/2017": 0,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Дизајн на компјутерски мрежи",
-		"2024/2025": 51,
-		"2023/2024": 35,
-		"2022/2023": 43,
-		"2021/2022": 54,
-		"2020/2021": 44,
-		"2019/2020": 78,
-		"2018/2019": 86,
-		"2017/2018": 77,
-		"2016/2017": 97,
-		"2015/2016": 116,
-		"2014/2015": 157,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Дипломска работа",
-		"2024/2025": 0,
-		"2023/2024": 0,
-		"2022/2023": 0,
-		"2021/2022": 0,
-		"2020/2021": 577,
-		"2019/2020": 512,
-		"2018/2019": 498,
-		"2017/2018": 0,
-		"2016/2017": 0,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Дистрибуирани системи",
-		"2024/2025": 40,
-		"2023/2024": 45,
-		"2022/2023": 52,
-		"2021/2022": 60,
-		"2020/2021": 52,
-		"2019/2020": 102,
-		"2018/2019": 127,
-		"2017/2018": 94,
-		"2016/2017": 106,
-		"2015/2016": 123,
-		"2014/2015": 129,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Дистрибуирано складирање на податоци",
-		"2024/2025": 0,
-		"2023/2024": 0,
-		"2022/2023": 0,
-		"2021/2022": 0,
-		"2020/2021": 0,
-		"2019/2020": 0,
-		"2018/2019": 0,
-		"2017/2018": 0,
-		"2016/2017": 0,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Етичко хакирање",
-		"2024/2025": 82,
-		"2023/2024": 69,
-		"2022/2023": 48,
-		"2021/2022": 61,
-		"2020/2021": 0,
-		"2019/2020": 0,
-		"2018/2019": 0,
-		"2017/2018": 0,
-		"2016/2017": 0,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "ИКТ за развој",
-		"2024/2025": 10,
-		"2023/2024": 0,
-		"2022/2023": 0,
-		"2021/2022": 0,
-		"2020/2021": 0,
-		"2019/2020": 0,
-		"2018/2019": 0,
-		"2017/2018": 0,
-		"2016/2017": 0,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Имплементација на софтверски системи со слободен и отворен код",
-		"2024/2025": 219,
-		"2023/2024": 73,
-		"2022/2023": 69,
-		"2021/2022": 52,
-		"2020/2021": 145,
-		"2019/2020": 140,
-		"2018/2019": 123,
-		"2017/2018": 145,
-		"2016/2017": 158,
-		"2015/2016": 114,
-		"2014/2015": 147,
-		"2013/2014": 0,
-		"2012/2013": 98,
-		"2011/2012": 0
-	},
-	{
-		"course": "Иновации во ИКТ",
-		"2024/2025": 38,
-		"2023/2024": 78,
-		"2022/2023": 93,
-		"2021/2022": 42,
-		"2020/2021": 33,
-		"2019/2020": 457,
-		"2018/2019": 232,
-		"2017/2018": 196,
-		"2016/2017": 316,
-		"2015/2016": 82,
-		"2014/2015": 30,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Откривање знаење со длабоко учење",
-		"2024/2025": 27,
-		"2023/2024": 31,
-		"2022/2023": 10,
-		"2021/2022": 33,
-		"2020/2021": 32,
-		"2019/2020": 24,
-		"2018/2019": 40,
-		"2017/2018": 27,
-		"2016/2017": 158,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Интелигентни системи",
-		"2024/2025": 7,
-		"2023/2024": 0,
-		"2022/2023": 6,
-		"2021/2022": 4,
-		"2020/2021": 11,
-		"2019/2020": 85,
-		"2018/2019": 48,
-		"2017/2018": 29,
-		"2016/2017": 43,
-		"2015/2016": 53,
-		"2014/2015": 60,
-		"2013/2014": 21,
-		"2012/2013": 19,
-		"2011/2012": 0
-	},
-	{
-		"course": "Интернет на нештата",
-		"2024/2025": 20,
-		"2023/2024": 8,
-		"2022/2023": 30,
-		"2021/2022": 45,
-		"2020/2021": 27,
-		"2019/2020": 31,
-		"2018/2019": 12,
-		"2017/2018": 12,
-		"2016/2017": 6,
-		"2015/2016": 22,
-		"2014/2015": 17,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Компјутерска анимација",
-		"2024/2025": 0,
-		"2023/2024": 32,
-		"2022/2023": 53,
-		"2021/2022": 45,
-		"2020/2021": 49,
-		"2019/2020": 55,
-		"2018/2019": 109,
-		"2017/2018": 69,
-		"2016/2017": 99,
-		"2015/2016": 39,
-		"2014/2015": 32,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Компјутерски поддржано производство",
-		"2024/2025": 11,
-		"2023/2024": 7,
-		"2022/2023": 12,
-		"2021/2022": 19,
-		"2020/2021": 20,
-		"2019/2020": 92,
-		"2018/2019": 69,
-		"2017/2018": 161,
-		"2016/2017": 33,
-		"2015/2016": 32,
-		"2014/2015": 38,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Македонски јазик",
-		"2024/2025": 0,
-		"2023/2024": 0,
-		"2022/2023": 0,
-		"2021/2022": 0,
-		"2020/2021": 0,
-		"2019/2020": 0,
-		"2018/2019": 0,
-		"2017/2018": 0,
-		"2016/2017": 0,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Машинска визија",
-		"2024/2025": 0,
-		"2023/2024": 15,
-		"2022/2023": 35,
-		"2021/2022": 29,
-		"2020/2021": 35,
-		"2019/2020": 52,
-		"2018/2019": 30,
-		"2017/2018": 43,
-		"2016/2017": 29,
-		"2015/2016": 23,
-		"2014/2015": 17,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Менаџмент информациски системи",
-		"2024/2025": 466,
-		"2023/2024": 378,
-		"2022/2023": 399,
-		"2021/2022": 358,
-		"2020/2021": 205,
-		"2019/2020": 770,
-		"2018/2019": 692,
-		"2017/2018": 616,
-		"2016/2017": 525,
-		"2015/2016": 480,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Методика на информатиката",
-		"2024/2025": 115,
-		"2023/2024": 59,
-		"2022/2023": 16,
-		"2021/2022": 7,
-		"2020/2021": 0,
-		"2019/2020": 0,
-		"2018/2019": 0,
-		"2017/2018": 0,
-		"2016/2017": 0,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Методологија на истражувањето во ИКТ",
-		"2024/2025": 79,
-		"2023/2024": 126,
-		"2022/2023": 146,
-		"2021/2022": 161,
-		"2020/2021": 62,
-		"2019/2020": 93,
-		"2018/2019": 104,
-		"2017/2018": 209,
-		"2016/2017": 100,
-		"2015/2016": 263,
-		"2014/2015": 267,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Мобилни апликации",
-		"2024/2025": 22,
-		"2023/2024": 40,
-		"2022/2023": 51,
-		"2021/2022": 45,
-		"2020/2021": 33,
-		"2019/2020": 43,
-		"2018/2019": 44,
-		"2017/2018": 35,
-		"2016/2017": 66,
-		"2015/2016": 50,
-		"2014/2015": 62,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Мобилни информациски системи",
-		"2024/2025": 269,
-		"2023/2024": 157,
-		"2022/2023": 338,
-		"2021/2022": 77,
-		"2020/2021": 0,
-		"2019/2020": 0,
-		"2018/2019": 0,
-		"2017/2018": 0,
-		"2016/2017": 0,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Мобилни платформи и програмирање",
-		"2024/2025": 74,
-		"2023/2024": 113,
-		"2022/2023": 106,
-		"2021/2022": 142,
-		"2020/2021": 137,
-		"2019/2020": 177,
-		"2018/2019": 150,
-		"2017/2018": 152,
-		"2016/2017": 163,
-		"2015/2016": 193,
-		"2014/2015": 240,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Моделирање и менаџирање на бизнис процеси",
-		"2024/2025": 12,
-		"2023/2024": 39,
-		"2022/2023": 105,
-		"2021/2022": 118,
-		"2020/2021": 156,
-		"2019/2020": 208,
-		"2018/2019": 230,
-		"2017/2018": 128,
-		"2016/2017": 37,
-		"2015/2016": 32,
-		"2014/2015": 14,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Моделирање и симулација",
-		"2024/2025": 0,
-		"2023/2024": 14,
-		"2022/2023": 10,
-		"2021/2022": 0,
-		"2020/2021": 21,
-		"2019/2020": 7,
-		"2018/2019": 8,
-		"2017/2018": 9,
-		"2016/2017": 6,
-		"2015/2016": 0,
-		"2014/2015": 12,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Модерни трендови во роботика",
-		"2024/2025": 0,
-		"2023/2024": 0,
-		"2022/2023": 0,
-		"2021/2022": 0,
-		"2020/2021": 0,
-		"2019/2020": 0,
-		"2018/2019": 0,
-		"2017/2018": 0,
-		"2016/2017": 0,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Мрежна и мобилна форензика",
-		"2024/2025": 37,
-		"2023/2024": 29,
-		"2022/2023": 18,
-		"2021/2022": 22,
-		"2020/2021": 0,
-		"2019/2020": 0,
-		"2018/2019": 0,
-		"2017/2018": 0,
-		"2016/2017": 0,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Напредна интеракција човек компјутер",
-		"2024/2025": 12,
-		"2023/2024": 29,
-		"2022/2023": 42,
-		"2021/2022": 84,
-		"2020/2021": 132,
-		"2019/2020": 59,
-		"2018/2019": 27,
-		"2017/2018": 53,
-		"2016/2017": 43,
-		"2015/2016": 17,
-		"2014/2015": 20,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Напредни бази на податоци",
-		"2024/2025": 6,
-		"2023/2024": 15,
-		"2022/2023": 121,
-		"2021/2022": 20,
-		"2020/2021": 14,
-		"2019/2020": 27,
-		"2018/2019": 46,
-		"2017/2018": 26,
-		"2016/2017": 33,
-		"2015/2016": 26,
-		"2014/2015": 15,
-		"2013/2014": 19,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Web3 апликации",
-		"2024/2025": 0,
-		"2023/2024": 0,
-		"2022/2023": 0,
-		"2021/2022": 0,
-		"2020/2021": 0,
-		"2019/2020": 0,
-		"2018/2019": 0,
-		"2017/2018": 0,
-		"2016/2017": 0,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Неструктурирани бази на податоци",
-		"2024/2025": 124,
-		"2023/2024": 69,
-		"2022/2023": 89,
-		"2021/2022": 64,
-		"2020/2021": 92,
-		"2019/2020": 118,
-		"2018/2019": 62,
-		"2017/2018": 77,
-		"2016/2017": 95,
-		"2015/2016": 61,
-		"2014/2015": 51,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Обработка на природните јазици",
-		"2024/2025": 47,
-		"2023/2024": 26,
-		"2022/2023": 18,
-		"2021/2022": 24,
-		"2020/2021": 69,
-		"2019/2020": 65,
-		"2018/2019": 57,
-		"2017/2018": 51,
-		"2016/2017": 22,
-		"2015/2016": 28,
-		"2014/2015": 26,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Операциони истражувања",
-		"2024/2025": 0,
-		"2023/2024": 0,
-		"2022/2023": 0,
-		"2021/2022": 0,
-		"2020/2021": 0,
-		"2019/2020": 11,
-		"2018/2019": 14,
-		"2017/2018": 24,
-		"2016/2017": 22,
-		"2015/2016": 10,
-		"2014/2015": 32,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Оптички мрежи",
-		"2024/2025": 0,
-		"2023/2024": 28,
-		"2022/2023": 34,
-		"2021/2022": 36,
-		"2020/2021": 11,
-		"2019/2020": 20,
-		"2018/2019": 9,
-		"2017/2018": 6,
-		"2016/2017": 15,
-		"2015/2016": 10,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Пресметковна биологија",
-		"2024/2025": 0,
-		"2023/2024": 0,
-		"2022/2023": 0,
-		"2021/2022": 0,
-		"2020/2021": 0,
-		"2019/2020": 0,
-		"2018/2019": 0,
-		"2017/2018": 0,
-		"2016/2017": 0,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Пресметување во облак",
-		"2024/2025": 32,
-		"2023/2024": 28,
-		"2022/2023": 28,
-		"2021/2022": 29,
-		"2020/2021": 0,
-		"2019/2020": 0,
-		"2018/2019": 0,
-		"2017/2018": 0,
-		"2016/2017": 0,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Претприемништво",
-		"2024/2025": 281,
-		"2023/2024": 216,
-		"2022/2023": 251,
-		"2021/2022": 173,
-		"2020/2021": 110,
-		"2019/2020": 79,
-		"2018/2019": 108,
-		"2017/2018": 142,
-		"2016/2017": 0,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Програмирање на видео игри",
-		"2024/2025": 612,
-		"2023/2024": 459,
-		"2022/2023": 446,
-		"2021/2022": 205,
-		"2020/2021": 126,
-		"2019/2020": 32,
-		"2018/2019": 37,
-		"2017/2018": 15,
-		"2016/2017": 40,
-		"2015/2016": 21,
-		"2014/2015": 49,
-		"2013/2014": 75,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Програмски јазици и компајлери",
-		"2024/2025": 0,
-		"2023/2024": 0,
-		"2022/2023": 4,
-		"2021/2022": 0,
-		"2020/2021": 0,
-		"2019/2020": 5,
-		"2018/2019": 4,
-		"2017/2018": 13,
-		"2016/2017": 16,
-		"2015/2016": 16,
-		"2014/2015": 18,
-		"2013/2014": 52,
-		"2012/2013": 67,
-		"2011/2012": 0
-	},
-	{
-		"course": "Програмски парадигми",
-		"2024/2025": 77,
-		"2023/2024": 69,
-		"2022/2023": 66,
-		"2021/2022": 64,
-		"2020/2021": 13,
-		"2019/2020": 22,
-		"2018/2019": 35,
-		"2017/2018": 56,
-		"2016/2017": 58,
-		"2015/2016": 64,
-		"2014/2015": 48,
-		"2013/2014": 55,
-		"2012/2013": 55,
-		"2011/2012": 0
-	},
-	{
-		"course": "Вовед во рударење на масивни податоци",
-		"2024/2025": 23,
-		"2023/2024": 16,
-		"2022/2023": 14,
-		"2021/2022": 9,
-		"2020/2021": 0,
-		"2019/2020": 0,
-		"2018/2019": 0,
-		"2017/2018": 0,
-		"2016/2017": 0,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Самостоен проект",
-		"2024/2025": 0,
-		"2023/2024": 0,
-		"2022/2023": 0,
-		"2021/2022": 0,
-		"2020/2021": 0,
-		"2019/2020": 0,
-		"2018/2019": 0,
-		"2017/2018": 0,
-		"2016/2017": 0,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Сензорски системи",
-		"2024/2025": 0,
-		"2023/2024": 0,
-		"2022/2023": 12,
-		"2021/2022": 26,
-		"2020/2021": 200,
-		"2019/2020": 40,
-		"2018/2019": 46,
-		"2017/2018": 33,
-		"2016/2017": 37,
-		"2015/2016": 40,
-		"2014/2015": 8,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Системи за поддршка при одлучувањето",
-		"2024/2025": 63,
-		"2023/2024": 153,
-		"2022/2023": 222,
-		"2021/2022": 326,
-		"2020/2021": 478,
-		"2019/2020": 737,
-		"2018/2019": 615,
-		"2017/2018": 599,
-		"2016/2017": 466,
-		"2015/2016": 267,
-		"2014/2015": 159,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Складови на податоци и аналитичка обработка",
-		"2024/2025": 42,
-		"2023/2024": 49,
-		"2022/2023": 32,
-		"2021/2022": 26,
-		"2020/2021": 22,
-		"2019/2020": 53,
-		"2018/2019": 40,
-		"2017/2018": 38,
-		"2016/2017": 38,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Софтвер за вградливи системи",
-		"2024/2025": 26,
-		"2023/2024": 21,
-		"2022/2023": 31,
-		"2021/2022": 22,
-		"2020/2021": 0,
-		"2019/2020": 0,
-		"2018/2019": 0,
-		"2017/2018": 0,
-		"2016/2017": 0,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Дипломска работа",
-		"2024/2025": 0,
-		"2023/2024": 0,
-		"2022/2023": 0,
-		"2021/2022": 0,
-		"2020/2021": 11,
-		"2019/2020": 20,
-		"2018/2019": 9,
-		"2017/2018": 6,
-		"2016/2017": 15,
-		"2015/2016": 10,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Софтверски дефинирани мрежи",
-		"2024/2025": 4,
-		"2023/2024": 0,
-		"2022/2023": 9,
-		"2021/2022": 5,
-		"2020/2021": 0,
-		"2019/2020": 19,
-		"2018/2019": 25,
-		"2017/2018": 26,
-		"2016/2017": 36,
-		"2015/2016": 50,
-		"2014/2015": 0,
-		"2013/2014": 16,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Теорија на графови и социјални мрежи",
-		"2024/2025": 24,
-		"2023/2024": 12,
-		"2022/2023": 10,
-		"2021/2022": 12,
-		"2020/2021": 41,
-		"2019/2020": 29,
-		"2018/2019": 18,
-		"2017/2018": 29,
-		"2016/2017": 50,
-		"2015/2016": 42,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Споделување и пресметување во толпа",
-		"2024/2025": 0,
-		"2023/2024": 0,
-		"2022/2023": 0,
-		"2021/2022": 0,
-		"2020/2021": 0,
-		"2019/2020": 0,
-		"2018/2019": 0,
-		"2017/2018": 0,
-		"2016/2017": 0,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Тестирање на софтвер",
-		"2024/2025": 41,
-		"2023/2024": 0,
-		"2022/2023": 0,
-		"2021/2022": 0,
-		"2020/2021": 0,
-		"2019/2020": 0,
-		"2018/2019": 0,
-		"2017/2018": 0,
-		"2016/2017": 0,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Тимски проект",
-		"2024/2025": 559,
-		"2023/2024": 420,
-		"2022/2023": 351,
-		"2021/2022": 289,
-		"2020/2021": 0,
-		"2019/2020": 0,
-		"2018/2019": 0,
-		"2017/2018": 0,
-		"2016/2017": 0,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	},
-	{
-		"course": "Управување со ИКТ проекти",
-		"2024/2025": 512,
-		"2023/2024": 362,
-		"2022/2023": 426,
-		"2021/2022": 319,
-		"2020/2021": 34,
-		"2019/2020": 0,
-		"2018/2019": 88,
-		"2017/2018": 74,
-		"2016/2017": 0,
-		"2015/2016": 0,
-		"2014/2015": 0,
-		"2013/2014": 0,
-		"2012/2013": 0,
-		"2011/2012": 0
-	}
-]
Index: ckend/subjects/management/data/prerequisites.json
===================================================================
--- backend/subjects/management/data/prerequisites.json	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,1070 +1,0 @@
-[
-	{
-		"code": "БиМ",
-		"course": "Бизнис и менаџмент",
-		"prerequisite": "",
-		"semester": 1
-	},
-	{
-		"code": "ВвКН_1",
-		"course": "Вовед во компјутерските науки",
-		"prerequisite": "",
-		"semester": 1
-	},
-	{
-		"code": "ДнДК",
-		"course": "Дизајн на дигитални кола",
-		"prerequisite": "",
-		"semester": 1
-	},
-	{
-		"code": "ДС1",
-		"course": "Дискретни структури 1",
-		"prerequisite": "",
-		"semester": 1
-	},
-	{
-		"code": "К_1",
-		"course": "Математика 1",
-		"prerequisite": "",
-		"semester": 1
-	},
-	{
-		"code": "К1",
-		"course": "Калкулус 1",
-		"prerequisite": "",
-		"semester": 1
-	},
-	{
-		"code": "П_1",
-		"course": "Педагогија",
-		"prerequisite": "",
-		"semester": 1
-	},
-	{
-		"code": "ПВ",
-		"course": "Професионални вештини",
-		"prerequisite": "",
-		"semester": 1
-	},
-	{
-		"code": "СП_1",
-		"course": "Структурно програмирање",
-		"prerequisite": "",
-		"semester": 1
-	},
-	{
-		"code": "Ф",
-		"course": "Физика",
-		"prerequisite": "",
-		"semester": 1
-	},
-	{
-		"code": "АиОнК",
-		"course": "Архитектура и организација на компјутери",
-		"prerequisite": "",
-		"semester": 2
-	},
-	{
-		"code": "БС",
-		"course": "Бизнис статистика",
-		"prerequisite": "",
-		"semester": 2
-	},
-	{
-		"code": "ДМ",
-		"course": "Дискретна математика",
-		"prerequisite": "",
-		"semester": 2
-	},
-	{
-		"code": "ДС2",
-		"course": "Дискретни структури 2",
-		"prerequisite": "",
-		"semester": 2
-	},
-	{
-		"code": "ИСзУ",
-		"course": "Е-учење",
-		"prerequisite": "",
-		"semester": 2
-	},
-	{
-		"code": "К2",
-		"course": "Калкулус 2",
-		"prerequisite": "",
-		"semester": 2
-	},
-	{
-		"code": "КА_1",
-		"course": "Компјутерски архитектури",
-		"prerequisite": "",
-		"semester": 2
-	},
-	{
-		"code": "КК",
-		"course": "Компјутерски компоненти",
-		"prerequisite": "",
-		"semester": 2
-	},
-	{
-		"code": "КВзРП",
-		"course": "Креативни вештини за решавање проблеми",
-		"prerequisite": "",
-		"semester": 2
-	},
-	{
-		"code": "М",
-		"course": "Маркетинг",
-		"prerequisite": "нема (2018) | 36 кредити (2023)",
-		"semester": 2
-	},
-	{
-		"code": "ООАиД",
-		"course": "Објектно ориентирана анализа и дизајн",
-		"prerequisite": "",
-		"semester": 2
-	},
-	{
-		"code": "ООП",
-		"course": "Објектно-ориентирано програмирање",
-		"prerequisite": "",
-		"semester": 2
-	},
-	{
-		"code": "ОнВД",
-		"course": "Основи на Веб дизајн",
-		"prerequisite": "",
-		"semester": 2
-	},
-	{
-		"code": "ОнСБ",
-		"course": "Основи на сајбер безбедноста",
-		"prerequisite": "",
-		"semester": 2
-	},
-	{
-		"code": "АиПС",
-		"course": "Алгоритми и податочни структури",
-		"prerequisite": "Објектно-ориентирано програмирање (2018) | Структурно програмирање (2023)",
-		"semester": 3
-	},
-	{
-		"code": "ВиС",
-		"course": "Веројатност и статистика",
-		"prerequisite": "Калкулус или Калкулус 2 или Бизнис статистика (2018) | Калкулус 1 или Математика 1 (2023)",
-		"semester": 3
-	},
-	{
-		"code": "Д",
-		"course": "Дигитизација",
-		"prerequisite": "Вовед во компјутерските науки",
-		"semester": 3
-	},
-	{
-		"code": "ЕзИИ",
-		"course": "Економија за ИКТ инженери",
-		"prerequisite": "Бизнис и менаџмент",
-		"semester": 3
-	},
-	{
-		"code": "ИМ",
-		"course": "Инженерска математика",
-		"prerequisite": "Калкулус или Калкулус 2 (2018) | Калкулус 1 или Математика 1 (2023)",
-		"semester": 3
-	},
-	{
-		"code": "ИПнКС",
-		"course": "Интернет програмирање на клиентска страна",
-		"prerequisite": "Објектно-ориентирано програмирање (2018) | Структурно програмирање (2023)",
-		"semester": 3
-	},
-	{
-		"code": "КМ",
-		"course": "Компјутерски мрежи",
-		"prerequisite": "Компјутерски архитектури (2018) | 18 кредити (2023)",
-		"semester": 3
-	},
-	{
-		"code": "КМиБ",
-		"course": "Компјутерски мрежи и безбедност",
-		"prerequisite": "Архитектура и организација на компјутери (2018) | 18 кредити (2023)",
-		"semester": 3
-	},
-	{
-		"code": "МТ",
-		"course": "Мултимедијални технологии",
-		"prerequisite": "Вовед во компјутерските науки",
-		"semester": 3
-	},
-	{
-		"code": "НП",
-		"course": "Напредно програмирање",
-		"prerequisite": "Објектно-ориентирано програмирање",
-		"semester": 3
-	},
-	{
-		"code": "ОнКС",
-		"course": "Основи на комуникациски системи",
-		"prerequisite": "Калкулус или Калкулус 2 (2018) | Калкулус 1 или Математика 1 (2023)",
-		"semester": 3
-	},
-	{
-		"code": "ОнТнИ",
-		"course": "Основи на теоријата на информации",
-		"prerequisite": "Калкулус (2018) | Калкулус 1 или Математика 1 (2023)",
-		"semester": 3
-	},
-	{
-		"code": "УсТП",
-		"course": "Управување со техничка поддршка",
-		"prerequisite": "Вовед во компјутерските науки (2018) | 18 кредити (2023)",
-		"semester": 3
-	},
-	{
-		"code": "ШзДнКИ",
-		"course": "Шаблони за дизајн на кориснички интерфејси",
-		"prerequisite": "Објектно-ориентирано програмирање (2018) | Структурно програмирање (2023)",
-		"semester": 3
-	},
-	{
-		"code": "АнСБ",
-		"course": "Анализа на софтверските барања",
-		"prerequisite": "Објектно ориентирана анализа и дизајн или Софтверско инженерство (2018) | Објектно ориентирана анализа и дизајн или Објектно-ориентирано програмирање (2023)",
-		"semester": 4
-	},
-	{
-		"code": "БиМС",
-		"course": "Безжични и мобилни системи",
-		"prerequisite": "Компјутерски мрежи и безбедност или Компјутерски мрежи (2018) | 36 кредити (2023)",
-		"semester": 4
-	},
-	{
-		"code": "ВИ",
-		"course": "Вештачка интелигенција",
-		"prerequisite": "Алгоритми и податочни структури (2018) | 36 кредити (2023)",
-		"semester": 4
-	},
-	{
-		"code": "ВП_1",
-		"course": "Визуелно програмирање",
-		"prerequisite": "Објектно-ориентирано програмирање",
-		"semester": 4
-	},
-	{
-		"code": "ВвЕ",
-		"course": "Вовед во екоинформатиката",
-		"prerequisite": "нема (2018) | Вовед во компјутерските науки (2023)",
-		"semester": 4
-	},
-	{
-		"code": "ВвСП",
-		"course": "Вовед во случајни процеси",
-		"prerequisite": "Веројатност и статистика или Основи на теоријата на информации (2018) | 36 кредити (2023)",
-		"semester": 4
-	},
-	{
-		"code": "ДПнС",
-		"course": "Дигитално процесирање на слика",
-		"prerequisite": "Дискретна математика или Дискретни структури 2 (2018) | Дсикретна математика или Дискретни структури 2 или Математика 2 или Избрани теми од математика (2023)",
-		"semester": 4
-	},
-	{
-		"code": "ДнА",
-		"course": "Дизајн на алгоритми",
-		"prerequisite": "Објектно-ориентирано програмирање (2018) | Дискретна математика или Дискретни структури 2 или Математика 2 или Избрани теми од математика (2023)",
-		"semester": 4
-	},
-	{
-		"code": "Е",
-		"course": "Е-влада",
-		"prerequisite": "Бизнис и менаџмент",
-		"semester": 4
-	},
-	{
-		"code": "ЕК",
-		"course": "Електрични кола",
-		"prerequisite": "нема (2018) | 36 кредити (2023)",
-		"semester": 4
-	},
-	{
-		"code": "ИвО",
-		"course": "Информатичко размислување во образованието",
-		"prerequisite": "ИТ системи за учење (2018) | Вовед во компјутерските науки (2023)",
-		"semester": 4
-	},
-	{
-		"code": "ИТ",
-		"course": "Интернет технологии",
-		"prerequisite": "Објектно-ориентирано програмирање",
-		"semester": 4
-	},
-	{
-		"code": "КГ",
-		"course": "Компјутерска графика",
-		"prerequisite": "Објектно-ориентирано програмирање и (Дискретна математика или Дискретни структури 2) (2018) | Објектно-ориентирано програмирање (2023)",
-		"semester": 4
-	},
-	{
-		"code": "КнИО",
-		"course": "Концепти на информатичко општество",
-		"prerequisite": "Вовед во компјутерските науки",
-		"semester": 4
-	},
-	{
-		"code": "МиК",
-		"course": "Медиуми и комуникации",
-		"prerequisite": "Вовед во компјутерските науки",
-		"semester": 4
-	},
-	{
-		"code": "ОиЕЕКС",
-		"course": "Квантно пресметување",
-		"prerequisite": "Компјутерски компоненти (2018) | Архитектура и организација на компјутери или Компјутерски архитектури (2023)",
-		"semester": 4
-	},
-	{
-		"code": "ОС",
-		"course": "Оперативни системи",
-		"prerequisite": "Архитектура и организација на компјутери или Компјутерски архитектури",
-		"semester": 4
-	},
-	{
-		"code": "СИ",
-		"course": "Софтверско инженерство",
-		"prerequisite": "Објектно-ориентирано програмирање",
-		"semester": 4
-	},
-	{
-		"code": "ТнИсДК",
-		"course": "Теорија на информации со дигитални комуникации",
-		"prerequisite": "Веројатност и статистика (2018) | Веројатност и статистика или Математика 3 или Бизнис и статистика (2023)",
-		"semester": 4
-	},
-	{
-		"code": "АнС",
-		"course": "Администрација на системи",
-		"prerequisite": "Оперативни системи (2018) | Компјутерски мрежи или компјутерски мрежи и безбедност (2023)",
-		"semester": 5
-	},
-	{
-		"code": "БнП",
-		"course": "Бази на податоци",
-		"prerequisite": "Алгоритми и податочни структури (2018) | Алгоритми и податочни структури или Примена на алгоритми и податочни структури (2023)",
-		"semester": 5
-	},
-	{
-		"code": "ВП_2",
-		"course": "Веб програмирање",
-		"prerequisite": "Алгоритми и податочни структури (2018) | Алгоритми и податочни структури или Примена на алгоритми и податочни структури (2023)",
-		"semester": 5
-	},
-	{
-		"code": "В_1",
-		"course": "Визуелизација",
-		"prerequisite": "Алгоритми и податочни структури (2018) | Алгоритми и податочни структури или Примена на алгоритми и податочни структури (2023)",
-		"semester": 5
-	},
-	{
-		"code": "ВвНзП",
-		"course": "Вовед во науката за податоци",
-		"prerequisite": "Бизнис статистика или Веројатност и статистика или Основи на теоријата на информации (2018) | Бизнис статистика или Веројатност и статистика или Основи на теорија на информации или Математика 3 (2023)",
-		"semester": 5
-	},
-	{
-		"code": "ДиАнС",
-		"course": "Дизајн и архитектура на софтвер",
-		"prerequisite": "Анализа на софтверските барања или Софтверско инженерство (2018) | Објектно ориентирана анализа и дизајн или Објектно-ориентирано програмирање (2023)",
-		"semester": 5
-	},
-	{
-		"code": "ДнОС",
-		"course": "Дизајн на образовен софтвер",
-		"prerequisite": "Информатичко размислување во образованието (2018) | 60 кредити (2023)",
-		"semester": 5
-	},
-	{
-		"code": "ИБ",
-		"course": "Информациска безбедност",
-		"prerequisite": "Оперативни системи (2018) | Компјутерски мрежи или Компјутерски мрежи и безбедност (2023)",
-		"semester": 5
-	},
-	{
-		"code": "КЕ_2",
-		"course": "Компјутерска електроника",
-		"prerequisite": "Електрични кола (2018) | Дизајн на дигитални кола или Вовед во компјутерските науки (2023)",
-		"semester": 5
-	},
-	{
-		"code": "КЕ_1",
-		"course": "Компјутерска етика",
-		"prerequisite": "Напредно програмирање или Алгоритми и податочни структури (2018) | Алгоритми и податочни структури или Примена на алгоритми и податочни структури (2023)",
-		"semester": 5
-	},
-	{
-		"code": "КЗГМ",
-		"course": "Компјутерски звук, музика и говор",
-		"prerequisite": "Алгоритми и податочни структури (2018) | Алгоритми и податочни структури или Примена на алгоритми и податочни структури (2023)",
-		"semester": 5
-	},
-	{
-		"code": "ЛАиП",
-		"course": "Линеарна алгебра и примени",
-		"prerequisite": "Дискретна математика или Дискретни структури 2 (2018) | Дискретна математика или Дискретни структури 2 или Математика 2 или Избрани теми од математика (2023)",
-		"semester": 5
-	},
-	{
-		"code": "МБ",
-		"course": "Сајбер безбедност",
-		"prerequisite": "Компјутерски мрежи или Компјутерски мрежи и безбедност",
-		"semester": 5
-	},
-	{
-		"code": "ММ",
-		"course": "Мултимедиски мрежи",
-		"prerequisite": "Компјутерски мрежи или Компјутерски мрежи и безбедност",
-		"semester": 5
-	},
-	{
-		"code": "НВД",
-		"course": "Напреден веб дизајн",
-		"prerequisite": "Основи на Веб дизајн (2018) | Објектно-ориентирано програмирање (2023)",
-		"semester": 5
-	},
-	{
-		"code": "ОнР",
-		"course": "Основи на роботиката",
-		"prerequisite": "Алгоритми и податочни структури (2018) | Алгоритми и податочни структури или Примена на алгоритми и податочни структури (2023)",
-		"semester": 5
-	},
-	{
-		"code": "ПиДП",
-		"course": "Паралелно и дистрибуирано процесирање",
-		"prerequisite": "Алгоритми и податочни структури и Оперативни системи (2018) | Алгоритми и податочни структури или Примена на алгоритми и податочни структури (2023)",
-		"semester": 5
-	},
-	{
-		"code": "АБС",
-		"course": "Агентно-базирани системи",
-		"prerequisite": "Вештачка интелигенција (2018) | Вештачка интелигенција или Математика 3 или Веројатност и статистика или Бизнис статистика (2023)",
-		"semester": 6
-	},
-	{
-		"code": "АнМ",
-		"course": "Администрација на мрежи",
-		"prerequisite": "Компјутерски мрежи (2018) | Компјутерски мрежи или Компјутерски мрежи и безбедност (2023)",
-		"semester": 6
-	},
-	{
-		"code": "БМС",
-		"course": "Безжични мултимедиски системи",
-		"prerequisite": "Безжични и мобилни системи",
-		"semester": 6
-	},
-	{
-		"code": "ВМС",
-		"course": "Вградливи микропроцесорски системи",
-		"prerequisite": "Архитектура и организација на компјутери или Компјутерски архитектури",
-		"semester": 6
-	},
-	{
-		"code": "В_2",
-		"course": "Виртуелизација",
-		"prerequisite": "Оперативни системи",
-		"semester": 6
-	},
-	{
-		"code": "ВвМН",
-		"course": "Вовед во мрежна наука",
-		"prerequisite": "Веројатност и статистика или Основи на теоријата на информации (2018) | Веројатност и статистика или Основи на теорија на информации или Математика 3 или Бизнис статистика (2023)",
-		"semester": 6
-	},
-	{
-		"code": "ГИС",
-		"course": "Географски информациски системи",
-		"prerequisite": "Бази на податоци (2018) | 90 кредити (2023)",
-		"semester": 6
-	},
-	{
-		"code": "ДФ",
-		"course": "Дигитална форензика",
-		"prerequisite": "Информациска безбедност (2018) | Оперативни системи (2023)",
-		"semester": 6
-	},
-	{
-		"code": "ДБ",
-		"course": "Дигитални библиотеки",
-		"prerequisite": "Бази на податоци и (Интернет програмирање на клиентска страна или Интернет технологии или Веб програмирање) (2018) | 90 кредити (2023)",
-		"semester": 6
-	},
-	{
-		"code": "ДнИЧК",
-		"course": "Дизајн на интеракцијата човек-компјутер",
-		"prerequisite": "Алгоритми и податочни структури (2018) | Алгоритми и податочни структури или Примена на алгоритми и податочни структури (2023)",
-		"semester": 6
-	},
-	{
-		"code": "ЕиМТ",
-		"course": "Електронска и мобилна трговија",
-		"prerequisite": "Веб програмирање или Интернет технологии или Имплементација на системи со слободен и отворен код (2018) | Бази на податоци (2023)",
-		"semester": 6
-	},
-	{
-		"code": "ИС_1",
-		"course": "Интегрирани системи",
-		"prerequisite": "Анализа на софтверските барања или Софтверско инженерство",
-		"semester": 6
-	},
-	{
-		"code": "ИП",
-		"course": "Инфраструктурно програмирање",
-		"prerequisite": "Администрација на системи (2018) | Компјутерски мрежи или компјутерски мрежи и безбедност (2023)",
-		"semester": 6
-	},
-	{
-		"code": "КИиИ",
-		"course": "Континуирана интеграција и испорака",
-		"prerequisite": "Оперативни системи и (Веб програмирање или Интернет технологии или Имплементација на системи со слободен и отворен код) (2018) | Оперативни системи (2023)",
-		"semester": 6
-	},
-	{
-		"code": "К_2",
-		"course": "Криптографија",
-		"prerequisite": "Дискретна математика или Дискретни структури 2 (2018) | Дискретни структури 2 или Дискретна математика или Математика 2 или Избрани теми од математика (2023)",
-		"semester": 6
-	},
-	{
-		"code": "МУ",
-		"course": "Машинско учење",
-		"prerequisite": "Веројатност и статистика или Бизнис статистика (2018) | Веројатност и статистика или Бизнис статистика или Математика 3 (2023)",
-		"semester": 6
-	},
-	{
-		"code": "МиАнИС",
-		"course": "Мерење и анализа на сообраќај",
-		"prerequisite": "Веројатност и статистика или Основи на теоријата на информации или Бизнис статистика (2018) | Веројатност и статистика или Основи на теорија на информации или Бизнис статистика или Математика 3 (2023)",
-		"semester": 6
-	},
-	{
-		"code": "МС",
-		"course": "Мултимедиски системи",
-		"prerequisite": "Алгоритми и податочни структури (2018) | Алгоритми и податочни структури или Примена на алгоритми и податочни структури (2023)",
-		"semester": 6
-	},
-	{
-		"code": "ПП_1",
-		"course": "Паралелно програмирање",
-		"prerequisite": "Алгоритми и податочни структури (2018) | Алгоритми и податочни структури или Примена на алгоритми и податочни структури (2023)",
-		"semester": 6
-	},
-	{
-		"code": "ПУ",
-		"course": "Персонализирано учење",
-		"prerequisite": "ИКТ во образованието (2018) | Алгоритми и податочни структури или Примена на алгоритми и податочни структури (2023)",
-		"semester": 6
-	},
-	{
-		"code": "ПР_1",
-		"course": "Податочно рударење",
-		"prerequisite": "Бази на податоци или Веројатност и статистика или Бизнис статистика (2018) | Веројатност и статистика или Математика 3 или Основи на теорија на информации или Бизнис Статистика (2023)",
-		"semester": 6
-	},
-	{
-		"code": "ПнС",
-		"course": "Процесирање на сигналите",
-		"prerequisite": "Инженерска математика или Калкулус 2 (2018) | Математика 1 или Калкулус 1 (2023)",
-		"semester": 6
-	},
-	{
-		"code": "ПР_2",
-		"course": "Вештачка интелигенција за игри",
-		"prerequisite": "Основи на роботиката (2018) | Алгоритми и податочни структури или Примена на алгоритми и податочни структури или Вештачка интелигенција (2023)",
-		"semester": 6
-	},
-	{
-		"code": "ПнУВ",
-		"course": "Психологија на училишна возраст",
-		"prerequisite": "",
-		"semester": 6
-	},
-	{
-		"code": "РсНУ",
-		"course": "Работа со надарени ученици",
-		"prerequisite": "ИКТ во образованието (2018) | Алгоритми и податочни структури или Примена на алгоритми и податочни структури (2023)",
-		"semester": 6
-	},
-	{
-		"code": "СОА",
-		"course": "Сервисно ориентирани архитектури",
-		"prerequisite": "Веб програмирање или Интернет технологии или Имплементација на системи со слободен и отворен код (2018) | Алгоритми и податочни структури или Примена на алгоритми и податочни структури (2023)",
-		"semester": 6
-	},
-	{
-		"code": "СДБ",
-		"course": "Софтверски дефинирана безбедност",
-		"prerequisite": "(Информациска безбедност или Мрежна безбедност) и (Веб програмирање или Интернет технологии или Имплементација на системи со слободен и отворен код) (2018) | 100 кредити (2023)",
-		"semester": 6
-	},
-	{
-		"code": "СКА",
-		"course": "Современи компјутерски архитектури",
-		"prerequisite": "Архитектура и организација на компјутери или Компјутерски архитектури",
-		"semester": 6
-	},
-	{
-		"code": "СКиТ",
-		"course": "Софтверски квалитет и тестирање",
-		"prerequisite": "Софтверско инженерство или Дизајн и архитектура на софтвер",
-		"semester": 6
-	},
-	{
-		"code": "СМ",
-		"course": "Автоматизирање на процеси во машинско учење",
-		"prerequisite": "Веројатност и статистика или Бизнис статистика (2018) | Алгоритми и податочни структури или Примена на алгоритми и податочни структури (2023)",
-		"semester": 6
-	},
-	{
-		"code": "УнД",
-		"course": "Учење на далечина",
-		"prerequisite": "ИКТ во образованието (2018) | Алгоритми и податочни структури или Примена на алгоритми и податочни структури (2023)",
-		"semester": 6
-	},
-	{
-		"code": "ФЈиА",
-		"course": "Основи на теоријата на компјутерските науки",
-		"prerequisite": "Структурно програмирање (2018) | Дискретна математика или Дискретни структури 2 или Математика 2 или Избрани теми од математика (2023)",
-		"semester": 6
-	},
-	{
-		"code": "АР",
-		"course": "Автономна роботика",
-		"prerequisite": "Основи на роботиката (2018) | Основи на роботика или Алгоритми и податочни структури (2023)",
-		"semester": 7
-	},
-	{
-		"code": "АнБнП",
-		"course": "Администрација на бази податоци",
-		"prerequisite": "Бази на податоци",
-		"semester": 7
-	},
-	{
-		"code": "АиДнИ",
-		"course": "Анализа и дизајн на ИС",
-		"prerequisite": "Бази на податоци",
-		"semester": 7
-	},
-	{
-		"code": "ВБС",
-		"course": "Веб базирани системи",
-		"prerequisite": "Веб програмирање или Интернет технологии или Имплементација на системи со слободен и отворен код (2018) | Алгоритми и податочни структури или Примена на алгоритми и податочни структури (2023)",
-		"semester": 7
-	},
-	{
-		"code": "ВвАнВС",
-		"course": "Вовед во анализа на временските серии",
-		"prerequisite": "Вовед во случајни процеси или Статистичко моделирање (2018) | Вештачка интелигенција или Вовед во науката за податоци или Машинско учење (2023)",
-		"semester": 7
-	},
-	{
-		"code": "ВвБ",
-		"course": "Вовед во биоинформатиката",
-		"prerequisite": "Машинско учење или Вештачка интелигенција (2018) | Вештачка интелигенција или Машинско учење или Вовед во науката за податоци (2023)",
-		"semester": 7
-	},
-	{
-		"code": "ВвПГ",
-		"course": "Вовед во паметни градови",
-		"prerequisite": "Машинско учење (2018) | Вештачка интелигенција или Вовед во науката за податоци или Машинско учење (2023)",
-		"semester": 7
-	},
-	{
-		"code": "ВвПнО",
-		"course": "Вовед во препознавање на облици",
-		"prerequisite": "Машинско учење (2018) | Вештачка интелигенција или Вовед во науката за податоци или Машинско учење (2023)",
-		"semester": 7
-	},
-	{
-		"code": "ДП",
-		"course": "Дигитална постпродукција",
-		"prerequisite": "Компјутерска графика или Дигитално процесирање на слика (2018) | Алгоритми и податочни структури или Примена на алгоритми и податочни структури (2023)",
-		"semester": 7
-	},
-	{
-		"code": "ДС",
-		"course": "Дистрибуирани системи",
-		"prerequisite": "Оперативни системи и (Компјутерски мрежи или Компјутерски мрежи и безбедност) (2018) | Компјутерски мрежи или Компјутерски мрежи и безбедност (2023)",
-		"semester": 7
-	},
-	{
-		"code": "ДСнП",
-		"course": "Дистрибуирано складирање на податоци",
-		"prerequisite": "Оперативни системи и (Компјутерски мрежи или Компјутерски мрежи и безбедност) (2018) | Компјутерски мрежи или Компјутерски мрежи и безбедност (2023)",
-		"semester": 7
-	},
-	{
-		"code": "ИнСсСиОК",
-		"course": "Имплементација на софтверски системи со слободен и отворен код",
-		"prerequisite": "Алгоритми и податочни структури (2018) | Алгоритми и податочни структури или Примена на алгоритми и податочни структури (2023)",
-		"semester": 7
-	},
-	{
-		"code": "ИвИ",
-		"course": "Иновации во ИКТ",
-		"prerequisite": "Бизнис и менаџмент и (Веб програмирање или Интернет технологии или Имплементација на системи со слободен и отворен код) (2018) | Бизнис и менаџмент (2023)",
-		"semester": 7
-	},
-	{
-		"code": "ИнН",
-		"course": "Интернет на нештата",
-		"prerequisite": "Вградливи микропроцесорски системи и (Компјутерски мрежи или Компјутерски мрежи и безбедност) (2018) | Компјутерски мрежи или Компјутерски мрежи и безбедност (2023)",
-		"semester": 7
-	},
-	{
-		"code": "КПП",
-		"course": "Компјутерски поддржано производство",
-		"prerequisite": "Вградливи микропроцесорски системи (2018) | Архитектура и организација на компјутери или Компјутерски архитектури (2023)",
-		"semester": 7
-	},
-	{
-		"code": "МВ",
-		"course": "Машинска визија",
-		"prerequisite": "Дигитално процесирање на слика или Машинско учење (2018) | 120 кредити (2023)",
-		"semester": 7
-	},
-	{
-		"code": "МИС_1",
-		"course": "Менаџмент информациски системи",
-		"prerequisite": "Софтверско инженерство или Анализа на софтверските барања",
-		"semester": 7
-	},
-	{
-		"code": "МнИвИ",
-		"course": "Методологија на истражувањето во ИКТ",
-		"prerequisite": "150 кредити",
-		"semester": 7
-	},
-	{
-		"code": "МИС_2",
-		"course": "Мобилни информациски системи",
-		"prerequisite": "Алгоритми и податочни структури (2018) | Алгоритми и податочни структури или Примена на алгоритми и податочни структури (2023)",
-		"semester": 7
-	},
-	{
-		"code": "МПиП",
-		"course": "Мобилни платформи и програмирање",
-		"prerequisite": "Алгоритми и податочни структури (2018) | Алгоритми и податочни структури или Примена на алгоритми и податочни структури (2023)",
-		"semester": 7
-	},
-	{
-		"code": "МиС_3",
-		"course": "Моделирање и симулација",
-		"prerequisite": "Веројатност и статистика или Основи на теоријата на информации или Бизнис статистика (2018) | Веројатност и статистика или Основи на теорија на информации или Бизнис статистика или Математика 3 (2023)",
-		"semester": 7
-	},
-	{
-		"code": "МиМФ",
-		"course": "Мрежна и мобилна форензика",
-		"prerequisite": "(Компјутерски мрежи и безбедност или Мрежна безбедност) и Безжични и мобилни системи (2018) | Комјутерски мрежи или Компјутерски мрежи и безбедност (2023)",
-		"semester": 7
-	},
-	{
-		"code": "НИЧК",
-		"course": "Напредна интеракција човек компјутер",
-		"prerequisite": "Дизајн на интеракцијата човек-компјутер (2018) | Дизајн на интеракцијата човек-компјутер или Алгоритми и податочни структури или Примена на алгоритми и податочни стуктури (2023)",
-		"semester": 7
-	},
-	{
-		"code": "ОнПЈ",
-		"course": "Обработка на природните јазици",
-		"prerequisite": "Машинско учење (2018) | Алгоритми и податочни структури или Примена на алгоритми и податочни структури (2023)",
-		"semester": 7
-	},
-	{
-		"code": "ОИ",
-		"course": "Операциони истражувања",
-		"prerequisite": "Веројатност и статистика или Основи на теоријата на информации (2018) | Веројатност и статистика или Основи на теорија на информации или Математика 3 или Бизнис статистика (2023)",
-		"semester": 7
-	},
-	{
-		"code": "ОМ",
-		"course": "Оптички мрежи",
-		"prerequisite": "Комјутерски мрежи или Компјутерски мрежи и безбедност",
-		"semester": 7
-	},
-	{
-		"code": "ПвО",
-		"course": "Пресметување во облак",
-		"prerequisite": "Виртуелизација (2018) | Бази на податоци (2023)",
-		"semester": 7
-	},
-	{
-		"code": "ПнВИ",
-		"course": "Програмирање на видео игри",
-		"prerequisite": "Алгоритми и податочни структури (2018) | Алгоритми и податочни структури или Примена на алгоритми и податочни структури (2023)",
-		"semester": 7
-	},
-	{
-		"code": "ПП_2",
-		"course": "Програмски парадигми",
-		"prerequisite": "Алгоритми и податочни структури (2018) | Алгоритми и податочни структури или Примена на алгоритми и податочни структури (2023)",
-		"semester": 7
-	},
-	{
-		"code": "РнМП",
-		"course": "Вовед во рударење на масивни податоци",
-		"prerequisite": "Паралелно и дистрибуирано процесирање (2018) | Алгоритми и податочни структури или Примена на алгоритми и податочни структури (2023)",
-		"semester": 7
-	},
-	{
-		"code": "СП_2",
-		"course": "Самостоен проект",
-		"prerequisite": "нема (2018) | 150 кредити (2023)",
-		"semester": 7
-	},
-	{
-		"code": "СзПпО",
-		"course": "Системи за поддршка при одлучувањето",
-		"prerequisite": "Вештачка интелигенција или Вовед во науката за податоци (2018) | Вештачка интелигенција или Вовед во науката за податоци или Машинско учење (2023)",
-		"semester": 7
-	},
-	{
-		"code": "СзВС",
-		"course": "Софтвер за вградливи системи",
-		"prerequisite": "Вградливи микропроцесорски системи (2018) | Алгоритми и податочни структури или Примена на алгоритми и податочни структури (2023)",
-		"semester": 7
-	},
-	{
-		"code": "СДМ",
-		"course": "Софтверски дефинирани мрежи",
-		"prerequisite": "Компјутерски мрежи и (Веб програмирање или Интернет технологии или Имплементација на системи со слободен и отворен код) (2018) | Компјутерски мрежи или Компјутерски мрежи и безбедност (2023)",
-		"semester": 7
-	},
-	{
-		"code": "СМиМ",
-		"course": "Теорија на графови и социјални мрежи",
-		"prerequisite": "Вовед во мрежна наука (2018) | Алгоритми и податочни структури или Примена на алгоритми и податочни структури (2023)",
-		"semester": 7
-	},
-	{
-		"code": "ТП",
-		"course": "Тимски проект",
-		"prerequisite": "150 кредити",
-		"semester": 7
-	},
-	{
-		"code": "БИП",
-		"course": "Биолошки инспирирано пресметување",
-		"prerequisite": "Алгоритми и податочни структури и Вештачка интелигенција (2018) | Алгоритми и податочни структури или Примена на алгоритми и податочни структури (2023)",
-		"semester": 8
-	},
-	{
-		"code": "БВиК",
-		"course": "Блоковски вериги и криптовалути",
-		"prerequisite": "Криптографија или Информациска безбедност (2018) | Алгоритми и податочни структури или Примена на алгоритми и податочни структури (2023)",
-		"semester": 8
-	},
-	{
-		"code": "ВПС",
-		"course": "Веб пребарувачки системи",
-		"prerequisite": "Обработка на природните јазици (2018) | Вештачка интелигенција или Вовед во науката за податоци или Машинско учење (2023)",
-		"semester": 8
-	},
-	{
-		"code": "ВР",
-		"course": "Виртуелна реалност",
-		"prerequisite": "Дизајн на интеракцијата човек-компјутер (2018) | Алгоритми и податочни структури или Примена на алгоритми и податочни структури (2023)",
-		"semester": 8
-	},
-	{
-		"code": "ВвКН_2",
-		"course": "Вовед во когнитивни науки",
-		"prerequisite": "Вештачка интелигенција или Вовед во науката за податоци (2018) | 120 кредити (2023)",
-		"semester": 8
-	},
-	{
-		"code": "ДнКМ",
-		"course": "Дизајн на компјутерски мрежи",
-		"prerequisite": "Компјутерски мрежи (2018) | Компјутерски мрежи или Компјутерски мрежи и безбедност (2023)",
-		"semester": 8
-	},
-	{
-		"code": "ДР",
-		"course": "Дипломска работа",
-		"prerequisite": "нема (2018) | 204 кредити (2023)",
-		"semester": 8
-	},
-	{
-		"code": "ЕХ",
-		"course": "Етичко хакирање",
-		"prerequisite": "Информациска безбедност или Мрежна безбедност (2018) | Компјутерски мрежи или компјутерски мрежи и безбедност (2023)",
-		"semester": 8
-	},
-	{
-		"code": "ИзР",
-		"course": "ИКТ за развој",
-		"prerequisite": "Бизнис и менаџмент и (Веб програмирање или Интернет технологии или Имплементација на системи со слободен и отворен код) (2018) | Бизнис и менаџмент (2023)",
-		"semester": 8
-	},
-	{
-		"code": "ИИС",
-		"course": "Откривање знаење со длабоко учење",
-		"prerequisite": "Машинско учење (2018) | Вештачка интелигенција или Вовед во науката за податоци или Машинско учење (2023)",
-		"semester": 8
-	},
-	{
-		"code": "ИС_2",
-		"course": "Интелигентни системи",
-		"prerequisite": "Машинско учење (2018) | Вештачка интелигенција или Вовед во науката за податоци или Машинско учење (2023)",
-		"semester": 8
-	},
-	{
-		"code": "КА_2",
-		"course": "Компјутерска анимација",
-		"prerequisite": "Компјутерска графика или Дизајн на интеракцијата човек-компјутер (2018) | Алгоритми и податочни структури или Примена на алгоритми и податочни структури (2023)",
-		"semester": 8
-	},
-	{
-		"code": "МЈ",
-		"course": "Македонски јазик",
-		"prerequisite": "",
-		"semester": 8
-	},
-	{
-		"code": "МнИ",
-		"course": "Методика на информатиката",
-		"prerequisite": "150 кредити",
-		"semester": 8
-	},
-	{
-		"code": "МА",
-		"course": "Мобилни апликации",
-		"prerequisite": "Алгоритми и податочни структури (2018) | Алгоритми и податочни структури или Примена на алгоритми и податочни структури (2023)",
-		"semester": 8
-	},
-	{
-		"code": "МиМнБП",
-		"course": "Моделирање и менаџирање на бизнис процеси",
-		"prerequisite": "Бази на податоци и (Софтверско инженерство или Анализа на софтверски барања) | Објектно-ориентирано програмирање (2023)",
-		"semester": 8
-	},
-	{
-		"code": "МТвР",
-		"course": "Модерни трендови во роботика",
-		"prerequisite": "Автономна роботика или Процесна роботика или (Машинско учење и Основи на роботиката) (2018) | Оперативни системи (2023)",
-		"semester": 8
-	},
-	{
-		"code": "НБнП_2",
-		"course": "Напредни бази на податоци",
-		"prerequisite": "Бази на податоци (2018) | 90 кредити (2023)",
-		"semester": 8
-	},
-	{
-		"code": "НТоК",
-		"course": "Web3 апликации",
-		"prerequisite": "Криптографија (2018) | Алгоритми и податочни структури или Примена на алгоритни и податочни структури (2023)",
-		"semester": 8
-	},
-	{
-		"code": "НБнП_1",
-		"course": "Неструктурирани бази на податоци",
-		"prerequisite": "Бази на податоци",
-		"semester": 8
-	},
-	{
-		"code": "ПБ",
-		"course": "Пресметковна биологија",
-		"prerequisite": "Машинско учење",
-		"semester": 8
-	},
-	{
-		"code": "П_2",
-		"course": "Претприемништво",
-		"prerequisite": "Бизнис и менаџмент и (Веб програмирање или Интернет технологии или Имплементација на системи со слободен и отворен код) (2018) | 120 кредити (2023)",
-		"semester": 8
-	},
-	{
-		"code": "ПЈиК",
-		"course": "Програмски јазици и компајлери",
-		"prerequisite": "Формални јазици и автомати (2018) | Алгоритми и податочни структури или Примена на алгоритми и податочни структури (2023)",
-		"semester": 8
-	},
-	{
-		"code": "СнПиАО",
-		"course": "Складови на податоци и аналитичка обработка",
-		"prerequisite": "Бази на податоци (2018) | 100 кредити (2023)",
-		"semester": 8
-	},
-	{
-		"code": "СиПвТ",
-		"course": "Споделување и пресметување во толпа",
-		"prerequisite": "Машинско учење (2018) | Вештачка интелигенција или Вовед во науката за податоци или Машинско учење (2023)",
-		"semester": 8
-	},
-	{
-		"code": "УсИП",
-		"course": "Управување со ИКТ проекти",
-		"prerequisite": "(Софтверско инженерство или Анализа на софтверски барања) и (Веб програмирање или Интернет технологии или Имплементација на системи со слободен и отворен код) (2018) | Софтверско инженерство или Анализа на софтверски барања (2023)",
-		"semester": 8
-	},
-	{
-		"code": "УсИП",
-		"course": "Вовед во бази на податоци и SQL",
-		"prerequisite": "",
-		"semester": 1
-	},
-	{
-		"code": "УсИП",
-		"course": "Примена на алгоритми и податочни структури",
-		"prerequisite": "Структурно програмирање",
-		"semester": 3
-	},
-	{
-		"code": "УсИП",
-		"course": "Математика 3",
-		"prerequisite": "",
-		"semester": 3
-	},
-	{
-		"code": "УсИП",
-		"course": "Избрани теми од математика",
-		"prerequisite": "",
-		"semester": 1
-	},
-	{
-		"code": "УсИП",
-		"course": "Математика 2",
-		"prerequisite": "",
-		"semester": 2
-	},
-	{
-		"code": "УсИП",
-		"course": "Тестирање на софтвер",
-		"prerequisite": "",
-		"semester": 7
-	},
-	{
-		"code": "УсИП",
-		"course": "Сензорски системи",
-		"prerequisite": "Архитектура и организација на компјутери или Компјутерски архитектури",
-		"semester": 7
-	},
-	{
-		"code": "УсИП",
-		"course": "Адаптивни и интерактивни веб информациски системи",
-		"prerequisite": "Алгоритми и податочни структури или Примена на алгоритми и податочни структури",
-		"semester": 7
-	},
-	{
-		"code": "УсИП",
-		"course": "Спорт и здравје",
-		"prerequisite": "",
-		"semester": 1
-	},
-	{
-		"code": "УсИП",
-		"course": "Деловна пракса",
-		"prerequisite": "36 кредити",
-		"semester": 4
-	}
-]
Index: ckend/subjects/management/data/professors.json
===================================================================
--- backend/subjects/management/data/professors.json	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,1112 +1,0 @@
-[
-	{
-		"course": "Архитектура и организација на компјутери",
-		"professors": "Љупчо Антовски\nБилјана Стојкоска Ристеска\nВладимир Здравески\nДејан Спасов\nИгор Мишковски\nМагдалена Костоска Ѓорчевска\nМарјан Гушев\nМирослав Мирчев\nМоника Симјаноска\nСашо Граматиков",
-		"assistants": "Јана Кузманова\nЈована Добрева\nВојдан Ќорвезироски\nМарија Танеска\nНенад Анчев"
-	},
-	{
-		"course": "Бизнис и менаџмент",
-		"professors": "Владимир Здравески\nГеоргина Мирчева\nРисте Стојанов\nСмилка Јанеска Саркањац",
-		"assistants": "Александар Тенев\nМилена Трајаноска"
-	},
-	{
-		"course": "Бизнис статистика",
-		"professors": "Александра Поповска Митровиќ\nВерица Бакева Смиљкова\nВесна Димитриевска Ристовска\nМетодија Јанчески\nНаташа Илиевска",
-		"assistants": "Петар Секулоски"
-	},
-	{
-		"course": "Вовед во бази на податоци и SQL",
-		"professors": "Ефтим Здравевски",
-		"assistants": "Димитар Китановски"
-	},
-	{
-		"course": "Вовед во компјутерските науки",
-		"professors": "Билјана Стојкоска Ристеска\nБојана Котеска\nИван Китановски\nКатерина Здравкова\nКоста Митрески\nПанче Рибарски",
-		"assistants": "Александар Тенев\nКирил Ќироски\nСтефан Андонов\nМарија Танеска\nМарија Стојчева"
-	},
-	{
-		"course": "Дизајн на дигитални кола",
-		"professors": "Милош Јовановиќ",
-		"assistants": "Јована Добрева"
-	},
-	{
-		"course": "Дискретна математика",
-		"professors": "(неактивиран предмет, нова акр.)",
-		"assistants": "(неактивиран предмет, нова акр.)"
-	},
-	{
-		"course": "Дискретни структури 1",
-		"professors": "Билјана Тојтовска Рибарски\nМарија Михова",
-		"assistants": "Петар Секулоски"
-	},
-	{
-		"course": "Дискретни структури 2",
-		"professors": "Марија Михова",
-		"assistants": "Петар Секулоски"
-	},
-	{
-		"course": "Избрани теми од математика",
-		"professors": "Весна Димитриевска Ристовска\nМетодија Јанчески\nНаташа Илиевска\nДејан Спасов",
-		"assistants": "Живко Атанаскоски\nПетар Секулоски"
-	},
-	{
-		"course": "Е-учење",
-		"professors": "Миле Јованов\nЕмил Станков",
-		"assistants": "Мартин Динев\nМартина Тошевска"
-	},
-	{
-		"course": "Калкулус 1",
-		"professors": "Весна Димитриевска Ристовска\nМетодија Јанчески",
-		"assistants": "Петар Секулоски"
-	},
-	{
-		"course": "Калкулус 2",
-		"professors": "Александра Поповска Митровиќ\nВерица Бакева Смиљкова\nЛаско Баснарков",
-		"assistants": "Петар Секулоски"
-	},
-	{
-		"course": "Компјутерски архитектури",
-		"professors": "Моника Симјаноска\nРисте Стојанов",
-		"assistants": "Јована Добрева\nЗорица Карапанчева\nМоника Симјаноска"
-	},
-	{
-		"course": "Компјутерски компоненти",
-		"professors": "Андреја Наумоски\nКоста Митрески",
-		"assistants": ""
-	},
-	{
-		"course": "Креативни вештини за решавање проблеми",
-		"professors": "Владимир Трајковиќ\nСоња Филипоска",
-		"assistants": "Славе Темков"
-	},
-	{
-		"course": "Маркетинг",
-		"professors": "Смилка Јанеска Саркањац",
-		"assistants": "Александар Тенев"
-	},
-	{
-		"course": "Математика 1",
-		"professors": "Александра Поповска Митровиќ\nВерица Бакева Смиљкова\nВесна Димитриевска Ристовска\nВесна Димитрова\nМетодија Јанчески\nЕмил Станков",
-		"assistants": "Петар Секулоски\nЖивко Атанаскоски"
-	},
-	{
-		"course": "Математика 2",
-		"professors": "Билјана Тојтовска Рибарски\nВесна Димитриевска Ристовска\nДејан Спасов\nЕмил Станков\nМарија Михова\nМетодија Јанчески\nНаташа Илиевска",
-		"assistants": "Живко Атанаскоски\nПетар Секулоски\nСијче Печкова"
-	},
-	{
-		"course": "Објектно ориентирана анализа и дизајн",
-		"professors": "Бојана Котеска\nИлинка Иваноска\nКире Триводалиев\nПетре Ламески\nСлободан Калајџиски",
-		"assistants": "Мартина Тошевска\nСлаве Темков"
-	},
-	{
-		"course": "Објектно-ориентирано програмирање",
-		"professors": "Ѓорѓи Маџаров\nАлександар Стојменски\nАлександар Стојменски\nАна Мадевска Богданова\nБобан Јоксимоски\nДејан Ѓорѓевиќ\nИван Чорбев\nИвица Димитровски\nКатарина Тројачанец Динева\nНевена Ацковска\nХристина Михајлоска Трпческа",
-		"assistants": "Александар Тенев\nВлатко Спасев\nДимитар Китановски\nЖивко Атанаскоски\nМарија Танеска\nСтефан Андонов"
-	},
-	{
-		"course": "Основи на Веб дизајн",
-		"professors": "Александар Стојменски\nБобан Јоксимоски\nГоце Арменски\nИван Китановски\nИван Чорбев\nСлободан Калајџиски",
-		"assistants": "Влатко Спасев\nДимитар Китановски"
-	},
-	{
-		"course": "Основи на сајбер безбедноста",
-		"professors": "Анастас Мишев\nСоња Филипоска",
-		"assistants": "Владислав Бидиков\nВојдан Ќорвезироски"
-	},
-	{
-		"course": "Педагогија",
-		"professors": "Елена Ризов",
-		"assistants": "Елена Ризов"
-	},
-	{
-		"course": "Професионални вештини",
-		"professors": "Андреја Наумоски\nБилјана Стојкоска Ристеска\nКире Триводалиев\nЛаско Баснарков\nМагдалена Костоска Ѓорчевска\nМиле Јованов\nМирослав Мирчев\nПанче Рибарски",
-		"assistants": ""
-	},
-	{
-		"course": "Спорт и здравје",
-		"professors": "(се држи надвор од ФИНКИ)",
-		"assistants": "(се држи надвор од ФИНКИ)"
-	},
-	{
-		"course": "Структурно програмирање",
-		"professors": "Ѓорѓи Маџаров\nАна Мадевска Богданова\nБобан Јоксимоски\nДејан Ѓорѓевиќ\nЕмил Станков\nИван Чорбев\nИвица Димитровски\nКатарина Тројачанец Динева\nМиле Јованов\nНевена Ацковска\nХристина Михајлоска Трпческа\nАлександар Стојменски",
-		"assistants": "Александар Тенев\nВлатко Спасев\nДимитар Китановски\nСтефан Андонов\nМарко Петров\nЕма Пандилова\nМартин Динев"
-	},
-	{
-		"course": "Физика",
-		"professors": "Ласко Баснарков",
-		"assistants": "Зорица Карапанчева"
-	},
-	{
-		"course": "Алгоритми и податочни структури",
-		"professors": "Ана Мадевска Богданова\nАнастас Мишев\nБојана Котеска\nВладимир Трајковиќ\nИлинка Иваноска\nПетре Ламески",
-		"assistants": "Јана Кузманова\nНенад Анчев\nСлаве Темков\nМилан Тодоровиќ\nАна Тодоровска"
-	},
-	{
-		"course": "Анализа на софтверските барања",
-		"professors": "Љупчо Антовски\nГеоргина Мирчева\nЕфтим Здравевски",
-		"assistants": ""
-	},
-	{
-		"course": "Безжични и мобилни системи",
-		"professors": "Анастас Мишев\nСоња Филипоска",
-		"assistants": "Војдан Ќорвезироски"
-	},
-	{
-		"course": "Веројатност и статистика",
-		"professors": "Александра Поповска Митровиќ\nБилјана Тојтовска Рибарски\nВерица Бакева Смиљкова\nИлинка Иваноска\nМарија Михова\nНаташа Илиевска",
-		"assistants": "Јована Добрева\nПетар Секулоски"
-	},
-	{
-		"course": "Вештачка интелигенција",
-		"professors": "Андреа Кулаков\nКатерина Здравкова\nКире Триводалиев\nСоња Гиевска",
-		"assistants": "Јана Кузманова\nМартин Динев\nМартина Тошевска"
-	},
-	{
-		"course": "Визуелно програмирање",
-		"professors": "Ѓорѓи Маџаров\nДејан Ѓорѓевиќ",
-		"assistants": "Стефан Андонов"
-	},
-	{
-		"course": "Вовед во екоинформатиката",
-		"professors": "Андреја Наумоски\nКоста Митрески",
-		"assistants": ""
-	},
-	{
-		"course": "Вовед во случајни процеси",
-		"professors": "Верица Бакева Смиљкова",
-		"assistants": ""
-	},
-	{
-		"course": "Деловна пракса",
-		"professors": "(неактивиран предмет)",
-		"assistants": "(неактивиран предмет)"
-	},
-	{
-		"course": "Дигитално процесирање на слика",
-		"professors": "Ивица Димитровски",
-		"assistants": ""
-	},
-	{
-		"course": "Дигитизација",
-		"professors": "Бобан Јоксимоски",
-		"assistants": "Марко Петров"
-	},
-	{
-		"course": "Дизајн на алгоритми",
-		"professors": "Марија Михова",
-		"assistants": "Мартин Динев"
-	},
-	{
-		"course": "Е-влада",
-		"professors": "Георгина Мирчева\nСмилка Јанеска Саркањац",
-		"assistants": ""
-	},
-	{
-		"course": "Економија за ИКТ инженери",
-		"professors": "Смилка Јанеска Саркањац",
-		"assistants": "Александар Тенев"
-	},
-	{
-		"course": "Електрични кола",
-		"professors": "Коста Митрески",
-		"assistants": ""
-	},
-	{
-		"course": "Информатичко размислување во образованието",
-		"professors": "Миле Јованов\nЕмил Станков",
-		"assistants": ""
-	},
-	{
-		"course": "Инженерска математика",
-		"professors": "Весна Димитрова",
-		"assistants": ""
-	},
-	{
-		"course": "Интернет програмирање на клиентска страна",
-		"professors": "Гоце Арменски\nИван Китановски\nСузана Лошковска",
-		"assistants": "Влатко Спасев\nМарко Петров"
-	},
-	{
-		"course": "Интернет технологии",
-		"professors": "Вангел Ајановски\nГоце Арменски\nМагдалена Костоска Ѓорчевска",
-		"assistants": "Димитар Китановски"
-	},
-	{
-		"course": "Компјутерска графика",
-		"professors": "Сузана Лошковска\nБобан Јоксимоски",
-		"assistants": ""
-	},
-	{
-		"course": "Компјутерски архитектури",
-		"professors": "Моника Симјаноска\nРисте Стојанов",
-		"assistants": "Јована Добрева"
-	},
-	{
-		"course": "Компјутерски мрежи",
-		"professors": "Дејан Спасов\nМарјан Гушев",
-		"assistants": "Ненад Анчев"
-	},
-	{
-		"course": "Компјутерски мрежи и безбедност",
-		"professors": "Александра Каневче Дединец\nАнастас Мишев\nДејан Спасов\nИгор Мишковски\nКостадин Мишев\nМирослав Мирчев\nСашо Граматиков\nСоња Филипоска",
-		"assistants": "Војдан Ќорвезироски\nДимитар Китановски\nКирил Ќироски\nМарија Танеска"
-	},
-	{
-		"course": "Концепти на информатичко општество",
-		"professors": "Владимир Здравески\nГоран Велинов",
-		"assistants": "Јана Кузманова\nМила Додевска\nМилена Трајаноска\nЗорица Карапанчева\nМарија Стојчева"
-	},
-	{
-		"course": "Математика 3",
-		"professors": "Билјана Тојтовска Рибарски\nМарија Михова\nНаташа Илиевска\nИлинка Иваноска",
-		"assistants": "Јована Добрева\nДимитар Пешевски"
-	},
-	{
-		"course": "Медиуми и комуникации",
-		"professors": "Владимир Трајковиќ",
-		"assistants": "Мила Додевска"
-	},
-	{
-		"course": "Мултимедијални технологии",
-		"professors": "Миле Јованов",
-		"assistants": "Живко Атанаскоски"
-	},
-	{
-		"course": "Напредно програмирање",
-		"professors": "Ѓорѓи Маџаров\nДејан Ѓорѓевиќ",
-		"assistants": "Ана Тодоровска\nСтефан Андонов"
-	},
-	{
-		"course": "Квантно пресметување",
-		"professors": "(неактивиран предмет)",
-		"assistants": "(неактивиран предмет)"
-	},
-	{
-		"course": "Оперативни системи",
-		"professors": "Боро Јакимовски\nВесна Димитрова\nДимитар Трајанов\nИгор Мишковски\nКостадин Мишев\nМилош Јовановиќ\nНевена Ацковска\nРисте Стојанов\nСашо Граматиков",
-		"assistants": "Јована Добрева\nАна Тодоровска\nМилена Трајаноска\nНенад Анчев"
-	},
-	{
-		"course": "Основи на комуникациски системи",
-		"professors": "Андреја Наумоски",
-		"assistants": ""
-	},
-	{
-		"course": "Основи на теоријата на информации",
-		"professors": "Александра Поповска Митровиќ\nВерица Бакева Смиљкова",
-		"assistants": ""
-	},
-	{
-		"course": "Примена на алгоритми и податочни структури",
-		"professors": "Ефтим Здравевски\nМагдалена Костоска Ѓорчевска\nСлободан Калајџиски\nХристина Михајлоска Трпческа",
-		"assistants": "Мартин Динев\nЈана Кузманова"
-	},
-	{
-		"course": "Софтверско инженерство",
-		"professors": "Ѓорѓи Маџаров\nДејан Ѓорѓевиќ\nКатарина Тројачанец Динева\nКатерина Здравкова",
-		"assistants": "Јана Кузманова\nСтефан Андонов"
-	},
-	{
-		"course": "Теорија на информации со дигитални комуникации",
-		"professors": "Александра Поповска Митровиќ\nВерица Бакева Смиљкова",
-		"assistants": ""
-	},
-	{
-		"course": "Управување со техничка поддршка",
-		"professors": "Анастас Мишев\nСоња Филипоска",
-		"assistants": "Војдан Ќорвезироски\nЕвгенија Крајчевска"
-	},
-	{
-		"course": "Шаблони за дизајн на кориснички интерфејси",
-		"professors": "Иван Китановски\nИвица Димитровски\nКатарина Тројачанец Динева\nСузана Лошковска",
-		"assistants": "Влатко Спасев\nЕма Пандилова"
-	},
-	{
-		"course": "Агентно-базирани системи",
-		"professors": "Кире Триводалиев\nСоња Гиевска",
-		"assistants": "Мартина Тошевска"
-	},
-	{
-		"course": "Администрација на мрежи",
-		"professors": "Александра Каневче Дединец",
-		"assistants": "Марија Танеска"
-	},
-	{
-		"course": "Администрација на системи",
-		"professors": "Боро Јакимовски",
-		"assistants": "Кирил Ќироски"
-	},
-	{
-		"course": "Бази на податоци",
-		"professors": "Вангел Ајановски\nГеоргина Мирчева\nГоран Велинов\nЕфтим Здравевски\nКире Триводалиев\nСлободан Калајџиски\nСоња Гиевска",
-		"assistants": "Јана Кузманова\nМартина Тошевска\nНенад Анчев\nДимитар Китановски\nМилан Тодоровиќ\nЗорица Карапанчева"
-	},
-	{
-		"course": "Безжични мултимедиски системи",
-		"professors": "Милош Јовановиќ",
-		"assistants": ""
-	},
-	{
-		"course": "Вградливи микропроцесорски системи",
-		"professors": "Моника Симјаноска\nНевена Ацковска",
-		"assistants": "Владислав Бидиков"
-	},
-	{
-		"course": "Веб програмирање",
-		"professors": "Димитар Трајанов\nРисте Стојанов\nСашо Граматиков\nКостадин Мишев",
-		"assistants": "Ана Тодоровска\nМилена Трајаноска\nЕлена Атанасоска\nДарко Сасански"
-	},
-	{
-		"course": "Визуелизација",
-		"professors": "Сузана Лошковска",
-		"assistants": "Евгенија Крајчевска"
-	},
-	{
-		"course": "Виртуелизација",
-		"professors": "Боро Јакимовски",
-		"assistants": "Кирил Ќироски"
-	},
-	{
-		"course": "Вовед во мрежна наука",
-		"professors": "Мирослав Мирчев",
-		"assistants": ""
-	},
-	{
-		"course": "Вовед во науката за податоци",
-		"professors": "Андреа Кулаков\nДимитар Трајанов\nИгор Мишковски\nСлободан Калајџиски",
-		"assistants": "Јована Добрева\nАна Тодоровска\nМилена Трајаноска\nДимитар Пешевски"
-	},
-	{
-		"course": "Географски информациски системи",
-		"professors": "Андреја Наумоски\nКоста Митрески",
-		"assistants": ""
-	},
-	{
-		"course": "Дигитална форензика",
-		"professors": "Весна Димитрова",
-		"assistants": "Јована Добрева"
-	},
-	{
-		"course": "Дигитални библиотеки",
-		"professors": "Бојан Илијоски\nМагдалена Костоска Ѓорчевска\nМоника Симјаноска",
-		"assistants": "Ана Тодоровска\nМила Додевска"
-	},
-	{
-		"course": "Дизајн и архитектура на софтвер",
-		"professors": "Љупчо Антовски\nПетре Ламески",
-		"assistants": "Јана Кузманова\nЕлена Атанасоска"
-	},
-	{
-		"course": "Дизајн на интеракцијата човек-компјутер",
-		"professors": "Бојан Илијоски\nИван Китановски\nСоња Гиевска\nСузана Лошковска",
-		"assistants": "Влатко Спасев\nИван Китановски\nМила Додевска"
-	},
-	{
-		"course": "Дизајн на образовен софтвер",
-		"professors": "Гоце Арменски",
-		"assistants": "Јована Добрева"
-	},
-	{
-		"course": "Електронска и мобилна трговија",
-		"professors": "Димитар Трајанов\nКостадин Мишев\nМилош Јовановиќ\nРисте Стојанов\nСашо Граматиков",
-		"assistants": "Ана Тодоровска"
-	},
-	{
-		"course": "Интегрирани системи",
-		"professors": "Александар Стојменски\nИван Чорбев\nПетре Ламески",
-		"assistants": "Димитар Китановски\nЗорица Карапанчева"
-	},
-	{
-		"course": "Информациска безбедност",
-		"professors": "Весна Димитрова\nХристина Михајлоска Трпческа",
-		"assistants": ""
-	},
-	{
-		"course": "Инфраструктурно програмирање",
-		"professors": "Боро Јакимовски",
-		"assistants": "Владислав Бидиков"
-	},
-	{
-		"course": "Компјутерска електроника",
-		"professors": "Ласко Баснарков",
-		"assistants": ""
-	},
-	{
-		"course": "Компјутерска етика",
-		"professors": "Бојан Илијоски\nКатерина Здравкова",
-		"assistants": ""
-	},
-	{
-		"course": "Компјутерски звук, музика и говор",
-		"professors": "Вангел Ајановски",
-		"assistants": ""
-	},
-	{
-		"course": "Континуирана интеграција и испорака",
-		"professors": "Милош Јовановиќ\nПанче Рибарски",
-		"assistants": ""
-	},
-	{
-		"course": "Криптографија",
-		"professors": "Весна Димитрова\nХристина Михајлоска Трпческа",
-		"assistants": ""
-	},
-	{
-		"course": "Линеарна алгебра и примени",
-		"professors": "Марија Михова",
-		"assistants": ""
-	},
-	{
-		"course": "Машинско учење",
-		"professors": "Александра Каневче Дединец\nИлинка Иваноска\nМирослав Мирчев",
-		"assistants": ""
-	},
-	{
-		"course": "Мерење и анализа на сообраќај",
-		"professors": "Мирослав Мирчев",
-		"assistants": ""
-	},
-	{
-		"course": "Сајбер безбедност",
-		"professors": "Анастас Мишев\nСоња Филипоска",
-		"assistants": "Војдан Ќорвезироски"
-	},
-	{
-		"course": "Мултимедиски мрежи",
-		"professors": "Сашо Граматиков",
-		"assistants": ""
-	},
-	{
-		"course": "Мултимедиски системи",
-		"professors": "Билјана Стојкоска Ристеска",
-		"assistants": ""
-	},
-	{
-		"course": "Напреден веб дизајн",
-		"professors": "Бобан Јоксимоски\nГоце Арменски\nИван Чорбев",
-		"assistants": "Јована Добрева\nСлаве Темков\nМила Додевска"
-	},
-	{
-		"course": "Основи на роботиката",
-		"professors": "Андреа Кулаков",
-		"assistants": "Влатко Спасев"
-	},
-	{
-		"course": "Паралелно и дистрибуирано процесирање",
-		"professors": "Владимир Здравески",
-		"assistants": "Димитар Пешевски"
-	},
-	{
-		"course": "Паралелно програмирање",
-		"professors": "Марјан Гушев",
-		"assistants": "Владимир Здравески\nДимитар Милески"
-	},
-	{
-		"course": "Персонализирано учење",
-		"professors": "Миле Јованов",
-		"assistants": ""
-	},
-	{
-		"course": "Податочно рударење",
-		"professors": "Билјана Тојтовска Рибарски\nБојан Илијоски",
-		"assistants": ""
-	},
-	{
-		"course": "Процесирање на сигналите",
-		"professors": "Ласко Баснарков",
-		"assistants": ""
-	},
-	{
-		"course": "Вештачка интелигенција за игри",
-		"professors": "(неактивиран предмет)",
-		"assistants": "(неактивиран предмет)"
-	},
-	{
-		"course": "Психологија на училишна возраст",
-		"professors": "Калина Сотироска",
-		"assistants": ""
-	},
-	{
-		"course": "Работа со надарени ученици",
-		"professors": "Ана Мадевска Богданова",
-		"assistants": ""
-	},
-	{
-		"course": "Сервисно ориентирани архитектури",
-		"professors": "Панче Рибарски",
-		"assistants": ""
-	},
-	{
-		"course": "Современи компјутерски архитектури",
-		"professors": "Дејан Спасов",
-		"assistants": ""
-	},
-	{
-		"course": "Софтверски дефинирана безбедност",
-		"professors": "(неактивиран предмет)",
-		"assistants": "(неактивиран предмет)"
-	},
-	{
-		"course": "Софтверски квалитет и тестирање",
-		"professors": "Ѓорѓи Маџаров\nБојана Котеска\nХристина Михајлоска Трпческа",
-		"assistants": "Ана Тодоровска\nСлаве Темков"
-	},
-	{
-		"course": "Автоматизирање на процеси во машинско учење",
-		"professors": "Билјана Тојтовска Рибарски",
-		"assistants": ""
-	},
-	{
-		"course": "Учење на далечина",
-		"professors": "Гоце Арменски",
-		"assistants": ""
-	},
-	{
-		"course": "Основи на теоријата на компјутерските науки",
-		"professors": "Марија Михова",
-		"assistants": ""
-	},
-	{
-		"course": "Автономна роботика",
-		"professors": "Петре Ламески",
-		"assistants": ""
-	},
-	{
-		"course": "Адаптивни и интерактивни веб информациски системи",
-		"professors": "Вангел Ајановски",
-		"assistants": ""
-	},
-	{
-		"course": "Администрација на бази податоци",
-		"professors": "Вангел Ајановски",
-		"assistants": ""
-	},
-	{
-		"course": "Анализа и дизајн на ИС",
-		"professors": "Владимир Трајковиќ",
-		"assistants": "Јана Кузманова"
-	},
-	{
-		"course": "Биолошки инспирирано пресметување",
-		"professors": "Илинка Иваноска\nКире Триводалиев",
-		"assistants": ""
-	},
-	{
-		"course": "Блоковски вериги и криптовалути",
-		"professors": "Панче Рибарски",
-		"assistants": ""
-	},
-	{
-		"course": "Веб базирани системи",
-		"professors": "Димитар Трајанов\nМилош Јовановиќ",
-		"assistants": "Милена Трајаноска"
-	},
-	{
-		"course": "Веб пребарувачки системи",
-		"professors": "Вангел Ајановски",
-		"assistants": ""
-	},
-	{
-		"course": "Виртуелна реалност",
-		"professors": "Катарина Тројачанец Динева\nСузана Лошковска",
-		"assistants": ""
-	},
-	{
-		"course": "Вовед во анализа на временските серии",
-		"professors": "Ефтим Здравевски",
-		"assistants": ""
-	},
-	{
-		"course": "Вовед во биоинформатиката",
-		"professors": "Моника Симјаноска\nНевена Ацковска",
-		"assistants": ""
-	},
-	{
-		"course": "Вовед во когнитивни науки",
-		"professors": "Андреа Кулаков",
-		"assistants": "Влатко Спасев"
-	},
-	{
-		"course": "Вовед во паметни градови",
-		"professors": "Александра Каневче Дединец",
-		"assistants": ""
-	},
-	{
-		"course": "Вовед во препознавање на облици",
-		"professors": "Дејан Ѓорѓевиќ",
-		"assistants": ""
-	},
-	{
-		"course": "Дигитална постпродукција",
-		"professors": "(неактивиран предмет)",
-		"assistants": "(неактивиран предмет)"
-	},
-	{
-		"course": "Дизајн на компјутерски мрежи",
-		"professors": "Александра Каневче Дединец\nАнастас Мишев",
-		"assistants": "Кирил Ќироски"
-	},
-	{
-		"course": "Дипломска работа",
-		"professors": "Сите професори",
-		"assistants": ""
-	},
-	{
-		"course": "Дистрибуирани системи",
-		"professors": "Боро Јакимовски",
-		"assistants": "Ненад Анчев"
-	},
-	{
-		"course": "Дистрибуирано складирање на податоци",
-		"professors": "(неактивиран предмет)",
-		"assistants": "(неактивиран предмет)"
-	},
-	{
-		"course": "Етичко хакирање",
-		"professors": "Анастас Мишев\nХристина Михајлоска Трпческа",
-		"assistants": "Војдан Ќорвезироски"
-	},
-	{
-		"course": "ИКТ за развој",
-		"professors": "(неактивиран предмет)",
-		"assistants": "(неактивиран предмет)"
-	},
-	{
-		"course": "Имплементација на софтверски системи со слободен и отворен код",
-		"professors": "Иван Чорбев\nАлександар Стојменски",
-		"assistants": "Ема Пандилова"
-	},
-	{
-		"course": "Иновации во ИКТ",
-		"professors": "Магдалена Костоска Ѓорчевска\nМарјан Гушев",
-		"assistants": "Димитар Милески"
-	},
-	{
-		"course": "Откривање знаење со длабоко учење",
-		"professors": "Кире Триводалиев\nСоња Гиевска",
-		"assistants": "Мартина Тошевска"
-	},
-	{
-		"course": "Интелигентни системи",
-		"professors": "Ана Мадевска Богданова\nБојан Илијоски",
-		"assistants": ""
-	},
-	{
-		"course": "Интернет на нештата",
-		"professors": "Игор Мишковски",
-		"assistants": "Владислав Бидиков"
-	},
-	{
-		"course": "Компјутерска анимација",
-		"professors": "Бобан Јоксимоски",
-		"assistants": ""
-	},
-	{
-		"course": "Компјутерски поддржано производство",
-		"professors": "Андреја Наумоски",
-		"assistants": ""
-	},
-	{
-		"course": "Македонски јазик",
-		"professors": "(се држи надвор од ФИНКИ)",
-		"assistants": "(се држи надвор од ФИНКИ)"
-	},
-	{
-		"course": "Машинска визија",
-		"professors": "Андреа Кулаков\nПетре Ламески",
-		"assistants": ""
-	},
-	{
-		"course": "Менаџмент информациски системи",
-		"professors": "Љупчо Антовски\nГоран Велинов",
-		"assistants": ""
-	},
-	{
-		"course": "Методика на информатиката",
-		"professors": "Ана Мадевска Богданова",
-		"assistants": "Ана Мадевска Богданова"
-	},
-	{
-		"course": "Методологија на истражувањето во ИКТ",
-		"professors": "Андреја Наумоски\nВладимир Трајковиќ",
-		"assistants": "Мартина Тошевска\nСлаве Темков"
-	},
-	{
-		"course": "Мобилни апликации",
-		"professors": "Љупчо Антовски\nПетре Ламески",
-		"assistants": ""
-	},
-	{
-		"course": "Мобилни информациски системи",
-		"professors": "Петре Ламески",
-		"assistants": "Мила Додевска"
-	},
-	{
-		"course": "Мобилни платформи и програмирање",
-		"professors": "Љупчо Антовски\nКостадин Мишев",
-		"assistants": "Мила Додевска"
-	},
-	{
-		"course": "Моделирање и менаџирање на бизнис процеси",
-		"professors": "Георгина Мирчева",
-		"assistants": ""
-	},
-	{
-		"course": "Моделирање и симулација",
-		"professors": "Ласко Баснарков\nМирослав Мирчев",
-		"assistants": ""
-	},
-	{
-		"course": "Модерни трендови во роботика",
-		"professors": "(неактивиран предмет)",
-		"assistants": "(неактивиран предмет)"
-	},
-	{
-		"course": "Мрежна и мобилна форензика",
-		"professors": "Анастас Мишев\nСоња Филипоска",
-		"assistants": "Војдан Ќорвезироски"
-	},
-	{
-		"course": "Напредна интеракција човек компјутер",
-		"professors": "Невена Ацковска\nБојан Илијоски",
-		"assistants": ""
-	},
-	{
-		"course": "Напредни бази на податоци",
-		"professors": "Горан Велинов",
-		"assistants": "Ненад Анчев"
-	},
-	{
-		"course": "Web3 апликации",
-		"professors": "(неактивиран предмет)",
-		"assistants": "(неактивиран предмет)"
-	},
-	{
-		"course": "Неструктурирани бази на податоци",
-		"professors": "Слободан Калајџиски",
-		"assistants": ""
-	},
-	{
-		"course": "Обработка на природните јазици",
-		"professors": "Соња Гиевска",
-		"assistants": "Мартина Тошевска"
-	},
-	{
-		"course": "Операциони истражувања",
-		"professors": "Александра Каневче Дединец",
-		"assistants": ""
-	},
-	{
-		"course": "Оптички мрежи",
-		"professors": "Мирослав Мирчев",
-		"assistants": ""
-	},
-	{
-		"course": "Пресметковна биологија",
-		"professors": "(неактивиран предмет)",
-		"assistants": "(неактивиран предмет)"
-	},
-	{
-		"course": "Пресметување во облак",
-		"professors": "Марјан Гушев",
-		"assistants": "Владислав Бидиков\nДимитар Милески"
-	},
-	{
-		"course": "Претприемништво",
-		"professors": "Владимир Трајковиќ\nЕфтим Здравевски",
-		"assistants": ""
-	},
-	{
-		"course": "Програмирање на видео игри",
-		"professors": "Катарина Тројачанец Динева",
-		"assistants": "Славе Темков"
-	},
-	{
-		"course": "Програмски јазици и компајлери",
-		"professors": "Миле Јованов",
-		"assistants": ""
-	},
-	{
-		"course": "Програмски парадигми",
-		"professors": "Емил Станков\nКире Триводалиев",
-		"assistants": ""
-	},
-	{
-		"course": "Вовед во рударење на масивни податоци",
-		"professors": "Ѓорѓи Маџаров",
-		"assistants": "Стефан Андонов"
-	},
-	{
-		"course": "Самостоен проект",
-		"professors": "Сите професори",
-		"assistants": ""
-	},
-	{
-		"course": "Сензорски системи",
-		"professors": "Билјана Стојкоска Ристеска",
-		"assistants": ""
-	},
-	{
-		"course": "Системи за поддршка при одлучувањето",
-		"professors": "Георгина Мирчева",
-		"assistants": "Димитар Китановски"
-	},
-	{
-		"course": "Складови на податоци и аналитичка обработка",
-		"professors": "Ефтим Здравевски",
-		"assistants": "Димитар Китановски"
-	},
-	{
-		"course": "Дипломска работа",
-		"professors": "Сите професори",
-		"assistants": ""
-	},
-	{
-		"course": "Софтвер за вградливи системи",
-		"professors": "Моника Симјаноска",
-		"assistants": ""
-	},
-	{
-		"course": "Софтверски дефинирани мрежи",
-		"professors": "Соња Филипоска",
-		"assistants": ""
-	},
-	{
-		"course": "Теорија на графови и социјални мрежи",
-		"professors": "Соња Гиевска",
-		"assistants": "Мартина Тошевска"
-	},
-	{
-		"course": "Споделување и пресметување во толпа",
-		"professors": "(неактивиран предмет)",
-		"assistants": "(неактивиран предмет)"
-	},
-	{
-		"course": "Тестирање на софтвер",
-		"professors": "Бојана Котеска",
-		"assistants": "Славе Темков"
-	},
-	{
-		"course": "Тимски проект",
-		"professors": "Сите професори",
-		"assistants": ""
-	},
-	{
-		"course": "Управување со ИКТ проекти",
-		"professors": "Љупчо Антовски\nВладимир Здравески\nДимитар Трајанов",
-		"assistants": "Милена Трајаноска"
-	},
-	{
-		"course": "DevOps софтверски развој",
-		"professors": "Ѓорѓи Маџаров",
-		"assistants": "Боро Јакимовски"
-	},
-	{
-		"course": "WAN мрежи",
-		"professors": "Александра Каневче Дединец\nАнастас Мишев",
-		"assistants": "Александра Каневче Дединец"
-	},
-	{
-		"course": "Администрација на мрежни сервиси",
-		"professors": "Боро Јакимовски",
-		"assistants": "Боро Јакимовски"
-	},
-	{
-		"course": "Алгоритми и сложеност",
-		"professors": "Марија Михова",
-		"assistants": "Бојан Илијоски"
-	},
-	{
-		"course": "Анализа и предвидување на временски серии",
-		"professors": "Ѓорѓи Маџаров",
-		"assistants": "Ефтим Здравевски"
-	},
-	{
-		"course": "Бајесова анализа на податоци",
-		"professors": "Билјана Тојтовска Рибарски",
-		"assistants": "Билјана Тојтовска Рибарски"
-	},
-	{
-		"course": "Безжични компјутерски мрежи",
-		"professors": "Анастас Мишев\nСоња Филипоска",
-		"assistants": "Војдан Ќорвезироски"
-	},
-	{
-		"course": "Виртуелизирани податочни центри",
-		"professors": "Магдалена Костоска Ѓорчевска",
-		"assistants": "Магдалена Костоска Ѓорчевска"
-	},
-	{
-		"course": "Виртуелни општества",
-		"professors": "Соња Гиевска",
-		"assistants": "Мартина Тошевска"
-	},
-	{
-		"course": "Вовед во асистивни технологии",
-		"professors": "Дејан Ѓорѓевиќ",
-		"assistants": "Дејан Ѓорѓевиќ"
-	},
-	{
-		"course": "Вовед во роботика",
-		"professors": "Андреа Кулаков",
-		"assistants": "Влатко Спасев"
-	},
-	{
-		"course": "Дигитален пренос на информации",
-		"professors": "Верица Бакева Смиљкова",
-		"assistants": "Александра Поповска Митровиќ"
-	},
-	{
-		"course": "Дигитално процесирање на сигнали",
-		"professors": "Ласко Баснарков",
-		"assistants": "Ласко Баснарков"
-	},
-	{
-		"course": "Дискретна математика 1",
-		"professors": "Илинка Иваноска",
-		"assistants": "Илинка Иваноска"
-	},
-	{
-		"course": "Дискретна математика 2",
-		"professors": "Миле Јованов\nНаташа Илиевска",
-		"assistants": "Емил Станков\nНаташа Илиевска"
-	},
-	{
-		"course": "Е-бизнис",
-		"professors": "Димитар Трајанов",
-		"assistants": "Гоце Арменски"
-	},
-	{
-		"course": "Интерактивни апликации",
-		"professors": "Иван Китановски\nИвица Димитровски\nКатарина Тројачанец Динева\nСузана Лошковска",
-		"assistants": "Влатко Спасев"
-	},
-	{
-		"course": "Линеарна алгебра",
-		"professors": "Марија Михова",
-		"assistants": "Марија Михова"
-	},
-	{
-		"course": "Математика 1",
-		"professors": "Весна Димитриевска Ристовска",
-		"assistants": "Весна Димитриевска Ристовска"
-	},
-	{
-		"course": "Менаџмент на ИКT",
-		"professors": "Димитар Трајанов",
-		"assistants": "Љупчо Антовски"
-	},
-	{
-		"course": "Менаџмент на човечки ресурси",
-		"professors": "Смилка Јанеска Саркањац",
-		"assistants": "Смилка Јанеска Саркањац"
-	},
-	{
-		"course": "Моделирање и симулација на комуникациски мрежи",
-		"professors": "Мирослав Мирчев",
-		"assistants": "Мирослав Мирчев"
-	},
-	{
-		"course": "Мрежи од следната генерација",
-		"professors": "Соња Филипоска",
-		"assistants": "Соња Филипоска"
-	},
-	{
-		"course": "Напредни ИКТ иновации и претприемништво",
-		"professors": "Гоце Арменски",
-		"assistants": "Гоце Арменски"
-	},
-	{
-		"course": "Напредни мобилни и веб апликации",
-		"professors": "Димитар Трајанов",
-		"assistants": "Сашо Граматиков"
-	},
-	{
-		"course": "Напредни теми од Е-Влада",
-		"professors": "Марјан Гушев",
-		"assistants": "Гоце Арменски"
-	},
-	{
-		"course": "Напредно управување со софтверски проекти",
-		"professors": "Љупчо Антовски",
-		"assistants": "Љупчо Антовски"
-	},
-	{
-		"course": "Неструктурирани бази на податоци и XML",
-		"professors": "Слободан Калајџиски",
-		"assistants": "Слободан Калајџиски"
-	},
-	{
-		"course": "Обработка на слики",
-		"professors": "Ивица Димитровски",
-		"assistants": "Ивица Димитровски"
-	},
-	{
-		"course": "Оптички мрежи и технологии",
-		"professors": "Мирослав Мирчев",
-		"assistants": "Мирослав Мирчев"
-	},
-	{
-		"course": "Персонални и ад хок мрежи",
-		"professors": "Игор Мишковски",
-		"assistants": "Игор Мишковски"
-	},
-	{
-		"course": "Пишување и презентирање на научен труд",
-		"professors": "Марјан Гушев",
-		"assistants": "Марјан Гушев"
-	},
-	{
-		"course": "Програмирање на видео игри и специјални ефекти",
-		"professors": "Катарина Тројачанец Динева",
-		"assistants": "Катарина Тројачанец Динева"
-	},
-	{
-		"course": "Проектирање на компјутерски мрежи",
-		"professors": "Александра Каневче Дединец\nАнастас Мишев",
-		"assistants": "Александра Каневче Дединец"
-	},
-	{
-		"course": "Роботика",
-		"professors": "Невена Ацковска",
-		"assistants": "Невена Ацковска"
-	},
-	{
-		"course": "Системи на знаење",
-		"professors": "Георгина Мирчева",
-		"assistants": "Димитар Китановски"
-	},
-	{
-		"course": "Системска анализа и дизајн",
-		"professors": "Коста Митрески",
-		"assistants": "Андреја Наумоски\nКоста Митрески"
-	},
-	{
-		"course": "Скалабилност и повеќестанарство за SaaS апликации",
-		"professors": "Марјан Гушев",
-		"assistants": "Марјан Гушев"
-	},
-	{
-		"course": "Софтвер за вградливи системи",
-		"professors": "Моника Симјаноска",
-		"assistants": "Моника Симјаноска"
-	},
-	{
-		"course": "Статистичко прoграмирање",
-		"professors": "Кире Триводалиев",
-		"assistants": "Кире Триводалиев"
-	},
-	{
-		"course": "Управување со животен циклус на софтвер",
-		"professors": "Иван Чорбев",
-		"assistants": "Дејан Ѓорѓевиќ"
-	},
-	{
-		"course": "Шаблони за дизајн на софтвер",
-		"professors": "Сузана Лошковска",
-		"assistants": "Дејан Ѓорѓевиќ"
-	}
-]
Index: ckend/subjects/management/data/reviews.json
===================================================================
--- backend/subjects/management/data/reviews.json	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,589 +1,0 @@
-[
-	{
-		"subject": "Дигитизација",
-		"type": "other",
-		"category": "other",
-		"content": "Проектот може да се презентира во било кое време од годината но се презентира постепено, тоа значи 3-4 онлајн консултации со професорот при правење на проектот, може групно или самостојно. Темата си ја бирате сами. Лесен предмет за висока оцена доколку го држи пак истиот професор"
-	},
-	{
-		"subject": "Дистрибуирани системи",
-		"type": "other",
-		"category": "other",
-		"content": "Се работи голем проект со многу администрација и фокус се дава на администрацијата."
-	},
-	{
-		"subject": "Дистрибуирани системи",
-		"type": "other",
-		"category": "material",
-		"content": "Се изработуваат различни системски архитектури како client-server, peer-to-peer, итн. На крај се работи и енкрипција. Се полага теорија и практично. Теорија се поважните работи од материјалот, практично се имплементираат наведените модели во Java. Има лабораториски, но не премногу. Се на се сметам дека е многу корисен предмет, не е претежок, а се имплементираат и добивате осет за некои по “апстрактни”, т.е. “lower level” проблеми."
-	},
-	{
-		"subject": "Дистрибуирани системи",
-		"type": "other",
-		"category": "material",
-		"content": "Дистрибуирани системи се учи мрежно програмирање во Java. Имаш теорија + задачи. За задачите прв колоквиум е TCP/UDP, а втор е Java RMI. Лаб за потпис се прикачуваат од дома, присуство на предавање/вежби не е задолжително."
-	},
-	{
-		"subject": "Дистрибуирани системи",
-		"type": "other",
-		"category": "material",
-		"content": "Теоријата не е тешка, се паѓаат (скоро) исти прашања секоја година(има word со прашања што се паѓаат). Проект нема. На задачи се паѓа тоа што е поминато на вежбите, ништо повеќе. Под мрежно програмирање се подразбира креирање на клиентска и серверска апликација и нивната меѓусебна комуникација со TCP/UDP протоколите. Тоа е за прв колоквиум и е доста low level. Java RMI е API од Java и е истата замисла само еден слој погоре."
-	},
-	{
-		"subject": "Компјутерска етика",
-		"type": "other",
-		"category": "other",
-		"content": "rangiran sum vo top 40/313 studenti na predmetov a imam 8mica sto znaci, okolu 10% od kolegite imaat ili 10 ili 9 site drugi 8mica ili nadolu."
-	},
-	{
-		"subject": "Компјутерска етика",
-		"type": "other",
-		"category": "other",
-		"content": "Првиот проект е да напишеш есеј од сите твои постови на групниот форум (450+-50 збора), а за втоте членови на тимот (секој треба да напише индивидуален извештај од 900+-50 збора). И вториот проф дава некои теми за групите а после раководителот на тимот ги смислува темите за сид оваа година(2021/22) се ставени и тестови за повеќе поени (5 поени секој) на две недели во термин за предавања. Доколку сакаш дополнителни поени треба да присуствуваш на предавањата (дава поени за присуство). Нема вежби, туку само предавања у два блока у недела."
-	},
-	{
-		"subject": "Компјутерска етика",
-		"type": "other",
-		"category": "other",
-		"content": "Predmetot moze da se zeme za 6 bez mnogu zamaranje, a za pogolema premnogu zamaranje"
-	},
-	{
-		"subject": "Администрација на бази податоци",
-		"type": "other",
-		"category": "material",
-		"content": "Проектно, без испит. Проектите се поврзани со напредни теми за бази на податоци, трансакциско работење и администрација во врска со се тоа."
-	},
-	{
-		"subject": "Администрација на бази податоци",
-		"type": "other",
-		"category": "other",
-		"content": "мала група студенти, фокусирана работа"
-	},
-	{
-		"subject": "Мобилни платформи и програмирање",
-		"type": "other",
-		"category": "material",
-		"content": "Андроид апликации, теоријата е ок прв колоквиум за lifecycle на мобилна апликација, втор колоквиум е безвеза, аудиториските се android app (MVVM) во java, секоја аудиториска е нова, не е како spring проект што се надоградува."
-	},
-	{
-		"subject": "Мобилни платформи и програмирање",
-		"type": "other",
-		"category": "material",
-		"content": "Лабараторските помагаат за учење. Убаво е да се знае kotlin - андроид програмирање. Ќе научите kotlin ако се замарате за проект."
-	},
-	{
-		"subject": "Мобилни платформи и програмирање",
-		"type": "other",
-		"category": "other",
-		"content": "Доколку ве интересираат андроид апликации и сакате да се замарате со проекти за да научите, земете го, корисен е. Доколку барате лесен предмет за положување, или пак предмет по кој ќе имате убава оценка, барајте друг"
-	},
-	{
-		"subject": "Вовед во препознавање на облици",
-		"type": "evaluation",
-		"signature_condition": "",
-		"methods": [
-			{
-				"note": null,
-				"components": [
-					{
-						"category": "theory",
-						"percentage": 60
-					},
-					{
-						"category": "project",
-						"percentage": 25
-					},
-					{
-						"category": "homework",
-						"percentage": 15
-					}
-				]
-			}
-		]
-	},
-	{
-		"subject": "Вовед во препознавање на облици",
-		"type": "other",
-		"category": "material",
-		"content": "Имате 3 домашни, се учи во глобала она од Вовед во науката за податоци и малку подетално. Линеарна, логистичка, ensembles, невронски мрежи.. Класичен испит со два колоквиума."
-	},
-	{
-		"subject": "Вовед во препознавање на облици",
-		"type": "other",
-		"category": "material",
-		"content": "Ништо ново не се спомнува, се е повторување од машинско учење, податочно рударство или од ВНП."
-	},
-	{
-		"subject": "Софтвер за вградливи системи",
-		"type": "other",
-		"category": "material",
-		"content": "Предметот е интересен и лесен за полагање, се учи од предавања и аудиториски, се е теорија и нема програмирање освен проект. Кај проектот се работи со микроконтролерот STM32h750bdk и претставува понова технологија. На интернет има малку материјали затоа што технологијата е нова, затоа ако го изберете предметот користете го официјалниот youtube канал на компанијата производител на плочката и https://controllerstech.com вебстраната, од тука можете да научите за проектот. Сите добивме повисоки оцени, така да лесен е предметот ако ве интересира роботика и микроконтролери."
-	},
-	{
-		"subject": "Вовед во рударење на масивни податоци",
-		"type": "other",
-		"category": "material",
-		"content": "бидејќе е менторски предавањата се chapter-и од книга во просек по 70 страни. Се учи Flink, Spark, Recommender системи. Се полага со проект, а можно е и да има некој мини-тест. Ако навистина ве интересира ова, многу нови концепти множе да научите особено работа со голем број на податоци."
-	},
-	{
-		"subject": "Компјутерски звук, музика и говор",
-		"type": "other",
-		"category": "material",
-		"content": "Теми поврзани со генерирање звук, позиционирање звук во простор, звучни ефекти, генерирање говор, генерирање музика со програмирање, жива свирка со код итн. Професорот е еден од авторите на првата македонска компилација на електронска музика. За повеќе информации има закажано специјални термини за консултации професорот. Се работи PureData, SuperCollider, WebAudio API. Проекти за генерирање звуци, синтисајзери, компонирање песни."
-	},
-	{
-		"subject": "Компјутерски звук, музика и говор",
-		"type": "other",
-		"category": "other",
-		"content": "Помала група студенти, пофокусирано работење."
-	},
-	{
-		"subject": "Компјутерски звук, музика и говор",
-		"type": "other",
-		"category": "other",
-		"content": "Нема испит, само проект."
-	},
-	{
-		"subject": "Основи на роботиката",
-		"type": "other",
-		"category": "material",
-		"content": "Предметот е интересен и лесно се положува, со комбинација од теорија (есејски прашања од презентации) и практичен дел со Arduino кодирање, цртање шеми и лабораториски задачи (вклучувајќи проект и симулации). Се нуди флексибилност во полагањето, професорот е фер, а предметот е добар вовед во роботиката, иако не се навлегува длабоко во материјалот."
-	},
-	{
-		"subject": "Напреден веб дизајн",
-		"type": "other",
-		"category": "other",
-		"content": "Реално предметот е добар, доколку се одлучите да го земете за да правите сопствен/тимски проект со frontend и backend технологии, бидејќи имате слободен избор за тема на проект, како и технологии (Vue, React, Angular) и си правите проект за плус поени во вашето CV. Во спротивно, многу тешко е за положување без проект."
-	},
-	{
-		"subject": "Напреден веб дизајн",
-		"type": "other",
-		"category": "other",
-		"content": "Теорија, практичен дел и 5 лабс. Предметов ќе ти биде полесен ако имаш положено основи на веб дизајн и интернет програмирање според мене. Предмет од 3та година."
-	},
-	{
-		"subject": "Напреден веб дизајн",
-		"type": "other",
-		"category": "staff",
-		"content": "Предаваат Бобан Јоксимовски, Гоце Арменски и Иван Чорбев. Сите професори и асистенти што се одговорни за предметите по веб девелопмент според мене се супер и одлично објаснуваат."
-	},
-	{
-		"subject": "Напреден веб дизајн",
-		"type": "other",
-		"category": "material",
-		"content": "Има неколку лабс, се учи vue.js. Има теорија и практичен дел. Предава Гоце Арменски, добар професор кој многу добро предава и објаснува. Во предавањата се учи за Canvas, SVG, CSS Preprocessors, Bootstrap, Search engine optimization и слично. Има по малце опфатено од повеќе области. Има 5 лабораториски со vue.js. Моја препорака е да имаш претходно положено барем Основи на веб дизајн и Интернет програмирање."
-	},
-	{
-		"subject": "Напреден веб дизајн",
-		"type": "other",
-		"category": "material",
-		"content": "Ако на прв колоквиум извадиш солидни поени на практичниот дел, можеш на вториот колоквиум да не полагаш практичен дел туку да направиш проект (како за основи на веб дизајн)."
-	},
-	{
-		"subject": "Напреден веб дизајн",
-		"type": "other",
-		"category": "material",
-		"content": "Дел од областите кои се покриени сметам дека се тотално непотребни особено за во областа на програмирање. Т.е. Се изучуваат некои стари технологии. Vue.js не се користи баш за работа, бидејќи преовладуваат React и Angular. На аудиториски решаваш како да направиш форма со 2 инпути и копче во Vue, на испит ти даваат да испрограмираш Game of life во Vue. True story."
-	},
-	{
-		"subject": "Програмирање на видео игри",
-		"type": "other",
-		"category": "staff",
-		"content": "Проф. Катарина Тројаначец, навистина добро објаснува и е достапна за прашања и/или консултации во било кое време."
-	},
-	{
-		"subject": "Програмирање на видео игри",
-		"type": "other",
-		"category": "material",
-		"content": "Се работи во pygame, софтвер за креирање едноставни игри преку пишување на python код. Секоја недела се изучува нова игра и имаш тест/домашна за таа игра, домашните се обично од тип, смени/додади нешто за играта да добие нова функционалност. "
-	},
-	{
-		"subject": "Администрација на системи",
-		"type": "other",
-		"category": "material",
-		"content": "Се изучува администрација на Linux системи. Прв колоквиум (поправено) ти е општо за Linux вовед, како функционира, systemd, потоа имаш DNS и DHCP (скоро истото како на мрежи, малце проширено). Втор колоквиум се веб сервери (Apache, Nginx), FTP, NFS и HTTP."
-	},
-	{
-		"subject": "Администрација на системи",
-		"type": "other",
-		"category": "staff",
-		"content": "Асистентот прилично добро објаснува практично. Има доста искуство и објаснува зошто ги прави работите што ги прави на сопствените сервери. Покажува и за Ubuntu и за CentOS."
-	},
-	{
-		"subject": "Администрација на системи",
-		"type": "other",
-		"category": "other",
-		"content": "Лесна 6ка, а со малку повеќе учење и повисока оцена. Испитите се повторуваат од сесија до сесија, со минимални или никакви разлики во задачите. Практичниот испит е open book (можеш и да гуглаш), и до тие 40% можеш да дојдеш и со навистина минимално знаење, со тоа што ќе ги извршуваш командите дадени во аудиториски без ништо да менуваш, и со малку гуглање да најдеш некои што ги нема. Пример задача ти е да инсталираш Apache Web Server (една-две команди се и ги има во слајдовите) и тоа ти носи 10%.  Сепак подобра варијанта ти е барем една целина да ја научиш добро и да ги извадиш сите поени за да имаш над 50, бидејќи инаку ќе мора да се вадиш на теорија."
-	},
-	{
-		"subject": "Веб програмирање",
-		"type": "evaluation",
-		"signature_condition": "",
-		"methods": [
-			{
-				"note": null,
-				"components": [
-					{
-						"category": "practical",
-						"percentage": 40
-					},
-					{
-						"category": "theory",
-						"percentage": 25
-					},
-					{
-						"category": "labs",
-						"percentage": 15
-					},
-					{
-						"category": "project",
-						"percentage": 20
-					}
-				]
-			}
-		]
-	},
-	{
-		"subject": "Веб програмирање",
-		"type": "other",
-		"category": "other",
-		"content": "Рок има до Март или Април и тоа е единствена шанса да се презентира. Проектот не е задолжителен."
-	},
-	{
-		"subject": "Веб програмирање",
-		"type": "other",
-		"category": "other",
-		"content": "Предметов е многу добар. Значи може да го рачунате како еден од најдобрите предмети на факултетов. Ако сега го започнувате третиот семестар, и првиве 2 години поминавте низ толку рандом предмети, овој предмет еден вид ќе ви ги отвори очите на поголемата слика, Работите од напредно кај се куцаат во реална апликација, базата кај оди, frontend-от кај се наоѓа, и како сите комуницираат еден со друг… Точно е дека понатаму ќе имате доста backend/frontend предмети, ама овој е мислам предмет кој не би го пропуштил. Предметот има доста голем материјал, ама речиси сите го положуваат."
-	},
-	{
-		"subject": "Веб програмирање",
-		"type": "other",
-		"category": "material",
-		"content": "Ако сакаш програмирање на големи проекти, што земаат недели можеби и месеци, предметот ќе ти дава feel good vibes. Се учи Java Spring кој е framework во Јава за веб-дев. Инкрементално се работи на еден проект и иста таква задача се паѓа на испит. На лабс кои се на секои 2 недели, се решава иста задача со варијација на тема- буквално можиш copy-paste од аудиториски. и лабораториските носат 15% од оценката."
-	},
-	{
-		"subject": "Веб програмирање",
-		"type": "other",
-		"category": "material",
-		"content": "Теорија се полага со дозволени материјали."
-	},
-	{
-		"subject": "Веб програмирање",
-		"type": "other",
-		"category": "material",
-		"content": "По предметот според мене се стекнува многу знаење и лесно се положува (скоро сите студенти го положуваат до крај на Јануарска сесија."
-	},
-	{
-		"subject": "Веб програмирање",
-		"type": "other",
-		"category": "material",
-		"content": "Предметов е 10/10 и можда еден од најкорисните на факс.."
-	},
-	{
-		"subject": "Веб програмирање",
-		"type": "other",
-		"category": "staff",
-		"content": "Кај Ристе доста се учи по Веб Програмирање бидејќи се труди да пренесе знаење и да соработува со студентите, знае да враќа брзо на мејлови или пак да ти среди ако ти се поклопуваат полагања со други предмети, меѓуто без разлика на професорот Веб Програмирање е еден од најкорисните предмети на факултетов."
-	},
-	{
-		"subject": "Веб програмирање",
-		"type": "other",
-		"category": "other",
-		"content": "Проектот годинава беше во група од 2 студенти (на некои можеби му беше дозволено и 3ца доколку е многу обемен ама не сум за ова сигурен). Можеш и сам да го правиш доколку сакаш. Може и групи од 3ца доколку е пообемен предметот."
-	},
-	{
-		"subject": "Веб програмирање",
-		"type": "other",
-		"category": "other",
-		"content": "Сами си бирате тема, која на консултации треба да ви ја одобрат. Треба да е се поголема тежина од аудиториските вежби, и да има плус технологии доколку групата што го избработува е повеќе од еден студент. Може доста лесно да ги добиете сите поени, а ако проектот ви е добар, може и повеќе од 20 поени да добиете. Добар предмет, доста корисен за компании во кои се работи со Spring Boot. Recommend."
-	},
-	{
-		"subject": "Управување со техничка поддршка",
-		"type": "other",
-		"category": "staff",
-		"content": "Кадарот се најодговорни на факултетов мислам. Тимовите за проектите сами си ги формираат студентите, па можеш да си во тим со колеги што знаеш дека навистина ќе сработат."
-	},
-	{
-		"subject": "Управување со техничка поддршка",
-		"type": "other",
-		"category": "material",
-		"content": "Најубавиот менаџерски предмет без сомневање сто пати да се запишам на факултетов сто пати ќе го изберам предметот. Се учат ITSM,ITIL,TMF,ODA и FitSM на предавања а на вежби се учи Канбан менаџерската методологија во Trello првите 2 вежби останатото се учи ОТРС тикетинг системот, преинтересна работа која ако знаеш што правиш дефинитивно ќе можеш да манипулираш и употребиш за секакви цели. Не се полага практично, само теорија на заокружување со radio buttons и дополнување реченици со испуштени зборови и точното да го изберите од радио буттон одговорот без multiple-choice или drop-down листи еднаш полагав извадив 8ца."
-	},
-	{
-		"subject": "Линеарна алгебра и примени",
-		"type": "other",
-		"category": "staff",
-		"content": "Предметот се полага најлесно на колоквиуми."
-	},
-	{
-		"subject": "Линеарна алгебра и примени",
-		"type": "other",
-		"category": "material",
-		"content": "Воопшто не е тешка математика. Се изучуваат линеарни равенки, системи, примена, независност, векторски простори, потпростори, бази, детерминанти итн."
-	},
-	{
-		"subject": "Интелигентни системи",
-		"type": "other",
-		"category": "other",
-		"content": "Теми кои беа опфатени на предметот: видови модели, класификатори, конволуциски невронски мрежи, SVM, претпроцесирање, кластерирање, дрва на одлучување, процесирање слики и звук, нешто кратко за биоинформатика и когнитивна наука. Истите теми се следеа на вежби со практични задачи (решавање на лист), а често Моника прикажуваше и интересни примери во Python. воглавно Моника не даде ништо повеќе од она што се работеше на аудиториските вежби. Има повеќе активности предметот, но одлична е организацијата и интересни се темите."
-	},
-	{
-		"subject": "Дизајн на алгоритми",
-		"type": "other",
-		"category": "other",
-		"content": "Разликата со АПС е тоа што немате ограничување во решавањето задачи на практичниот дел. Не е страшно оценувањеeто. Има добра книга напишано професорката Михова, за динамичко програмирање, што мислам дека треба и на АПС да се предложи."
-	},
-	{
-		"subject": "Дизајн на алгоритми",
-		"type": "other",
-		"category": "other",
-		"content": "Ако сте почетник во решавање на алгоритамски задачи, тешко ќе ви биде, но не и невозможно."
-	},
-	{
-		"subject": "Компјутерска анимација",
-		"type": "other",
-		"category": "other",
-		"content": "Предмет кој е многу интересен и лесен за сите оние кои ги интересира 3D моделирање и анимирање. Се изучува Blender, а за завршниот проект може да се работи и во Blender, Mudbox итн... Предметот го држи Бобан Јоксимовски, нема теорија, замарање со дефиниции и слични глупости, се се сведува на практична работа. Според мене, еден од подобрите предмети кои сум ги избрала, од чиста причина што се е сведено на практично учење и применување на наученото."
-	},
-	{
-		"subject": "Криптографија",
-		"type": "evaluation",
-		"signature_condition": null,
-		"methods": [
-			{
-				"note": "Условот за положување е често 50% од теорија и задачи заедно, не одделно, но може да се стави и некој мал услов на задачите.",
-				"components": [
-					{
-						"category": "theory",
-						"percentage": 45
-					},
-					{
-						"category": "practical",
-						"percentage": 45
-					},
-					{
-						"category": "labs",
-						"percentage": 10
-					}
-				]
-			}
-		]
-	},
-	{
-		"subject": "Криптографија",
-		"type": "other",
-		"category": "other",
-		"content": "Теоријата не е тешка не се бараат никакви математички докази, многу често прашањата е да се дефинира нешто. Откога се полага на курсес е со multiple choice прашања. Задачите на испит,колоквиуми се истите од аудиториските вежби со мали модификации."
-	},
-	{
-		"subject": "Софтверски квалитет и тестирање",
-		"type": "other",
-		"category": "other",
-		"content": "Интересен предмет ако сакате да научите повеќе за како се прави тестирање на апликации. Има неколку домашни кај што треба практично да се направи тоа што се учи на предавањата и вежбите - обично е пишување тестови за апликации во Јава."
-	},
-	{
-		"subject": "Пресметување во облак",
-		"type": "other",
-		"category": "other",
-		"content": "Од професорот Марјан Гушев: Предметот опфаќа материјал кој ви е потребен за да се стекнете со вештини како да создавате и менаџирате виртулена инстанца во облак. На почеток се изучуваат методите за виртуелизација и начинот на кој правиме дело од физичките компјутерските ресурси да се споделуваат со други корисници без да има преклопување или мешање меѓу различни корисници. Потоа се изучуваат методите како се организираат облаците, податочните центри и се друго околу пресметувањето во облак. На предавања се покажуваат концептите и објаснувата методите, а потоа на вежби конкретно се разрабоуваат одделни имплементации и се изучува како да се амдинистрираат истите."
-	},
-	{
-		"subject": "Визуелно програмирање",
-		"type": "other",
-		"category": "other",
-		"content": "По предметот има предавања и аудиториски, но не се полага теорија, туку само практично. Има изработка на проект(најчесто се изработуваат игри, но може да биде и нешто друго по желба) и може да се објектноизработува индивидуално или во група. Се вреднува креативност при изработка на проектот, визуелномногу повеќе од техничката совршеност само да се гледаат аудиториските. Многу интересен предмет, и доста лесен."
-	},
-	{
-		"subject": "Електрични кола",
-		"type": "other",
-		"category": "other",
-		"content": "Се полагаат електрични кола - нивно цртање и што се случува во нив. ве советувам да ги користите ресурсите од allaboutcircuits.com - бидејќи ако колегите од Електро не се делат од нив, а таман основите ги покриваат најубаво, зашто да не. Ако ги правите, за да си имате пошироки знаења за оние maker-ски предмет"
-	},
-	{
-		"subject": "Основи на сајбер безбедноста",
-		"type": "other",
-		"category": "other",
-		"content": "Интересен предмет и вовед за оние кои ги интересира сајбер безбедноста. Лесно се положува ако се следат предавањата и вежбите. Со малку повеќе труд може да се извади висока оценка. Површински се допираат многу теми на сајбер безбедноста, за студентите да имаат престава што се случува во секое поле, а потоа вие си бирате дали ќе навлегувате или не. "
-	},
-	{
-		"subject": "Маркетинг",
-		"type": "other",
-		"category": "other",
-		"content": "Прелесен предмет, се учи во два дена. Има база на прашања и за прв и за втор колоквиум. Одличен предмет за подобрување на вашиот просек. Ви го препорачувам доколку сакате да посветите внимание на други потешки предмети кои всушност би ви користеле во вашата кариера."
-	},
-	{
-		"subject": "Претприемништво",
-		"type": "other",
-		"category": "other",
-		"content": "Предобар предмет доколку навистина те интересира претприемништвото. Низ целиот семестар осмислуваш бизнис идеја, ја валидираш и спремаш pitch. Кога јас го полагав, крајната фаза (самото полагање) беше да презентираш пред некои поуспешни македонски претприемачи и pitch-увањето беше организирано во форма на натпревар. Победникот (оној кој ќе добие понуда за инвестиција и оној кој ќе биде изгласан од жирито) има оцена 10, без разлика на останатите активности во семестарот. Го предава Трајковиќ (изгуглај му историја) - што значи учиш од најдобриот во оваа област, бар во МК."
-	},
-	{
-		"subject": "Напредни бази на податоци",
-		"type": "other",
-		"category": "other",
-		"content": "интересни ствари се учат, индексирање, податочни коцки, query performance, sequential scanning etc."
-	},
-	{
-		"subject": "Претприемништво",
-		"type": "other",
-		"category": "other",
-		"content": "Лесен предмет. Се полага на 2 колоквиуми или се оди на испит. Испитот се состои од прашања на заокружување и да објасниш зошто баш тој одговор си заокружил. Има групен проект со уште 4 колеги, потребно е неделен извештај да се прави т.е да се објасни што сте работеле таа недела и точно кој што изработил. На крај треба да се брани проектот пред професори и тие ќе ги распоредат поените соодветно. "
-	},
-	{
-		"subject": "Програмски парадигми",
-		"type": "other",
-		"category": "material",
-		"content": "Логичко: Prolog со Кире Т. | Функционално: Clojure со Емил С."
-	},
-	{
-		"subject": "Мобилни информациски системи",
-		"type": "other",
-		"category": "material",
-		"content": "Се учи Flutter, се полага преку проект и лабс"
-	},
-	{
-		"subject": "Компјутерска графика",
-		"type": "evaluation",
-		"signature_condition": "Домашни задачи, лабораториски вежби, квизови/тестови и проект.",
-		"methods": [
-			{
-				"note": "nema kolokviumi",
-				"components": [
-					{ "category": "labs", "percentage": 10 },
-					{ "category": "homework", "percentage": 20 },
-					{ "category": "theory", "percentage": 30 },
-					{ "category": "project", "percentage": 40 }
-				]
-			}
-		]
-	},
-	{
-		"subject": "Сервисно ориентирани архитектури",
-		"type": "evaluation",
-		"signature_condition": "Теорија, аудиториски со презентации и проект.",
-		"methods": [
-			{
-				"note": null,
-				"components": [
-					{ "category": "theory", "percentage": 40 },
-					{ "category": "presentation", "percentage": 40 },
-					{ "category": "project", "percentage": 20 }
-				]
-			}
-		]
-	},
-	{
-		"subject": "Дигитални библиотеки",
-		"type": "other",
-		"category": "other",
-		"content": "Проектот е да направите транскрипција од дадени аудио снимки. Тоа што се зборува во аудиото, вие треба да го напишете. Се даваат околу 4-5 часа аудио, ги делите на делчиња од 10-15 секунди и пишувате тоа што слушате. "
-	},
-	{
-		"subject": "Мобилни апликации",
-		"type": "other",
-		"category": "other",
-		"content": "За 10ка мораш да ја спремиш (потребно ќе биде САМО да ги исполнува условите за да може да се постави на маркет) апликацијата за маркет што не е така лесен процес."
-	},
-	{
-		"subject": "Машинско учење",
-		"type": "other",
-		"category": "material",
-		"content": "Во изминатите две години, предметот има премногу математички осврт кон областа (веројатносни модели и сл.)... има некои примери со sklearn но минимални, повеќе се обрнува внимание на математиката позади тие функции од sklearn"
-	},
-	{
-		"subject": "Архитектура и организација на компјутери",
-		"type": "other",
-		"category": "material",
-		"content": "Предметот е обемен и се учи како работи компјутерот, делови како рам меморија, кеш меморија. Се учи цела архитектура на mips процесор детално. Практичниот дел во прв колоквиум се задачи поврзани со перформанси додека за втор се учи асемблерско програмирање во mips околина со mars програмата."
-	},
-	{
-		"subject": "Безжични и мобилни системи",
-		"type": "other",
-		"category": "other",
-		"content": "Запишете го предметов само ако ве интересираат мрежи и се ориентирате кон мрежи предмет. "
-	},
-	{
-		"subject": "Безжични и мобилни системи",
-		"type": "other",
-		"category": "material",
-		"content": "Се изучуваат 802.11 амандманите во делот на вежби, а на предавањата се учи GSM,3G,4G,5G и многу други работи."
-	},
-	{
-		"subject": "Вовед во биоинформатиката",
-		"type": "other",
-		"category": "other",
-		"content": "Доколку не ве интересира клеточна биологија и барате некој лесно положлив предмет, не го зимајте. Во спротивно, на многу колеги предметов ми бил еден од најинтересните предмети на факултетов, биде тешко, ама бара умерена посветеност."
-	},
-	{
-		"subject": "Вовед во науката за податоци",
-		"type": "other",
-		"category": "other",
-		"content": "После предметов ако ве интересира областа, слободно може да си правите проектчиња, предметов + chatGPT и веќе сте Data Science инжинерчиња (како да не). Плус ако планирате да земете Машинско Учење следен семестар, на тој предмет не се учи Python, а ќе се бара лабсовите да се во python напишани, така да тој предмет ќе ви го направи полесен"
-	},
-	{
-		"subject": "Вовед во науката за податоци",
-		"type": "other",
-		"category": "staff",
-		"content": "Супер професор и асистент, минатиот семестар имавме и гостински предавачи од кои еден од нив работи во Google :), добар вовед во python."
-	},
-	{
-		"subject": "Инженерска математика",
-		"type": "other",
-		"category": "material",
-		"content": "Нумеричка математика, нумерички методи, нешто од диференцијални равенки, математички трансформации (фуриеви, лапласова)."
-	},
-	{
-		"subject": "Економија за ИКТ инженери",
-		"type": "other",
-		"category": "material",
-		"content": "Лесен предмет, се учат корисни економски концепти кои можат да се најдат во секојдневниот живот. Лесен предмет, добри професори, интересни предавања. Има бази и истите прашања се повторуваат."
-	},
-	{
-		"subject": "Напредно програмирање",
-		"type": "other",
-		"category": "material",
-		"content": "Повеќе е посветен предметот за како да направиш добра структура на кодот и на оптимални решенија за решавање на задачата(проблемот) или дел од задачата. Се учат и некои design patterns што се доста важни за ООП базиран развој на софтвер. Иако се учи во Java на предметов, темите што се учат можат да се поврзат со секој ООП програмски јазик. "
-	},
-	{
-		"subject": "Напредно програмирање",
-		"type": "other",
-		"category": "material",
-		"content": "Според мене, предметов треба да е задолжителен. Ако сакаш да научиш програмирање, не бива без напредно. Се учи функционално програмирање преку Java 8 Streams API, што е многу корисно за учење на други јазици што се базирани на функционално програмирање (Haskell, Scala). Дава основа и за други предмети, пред се за Алгоритами и Податочни Структури, што би се слушал паралелно со НП. Корисен и за интервјуа, на интервју за пракса голем дел од прашањата, и некои такви по специфични ги знаев одговорите ради предметов."
-	},
-	{
-		"subject": "Напредно програмирање",
-		"type": "other",
-		"category": "material",
-		"content": "Топла препорака земете го предметов. Овој предмет ќе ви даде и одлична подготовка на програмскиот јазик Јава, на факултетов многу од идните предмети се во јава."
-	},
-	{
-		"subject": "Математика 1",
-		"type": "other",
-		"category": "staff",
-		"content": "Предавањата слушајте ги кај проф. Д-р Весна Димитрова, IT’S A MUST!"
-	},
-	{
-		"subject": "Веројатност и статистика",
-		"type": "other",
-		"category": "other",
-		"content": "Корисен предмет но ќе цркнеш од учење."
-	},
-	{
-		"subject": "Бази на податоци",
-		"type": "other",
-		"category": "other",
-		"content": "Не можеш да се жалиш дека немаш од каде да учиш. Професорите нудат премногу ресурси помеѓу снимените предавања, вежби, предавања за повторување, книги, решени задачи, лабораториски за вежбање итн, со други зборови, ако дојде време на испит да не си спремен, that’s on you. Не е како кај некои други предмети каде мораш да копаш по интернет за да сфатиш шо се бара од тебе и да можеш да положиш."
-	},
-	{
-		"subject": "Бази на податоци",
-		"type": "other",
-		"category": "other",
-		"content": " На почетокот можете да одберите дали да правите лабораториски за потпис кои не носат поени и се многу едноставни и лесни или пак да правите проект кој носи 10% од оценката. Проектот се прави по фази и секоја фаза се презентира на консултации преку една недела. На крај се презентира целиот изработен проект."
-	},
-	{
-		"subject": "Бази на податоци",
-		"type": "other",
-		"category": "other",
-		"content": "Најмногу внимание обрнете на “Повторување и утврдување” делот преку кој се сумираат сите важни информации од лекциите а и се прикажани примери кои се слични на задачите што се паѓаат на испити и колоквиуми"
-	}
-]
Index: ckend/subjects/management/data/subject_details.json
===================================================================
--- backend/subjects/management/data/subject_details.json	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,4417 +1,0 @@
-{
-	"Архитектура и организација на компјутери": {
-		"subject": "Архитектура и организација на компјутери",
-		"code": "F18L1S003, F23L1S003",
-		"level": 1,
-		"abstract": "Разбирање на главните компјутерски архитектури, внатрешната организација, проценка на перформансите на поедините делови и компјутерскиот систем во целинa.",
-		"prerequisite": {},
-		"activated": true,
-		"participants": [1063, 1311, 1350],
-		"mandatory": true,
-		"mandatoryFor": ["SIIS23", "PIT23", "KN23"],
-		"semester": 2,
-		"season": "S",
-		"electiveFor": [],
-		"professors": [
-			"Љупчо Антовски",
-			"Билјана Стојкоска Ристеска",
-			"Владимир Здравески",
-			"Дејан Спасов",
-			"Игор Мишковски",
-			"Магдалена Костоска Ѓорчевска",
-			"Марјан Гушев",
-			"Мирослав Мирчев",
-			"Моника Симјаноска",
-			"Сашо Граматиков"
-		],
-		"assistants": [
-			"Јана Кузманова",
-			"Јована Добрева",
-			"Војдан Ќорвезироски",
-			"Марија Танеска",
-			"Ненад Анчев"
-		],
-		"tags": ["Computer Architecture", "Systems Infrastructure"],
-		"technologies": [],
-		"evaluation": ["Theory", "Practical"],
-		"isEasy": false
-	},
-	"Бизнис и менаџмент": {
-		"subject": "Бизнис и менаџмент",
-		"code": "F18L1W005, F23L1W005",
-		"level": 1,
-		"abstract": "Развој на менаџерски способности: техничка, концепциска, комуникациска, аналитичка.\nУсвојување на рамки, поими, модели и техники од областа на менаџментот.\nПрезентирање и анализа на примери, студии на случај и најдобри менаџмент практики од повеќе бизнис области и студии на случај на поодделни бизниси.",
-		"prerequisite": {},
-		"activated": true,
-		"participants": [814, 989, 951],
-		"mandatory": true,
-		"mandatoryFor": ["SIIS23", "IMB23", "PIT23"],
-		"semester": 1,
-		"season": "W",
-		"electiveFor": [],
-		"professors": [
-			"Владимир Здравески",
-			"Георгина Мирчева",
-			"Ристе Стојанов",
-			"Смилка Јанеска Саркањац"
-		],
-		"assistants": ["Александар Тенев", "Милена Трајаноска"],
-		"tags": ["Societal Skills"],
-		"technologies": [],
-		"evaluation": ["Theory"],
-		"isEasy": true
-	},
-	"Бизнис статистика": {
-		"subject": "Бизнис статистика",
-		"code": "F18L1S023, F23L1S023",
-		"level": 1,
-		"abstract": "Запознавање со основните статистички методи и техники за прикажување, анализа и истражување на податоци.",
-		"prerequisite": {},
-		"activated": true,
-		"participants": [830, 801, 698],
-		"mandatory": true,
-		"mandatoryFor": ["PIT23"],
-		"semester": 2,
-		"season": "S",
-		"electiveFor": [],
-		"professors": [
-			"Александра Поповска Митровиќ",
-			"Верица Бакева Смиљкова",
-			"Весна Димитриевска Ристовска",
-			"Методија Јанчески",
-			"Наташа Илиевска"
-		],
-		"assistants": ["Петар Секулоски"],
-		"tags": ["Data Science", "Mathematics"],
-		"technologies": [],
-		"evaluation": ["Theory", "Practical"],
-		"isEasy": false
-	},
-	"Вовед во компјутерските науки": {
-		"subject": "Вовед во компјутерските науки",
-		"code": "F18L1W007, F23L1W007",
-		"level": 1,
-		"abstract": "Солидно познавање на основите на информатичко-комуникациските технологии, нивното создавање, моментална состојба и иднината; начинот на кој функционираат сметачите, основите на Веб, обработката на сликите, видеото и анимациите; клучните области на информациско-комуникациските технологии и нивното влијание: спососност за манипулација со текст, табели, графикони, слики, аудио и видео.",
-		"prerequisite": {},
-		"activated": true,
-		"participants": [891, 1096, 1155],
-		"mandatory": true,
-		"mandatoryFor": ["SIIS23", "IMB23", "PIT23", "IE23", "KN23"],
-		"semester": 1,
-		"season": "W",
-		"electiveFor": [],
-		"professors": [
-			"Билјана Стојкоска Ристеска",
-			"Бојана Котеска",
-			"Иван Китановски",
-			"Катерина Здравкова",
-			"Коста Митрески",
-			"Панче Рибарски"
-		],
-		"assistants": [
-			"Александар Тенев",
-			"Кирил Ќироски",
-			"Стефан Андонов",
-			"Марија Танеска",
-			"Марија Стојчева"
-		],
-		"tags": ["Computer Science"],
-		"technologies": [],
-		"evaluation": ["Theory", "Practical"],
-		"isEasy": false
-	},
-	"Дизајн на дигитални кола": {
-		"subject": "Дизајн на дигитални кола",
-		"code": "F18L1W041, F23L2W041",
-		"level": 2,
-		"abstract": "Запознавање со основните методи за анализа и дизајн на логички кола и логички мрежи, како комбинациони така\nи секвенцијални кола, регистри и бројачи.",
-		"prerequisite": {},
-		"activated": true,
-		"participants": [33, 59, 157],
-		"mandatory": true,
-		"mandatoryFor": ["KI23"],
-		"semester": 1,
-		"season": "W",
-		"electiveFor": [],
-		"professors": ["Милош Јовановиќ"],
-		"assistants": ["Јована Добрева"],
-		"tags": ["Computer Architecture", "Embedded Systems"],
-		"technologies": [],
-		"evaluation": ["Theory", "Practical"],
-		"isEasy": false
-	},
-	"Дискретна математика": {
-		"subject": "Дискретна математика",
-		"code": "F18L1W011, F23L2S011",
-		"level": 2,
-		"abstract": "Курсот претставува вовед во основните математички концепти неопходни за повисоките курсеви од информациски технологии, компјутерско и софтверско инженерство.",
-		"prerequisite": {},
-		"activated": true,
-		"participants": [33, 0, 1602],
-		"mandatory": true,
-		"mandatoryFor": ["KI23"],
-		"semester": 2,
-		"season": "S",
-		"electiveFor": [],
-		"professors": [],
-		"assistants": [],
-		"tags": ["Mathematics", "Computer Science"],
-		"technologies": [],
-		"evaluation": ["Theory", "Practical"],
-		"isEasy": false
-	},
-	"Дискретни структури 1": {
-		"subject": "Дискретни структури 1",
-		"code": "F18L1W031, F23L2W031",
-		"level": 2,
-		"abstract": "Во овој предмет ќе се изучуваат базични математички концепти за компјутерски науки. Студентите ќе се запознаат со основите на множества, исказна и предикатна логика, техники за докажување и булова алгебра.",
-		"prerequisite": {},
-		"activated": true,
-		"participants": [100, 121, 163],
-		"mandatory": true,
-		"mandatoryFor": ["KN23"],
-		"semester": 1,
-		"season": "W",
-		"electiveFor": [],
-		"professors": ["Билјана Тојтовска Рибарски", "Марија Михова"],
-		"assistants": ["Петар Секулоски"],
-		"tags": ["Mathematics", "Computer Science"],
-		"technologies": [],
-		"evaluation": ["Theory", "Practical"],
-		"isEasy": false
-	},
-	"Дискретни структури 2": {
-		"subject": "Дискретни структури 2",
-		"code": "F18L1S032, F23L2S032",
-		"level": 2,
-		"abstract": "Курсот претставува вовед во основните математички концепти неопходни за повисоките курсеви од компјутерски науки. Ќе се изучуваат напредни техники за докажување, индукција рекурзија. Студентите треба да стекнат вештини за решавање на комбинаторни задачи. Да се запознаат со основната терминологија и основите за претставување на графови.",
-		"prerequisite": {},
-		"activated": true,
-		"participants": [103, 136, 163],
-		"mandatory": true,
-		"mandatoryFor": ["KN23"],
-		"semester": 2,
-		"season": "S",
-		"electiveFor": [],
-		"professors": ["Марија Михова"],
-		"assistants": ["Петар Секулоски"],
-		"tags": ["Mathematics", "Computer Science"],
-		"technologies": [],
-		"evaluation": ["Theory", "Practical"],
-		"isEasy": false
-	},
-	"Е-учење": {
-		"subject": "Е-учење",
-		"code": "F18L1S052, F23L1S052",
-		"level": 1,
-		"abstract": "По успешното завршување на овој предмет, студентот ќе биде запознат со еволуцијата на теориите за учење и ќе биде во состојба да ги разбере улогата и новите трендови кај околините за е-учење како и да го разбере преминот од традиционалните во е-околините за учење. Низ примери за примена на видео игри, масивни отворени онлајн курсеви, оддалечени и виртуелни лаборатории, виртуелни училници студентите ќе се запознаат со можностите за искористување на ИКТ за поддршка на образованието. Студентите ќе се стекнат со способност да понудат соодветни постојни системи и алатки за менаџирање со учење и наставни содржини како и системи и алатки за проверка на знаење за дадени бизнис побарувања.",
-		"prerequisite": {},
-		"activated": true,
-		"participants": [77, 62, 56],
-		"mandatory": true,
-		"mandatoryFor": ["IE23"],
-		"semester": 2,
-		"season": "S",
-		"electiveFor": ["IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"professors": ["Миле Јованов", "Емил Станков"],
-		"assistants": ["Мартин Динев", "Мартина Тошевска"],
-		"tags": ["Education", "Societal Skills"],
-		"technologies": [],
-		"evaluation": ["Theory", "Project"],
-		"isEasy": true
-	},
-	"Математика 1": {
-		"subject": "Математика 1",
-		"code": "F18L1S013, F23L2W002",
-		"level": 2,
-		"abstract": "Предметот е од подршка и е неопходен за воведување на поимите за функција, лимес, извод и интеграли кои се неопходни во скоро сите предмети од повисоки години.",
-		"prerequisite": {},
-		"activated": true,
-		"participants": [980, 975, 923],
-		"mandatory": true,
-		"mandatoryFor": ["SIIS23", "IMB23", "IE23"],
-		"semester": 1,
-		"season": "W",
-		"electiveFor": [],
-		"professors": ["Весна Димитриевска Ристовска"],
-		"assistants": [],
-		"tags": ["Mathematics", "Computer Science"],
-		"technologies": [],
-		"evaluation": ["Theory", "Practical"],
-		"isEasy": false
-	},
-	"Калкулус 1": {
-		"subject": "Калкулус 1",
-		"code": "F18L1W033, F23L2W033",
-		"level": 2,
-		"abstract": "Предметот е од подршка и е неопходен за воведување на поимите за функција, лимес и извод кои се неопходни во скоро сите предмети од повисоки години.",
-		"prerequisite": {},
-		"activated": true,
-		"participants": [144, 222, 363],
-		"mandatory": true,
-		"mandatoryFor": ["KI23", "KN23"],
-		"semester": 1,
-		"season": "W",
-		"electiveFor": [],
-		"professors": ["Весна Димитриевска Ристовска", "Методија Јанчески"],
-		"assistants": ["Петар Секулоски"],
-		"tags": ["Mathematics", "Computer Science"],
-		"technologies": [],
-		"evaluation": ["Theory", "Practical"],
-		"isEasy": false
-	},
-	"Калкулус 2": {
-		"subject": "Калкулус 2",
-		"code": "F18L1S034, F23L2S034",
-		"level": 2,
-		"abstract": "Предметот е од подршка и е неопходен за воведување на поимите за интеграли, примена на интерграли, низи и редови кои се неопходни во дел од предметите од повисоки години.",
-		"prerequisite": {},
-		"activated": true,
-		"participants": [189, 269, 380],
-		"mandatory": true,
-		"mandatoryFor": ["KI23", "KN23"],
-		"semester": 2,
-		"season": "S",
-		"electiveFor": [],
-		"professors": [
-			"Александра Поповска Митровиќ",
-			"Верица Бакева Смиљкова",
-			"Ласко Баснарков"
-		],
-		"assistants": ["Петар Секулоски"],
-		"tags": ["Mathematics", "Computer Science"],
-		"technologies": [],
-		"evaluation": ["Theory", "Practical"],
-		"isEasy": false
-	},
-	"Компјутерски архитектури": {
-		"subject": "Компјутерски архитектури",
-		"code": "F18L1S045, F23L1S045",
-		"level": 1,
-		"abstract": "Разбирање на архитектурата на еден компјутерски систем, идентификација на неговите составни делови, проценка на перформансите на компјутерскиот систем и неговите поединечни делови. Разбирање на машинскиот јазик, асемблерот и мемориската организација на системите.",
-		"prerequisite": {},
-		"activated": true,
-		"participants": [186, 231, 338],
-		"mandatory": true,
-		"mandatoryFor": ["IMB23", "IE23", "KI23"],
-		"semester": 2,
-		"season": "S",
-		"electiveFor": [],
-		"professors": ["Моника Симјаноска", "Ристе Стојанов"],
-		"assistants": ["Јована Добрева"],
-		"tags": ["Computer Architecture"],
-		"technologies": [],
-		"evaluation": ["Theory", "Practical"],
-		"isEasy": false
-	},
-	"Компјутерски компоненти": {
-		"subject": "Компјутерски компоненти",
-		"code": "F18L1S116, F23L1S116",
-		"level": 1,
-		"abstract": "Познавање на структурата на компјутерските системи, хардверските компоненти, поврзувањето и начинот на\nработа, карактеристиките и стандардите што се употребуваат.",
-		"prerequisite": {},
-		"activated": true,
-		"participants": [92, 86, 88],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "S",
-		"semester": 2,
-		"professors": ["Андреја Наумоски", "Коста Митрески"],
-		"assistants": [],
-		"tags": ["Computer Architecture", "Embedded Systems"],
-		"technologies": [],
-		"evaluation": ["Theory"],
-		"isEasy": true
-	},
-	"Креативни вештини за решавање проблеми": {
-		"subject": "Креативни вештини за решавање проблеми",
-		"code": "F18L1S120, F23L1S120",
-		"level": 1,
-		"abstract": "Студентот ќе се здобие со способност за критичко размислување и развој на вештините на размислување надвор од стандардните норми и принципи. Ќе биде во можност да го постави проблемот во рамка и да го изложи правилно, како и да решава неструктурирани проблеми. Ќе има подобрени вештини за општо решавање на проблеми од различен карактер кои стимулираат логичко размислување.",
-		"prerequisite": {},
-		"activated": true,
-		"participants": [98, 88, 44],
-		"mandatory": true,
-		"mandatoryFor": ["IE23"],
-		"semester": 4,
-		"season": "S",
-		"electiveFor": ["IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"professors": ["Владимир Трајковиќ", "Соња Филипоска"],
-		"assistants": ["Славе Темков"],
-		"tags": ["Societal Skills"],
-		"technologies": [],
-		"evaluation": ["Theory"],
-		"isEasy": true
-	},
-	"Маркетинг": {
-		"subject": "Маркетинг",
-		"code": "F18L1S026, F23L2S026",
-		"level": 2,
-		"abstract": "Вовед во главните елементи за развој на маркетинг стратегија и планирање на програма за маркетинг; Развој на вештини за решавање на маркетинг проблеми преку аналитички алатки (рамки, поими, модели и техники); Анализа на примери и студии на случај како претпријатијата го организираат својот маркетинг, со акцент на ИКТ претпријатија; Подобрување на комуникациските вештини, усни и писмени, работа во тим при изработка на проектна задача, презентирање на проектната задача.",
-		"prerequisite": {
-			"credits": 36
-		},
-		"activated": true,
-		"participants": [450, 220, 593],
-		"mandatory": true,
-		"mandatoryFor": ["PIT23"],
-		"semester": 4,
-		"season": "S",
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "SIIS23"],
-		"professors": ["Смилка Јанеска Саркањац"],
-		"assistants": ["Александар Тенев"],
-		"tags": ["Societal Skills"],
-		"technologies": [],
-		"evaluation": ["Theory"],
-		"isEasy": true
-	},
-	"Објектно ориентирана анализа и дизајн": {
-		"subject": "Објектно ориентирана анализа и дизајн",
-		"code": "F18L1S015, F23L2S015",
-		"level": 2,
-		"abstract": "Запознавање со техниките за анализа, дизајн и моделирање на објектно ориентираните системи. Оспособување за практична анализа на кориснички барања и креирање ефективни ОО модели како почетна фаза на имплементацијата на ОО системот.",
-		"prerequisite": {},
-		"activated": true,
-		"participants": [433, 464, 489],
-		"mandatory": true,
-		"mandatoryFor": ["SIIS23"],
-		"semester": 2,
-		"season": "S",
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23"],
-		"professors": [
-			"Бојана Котеска",
-			"Илинка Иваноска",
-			"Кире Триводалиев",
-			"Петре Ламески",
-			"Слободан Калајџиски"
-		],
-		"assistants": ["Мартина Тошевска", "Славе Темков"],
-		"tags": ["Software Engineering"],
-		"technologies": [],
-		"evaluation": ["Theory", "Practical"],
-		"isEasy": false
-	},
-	"Објектно-ориентирано програмирање": {
-		"subject": "Објектно-ориентирано програмирање",
-		"code": "F18L1S016, F23L1S016",
-		"level": 1,
-		"abstract": "Целта на предметот е да го запознае студентот со основните концепти на објектно-ориентираното програмирање. За таа цел ќе бидат воведени концептите на објекти и класи, eнкапсулација, наследување и полиморфизам. Студентите ќе бидат запознаени и со хиерахијата на класи. Ќе се направат споредби на имплементациите на објектно-ориентираните концепти во различни програмски јазици.\nПо завршување на курсот студентот ќе ги разбира принципите на објектно-ориентираното програмирање и биде оспособен за развој на програми кои ги подржуваат овие принципи.",
-		"prerequisite": {},
-		"activated": true,
-		"participants": [1679, 1687, 1797],
-		"mandatory": true,
-		"mandatoryFor": ["SIIS23", "IMB23", "PIT23", "IE23", "KI23", "KN23"],
-		"semester": 2,
-		"season": "S",
-		"electiveFor": [],
-		"professors": [
-			"Ѓорѓи Маџаров",
-			"Александар Стојменски",
-			"Александар Стојменски",
-			"Ана Мадевска Богданова",
-			"Бобан Јоксимоски",
-			"Дејан Ѓорѓевиќ",
-			"Иван Чорбев",
-			"Ивица Димитровски",
-			"Катарина Тројачанец Динева",
-			"Невена Ацковска",
-			"Христина Михајлоска Трпческа"
-		],
-		"assistants": [
-			"Александар Тенев",
-			"Влатко Спасев",
-			"Димитар Китановски",
-			"Живко Атанаскоски",
-			"Марија Танеска",
-			"Стефан Андонов"
-		],
-		"tags": ["Software Engineering", "Computer Science"],
-		"technologies": ["C++"],
-		"evaluation": ["Theory", "Code"],
-		"isEasy": false
-	},
-	"Основи на Веб дизајн": {
-		"subject": "Основи на Веб дизајн",
-		"code": "F18L1S146, F23L1S146",
-		"level": 1,
-		"abstract": "По комплетирање на курсот кандидатите се очекува студентите да добијат воведни знаењаза развој на веб страници со современ дизајн, употреба на ХТМЛ и каскадни стилови. Се очекува кандидатите да:\n1. Демонстрираат основно разбирање на важноста на добар дизајн на веб страниците.\n2. Демонстрираат практично знаење за технологиите за веб дизајн и да можат да го применат знаењето при основно дизајнирање на веб сајтови.\n3. Да комуницираат со терминологија специфична за оваа област.\n4. Критички да евалуираат примери на веб сајтови.",
-		"prerequisite": {},
-		"activated": true,
-		"participants": [824, 1023, 999],
-		"mandatory": true,
-		"mandatoryFor": ["PIT23", "IE23"],
-		"semester": 2,
-		"season": "S",
-		"electiveFor": ["IMB23", "KI23", "KN23", "SIIS23"],
-		"professors": [
-			"Александар Стојменски",
-			"Бобан Јоксимоски",
-			"Гоце Арменски",
-			"Иван Китановски",
-			"Иван Чорбев",
-			"Слободан Калајџиски"
-		],
-		"assistants": ["Влатко Спасев", "Димитар Китановски"],
-		"tags": ["Web Development", "UI/UX & Digital Media"],
-		"technologies": ["HTML", "CSS"],
-		"evaluation": ["Theory", "Code"],
-		"isEasy": false
-	},
-	"Основи на сајбер безбедноста": {
-		"subject": "Основи на сајбер безбедноста",
-		"code": "F18L1S066, F23L1S066",
-		"level": 1,
-		"abstract": "Студентот ќе се запознае со концептот на сајбер безбедност, закани и ризици. Ќе биде свесен за проблемите предизвикани од сајбер криминалот и ќе биде во можност да ги разбира ризиците од напади и основните механизми како да се заштити од нив.",
-		"prerequisite": {},
-		"activated": true,
-		"participants": [457, 458, 213],
-		"mandatory": true,
-		"mandatoryFor": ["IMB23"],
-		"semester": 2,
-		"season": "S",
-		"electiveFor": ["IE23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"professors": ["Анастас Мишев", "Соња Филипоска"],
-		"assistants": ["Владислав Бидиков", "Војдан Ќорвезироски"],
-		"tags": ["Cybersecurity", "Networking"],
-		"technologies": [],
-		"evaluation": ["Theory"],
-		"isEasy": true
-	},
-	"Педагогија": {
-		"subject": "Педагогија",
-		"code": "F18L1W070, F23L2W070",
-		"level": 2,
-		"abstract": "Запознавање на студентите со педагогијата како наука, педагошките дисциплини, воспитанието и училишниот систем.",
-		"prerequisite": {},
-		"activated": true,
-		"participants": [1, 7, 30],
-		"mandatory": true,
-		"mandatoryFor": ["IE23"],
-		"semester": 1,
-		"season": "W",
-		"electiveFor": [],
-		"professors": ["Елена Ризов"],
-		"assistants": [],
-		"tags": ["Education", "Societal Skills"],
-		"technologies": [],
-		"evaluation": ["Theory"],
-		"isEasy": true
-	},
-	"Професионални вештини": {
-		"subject": "Професионални вештини",
-		"code": "F18L1W018, F23L1W018",
-		"level": 1,
-		"abstract": "Целта на курсот е да студентите да се стекнат со вештини потребни за академско и техничко пишување и презентирање, со водење сметка за етиката и критичкото мислење. По завршување на курсот се очекува студентот да може да изработи квалитетни академски текстови (резиме, есеј, CV, формално писмо) на англиски и македонски јазик; да разликува помеѓу различни технички текстови (спецификација, елаборат, извештај, техничка документација) и да идентификува нивни делови; да одржи ефективна презентација на зададена тема и да одговори на прашања поврзани со презентацијата;",
-		"prerequisite": {},
-		"activated": true,
-		"participants": [958, 972, 1132],
-		"mandatory": true,
-		"mandatoryFor": ["SIIS23", "IMB23", "PIT23", "IE23", "KI23", "KN23"],
-		"semester": 1,
-		"season": "W",
-		"electiveFor": [],
-		"professors": [
-			"Андреја Наумоски",
-			"Билјана Стојкоска Ристеска",
-			"Кире Триводалиев",
-			"Ласко Баснарков",
-			"Магдалена Костоска Ѓорчевска",
-			"Миле Јованов",
-			"Мирослав Мирчев",
-			"Панче Рибарски"
-		],
-		"assistants": [],
-		"tags": ["Societal Skills"],
-		"technologies": [],
-		"evaluation": ["Project"],
-		"isEasy": true
-	},
-	"Структурно програмирање": {
-		"subject": "Структурно програмирање",
-		"code": "F18L1W020, F23L1W020",
-		"level": 1,
-		"abstract": "Да се воведат студентите во парадигмата на структурното програмирање, да го разберат концептот на алгоритми и да се оспособат да развиваат алгоритми, да кодират, тестираат и компајлираат програми. Студентите ќе можат да пишуваат програми за решавање проблеми преку користење на податочни типови, контролни структури, функции, низи во програмскиот јазик C++.",
-		"prerequisite": {},
-		"activated": true,
-		"participants": [1621, 1757, 1815],
-		"mandatory": true,
-		"mandatoryFor": ["SIIS23", "IMB23", "PIT23", "IE23", "KI23", "KN23"],
-		"semester": 1,
-		"season": "W",
-		"electiveFor": [],
-		"professors": [
-			"Ѓорѓи Маџаров",
-			"Ана Мадевска Богданова",
-			"Бобан Јоксимоски",
-			"Дејан Ѓорѓевиќ",
-			"Емил Станков",
-			"Иван Чорбев",
-			"Ивица Димитровски",
-			"Катарина Тројачанец Динева",
-			"Миле Јованов",
-			"Невена Ацковска",
-			"Христина Михајлоска Трпческа",
-			"Александар Стојменски"
-		],
-		"assistants": [
-			"Александар Тенев",
-			"Влатко Спасев",
-			"Димитар Китановски",
-			"Стефан Андонов",
-			"Марко Петров",
-			"Ема Пандилова",
-			"Мартин Динев"
-		],
-		"tags": ["Software Engineering", "Computer Science"],
-		"technologies": ["C++"],
-		"evaluation": ["Theory", "Code"],
-		"isEasy": false
-	},
-	"Физика": {
-		"subject": "Физика",
-		"code": "F18L1W049, F23L2W049",
-		"level": 2,
-		"abstract": "Студентите ќе се запознаат со основните физички величини и закони од класичната механика. Тие ќе се стекнат со основни вештини за експериментална работа, како и за пресметување и правилно толкување на добиените резултати од областите кои се дел од содржината. Теоретските знаења на студентите ќе бидат солидна подлога за понатамошна надградба која е потребна за разбирање и моделирање на различните процеси каде што се применуваат информатиката и компјутерското инженерство.",
-		"prerequisite": {},
-		"activated": true,
-		"participants": [29, 79, 174],
-		"mandatory": true,
-		"mandatoryFor": ["KI23"],
-		"semester": 1,
-		"season": "W",
-		"electiveFor": [],
-		"professors": ["Ласко Баснарков"],
-		"assistants": ["Зорица Карапанчева"],
-		"tags": ["Physics"],
-		"technologies": [],
-		"evaluation": ["Theory", "Practical"],
-		"isEasy": false
-	},
-	"Алгоритми и податочни структури": {
-		"subject": "Алгоритми и податочни структури",
-		"code": "F18L2W001, F23L2W001",
-		"level": 2,
-		"abstract": "Запознавање со основните податочни структури и алгоритми кои се понатаму неопходни за работа со бази на\nподатоци како и за други апликации. Студентот ќе биде оспособен за користење и развој на структури и алгоритми\nсо линеарни листи, стебла, графови како и и индекси за пребарување. Исто така ќе биде оспособен за\nимплемнтација на различните архетипи на алгоритми што се користат во практичната имплементација на многу\nсофтверски решенија.",
-		"prerequisite": {
-			"subjects": ["структурно програмирање"]
-		},
-		"activated": true,
-		"participants": [1131, 1737, 1726],
-		"mandatory": true,
-		"mandatoryFor": ["SIIS23", "KI23", "KN23"],
-		"semester": 3,
-		"season": "W",
-		"electiveFor": [],
-		"professors": [
-			"Ана Мадевска Богданова",
-			"Анастас Мишев",
-			"Бојана Котеска",
-			"Владимир Трајковиќ",
-			"Илинка Иваноска",
-			"Петре Ламески"
-		],
-		"assistants": [
-			"Јана Кузманова",
-			"Ненад Анчев",
-			"Славе Темков",
-			"Милан Тодоровиќ",
-			"Ана Тодоровска"
-		],
-		"tags": ["Computer Science", "Software Engineering"],
-		"technologies": ["Java"],
-		"evaluation": ["Theory", "Code"],
-		"isEasy": false
-	},
-	"Анализа на софтверските барања": {
-		"subject": "Анализа на софтверските барања",
-		"code": "F18L2S002, F23L2S002",
-		"level": 2,
-		"abstract": "По завршувањето на предметот се очекува студентот да ги разбира и има продлабочено знаење во примена на техниките за извлекување знаење од клиентот, да ги разбира техниките за документирање на софтверски и бизнис потреби, да ги разбира и има продлабочено знаење во примената на техники за управување со промени кај софтверски и бизнис барања.",
-		"prerequisite": {
-			"subjects": [
-				"објектно ориентирана анализа и дизајн",
-				"објектно-ориентирано програмирање"
-			]
-		},
-		"activated": true,
-		"participants": [311, 373, 337],
-		"mandatory": true,
-		"mandatoryFor": ["SIIS23"],
-		"semester": 4,
-		"season": "S",
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23"],
-		"professors": ["Љупчо Антовски", "Георгина Мирчева", "Ефтим Здравевски"],
-		"assistants": [],
-		"tags": ["Software Engineering", "Societal Skills"],
-		"technologies": [],
-		"evaluation": ["Theory", "Project"],
-		"isEasy": true
-	},
-	"Безжични и мобилни системи": {
-		"subject": "Безжични и мобилни системи",
-		"code": "F18L2S061, F23L2S061",
-		"level": 2,
-		"abstract": "Познавање и разбирање на системите за безжична и мобилна комуникација",
-		"prerequisite": {
-			"credits": 36
-		},
-		"activated": true,
-		"participants": [140, 207, 152],
-		"mandatory": true,
-		"mandatoryFor": ["IMB23"],
-		"semester": 4,
-		"season": "S",
-		"electiveFor": ["IE23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"professors": ["Анастас Мишев", "Соња Филипоска"],
-		"assistants": ["Војдан Ќорвезироски"],
-		"tags": ["Networking", "Cybersecurity", "Embedded Systems"],
-		"technologies": [],
-		"evaluation": ["Theory", "Practical"],
-		"isEasy": false
-	},
-	"Веројатност и статистика": {
-		"subject": "Веројатност и статистика",
-		"code": "F18L2W006, F23L2W006",
-		"level": 2,
-		"abstract": "Да се воведат основните концепти од веројатност и статистичка анализа со дискусија на примените во компјутерските науки. Да се оспособат студентите за успешно следење на стручните предмети во кои се применуваат елементи од теорија на веројатност и статистика.",
-		"prerequisite": {
-			"subjects": ["калкулус 1", "математика 1"]
-		},
-		"activated": true,
-		"participants": [527, 842, 937],
-		"mandatory": true,
-		"mandatoryFor": ["KI23", "KN23"],
-		"semester": 3,
-		"season": "W",
-		"electiveFor": ["IE23", "IMB23", "PIT23"],
-		"professors": [
-			"Александра Поповска Митровиќ",
-			"Билјана Тојтовска Рибарски",
-			"Верица Бакева Смиљкова",
-			"Илинка Иваноска",
-			"Марија Михова",
-			"Наташа Илиевска"
-		],
-		"assistants": ["Јована Добрева", "Петар Секулоски"],
-		"tags": ["Mathematics", "Data Science", "Computer Science"],
-		"technologies": ["R"],
-		"evaluation": ["Theory", "Practical", "Code"],
-		"isEasy": false
-	},
-	"Вештачка интелигенција": {
-		"subject": "Вештачка интелигенција",
-		"code": "F18L2S030, F23L2S030",
-		"level": 2,
-		"abstract": "Успешниот студент ќе има продлабочени познавања од основните области на вештачката интелигенција, вклучувајќи ги: пребарувањето, решавањето проблеми, претставувањето на знаењето, расудувањето, донесувањето одлуки, планирањето и учењето и нивната примена. Исто така, ќе биде во состојба да ги дизајнира и реализира клучните проблеми од интелигентните системи со средна сложеност и да го процени нивното однесување.",
-		"prerequisite": {
-			"credits": 36
-		},
-		"activated": true,
-		"participants": [476, 341, 305],
-		"mandatory": true,
-		"mandatoryFor": ["SIIS23", "KN23"],
-		"semester": 4,
-		"season": "S",
-		"electiveFor": ["IE23", "IMB23", "KI23", "PIT23"],
-		"professors": [
-			"Андреа Кулаков",
-			"Катерина Здравкова",
-			"Кире Триводалиев",
-			"Соња Гиевска"
-		],
-		"assistants": ["Јана Кузманова", "Мартин Динев", "Мартина Тошевска"],
-		"tags": ["AI / ML", "Computer Science"],
-		"technologies": ["Python"],
-		"evaluation": ["Theory", "Code"],
-		"isEasy": false
-	},
-	"Визуелно програмирање": {
-		"subject": "Визуелно програмирање",
-		"code": "F18L2S082, F23L2S082",
-		"level": 2,
-		"abstract": "Со завршување на овој курс се очекува студентите да се запознаени со техниките за развивање на софтвер во\nнапредна интегрирана развојна околина користејќи модерен објектно-ориентиран програмски јазик, дизајнирање\nна богати графички кориснички интерфејси и откривање и отстранување на грешки во истата. Се очекува\nстудентите да бидат оспособени за развој на настански водени апликации, развој на графички кориснички\nинтерфејси, напредни форми за внесување на податоци, асинхроно програмирање, кориснички дефинирани контроли и креирање на инсталациски пакети.",
-		"prerequisite": {
-			"subjects": ["објектно-ориентирано програмирање"]
-		},
-		"activated": true,
-		"participants": [116, 211, 198],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "S",
-		"semester": 4,
-		"professors": ["Ѓорѓи Маџаров", "Дејан Ѓорѓевиќ"],
-		"assistants": ["Стефан Андонов"],
-		"tags": ["Software Engineering", "UI/UX & Digital Media"],
-		"technologies": [".NET"],
-		"evaluation": ["Code", "Project"],
-		"isEasy": false
-	},
-	"Вовед во екоинформатиката": {
-		"subject": "Вовед во екоинформатиката",
-		"code": "F18L2S084, F23L2S084",
-		"level": 2,
-		"abstract": "Екоинформатиката е наука за информации (информатика) во екологијата и науката за животната средина. Ги интегрира еколошките и информатичките науки за да ги дефинира ентитетите и природните процеси со јазик заеднички за луѓето и за компјутерите. Екоинформатиката има за цел да го олесни истражувањето и управувањето со животната средина преку развивање начини за пристап, интегрирање на знаење од различни извори на информации за животната средина и развивање на нови алгоритми кои овозможуваат комбинирање на различни информации за животната средина за да се тестираат еколошките хипотези.",
-		"prerequisite": {
-			"subjects": ["вовед во компјутерските науки"]
-		},
-		"activated": true,
-		"participants": [70, 79, 94],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "S",
-		"semester": 4,
-		"professors": ["Андреја Наумоски", "Коста Митрески"],
-		"assistants": [],
-		"tags": ["Data Science", "Computer Science", "Societal Skills"],
-		"technologies": [],
-		"evaluation": ["Theory", "Project"],
-		"isEasy": true
-	},
-	"Вовед во случајни процеси": {
-		"subject": "Вовед во случајни процеси",
-		"code": "F18L2S090, F23L2S090",
-		"level": 2,
-		"abstract": "Да се оспособат студентите да моделираат случајни процеси за реални ситуации.",
-		"prerequisite": {
-			"credits": 36
-		},
-		"activated": true,
-		"participants": [14, 14, 17],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "S",
-		"semester": 4,
-		"professors": ["Верица Бакева Смиљкова"],
-		"assistants": [],
-		"tags": ["Mathematics", "Data Science", "Computer Science"],
-		"technologies": [],
-		"evaluation": ["Theory", "Practical"],
-		"isEasy": false
-	},
-	"Дигитално процесирање на слика": {
-		"subject": "Дигитално процесирање на слика",
-		"code": "F18L2S095, F23L2S095",
-		"level": 2,
-		"abstract": "По завршување на курсот се очекува студентот да ги владее и користи основните алатки и методи за обработка на слики.",
-		"prerequisite": {
-			"subjects": [
-				"дискретна математика",
-				"дискретни структури 2",
-				"математика 2",
-				"избрани теми од математика"
-			]
-		},
-		"activated": true,
-		"participants": [131, 225, 128],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "S",
-		"semester": 4,
-		"professors": ["Ивица Димитровски"],
-		"assistants": [],
-		"tags": ["Multimedia", "AI / ML", "Data Science", "Computer Science"],
-		"technologies": ["Python"],
-		"evaluation": ["Theory", "Code", "Project"],
-		"isEasy": true
-	},
-	"Дигитизација": {
-		"subject": "Дигитизација",
-		"code": "F18L2W096, F23L2W096",
-		"level": 2,
-		"abstract": "Целта на предметот е да се научат процесот и техниките за дигитизација. Студентите треба да ги совладаат основните принципи за менаџирање со дигитални материјали и нивна презервација, како и техники и технологии за нивно презентрање.",
-		"prerequisite": {
-			"subjects": ["вовед во компјутерските науки"]
-		},
-		"activated": true,
-		"participants": [224, 75, 78],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "W",
-		"semester": 3,
-		"professors": ["Бобан Јоксимоски"],
-		"assistants": ["Марко Петров"],
-		"tags": ["Multimedia"],
-		"technologies": ["Blender"],
-		"evaluation": ["Theory", "Project"],
-		"isEasy": true
-	},
-	"Дизајн на алгоритми": {
-		"subject": "Дизајн на алгоритми",
-		"code": "F18L2S097, F23L2S097",
-		"level": 2,
-		"abstract": "Во овој курс ќе се научат повеќе алгоритми и методи за решавање на проблемите со компјутер, како и одредени структури на податоци за имплементација на истите. Студентот ќе стекне искуство од програмирање, ќе ги разбере  принципите на дизајнирање на алгоритми, анализа на перформансите на алгоритмите и ќе ги научи фундаменталните идеи за дизајн на ефикасен алгоритам и комбинирање на истиот со соодветна структура на податоци. Идеите ќе се применат во пракса преку лабораториск вежби.",
-		"prerequisite": {
-			"subjects": [
-				"дискретна математика",
-				"дискретни структури 2",
-				"математика 2",
-				"избрани теми од математика"
-			]
-		},
-		"activated": true,
-		"participants": [24, 46, 45],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "S",
-		"semester": 4,
-		"professors": ["Марија Михова"],
-		"assistants": ["Мартин Динев"],
-		"tags": ["Computer Science", "Software Engineering", "Mathematics"],
-		"technologies": ["any"],
-		"evaluation": ["Theory", "Code", "Project"],
-		"isEasy": false
-	},
-	"Е-влада": {
-		"subject": "Е-влада",
-		"code": "F18L2S099, F23L2S099",
-		"level": 2,
-		"abstract": "Целта на курсот е студентите да се запознаат со испораката на услугите од страна на владините институции кон корисниците: граѓаните, бизнисите и организациите од невладиниот сектор и примената на информациските технологии во тие процеси; да се запознаат со напредните држави и напредните области на примена на е-влада преку анализа на примери, студии на случај и најдобри практики; Подобрување на комуникациските вештини, усни и писмени, работа во тим при изработка на проектна задача, презентирање на проектната задача.",
-		"prerequisite": {
-			"subjects": ["бизнис и менаџмент"]
-		},
-		"activated": true,
-		"participants": [360, 620, 575],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "S",
-		"semester": 4,
-		"professors": ["Георгина Мирчева", "Смилка Јанеска Саркањац"],
-		"assistants": [],
-		"tags": ["Societal Skills"],
-		"technologies": [],
-		"evaluation": ["Theory"],
-		"isEasy": true
-	},
-	"Економија за ИКТ инженери": {
-		"subject": "Економија за ИКТ инженери",
-		"code": "F18L2S100, F23L2W100",
-		"level": 2,
-		"abstract": "ИКТ инженерите, изработувајќи и нудејќи ИКТ услуги, се соочуваат со прашања во врска со SLA договорите, продавачите, добавувачите, со финансиските аспекти на ИКТ услугите – колку чини услугата, зошто токму толку, колкави се трошоците, колку е дозволено да бидат трошоците и слично. Области кои им е потребно да ги владеат се буџетирање, книговодство, определување на цени, финансиско планирање, финансиска анализа и известување. Овој курс има за задача да им овозможи да ги совладаат овие области преку опис на основните  економски модели; демонстрирање како овие модели работат; опис на главните економски феномени со користење економски модели.",
-		"prerequisite": {
-			"subjects": ["бизнис и менаџмент"]
-		},
-		"activated": true,
-		"participants": [659, 581, 527],
-		"mandatory": true,
-		"mandatoryFor": ["PIT23"],
-		"semester": 3,
-		"season": "W",
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "SIIS23"],
-		"professors": ["Смилка Јанеска Саркањац"],
-		"assistants": ["Александар Тенев"],
-		"tags": ["Societal Skills"],
-		"technologies": [],
-		"evaluation": ["Theory"],
-		"isEasy": true
-	},
-	"Електрични кола": {
-		"subject": "Електрични кола",
-		"code": "F18L2S042, F23L2S042",
-		"level": 2,
-		"abstract": "Запознавање со основните поими и појави од електричните кола, со основните закони и теореми во теоријата на електричните кола и со некои методи за анализа на електрични мрежи со временски констатни и временски прпоменливи струи и напони. Користење на основните законитости во електротехниката при решавање на конкретни проблеми во инженерството.",
-		"prerequisite": {
-			"credits": 36
-		},
-		"activated": true,
-		"participants": [42, 64, 68],
-		"mandatory": true,
-		"mandatoryFor": ["KI23"],
-		"semester": 4,
-		"season": "S",
-		"electiveFor": ["IE23", "IMB23", "KN23", "PIT23", "SIIS23"],
-		"professors": ["Коста Митрески"],
-		"assistants": [],
-		"tags": ["Computer Architecture", "Physics"],
-		"technologies": [],
-		"evaluation": ["Practical"],
-		"isEasy": false
-	},
-	"Информатичко размислување во образованието": {
-		"subject": "Информатичко размислување во образованието",
-		"code": "F18L2S051, F23L2S051",
-		"level": 2,
-		"abstract": "Во 21 век, информатичкото размислување е вештина од клучно значење за сите граѓани на светот. Информатиката и технологијата влијаат на целиот наш живот и секој треба да знае како да ги формулира проблемите и да ги изрази решенијата за нив така што ќе може да бидат спроведени од компјутер. На овој курс студентите ќе научат различни аспекти на информатичкото размислување и пристапи за нивно подучување во основното и средното образование. Тие ќе научат јазик заснован на блокови и модерни пристапи дизајнирани да го олеснат учењето програмирање.",
-		"prerequisite": {
-			"subjects": ["вовед во компјутерските науки"]
-		},
-		"activated": true,
-		"participants": [35, 24, 29],
-		"mandatory": true,
-		"mandatoryFor": ["IE23"],
-		"semester": 4,
-		"season": "S",
-		"electiveFor": ["IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"professors": ["Миле Јованов", "Емил Станков"],
-		"assistants": [],
-		"tags": ["Education", "Societal Skills"],
-		"technologies": [],
-		"evaluation": ["Project"],
-		"isEasy": true
-	},
-	"Инженерска математика": {
-		"subject": "Инженерска математика",
-		"code": "F18L2W104, F23L2W104",
-		"level": 2,
-		"abstract": "Предметот опфаќа методи за нумеричкото решавање на повеќе математички проблеми, како и примена на некои\nпозначајни математички трансформации во инженерството.",
-		"prerequisite": {
-			"subjects": ["калкулус 1", "математика 1"]
-		},
-		"activated": true,
-		"participants": [44, 19, 25],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "W",
-		"semester": 3,
-		"professors": ["Весна Димитрова"],
-		"assistants": [],
-		"tags": ["Mathematics"],
-		"technologies": [],
-		"evaluation": ["Theory", "Practical", "Project"],
-		"isEasy": false
-	},
-	"Интернет програмирање на клиентска страна": {
-		"subject": "Интернет програмирање на клиентска страна",
-		"code": "F18L2W109, F23L2W109",
-		"level": 2,
-		"abstract": "Целта на курсот е да овозможи запознавање на студентите со основните на програмирањето на интернет клиентската страна. Во таа насока студентите ќе бидат запознаени со дел од програмските јазици и технологиите за пишување програми што се извршуваат на клиентската страна. По завршување на курсот се очекува студентот да може да развива интерактивни веб-страници со користење на програмски јазици наменети за програмирање на клиентската страна.",
-		"prerequisite": {
-			"subjects": ["структурно програмирање"]
-		},
-		"activated": true,
-		"participants": [634, 872, 858],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "W",
-		"semester": 3,
-		"professors": ["Гоце Арменски", "Иван Китановски", "Сузана Лошковска"],
-		"assistants": ["Влатко Спасев", "Марко Петров"],
-		"tags": ["Web Development", "Software Engineering"],
-		"technologies": ["HTML", "CSS", "JavaScript"],
-		"evaluation": ["Theory", "Code", "Project"],
-		"isEasy": false
-	},
-	"Интернет технологии": {
-		"subject": "Интернет технологии",
-		"code": "F18L2S110, F23L2S110",
-		"level": 2,
-		"abstract": "Познавање на механизмите кај HTTP протоколот. Запознавање со платформи за развој на интернет апликации.\nКреирање и развој на веб апликции. Креирање и користење на веб сервиси.",
-		"prerequisite": {
-			"subjects": ["објектно-ориентирано програмирање"]
-		},
-		"activated": true,
-		"participants": [286, 288, 335],
-		"mandatory": true,
-		"mandatoryFor": ["IMB23"],
-		"semester": 4,
-		"season": "S",
-		"electiveFor": ["IE23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"professors": [
-			"Вангел Ајановски",
-			"Гоце Арменски",
-			"Магдалена Костоска Ѓорчевска"
-		],
-		"assistants": ["Димитар Китановски"],
-		"tags": ["Web Development", "Software Engineering"],
-		"technologies": [".NET", "any", "HTML", "CSS"],
-		"evaluation": ["Theory", "Code", "Project"],
-		"isEasy": false
-	},
-	"Компјутерска графика": {
-		"subject": "Компјутерска графика",
-		"code": "F18L2S114, F23L2S114",
-		"level": 2,
-		"abstract": "Целта на предметот е запознавање на студентите со теориските основи и концепти на 2D и 3D компјутерска графика, геометриското моделирање, трансформациите, рендерирањето и генерирањето криви и површини со помош на сплајнови. Практичната имплементација на алгоритмите ќе се реализира со помош на OPEN GL. По завршување на курсот се очекува студентот да демонстрира познавање на теориските основи и концепти на 2Д и 3Д компјутерската графика, да користи OpenGL библиотека и графички софтверски пакети за практична реализација на проблеми од компјутерската графика.",
-		"prerequisite": {
-			"subjects": ["објектно-ориентирано програмирање"]
-		},
-		"activated": true,
-		"participants": [18, 32, 64],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "S",
-		"semester": 4,
-		"professors": ["Сузана Лошковска", "Бобан Јоксимоски"],
-		"assistants": [],
-		"tags": ["UI/UX & Digital Media", "Multimedia", "Software Engineering"],
-		"technologies": ["C++"],
-		"evaluation": ["Theory", "Code", "Project"],
-		"isEasy": false
-	},
-	"Компјутерски мрежи": {
-		"subject": "Компјутерски мрежи",
-		"code": "F18L2W046, F23L2W046",
-		"level": 2,
-		"abstract": "Вовед во основните концепти на компјутерските мрежи. Студентот ќе се здобие со знаења поврзани со мрежната архитектура, мрежните протоколи и дизајн на мрежи. Студентот ќе се запознае со главните компоненти и апликации на TCP/IP свитата од протоколи.",
-		"prerequisite": {
-			"credits": 18
-		},
-		"activated": true,
-		"participants": [212, 213, 264],
-		"mandatory": true,
-		"mandatoryFor": ["IMB23", "KI23"],
-		"semester": 3,
-		"season": "W",
-		"electiveFor": [],
-		"professors": ["Дејан Спасов", "Марјан Гушев"],
-		"assistants": ["Ненад Анчев"],
-		"tags": ["Networking"],
-		"technologies": [],
-		"evaluation": ["Theory", "Practical"],
-		"isEasy": false
-	},
-	"Компјутерски мрежи и безбедност": {
-		"subject": "Компјутерски мрежи и безбедност",
-		"code": "F18L2W014, F23L2W014",
-		"level": 2,
-		"abstract": "Вовед во основните концепти на компјутерските мрежи и безбедноста. Студентот ќе се здобие со знаења поврзани со мрежната архитектура, мрежните протоколи и работата на мрежите, како и главните поими од мрежната безбедност. Студентот ќе се запознае со главните компоненти и апликации на TCP/IP свитата од протоколи.",
-		"prerequisite": {
-			"credits": 18
-		},
-		"activated": true,
-		"participants": [1389, 1306, 1235],
-		"mandatory": true,
-		"mandatoryFor": ["SIIS23", "PIT23", "IE23", "KN23"],
-		"semester": 3,
-		"season": "W",
-		"electiveFor": [],
-		"professors": [
-			"Александра Каневче Дединец",
-			"Анастас Мишев",
-			"Дејан Спасов",
-			"Игор Мишковски",
-			"Костадин Мишев",
-			"Мирослав Мирчев",
-			"Сашо Граматиков",
-			"Соња Филипоска"
-		],
-		"assistants": [
-			"Војдан Ќорвезироски",
-			"Димитар Китановски",
-			"Кирил Ќироски",
-			"Марија Танеска"
-		],
-		"tags": ["Networking", "Cybersecurity"],
-		"technologies": [],
-		"evaluation": ["Theory", "Practical"],
-		"isEasy": false
-	},
-	"Концепти на информатичко општество": {
-		"subject": "Концепти на информатичко општество",
-		"code": "F18L2S119, F23L2S119",
-		"level": 2,
-		"abstract": "Целта на курсот е да се запознаат студентите со теориите и пристапите кои ја анализираат улогата на информатичката технологија, медиумите и знаењето во модерното општество. По завршување на модулот студентите треба да бидат способни да:\n1.\tСистематски и критично дискутираат, евалуираат и ги анализираат главните теми, принципи, концепти и теории на информатичкото општество\n2.\tПрименуваат различни концепти од информатичкото општество\n3.\tПокажат разбирање за важноста на информатичката технологја и знаењето во модерното општество",
-		"prerequisite": {
-			"subjects": ["вовед во компјутерските науки"]
-		},
-		"activated": true,
-		"participants": [220, 479, 574],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "S",
-		"semester": 4,
-		"professors": ["Владимир Здравески", "Горан Велинов"],
-		"assistants": [
-			"Јана Кузманова",
-			"Мила Додевска",
-			"Милена Трајаноска",
-			"Зорица Карапанчева",
-			"Марија Стојчева"
-		],
-		"tags": ["Societal Skills", "Computer Science"],
-		"technologies": ["any"],
-		"evaluation": ["Theory", "Project"],
-		"isEasy": true
-	},
-	"Медиуми и комуникации": {
-		"subject": "Медиуми и комуникации",
-		"code": "F18L2S124, F23L2S124",
-		"level": 2,
-		"abstract": "По завршувањето на предметот се очекува студентот да ги разбира основните\nпоими од комуникатологијата како наука, како и да има продлабочено знаење во примена на постоечките техники и\nсознанија за подобрување за комуникацијата помеѓу чинителите на комуникацијата. Посебен осврт ќе биден даден на комуникацијата преку новите медиуми и начинот на кој новите медиуми влијаат во различни општествени сфери. Студентите ќе бидат запознаени со основните принципи за испитување на јавно мислење и користење на новите медиуми (со посебен фокус на социјалните мрежи) за градење и промовирање на бренд (личен или корпоративен).",
-		"prerequisite": {
-			"subjects": ["вовед во компјутерските науки"]
-		},
-		"activated": true,
-		"participants": [184, 310, 429],
-		"mandatory": true,
-		"mandatoryFor": ["IE23"],
-		"semester": 4,
-		"season": "S",
-		"electiveFor": ["IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"professors": ["Владимир Трајковиќ"],
-		"assistants": ["Мила Додевска"],
-		"tags": ["Multimedia", "Societal Skills"],
-		"technologies": [],
-		"evaluation": ["Theory"],
-		"isEasy": true
-	},
-	"Мултимедијални технологии": {
-		"subject": "Мултимедијални технологии",
-		"code": "F18L3W055, F23L2W055",
-		"level": 2,
-		"abstract": "Целта на предметот е студентот да се запознае со основите на различните медии: аудио, графика, видео и анимации и да ги сфати различните својства на секоја од нив. Студентот треба да ги запознае различните формати и да се оспособи за користење за различни апликации за креирање на мултимедијални содржини. Како повисока цел, студентот треба да може да развие мал мултимедијален производ со примена на изучените техники и методи.",
-		"prerequisite": {
-			"subjects": ["вовед во компјутерските науки"]
-		},
-		"activated": true,
-		"participants": [235, 43, 62],
-		"mandatory": true,
-		"mandatoryFor": ["IE23"],
-		"semester": 3,
-		"season": "W",
-		"electiveFor": ["IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"professors": ["Миле Јованов"],
-		"assistants": ["Живко Атанаскоски"],
-		"tags": ["Multimedia"],
-		"technologies": [],
-		"evaluation": ["Theory", "Practical"],
-		"isEasy": true
-	},
-	"Напредно програмирање": {
-		"subject": "Напредно програмирање",
-		"code": "F18L2W140, F23L3W140",
-		"level": 2,
-		"abstract": "Да се воведат студентите во парадигмата на генеричкото програмирање. Да се запознаат со апстрактни податочни типови,\nкреирање на темплејт класи и функции. Да развијат вештини за употреба на колекции на податоци (вектори, редови, листи,\nмножества и речници). На крај се очекува студентите да можат да ги аплицираат концептите на шаблони за објектно-\nориентиран развој на софтвер при моделирање на некој специфициран проблем во робусна објектно-ориентирана програма.\nСтудентите ќе бидат запознаени со техниките за развивање на софтвер во интегрирана развојна околина.",
-		"prerequisite": {
-			"subjects": ["објектно-ориентирано програмирање"]
-		},
-		"activated": true,
-		"participants": [253, 683, 532],
-		"mandatory": true,
-		"mandatoryFor": ["SIIS23", "KN23"],
-		"semester": 5,
-		"season": "W",
-		"electiveFor": ["IE23", "IMB23", "KI23", "PIT23"],
-		"professors": ["Ѓорѓи Маџаров", "Дејан Ѓорѓевиќ"],
-		"assistants": ["Ана Тодоровска", "Стефан Андонов"],
-		"tags": ["Software Engineering", "Computer Science"],
-		"technologies": ["Kotlin"],
-		"evaluation": ["Theory", "Code"],
-		"isEasy": false
-	},
-	"Квантно пресметување": {
-		"subject": "Квантно пресметување",
-		"code": "F18L2S143, F23L3W162",
-		"level": 2,
-		"abstract": "Студентот ќе биде оспособен за теоретска и практична работа со квантни кола за пресметки базирани на квантни бити (кјубити). Преку содржината на овој предмет, студентот ќе се стекне со знаења за квантни технологии, квантни состојби, квантни протоколи преку работа со квантни кола со еден, два и повеќе кјубити, реверзибилност во квантни кола, суперпозиција и телепортација, како и најразлични квантни кола за решавање на конкретни проблеми. Преку практичната работа, студентот ќе се запознае со Qiskit апликацијата за креирање и симулација на квантни кола.",
-		"prerequisite": {
-			"subjects": [
-				"архитектура и организација на компјутери",
-				"компјутерски архитектури"
-			]
-		},
-		"activated": false,
-		"participants": [0, 0, 0],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "W",
-		"semester": 7,
-		"professors": [],
-		"assistants": [],
-		"tags": ["Computer Science", "Physics", "Mathematics"],
-		"technologies": [],
-		"evaluation": [],
-		"isEasy": false
-	},
-	"Оперативни системи": {
-		"subject": "Оперативни системи",
-		"code": "F18L2S017, F23L2S017",
-		"level": 2,
-		"abstract": "Студентот ќе биде воведен во основните градбени блокови на модерните оперативни системи преку нивна конкретна реализација во Windows и UNIX-like системите.",
-		"prerequisite": {
-			"subjects": [
-				"архитектура и организација на компјутери",
-				"компјутерски архитектури"
-			]
-		},
-		"activated": true,
-		"participants": [1460, 1444, 1322],
-		"mandatory": true,
-		"mandatoryFor": ["SIIS23", "IMB23", "PIT23", "IE23", "KI23", "KN23"],
-		"semester": 4,
-		"season": "S",
-		"electiveFor": [],
-		"professors": [
-			"Боро Јакимовски",
-			"Весна Димитрова",
-			"Димитар Трајанов",
-			"Игор Мишковски",
-			"Костадин Мишев",
-			"Милош Јовановиќ",
-			"Невена Ацковска",
-			"Ристе Стојанов",
-			"Сашо Граматиков"
-		],
-		"assistants": [
-			"Јована Добрева",
-			"Ана Тодоровска",
-			"Милена Трајаноска",
-			"Ненад Анчев"
-		],
-		"tags": [
-			"Systems Infrastructure",
-			"Computer Science",
-			"Computer Architecture"
-		],
-		"technologies": ["Docker", "Java"],
-		"evaluation": ["Theory", "Practical"],
-		"isEasy": false
-	},
-	"Основи на комуникациски системи": {
-		"subject": "Основи на комуникациски системи",
-		"code": "F18L2W147, F23L2W147",
-		"level": 2,
-		"abstract": "Студентите ќе се запознаат со основните концепти за анализа на реалните сигнали и системи, со посебен фокус на анализата на комуникациски сигнали и нивниот пренос низ медиум, типовите на модулација и влијанието на шумот врз модулациските техники. Дополнително студентите ќе се здобијат со познавање од софтверски дефинирано радио, современите комуникациски системи и нивниот тековен развој.",
-		"prerequisite": {
-			"subjects": ["калкулус 1", "математика 1"]
-		},
-		"activated": true,
-		"participants": [10, 9, 10],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "W",
-		"semester": 3,
-		"professors": ["Андреја Наумоски"],
-		"assistants": [],
-		"tags": ["Networking", "Physics"],
-		"technologies": [],
-		"evaluation": ["Project"],
-		"isEasy": false
-	},
-	"Основи на теоријата на информации": {
-		"subject": "Основи на теоријата на информации",
-		"code": "F18L2W067, F23L2W067",
-		"level": 2,
-		"abstract": "Студентите ќе бидат запознати со основите на теорија на веројатност, а потоа и основните поими од теорија на информации и нејзината примена во реални комуникациски системи.",
-		"prerequisite": {
-			"subjects": ["калкулус 1", "математика 1"]
-		},
-		"activated": true,
-		"participants": [65, 59, 54],
-		"mandatory": true,
-		"mandatoryFor": ["IMB23"],
-		"semester": 3,
-		"season": "W",
-		"electiveFor": ["IE23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"professors": ["Александра Поповска Митровиќ", "Верица Бакева Смиљкова"],
-		"assistants": [],
-		"tags": ["Computer Science", "Mathematics"],
-		"technologies": [],
-		"evaluation": ["Theory", "Practical"],
-		"isEasy": false
-	},
-	"Софтверско инженерство": {
-		"subject": "Софтверско инженерство",
-		"code": "F18L2S029, F23L2S029",
-		"level": 2,
-		"abstract": "Целта на предметот е запознање со: методологиите за дизајн и имплементација на софтверски системи преку анализа на барањата, развој и анализа на дизајнот, имплементацијата, интеграцијата и тестирањето на софтверот; анализа на проблем за развој на софтвер, дизајнирање на модуларна структура на решението која го решава проблемот и анализа и евалуација на алтернативи; имплементација на ефикасни и исправни модули, нивна  интеграција и тестирање, планирање и водење на софтверските проекти.",
-		"prerequisite": {
-			"subjects": ["објектно-ориентирано програмирање"]
-		},
-		"activated": true,
-		"participants": [409, 633, 564],
-		"mandatory": true,
-		"mandatoryFor": ["PIT23", "KI23", "KN23"],
-		"semester": 4,
-		"season": "S",
-		"electiveFor": ["IE23", "IMB23"],
-		"professors": [
-			"Ѓорѓи Маџаров",
-			"Дејан Ѓорѓевиќ",
-			"Катарина Тројачанец Динева",
-			"Катерина Здравкова"
-		],
-		"assistants": ["Јана Кузманова", "Стефан Андонов"],
-		"tags": ["Software Engineering", "Cloud Engineering & DevOps"],
-		"technologies": ["Git", "Docker"],
-		"evaluation": ["Theory", "Practical"],
-		"isEasy": false
-	},
-	"Теорија на информации со дигитални комуникации": {
-		"subject": "Теорија на информации со дигитални комуникации",
-		"code": "F18L2S164, F23L2S164",
-		"level": 2,
-		"abstract": "Студентите ќе бидат запознаени со квантитативната теорија на информации и нејзината примена во надежни и ефикасни комуникациски системи. Дополнително ќе бидат запознаени со математичкиот модел на комунникацискиот систем.",
-		"prerequisite": {
-			"subjects": [
-				"веројатност и статистика",
-				"математика 3",
-				"бизнис статистика"
-			]
-		},
-		"activated": true,
-		"participants": [22, 16, 20],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "S",
-		"semester": 4,
-		"professors": ["Александра Поповска Митровиќ", "Верица Бакева Смиљкова"],
-		"assistants": [],
-		"tags": ["Computer Science", "Mathematics"],
-		"technologies": [],
-		"evaluation": ["Theory", "Practical"],
-		"isEasy": false
-	},
-	"Управување со техничка поддршка": {
-		"subject": "Управување со техничка поддршка",
-		"code": "F18L2W165, F23L2W165",
-		"level": 2,
-		"abstract": "По завршувањето на курсот се очекува студентот да ги разбира методите и системите за решавање на ИТ проблемите преку обезбедување на квалитетна техничка поддршка.",
-		"prerequisite": {
-			"credits": 18
-		},
-		"activated": true,
-		"participants": [579, 346, 358],
-		"mandatory": true,
-		"mandatoryFor": ["IMB23"],
-		"semester": 3,
-		"season": "W",
-		"electiveFor": ["IE23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"professors": ["Анастас Мишев", "Соња Филипоска"],
-		"assistants": ["Војдан Ќорвезироски", "Евгенија Крајчевска"],
-		"tags": ["Societal Skills", "Systems Infrastructure"],
-		"technologies": [],
-		"evaluation": ["Theory", "Practical", "Project"],
-		"isEasy": false
-	},
-	"Шаблони за дизајн на кориснички интерфејси": {
-		"subject": "Шаблони за дизајн на кориснички интерфејси",
-		"code": "F18L2W167, F23L2W167",
-		"level": 2,
-		"abstract": "Целта на предметот е да ги запознае студентите со основните проблеми и начини на решавање на истите за различните видови кориснички интерфејси и корисничка интеракција. По завршување на курсот се очекува студентот да демонстрира познавање на основните видови корисничка интеракција и принципите за нивно дизајнирање, и да може самостојно да развива интерактивни апликации со користење на програмски алатки следејќи ги научените принципи.",
-		"prerequisite": {
-			"subjects": ["структурно програмирање"]
-		},
-		"activated": true,
-		"participants": [416, 340, 406],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "W",
-		"semester": 3,
-		"professors": [
-			"Иван Китановски",
-			"Ивица Димитровски",
-			"Катарина Тројачанец Динева",
-			"Сузана Лошковска"
-		],
-		"assistants": ["Влатко Спасев", "Ема Пандилова"],
-		"tags": [
-			"UI/UX & Digital Media",
-			"Web Development",
-			"Software Engineering"
-		],
-		"technologies": ["jQuery", "Figma"],
-		"evaluation": ["Theory", "Code"],
-		"isEasy": false
-	},
-	"Агентно-базирани системи": {
-		"subject": "Агентно-базирани системи",
-		"code": "F18L3S073, F23L3S073",
-		"level": 3,
-		"abstract": "Агентно-базираното моделирање нуди природна метафора за разбирање и објаснување на многу феномени од доменот на биолошки и социјални системи – од еволуција и ширење на епидемии до сегрегација и формирање на коалиции. Многу системи може да се моделираат како средини составени од автономни агенти кои може да комуницираат, соработуваат, преговараат, да се спротивставуваат, да се водат од сопствени интереси или делуваат алтруистички. Микро-однесувањето на агенти водени од едноставни правила може да предизвика нови квалитети и комплексни појави во макро размери. Целта на предметот е запознавање на студентот со агентската парадигма за репрезентација и моделирање на системи од различни домени (пр. игри, роботи, однесување на социјални групи). По завршување на курсот се очекува студентот да има способност да дизајнира, моделира и реализира или симулира едно-агентен или повеќе-агентен систем.",
-		"prerequisite": {
-			"subjects": [
-				"вештачка интелигенција",
-				"математика 3",
-				"веројатност и статистика",
-				"бизнис статистика"
-			]
-		},
-		"activated": true,
-		"participants": [58, 50, 13],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "S",
-		"semester": 6,
-		"professors": ["Кире Триводалиев", "Соња Гиевска"],
-		"assistants": ["Мартина Тошевска"],
-		"tags": ["AI / ML", "Software Engineering", "Computer Science"],
-		"technologies": ["Python"],
-		"evaluation": ["Project"],
-		"isEasy": false
-	},
-	"Администрација на мрежи": {
-		"subject": "Администрација на мрежи",
-		"code": "F18L3S059, F23L3S059",
-		"level": 3,
-		"abstract": "По завршувањето на курсот се очекува студентот да ги разбира проблемите на администрацијата со мрежи и да знае\nда ги применува на методите и алатките за администрација со комуникациски мрежи.",
-		"prerequisite": {
-			"subjects": ["компјутерски мрежи", "компјутерски мрежи и безбедност"]
-		},
-		"activated": true,
-		"participants": [87, 71, 48],
-		"mandatory": true,
-		"mandatoryFor": ["IMB23"],
-		"semester": 6,
-		"season": "S",
-		"electiveFor": ["IE23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"professors": ["Александра Каневче Дединец"],
-		"assistants": ["Марија Танеска"],
-		"tags": ["Networking", "Systems Infrastructure", "Cybersecurity"],
-		"technologies": [],
-		"evaluation": ["Theory", "Project"],
-		"isEasy": false
-	},
-	"Администрација на системи": {
-		"subject": "Администрација на системи",
-		"code": "F18L3W060, F23L3W060",
-		"level": 3,
-		"abstract": "Системската администрација претставува комплексен процес на оперативно управување со системските и софтверските компоненти кај компјутерските системи, се со цел да се обезбеди безбедни, надежни и достапни сервиси и услуги на корисниците. Организацијата на процесот на системска администрација е повеќестран и вклучува активности поврзани со управување со оперативни системи, мрежни сервиси како и на апликативни и други серверски системи.",
-		"prerequisite": {
-			"subjects": ["компјутерски мрежи", "компјутерски мрежи и безбедност"]
-		},
-		"activated": true,
-		"participants": [148, 171, 70],
-		"mandatory": true,
-		"mandatoryFor": ["IMB23"],
-		"semester": 5,
-		"season": "W",
-		"electiveFor": ["IE23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"professors": ["Боро Јакимовски"],
-		"assistants": ["Кирил Ќироски"],
-		"tags": ["Systems Infrastructure", "Networking", "Cybersecurity"],
-		"technologies": [],
-		"evaluation": ["Theory", "Practical"],
-		"isEasy": false
-	},
-	"Бази на податоци": {
-		"subject": "Бази на податоци",
-		"code": "F18L3W004, F23L3W004",
-		"level": 3,
-		"abstract": "Запознавање на студентот со основните концепти за работа со бази на податоци, начините на нивно моделирање и имплементирање, како и работа со прашалните јазици. Студентот ќе биде способен да моделира бази на податоци преку семантичко и релациско моделирање и процес на нормализација, ќе знае практично да го применува SQL стандардот за креирање, одржување и манипулација на релациските бази на податоци. Студентот ќе има познавање за основните концепти на конкурентно работење и трансакции.",
-		"prerequisite": {
-			"subjects": [
-				"алгоритми и податочни структури",
-				"примена на алгоритми и податочни структури"
-			]
-		},
-		"activated": true,
-		"participants": [1251, 1183, 985],
-		"mandatory": true,
-		"mandatoryFor": ["SIIS23", "IMB23", "PIT23", "IE23", "KI23", "KN23"],
-		"semester": 5,
-		"season": "W",
-		"electiveFor": [],
-		"professors": [
-			"Вангел Ајановски",
-			"Георгина Мирчева",
-			"Горан Велинов",
-			"Ефтим Здравевски",
-			"Кире Триводалиев",
-			"Слободан Калајџиски",
-			"Соња Гиевска"
-		],
-		"assistants": [
-			"Јана Кузманова",
-			"Мартина Тошевска",
-			"Ненад Анчев",
-			"Димитар Китановски",
-			"Милан Тодоровиќ",
-			"Зорица Карапанчева"
-		],
-		"tags": ["Databases", "Software Engineering"],
-		"technologies": [],
-		"evaluation": ["Theory", "Code", "Project"],
-		"isEasy": false
-	},
-	"Вградливи микропроцесорски системи": {
-		"subject": "Вградливи микропроцесорски системи",
-		"code": "F18L3S040, F23L3S040",
-		"level": 3,
-		"abstract": "Студентите ќе се стекнат со разбирање на хардверот, софтверот и состемскиот дизајн на вградените системи. Тие ќе ја разберат важноста на интеракцијата меѓу хардверот и софтверот и поврзувањата со сензори и актуатори. Ќе ги стекнат основите на програмирање на вградени системи. Студентите ќе бидат способни да ги дефинираат архитектуралните барања, вклучувајќи го и хардверот и софтверот потребен за да се изгради модерен вграден систем.",
-		"prerequisite": {
-			"subjects": [
-				"архитектура и организација на компјутери",
-				"компјутерски архитектури"
-			]
-		},
-		"activated": true,
-		"participants": [52, 59, 63],
-		"mandatory": true,
-		"mandatoryFor": ["KI23"],
-		"semester": 6,
-		"season": "S",
-		"electiveFor": ["IE23", "IMB23", "KN23", "PIT23", "SIIS23"],
-		"professors": ["Моника Симјаноска", "Невена Ацковска"],
-		"assistants": ["Владислав Бидиков"],
-		"tags": [
-			"Embedded Systems",
-			"Computer Architecture",
-			"Software Engineering"
-		],
-		"technologies": [],
-		"evaluation": ["Theory", "Practical", "Project"],
-		"isEasy": false
-	},
-	"Веб програмирање": {
-		"subject": "Веб програмирање",
-		"code": "F18L3W024, F23L3W024",
-		"level": 3,
-		"abstract": "Развој на веб комплетни веб апликации со користење на MVC шаблонот за развој. Студентите ќе научат да развиваат веб апликации и веб сервиси, да се поврзуваат и да користат бази на податоци. Да развиваат безбедносни механизми кај веб апликациите и да тестираат веб апликации",
-		"prerequisite": {
-			"subjects": [
-				"алгоритми и податочни структури",
-				"примена на алгоритми и податочни структури"
-			]
-		},
-		"activated": true,
-		"participants": [895, 778, 571],
-		"mandatory": true,
-		"mandatoryFor": ["PIT23", "KN23"],
-		"semester": 5,
-		"season": "W",
-		"electiveFor": ["IE23", "IMB23", "KI23", "SIIS23"],
-		"professors": [
-			"Димитар Трајанов",
-			"Ристе Стојанов",
-			"Сашо Граматиков",
-			"Костадин Мишев"
-		],
-		"assistants": [
-			"Ана Тодоровска",
-			"Милена Трајаноска",
-			"Елена Атанасоска",
-			"Дарко Сасански"
-		],
-		"tags": ["Web Development", "Software Engineering", "Databases"],
-		"technologies": ["Spring"],
-		"evaluation": ["Theory", "Code", "Project"],
-		"isEasy": false
-	},
-	"Визуелизација": {
-		"subject": "Визуелизација",
-		"code": "F18L3W081, F23L3W081",
-		"level": 3,
-		"abstract": "Предметот треба да овозможи запознавање на студентите со концептот на вузуелизација на податоци, избор на\nтехники и алгоритми за визуелизација на различни податочни множества, и нивна програмска реализација. По\nзавршување на курсот се очекува студентот да демонстрира познавање на концептот на визуелизација на\nподатоци, да знае да избере и да реализира алгоритми за визуелизација на различни видови податоци\nпрограмски и со користење на алатки за визуелизација.",
-		"prerequisite": {
-			"subjects": [
-				"алгоритми и податочни структури",
-				"примена на алгоритми и податочни структури"
-			]
-		},
-		"activated": true,
-		"participants": [86, 0, 214],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "W",
-		"semester": 5,
-		"professors": ["Сузана Лошковска"],
-		"assistants": ["Евгенија Крајчевска"],
-		"tags": ["UI/UX & Digital Media", "Data Science", "Multimedia"],
-		"technologies": [],
-		"evaluation": ["Project"],
-		"isEasy": true
-	},
-	"Виртуелизација": {
-		"subject": "Виртуелизација",
-		"code": "F18L3S062, F23L3S062",
-		"level": 3,
-		"abstract": "Запознавање со виртуелизацијата како парадигма на креирање на виртуелни компјутерски системи преку софтверска виртуелизација на харверските компоненти. Обработка на различните аспекти на виртуелизацијата, технологиите и техниките вклучени во процесот, како и придобивките и губитоците кои се појавуваат во процесот на виртуелизација.",
-		"prerequisite": {
-			"subjects": ["оперативни системи"]
-		},
-		"activated": true,
-		"participants": [62, 36, 30],
-		"mandatory": true,
-		"mandatoryFor": ["IMB23"],
-		"semester": 6,
-		"season": "S",
-		"electiveFor": ["IE23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"professors": ["Боро Јакимовски"],
-		"assistants": ["Кирил Ќироски"],
-		"tags": ["Cloud Engineering & DevOps", "Systems Infrastructure"],
-		"technologies": [],
-		"evaluation": ["Theory", "Practical", "Project"],
-		"isEasy": false
-	},
-	"Вовед во мрежна наука": {
-		"subject": "Вовед во мрежна наука",
-		"code": "F18L3S087, F23L3S087",
-		"level": 3,
-		"abstract": "Запознавање со основните концепти од мрежна наука и нивна примена на реални податоци. Оспособување на студентите за анализа на својствата и динамичките процеси во реалните комплексни мрежи и нивно моделирање и визуелизација. Изучување на основните методи за октривање на заедници, оценка на робустноста, оптимизација, податочно рударење и предвидување во комплексни мрежи.",
-		"prerequisite": {
-			"subjects": [
-				"веројатност и статистика",
-				"основи на теоријата на информации",
-				"математика 3",
-				"бизнис статистика"
-			]
-		},
-		"activated": true,
-		"participants": [14, 19, 28],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "S",
-		"semester": 6,
-		"professors": ["Мирослав Мирчев"],
-		"assistants": [],
-		"tags": ["Networking", "Data Science", "Computer Science"],
-		"technologies": ["Python"],
-		"evaluation": ["Project"],
-		"isEasy": true
-	},
-	"Вовед во науката за податоци": {
-		"subject": "Вовед во науката за податоци",
-		"code": "F18L3W008, F23L3W008",
-		"level": 3,
-		"abstract": "Запознавање со основите за науката базирана на податоци. Студентите ќе се запознаат со процесот и методологијата при работа со податоци, почнувајќи од идентификацијата на проблемите, преку собирање на податоци, а потоа и нивна обработка. Студентите ќе ги научат основните техники за обработка на податоците и идентификување на шаблони во нив, како и начините на визуелизација и интерпретација на добиените резултати.",
-		"prerequisite": {
-			"subjects": [
-				"бизнис статистика",
-				"веројатност и статистика",
-				"основи на теоријата на информации",
-				"математика 3"
-			]
-		},
-		"activated": true,
-		"participants": [820, 704, 404],
-		"mandatory": true,
-		"mandatoryFor": ["SIIS23", "PIT23"],
-		"semester": 5,
-		"season": "W",
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23"],
-		"professors": [
-			"Андреа Кулаков",
-			"Димитар Трајанов",
-			"Игор Мишковски",
-			"Слободан Калајџиски"
-		],
-		"assistants": [
-			"Јована Добрева",
-			"Ана Тодоровска",
-			"Милена Трајаноска",
-			"Димитар Пешевски"
-		],
-		"tags": ["Data Science", "Computer Science", "AI / ML"],
-		"technologies": ["Python"],
-		"evaluation": ["Theory", "Code", "Project"],
-		"isEasy": false
-	},
-	"Географски информациски системи": {
-		"subject": "Географски информациски системи",
-		"code": "F18L3S091, F23L3S091",
-		"level": 3,
-		"abstract": "Создавање и управување со просторни (Географски) информациони систем.",
-		"prerequisite": {
-			"credits": 90
-		},
-		"activated": true,
-		"participants": [15, 25, 27],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "S",
-		"semester": 6,
-		"professors": ["Андреја Наумоски", "Коста Митрески"],
-		"assistants": [],
-		"tags": ["Data Science"],
-		"technologies": [],
-		"evaluation": ["Project"],
-		"isEasy": false
-	},
-	"Дигитална форензика": {
-		"subject": "Дигитална форензика",
-		"code": "F18L3S093, F23L3S093",
-		"level": 3,
-		"abstract": "По завршување на курсот студентите ќе се стекнат со знаење за принципите и техниките потребни за една дигитална форензичка истрага. Студентите ќе се стекнат и со практично искуство за работа со различни форензички алатки за различни оперативни системи.",
-		"prerequisite": {
-			"subjects": ["оперативни системи"]
-		},
-		"activated": true,
-		"participants": [106, 130, 134],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "S",
-		"semester": 6,
-		"professors": ["Весна Димитрова"],
-		"assistants": ["Јована Добрева"],
-		"tags": ["Cybersecurity", "Systems Infrastructure"],
-		"technologies": [],
-		"evaluation": ["Theory", "Project"],
-		"isEasy": true
-	},
-	"Дигитални библиотеки": {
-		"subject": "Дигитални библиотеки",
-		"code": "F18L3S094, F23L3S094",
-		"level": 3,
-		"abstract": "Запознавање на студенти со актуелните елементи од областа дигитални библиотеки (ДБ): основи и архитектури на дигитални библиотеки, технологии, управување, организација и развој на дигитални ресурси, презентација на знаење и негово откривање (прибирање на информации), мета-податоци, шеми и стандарди и релевантни интелектуални права. Во зависноста од тековниот интерес студентите ќе се запознаат со конкретен апликативен софтвер за дигитална библиотека и со практики во работењето како и евалуација на истите. По завршување на курсот се очекува студентот да демонстрира знаење за основни елементи на ДБ, технологии за развој и изградба на ДБ, начини на примена, управување и организација на ДБ",
-		"prerequisite": {
-			"credits": 90
-		},
-		"activated": true,
-		"participants": [135, 192, 204],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "S",
-		"semester": 6,
-		"professors": [
-			"Бојан Илијоски",
-			"Магдалена Костоска Ѓорчевска",
-			"Моника Симјаноска"
-		],
-		"assistants": ["Ана Тодоровска", "Мила Додевска"],
-		"tags": ["Computer Science"],
-		"technologies": [],
-		"evaluation": ["Theory"],
-		"isEasy": true
-	},
-	"Дизајн и архитектура на софтвер": {
-		"subject": "Дизајн и архитектура на софтвер",
-		"code": "F18L3W009, F23L3W009",
-		"level": 3,
-		"abstract": "Целта на курсот е студентите да ги научат главните концепти на објектно ориентирана анализа и дизајн. Да се запознаат со техниките на рефакторирање, шаблоните за дизајн и различните архитектури на софтвер. По завршувањето на курсот кандидатите ќе можат да ги идентификуваат ограничувањата и проценат квалитетите на софтверските системи. За конкретна софтверска спецификација ќе можат да ја проценат нејзината комплетност и\nконзистентност, како и да дизајнираат софтверска архитектура во согласност со дадените барања.",
-		"prerequisite": {
-			"subjects": [
-				"објектно ориентирана анализа и дизајн",
-				"објектно-ориентирано програмирање"
-			]
-		},
-		"activated": true,
-		"participants": [396, 369, 298],
-		"mandatory": true,
-		"mandatoryFor": ["SIIS23"],
-		"semester": 5,
-		"season": "W",
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23"],
-		"professors": ["Љупчо Антовски", "Петре Ламески"],
-		"assistants": ["Јана Кузманова", "Елена Атанасоска"],
-		"tags": [
-			"Software Engineering",
-			"Cloud Engineering & DevOps",
-			"Systems Infrastructure"
-		],
-		"technologies": ["any"],
-		"evaluation": ["Theory", "Project"],
-		"isEasy": false
-	},
-	"Дизајн на интеракцијата човек-компјутер": {
-		"subject": "Дизајн на интеракцијата човек-компјутер",
-		"code": "F18L3S010, F23L3S010",
-		"level": 3,
-		"abstract": "Целта на предметот е да ги запознае студентите со основните принципи за дизајнирање на компјутерски системи што вклучуваат интеракција човек-компјутер. За таа цел студентите ќе бидат запознаени со процесот на дизајнирање на интерактивни системи, фазите за дизајнирање (собирање и анализа на барања, креирање на прототипови, имлементација и тестирање на употребливост). По завршување на курсот се очекува студентот да демонстрира познавање на процесот и чекорите за дизајнирање на системи што вклучуваат интеракција човек-компјутер и да може да самостојно или во тим да реализира едноставен проект за дизајнирање на интерактивни системи.",
-		"prerequisite": {
-			"subjects": [
-				"алгоритми и податочни структури",
-				"примена на алгоритми и податочни структури"
-			]
-		},
-		"activated": true,
-		"participants": [758, 750, 495],
-		"mandatory": true,
-		"mandatoryFor": ["SIIS23", "PIT23", "KN23"],
-		"semester": 6,
-		"season": "S",
-		"electiveFor": ["IE23", "IMB23", "KI23"],
-		"professors": [
-			"Бојан Илијоски",
-			"Иван Китановски",
-			"Соња Гиевска",
-			"Сузана Лошковска"
-		],
-		"assistants": ["Влатко Спасев", "Мила Додевска"],
-		"tags": [
-			"UI/UX & Digital Media",
-			"Software Engineering",
-			"Web Development"
-		],
-		"technologies": ["Figma", "Django", "HTML", "CSS"],
-		"evaluation": ["Theory", "Code", "Project"],
-		"isEasy": false
-	},
-	"Дизајн на образовен софтвер": {
-		"subject": "Дизајн на образовен софтвер",
-		"code": "F18L3W050, F23L3W050",
-		"level": 3,
-		"abstract": "По успешното завршување на овој предмет, студентот ќе биде во состојба да ги: разбере принципите (педагошки, когнитивни, инженерски) кои треба да се искористат при дизај на образовен софтвер, местото и примената на различните типови на образовен софтвер во образованието, начинот на кој образовниот софтвер помага да се остварат одередени педагошко-едукативни цели, како и основните принципи за користење на образовен софтвер без притоа тој да ја наруши дидактиката на образовниот процес.",
-		"prerequisite": {
-			"credits": 60
-		},
-		"activated": true,
-		"participants": [180, 118, 89],
-		"mandatory": true,
-		"mandatoryFor": ["IE23"],
-		"semester": 5,
-		"season": "W",
-		"electiveFor": ["IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"professors": ["Гоце Арменски"],
-		"assistants": ["Јована Добрева"],
-		"tags": ["Education", "Software Engineering"],
-		"technologies": [],
-		"evaluation": ["Theory", "Project"],
-		"isEasy": true
-	},
-	"Електронска и мобилна трговија": {
-		"subject": "Електронска и мобилна трговија",
-		"code": "F18L3S025, F23L3S025",
-		"level": 3,
-		"abstract": "Студентот со завршување ќе се стекне со вештини за развој на апликации за е-трговија и м-трговија. Ќе се запознаат со платформите за е-трговија и ќе научат да ги користат и употребуваат истите за градба на електронски продавници.",
-		"prerequisite": {
-			"subjects": ["бази на податоци"]
-		},
-		"activated": true,
-		"participants": [568, 646, 524],
-		"mandatory": true,
-		"mandatoryFor": ["PIT23"],
-		"semester": 6,
-		"season": "S",
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "SIIS23"],
-		"professors": [
-			"Димитар Трајанов",
-			"Костадин Мишев",
-			"Милош Јовановиќ",
-			"Ристе Стојанов",
-			"Сашо Граматиков"
-		],
-		"assistants": ["Ана Тодоровска"],
-		"tags": [
-			"Web Development",
-			"Societal Skills",
-			"Software Engineering",
-			"UI/UX & Digital Media"
-		],
-		"technologies": ["React"],
-		"evaluation": ["Theory", "Code", "Project"],
-		"isEasy": false
-	},
-	"Интегрирани системи": {
-		"subject": "Интегрирани системи",
-		"code": "F18L3S012, F23L3S012",
-		"level": 3,
-		"abstract": "По завршување на курсот се очекува студентите да се оспособени за  дизајн, избор, имплементација и менаџмент на ентерпрајз IT решенија.  Да бидат способни за работа во  корпоративна средина при имплементација и одржување со надградба на ентерпрајз IT решенија. Да бидат способни да развиваат стратегии за технолошки архитектури на комплексни софтверски системи кои опслужуваат обемни податоци, многу корисници и широк спектар деловно процеси.",
-		"prerequisite": {
-			"subjects": ["анализа на софтверските барања", "софтверско инженерство"]
-		},
-		"activated": true,
-		"participants": [460, 442, 325],
-		"mandatory": true,
-		"mandatoryFor": ["SIIS23"],
-		"semester": 6,
-		"season": "S",
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23"],
-		"professors": ["Александар Стојменски", "Иван Чорбев", "Петре Ламески"],
-		"assistants": ["Димитар Китановски", "Зорица Карапанчева"],
-		"tags": [
-			"Embedded Systems",
-			"Web Development",
-			"Computer Architecture",
-			"Software Engineering"
-		],
-		"technologies": [".NET"],
-		"evaluation": ["Theory", "Practical", "Project"],
-		"isEasy": false
-	},
-	"Информациска безбедност": {
-		"subject": "Информациска безбедност",
-		"code": "F18L3W043, F23L3W043",
-		"level": 3,
-		"abstract": "Изучување на поими поврзани со информациската безбедност; постапки и механизми за заштита кај компјутерските системи од\nбезбедносен аспект; методи што се применуваат за подигање на нивото на безбедност во однос на неовластен пристап.",
-		"prerequisite": {
-			"subjects": ["компјутерски мрежи", "компјутерски мрежи и безбедност"]
-		},
-		"activated": true,
-		"participants": [77, 105, 97],
-		"mandatory": true,
-		"mandatoryFor": ["KI23"],
-		"semester": 5,
-		"season": "W",
-		"electiveFor": ["IE23", "KN23", "PIT23", "SIIS23"],
-		"professors": ["Весна Димитрова", "Христина Михајлоска Трпческа"],
-		"assistants": [],
-		"tags": ["Cybersecurity", "Networking"],
-		"technologies": ["any"],
-		"evaluation": ["Theory", "Practical", "Project"],
-		"isEasy": false
-	},
-	"Инфраструктурно програмирање": {
-		"subject": "Инфраструктурно програмирање",
-		"code": "F18L3S111, F23L3S111",
-		"level": 3,
-		"abstract": "Студентот ќе се здобие со знаење за лесно и ефикасно менаџирање на IT системи, управување со традиционалните\nподаточни центри, приватни и јавни облаци и клиентските компјутери и уреди. Студентот ќе може да се запознае и со\nплатформи за менаџирање на повеќе хипервизори, физички ресурси и апликации.",
-		"prerequisite": {
-			"subjects": ["компјутерски мрежи", "компјутерски мрежи и безбедност"]
-		},
-		"activated": false,
-		"participants": [0, 11, 6],
-		"mandatory": true,
-		"mandatoryFor": ["IMB23"],
-		"semester": 8,
-		"season": "S",
-		"electiveFor": ["IE23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"professors": ["Боро Јакимовски"],
-		"assistants": ["Владислав Бидиков"],
-		"tags": [
-			"Cloud Engineering & DevOps",
-			"Systems Infrastructure",
-			"Software Engineering"
-		],
-		"technologies": [],
-		"evaluation": [],
-		"isEasy": false
-	},
-	"Компјутерска електроника": {
-		"subject": "Компјутерска електроника",
-		"code": "F18L3W044, F23L3W044",
-		"level": 3,
-		"abstract": "Запознавање со фундаменталните типови на електронски елементи, принципот на работа, и нивните теоретски\nмодели. Анализа и дизајн на логички кола и засилувачи..",
-		"prerequisite": {
-			"subjects": ["дизајн на дигитални кола", "вовед во компјутерските науки"]
-		},
-		"activated": true,
-		"participants": [30, 34, 21],
-		"mandatory": true,
-		"mandatoryFor": ["KI23"],
-		"semester": 5,
-		"season": "W",
-		"electiveFor": ["IE23", "IMB23", "KN23", "PIT23", "SIIS23"],
-		"professors": ["Ласко Баснарков"],
-		"assistants": [],
-		"tags": ["Computer Architecture", "Embedded Systems", "Physics"],
-		"technologies": [],
-		"evaluation": ["Practical", "Project"],
-		"isEasy": false
-	},
-	"Компјутерска етика": {
-		"subject": "Компјутерска етика",
-		"code": "F18L3W053, F23L3W053",
-		"level": 3,
-		"abstract": "Способност да се согледаат клучните културни, општествени, правни и етички аспекти на ИКТ, влијанието на ИКТ, значењето и професионалните одговорности на ИКТ професионалците; Способност критички да се согледаат и дискутираат потенцијалните\nризици што со себе ги носи ИКТ, вклучувајќи ги и последиците од нејзиниот развој врз развојот на човештвото; Стекнување информации за националните и меѓународните закони за спречување и заштита од компјутерскиот криминал.",
-		"prerequisite": {
-			"subjects": [
-				"алгоритми и податочни структури",
-				"примена на алгоритми и податочни структури"
-			]
-		},
-		"activated": true,
-		"participants": [169, 224, 315],
-		"mandatory": true,
-		"mandatoryFor": ["IE23"],
-		"semester": 5,
-		"season": "W",
-		"electiveFor": ["IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"professors": ["Бојан Илијоски", "Катерина Здравкова"],
-		"assistants": [],
-		"tags": ["Societal Skills", "Education"],
-		"technologies": [],
-		"evaluation": ["Theory", "Project"],
-		"isEasy": true
-	},
-	"Компјутерски звук, музика и говор": {
-		"subject": "Компјутерски звук, музика и говор",
-		"code": "F18L3W115, F23L3S115",
-		"level": 3,
-		"abstract": "Да се стекнат со знаење на клучни прашања поврзани со анализата и генерирањето на звуци, музика и говор.",
-		"prerequisite": {
-			"subjects": [
-				"алгоритми и податочни структури",
-				"примена на алгоритми и податочни структури"
-			]
-		},
-		"activated": true,
-		"participants": [21, 22, 15],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "S",
-		"semester": 6,
-		"professors": ["Вангел Ајановски"],
-		"assistants": [],
-		"tags": ["Multimedia", "Software Engineering", "UI/UX & Digital Media"],
-		"technologies": [],
-		"evaluation": ["Project"],
-		"isEasy": false
-	},
-	"Континуирана интеграција и испорака": {
-		"subject": "Континуирана интеграција и испорака",
-		"code": "F18L3S118, F23L3S118",
-		"level": 3,
-		"abstract": "Запознавање со основните концепти на развој и операции (DevOps) преку континуирана интеграција, тестирање, испорака и распоредување на софтверски решенија и системи. Осознавање на различните перспективи на развојниот (Dev) и оперативниот (Ops) дел од животниот циклус на еден систем. Оспособување на студентите за употреба на алатки за автоматизација на процесите за интеграција, тестирање, испорака и распоредување. Запознавање со предизвиците и најдобрите практики за менаџирање со софтверски изданија и конфигурации.",
-		"prerequisite": {
-			"subjects": ["оперативни системи"]
-		},
-		"activated": true,
-		"participants": [232, 299, 147],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "S",
-		"semester": 6,
-		"professors": ["Милош Јовановиќ", "Панче Рибарски"],
-		"assistants": [],
-		"tags": [
-			"Cloud Engineering & DevOps",
-			"Software Engineering",
-			"Systems Infrastructure"
-		],
-		"technologies": ["Git", "Docker", "Jenkins", "Kubernetes"],
-		"evaluation": ["Theory", "Practical", "Project"],
-		"isEasy": false
-	},
-	"Криптографија": {
-		"subject": "Криптографија",
-		"code": "F18L3S122, F23L3S122",
-		"level": 3,
-		"abstract": "Запознавање со основните криптографски принципи и методи; изучување на основните крипто-\nдизајни; практично користење на изучените криптографски алгоритми.",
-		"prerequisite": {
-			"subjects": [
-				"дискретни структури 2",
-				"дискретна математика",
-				"математика 2",
-				"избрани теми од математика"
-			]
-		},
-		"activated": true,
-		"participants": [31, 37, 44],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "S",
-		"semester": 6,
-		"professors": ["Весна Димитрова", "Христина Михајлоска Трпческа"],
-		"assistants": [],
-		"tags": ["Cybersecurity", "Mathematics", "Computer Science"],
-		"technologies": [],
-		"evaluation": ["Theory", "Practical"],
-		"isEasy": false
-	},
-	"Линеарна алгебра и примени": {
-		"subject": "Линеарна алгебра и примени",
-		"code": "F18L3W035, F23L3W035",
-		"level": 3,
-		"abstract": "Запознавање со концептите и методите на линеарната алгебра и како истите да се користат за рамислување и решавање на проблеми кои произлегуваат од компјутерските науки",
-		"prerequisite": {
-			"subjects": [
-				"дискретна математика",
-				"дискретни структури 2",
-				"математика 2",
-				"избрани теми од математика"
-			]
-		},
-		"activated": true,
-		"participants": [137, 138, 102],
-		"mandatory": true,
-		"mandatoryFor": ["KN23"],
-		"semester": 3,
-		"season": "W",
-		"electiveFor": ["IE23", "IMB23", "KI23", "PIT23", "SIIS23"],
-		"professors": ["Марија Михова"],
-		"assistants": [],
-		"tags": ["Mathematics", "Computer Science", "Data Science"],
-		"technologies": [],
-		"evaluation": ["Theory", "Practical"],
-		"isEasy": false
-	},
-	"Машинско учење": {
-		"subject": "Машинско учење",
-		"code": "F18L3S036, F23L3S036",
-		"level": 3,
-		"abstract": "Целта на курсот е студентите да се запознаат со основите на модерните техники од областа на машинско учење. По завршувањето на курсот кандидатите: ќе имаат продлабочени знаења за напредните технологии и методи за машинско учење; ќе можат да разберат, анализираат и формулираат генерални проблеми од областа на машинско учење; ќе можат успешно да применат алгоритми за машинско учење при решавање на реални проблеми; ќе можат да конципираат, анализираат, реализираат и проценат перформанси на систем за машинско учење.",
-		"prerequisite": {
-			"subjects": [
-				"веројатност и статистика",
-				"бизнис статистика",
-				"математика 3"
-			]
-		},
-		"activated": true,
-		"participants": [114, 101, 124],
-		"mandatory": true,
-		"mandatoryFor": ["KN23"],
-		"semester": 6,
-		"season": "S",
-		"electiveFor": ["IE23", "IMB23", "KI23", "PIT23", "SIIS23"],
-		"professors": [
-			"Александра Каневче Дединец",
-			"Илинка Иваноска",
-			"Мирослав Мирчев"
-		],
-		"assistants": [],
-		"tags": ["AI / ML", "Data Science", "Computer Science"],
-		"technologies": ["Python"],
-		"evaluation": ["Theory", "Practical", "Project"],
-		"isEasy": false
-	},
-	"Мерење и анализа на сообраќај": {
-		"subject": "Мерење и анализа на сообраќај",
-		"code": "F18L3S125, F23L3S125",
-		"level": 3,
-		"abstract": "За инженер кој работи со мрежни технологии е корисно да има познавања од мерење, анализа и моделирање на сообраќајот заради поквалитетно дизајнирање на мрежите како и подобро користење на нивните перформанси. Со овој курс студентите ќе се запознаат со основите на инженерството на комуникациски сообраќај, како и различни техники за анализа, мерење, карактеризација, класификација и предвидување на интернет сообраќај. Исто така ќе биде прикажано како слични анализи може да прават и за други типови на сообраќај.",
-		"prerequisite": {
-			"subjects": [
-				"веројатност и статистика",
-				"основи на теоријата на информации",
-				"бизнис статистика",
-				"математика 3"
-			]
-		},
-		"activated": false,
-		"participants": [0, 0, 0],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "S",
-		"semester": 6,
-		"professors": ["Мирослав Мирчев"],
-		"assistants": [],
-		"tags": ["Networking", "Data Science", "Cybersecurity"],
-		"technologies": [],
-		"evaluation": [],
-		"isEasy": true
-	},
-	"Сајбер безбедност": {
-		"subject": "Сајбер безбедност",
-		"code": "F18L3W065, F23L3W065",
-		"level": 3,
-		"abstract": "Целта на овој курсот е да се покријат принципите за безбедноста кај компјутерските системи и мрежи, при што\nстудентот ќе се запознае со различни техники за напад и одбрана.",
-		"prerequisite": {
-			"subjects": ["компјутерски мрежи", "компјутерски мрежи и безбедност"]
-		},
-		"activated": true,
-		"participants": [167, 115, 74],
-		"mandatory": true,
-		"mandatoryFor": ["IMB23"],
-		"semester": 5,
-		"season": "W",
-		"electiveFor": ["IE23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"professors": ["Анастас Мишев", "Соња Филипоска"],
-		"assistants": ["Војдан Ќорвезироски"],
-		"tags": ["Cybersecurity", "Networking"],
-		"technologies": [],
-		"evaluation": ["Theory", "Practical", "Project"],
-		"isEasy": false
-	},
-	"Мултимедиски мрежи": {
-		"subject": "Мултимедиски мрежи",
-		"code": "F18L3W134, F23L3W134",
-		"level": 3,
-		"abstract": "Целите на предметот се да ги запознае студентите со карактеристиките на мултимедиските содржини кои се важни за далечински пренос, механизмите за дистрибуција на мултимедиски содржини од гледна точка на мрежните протоколи, пречките во мрежите при пренос, како и начините како да се подобори квалитетот на достава. Исто така, студентите ќе се запонзаат со различни платформи и архитектури за достава на мултимедиски содржини. Студентите ќе се оспособат да ги анализираат мулитмедиските содржини, да ги прилагодат и постават на сервери кои ќе обезбедат нивна достава во различни мрежни услови.",
-		"prerequisite": {
-			"subjects": ["компјутерски мрежи", "компјутерски мрежи и безбедност"]
-		},
-		"activated": true,
-		"participants": [95, 117, 109],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "W",
-		"semester": 5,
-		"professors": ["Сашо Граматиков"],
-		"assistants": [],
-		"tags": ["Multimedia", "Networking"],
-		"technologies": [],
-		"evaluation": ["Theory", "Practical", "Project"],
-		"isEasy": false
-	},
-	"Мултимедиски системи": {
-		"subject": "Мултимедиски системи",
-		"code": "F18L3S135, F23L3S135",
-		"level": 3,
-		"abstract": "Запознавање на студентот со основните концепти за работа со мултимедиските податоци, начините на нивно моделирање и имплементирање и манипулација со истите. Студентот ќе биде способен да моделира мултимедиски податоци, ќе знае практично да го применува содржински-базираното пребарување на мултимедиските податоци, и ќе се здобие со воведни знаења за креирање на апликации базирани на  мултимедиските содржини.",
-		"prerequisite": {
-			"subjects": [
-				"алгоритми и податочни структури",
-				"примена на алгоритми и податочни структури"
-			]
-		},
-		"activated": true,
-		"participants": [350, 367, 374],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "S",
-		"semester": 6,
-		"professors": ["Билјана Стојкоска Ристеска"],
-		"assistants": [],
-		"tags": [
-			"Multimedia",
-			"Software Engineering",
-			"Systems Infrastructure",
-			"Computer Architecture"
-		],
-		"technologies": [],
-		"evaluation": [],
-		"isEasy": true
-	},
-	"Напреден веб дизајн": {
-		"subject": "Напреден веб дизајн",
-		"code": "F18L3W136, F23L3W136",
-		"level": 3,
-		"abstract": "Целта на наставната програма е студентите да се запознаат со напредните технологии во областа на веб дизајнот и развојот на модерни динамички веб апликации. По завршување на предметот, студентите ќе имаат преглед на најновите технички достигнувања во областа на веб дизајнот и ќе бидат способни да ги користат истите во изработкa на практични проекти",
-		"prerequisite": {
-			"subjects": ["објектно-ориентирано програмирање"]
-		},
-		"activated": true,
-		"participants": [159, 178, 207],
-		"mandatory": true,
-		"mandatoryFor": ["PIT23"],
-		"semester": 5,
-		"season": "W",
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "SIIS23"],
-		"professors": ["Бобан Јоксимоски", "Гоце Арменски", "Иван Чорбев"],
-		"assistants": ["Јована Добрева", "Славе Темков", "Мила Додевска"],
-		"tags": [
-			"Web Development",
-			"UI/UX & Digital Media",
-			"Software Engineering"
-		],
-		"technologies": ["Vue", "HTML", "CSS"],
-		"evaluation": ["Theory", "Code", "Project"],
-		"isEasy": false
-	},
-	"Основи на роботиката": {
-		"subject": "Основи на роботиката",
-		"code": "F18L3W148, F23L3W148",
-		"level": 3,
-		"abstract": "По завршувањето на овој предмет, студентот се очекува да има познавања од принципите на развој на роботи и системи кои вклучуваат сензори и ефектори. Студентите ќе се запознаат со начините на програмирање роботи кои овозможуваат нивно управување. Студентите ќе се запознаат со примената на роботите во индустријата и општеството",
-		"prerequisite": {
-			"subjects": [
-				"алгоритми и податочни структури",
-				"примена на алгоритми и податочни структури"
-			]
-		},
-		"activated": true,
-		"participants": [86, 142, 86],
-		"mandatory": true,
-		"mandatoryFor": ["KI23"],
-		"semester": 5,
-		"season": "W",
-		"electiveFor": ["IE23", "IMB23", "KN23", "PIT23", "SIIS23"],
-		"professors": ["Андреа Кулаков"],
-		"assistants": ["Влатко Спасев"],
-		"tags": [
-			"Embedded Systems",
-			"AI / ML",
-			"Computer Architecture",
-			"Software Engineering"
-		],
-		"technologies": [],
-		"evaluation": ["Theory", "Code", "Project"],
-		"isEasy": false
-	},
-	"Паралелно и дистрибуирано процесирање": {
-		"subject": "Паралелно и дистрибуирано процесирање",
-		"code": "F18L3W037, F23L3W037",
-		"level": 3,
-		"abstract": "Цел на предметот е студентите да ги совладаат методите на паралелно и дистрибуирано процесирање, можностите за паралелизација на секвенцијална програма, дистрибуирано процесирање на голем број на податоци и проблемите со кои треба да се справат во тој процес",
-		"prerequisite": {
-			"subjects": [
-				"алгоритми и податочни структури",
-				"примена на алгоритми и податочни структури"
-			]
-		},
-		"activated": true,
-		"participants": [76, 86, 55],
-		"mandatory": true,
-		"mandatoryFor": ["KN23"],
-		"semester": 5,
-		"season": "W",
-		"electiveFor": ["IE23", "IMB23", "KI23", "PIT23", "SIIS23"],
-		"professors": ["Владимир Здравески"],
-		"assistants": ["Димитар Пешевски"],
-		"tags": [
-			"Systems Infrastructure",
-			"Computer Science",
-			"Software Engineering"
-		],
-		"technologies": ["C++"],
-		"evaluation": ["Project"],
-		"isEasy": false
-	},
-	"Паралелно програмирање": {
-		"subject": "Паралелно програмирање",
-		"code": "F18L3S149, F23L3S149",
-		"level": 3,
-		"abstract": "Истражување на алгоритмите и техниките за програмирање на најновите паралелни платформи со споделена меморија и со\nдистрибуирана меморија. Студентот ќе се запознае со теоретските и практичните (програмските) компоненти.",
-		"prerequisite": {
-			"subjects": [
-				"алгоритми и податочни структури",
-				"примена на алгоритми и податочни структури"
-			]
-		},
-		"activated": true,
-		"participants": [10, 12, 11],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "S",
-		"semester": 6,
-		"professors": ["Марјан Гушев"],
-		"assistants": ["Владимир Здравески", "Димитар Милески"],
-		"tags": [
-			"Cloud Engineering & DevOps",
-			"Systems Infrastructure",
-			"Software Engineering",
-			"Computer Science"
-		],
-		"technologies": [],
-		"evaluation": [],
-		"isEasy": false
-	},
-	"Персонализирано учење": {
-		"subject": "Персонализирано учење",
-		"code": "F18L3S056, F23L3W056",
-		"level": 3,
-		"abstract": "Персонализираното учење е современ начин на одржување на наставата која ги пресретнува индивудуалните потреби на секој ученик. Студентите се оспособуваат да ги препознаат спецификите на совладување на знаењата кај учениците од основните и средните училишта. Студентите ќе осознаат како да се справат со предизвикот за вклучување на персонализираното учење во рамки на класичната училница и како да се поттикнува усвојувањето на нови знаења кај различните стилови на учење.",
-		"prerequisite": {
-			"subjects": [
-				"алгоритми и податочни структури",
-				"примена на алгоритми и податочни структури"
-			]
-		},
-		"activated": false,
-		"participants": [0, 10, 0],
-		"mandatory": true,
-		"mandatoryFor": ["IE23"],
-		"semester": 5,
-		"season": "W",
-		"electiveFor": ["IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"professors": ["Миле Јованов"],
-		"assistants": [],
-		"tags": ["Education", "Data Science", "Web Development"],
-		"technologies": [],
-		"evaluation": [],
-		"isEasy": true
-	},
-	"Податочно рударење": {
-		"subject": "Податочно рударење",
-		"code": "F18L3S150, F23L3S150",
-		"level": 3,
-		"abstract": "Запознавање со методи за идентификација на валидни, нови, корисни и разбирливи шеми во податоци и откривања на нови знаења. Претпроцесирање на податоците. Вовед во предиктивни модели од податоците: класификација, регресијa. Откривање на кластери. Совладување на техники за собирање на податоци, нивно траксформирање во облик погоден за интерно користење и нивно зачувување.",
-		"prerequisite": {
-			"subjects": [
-				"веројатност и статистика",
-				"математика 3",
-				"основи на теоријата на информации",
-				"бизнис статистика"
-			]
-		},
-		"activated": true,
-		"participants": [66, 36, 29],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "S",
-		"semester": 6,
-		"professors": ["Билјана Тојтовска Рибарски", "Бојан Илијоски"],
-		"assistants": [],
-		"tags": ["Data Science", "AI / ML", "Computer Science"],
-		"technologies": ["Python"],
-		"evaluation": ["Project", "Theory", "Code"],
-		"isEasy": false
-	},
-	"Процесирање на сигналите": {
-		"subject": "Процесирање на сигналите",
-		"code": "F18L3S047, F23L3S047",
-		"level": 3,
-		"abstract": "Познавањето на основите и техниките на дигиталното процесирање на сигнали е важно за секој инженер кој работи на апликации каде што има процесирање на сигнали. Со курсот студентите се воведуваат во теоретските основи дигитално процесирање на сигнали кои вклучуваат дискретизација, Фуриеова и z – трансформација. Студентите ќе стекнат и познавања од основните алатки како што се дигиталните IIR и FIR филтри. Во курсот ќе бидат дадени и основите на теоријата на управување. Преку бројните примери и вежби студентите ќе научат и практично да користат готови алатки за процесирање на сигнали.",
-		"prerequisite": {
-			"subjects": ["математика 1", "калкулус 1"]
-		},
-		"activated": true,
-		"participants": [27, 27, 15],
-		"mandatory": true,
-		"mandatoryFor": ["KI23"],
-		"semester": 6,
-		"season": "S",
-		"electiveFor": ["IE23", "IMB23", "KN23", "PIT23", "SIIS23"],
-		"professors": ["Ласко Баснарков"],
-		"assistants": [],
-		"tags": ["Computer Science", "Mathematics", "Multimedia"],
-		"technologies": ["Python"],
-		"evaluation": ["Theory", "Code"],
-		"isEasy": false
-	},
-	"Вештачка интелигенција за игри": {
-		"subject": "Вештачка интелигенција за игри",
-		"code": "F18L3S153, F23L3S153",
-		"level": 3,
-		"abstract": "Студентите ќе ги разберат тековните проблеми и техники во академската и индустриската Вештачка интелигенција (ВИ) за игри, во исто време стекнувајќи практично искуство во работењето со разни готови алатки за техниките на ВИ применувани во индустријата за игри денес. Ќе бидат оспособени за подобро да ја разберат врската помеѓу ВИ за игрите и естетиката, наративот и играчкото искуство, на тој начин обезбедувајќи зголемена вклученост и задоволство на играчите.",
-		"prerequisite": {
-			"subjects": [
-				"алгоритми и податочни структури",
-				"примена на алгоритми и податочни структури",
-				"вештачка интелигенција"
-			]
-		},
-		"activated": false,
-		"participants": [0, 1, 0],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "S",
-		"semester": 6,
-		"professors": [],
-		"assistants": [],
-		"tags": ["Game Development", "AI / ML", "Software Engineering"],
-		"technologies": [],
-		"evaluation": [],
-		"isEasy": false
-	},
-	"Психологија на училишна возраст": {
-		"subject": "Психологија на училишна возраст",
-		"code": "F18L3S071, F23L3S071",
-		"level": 3,
-		"abstract": "Целта на предметот е студентите да се запознаат со елементите од психологијата и психологијата на учењето",
-		"prerequisite": {},
-		"activated": true,
-		"participants": [710, 522, 362],
-		"mandatory": true,
-		"mandatoryFor": ["IE23"],
-		"semester": 6,
-		"season": "S",
-		"electiveFor": ["IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"professors": ["Калина Сотироска"],
-		"assistants": [],
-		"tags": ["Societal Skills", "Education"],
-		"technologies": [],
-		"evaluation": ["Theory"],
-		"isEasy": true
-	},
-	"Работа со надарени ученици": {
-		"subject": "Работа со надарени ученици",
-		"code": "F18L3S057, F23L3S057",
-		"level": 3,
-		"abstract": "Студентите се оспособуваат да станат професори кои успешно ќе идентификуваат ученици кои имаат потенцијал да го прошират знаењето од областа на информатиката и решавање задачи од алгоритамска природа, со употреба на напредни структури и алгоритми коишто не се опфатени со редовната програма. Идните наставници се оспособуваат да пренесат основно знаење за напредната програма на учениците и да ги насочат во процесот на учество на национални и интернационални натпревари по информатика.",
-		"prerequisite": {
-			"subjects": [
-				"алгоритми и податочни структури",
-				"примена на алгоритми и податочни структури"
-			]
-		},
-		"activated": true,
-		"participants": [40, 9, 0],
-		"mandatory": true,
-		"mandatoryFor": ["IE23"],
-		"semester": 6,
-		"season": "S",
-		"electiveFor": ["IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"professors": ["Ана Мадевска Богданова"],
-		"assistants": [],
-		"tags": ["Education", "Societal Skills"],
-		"technologies": [],
-		"evaluation": ["Theory"],
-		"isEasy": true
-	},
-	"Сервисно ориентирани архитектури": {
-		"subject": "Сервисно ориентирани архитектури",
-		"code": "F18L3S155, F23L3S155",
-		"level": 3,
-		"abstract": "Предметот сервисно-ориентирани архитектури има за цел да ги запознае студентите со организација, дизајн и развој на на дистрибуираните системи базирани на сервиси. Сервисно-ориентираните архитектури опфаќа теми од софтверско и системско инженерство. Од аспект на софтверско инженерство студентите ќе се запознаат со процесот на анализа и дизајн при развој на сервисно-ориентирани апликации, како и со организацијата на процесот на развој на софвер погодни за сервисно-ориентирани системи. Во поглед на системско инженерство, предметот ќе го покрие целосниот екосистем на сервисно-ориентирана и микро-сервисно ориентирана архитектура, нејзините компоненти, поврзаност, соработка и координација.",
-		"prerequisite": {
-			"subjects": [
-				"алгоритми и податочни структури",
-				"примена на алгоритми и податочни структури"
-			]
-		},
-		"activated": true,
-		"participants": [78, 23, 33],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "S",
-		"semester": 6,
-		"professors": ["Панче Рибарски"],
-		"assistants": [],
-		"tags": [
-			"Software Engineering",
-			"Cloud Engineering & DevOps",
-			"Web Development"
-		],
-		"technologies": ["Kotlin"],
-		"evaluation": ["Theory", "Project"],
-		"isEasy": false
-	},
-	"Современи компјутерски архитектури": {
-		"subject": "Современи компјутерски архитектури",
-		"code": "F18L3S158, F23L3W158",
-		"level": 3,
-		"abstract": "Разбирање на концептите и имплементациите на современите процесори. Анализа на современите процесори. Студентот ќе биде оспособен да дизјанира  современи процесори и процесирачки елементи",
-		"prerequisite": {
-			"subjects": [
-				"архитектура и организација на компјутери",
-				"компјутерски архитектури"
-			]
-		},
-		"activated": false,
-		"participants": [0, 9, 0],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "W",
-		"semester": 5,
-		"professors": ["Дејан Спасов"],
-		"assistants": [],
-		"tags": ["Computer Architecture"],
-		"technologies": [],
-		"evaluation": [],
-		"isEasy": false
-	},
-	"Софтверски дефинирана безбедност": {
-		"subject": "Софтверски дефинирана безбедност",
-		"code": "F18L3S159, F23L3S159",
-		"level": 3,
-		"abstract": "Разбирање и примена на клучните концепти од развој на безбеден софтвер во поглед на податоци, автентикација, авторизација и безбедни веб апликации.",
-		"prerequisite": {
-			"credits": 100
-		},
-		"activated": true,
-		"participants": [13, 0, 0],
-		"mandatory": true,
-		"mandatoryFor": ["IMB23"],
-		"semester": 6,
-		"season": "S",
-		"electiveFor": ["IE23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"professors": [],
-		"assistants": [],
-		"tags": ["Cybersecurity", "Networking", "Cloud Engineering & DevOps"],
-		"technologies": [],
-		"evaluation": [],
-		"isEasy": false
-	},
-	"Софтверски квалитет и тестирање": {
-		"subject": "Софтверски квалитет и тестирање",
-		"code": "F18L3S019, F23L3S019",
-		"level": 3,
-		"abstract": "Целата на курсот е запознавање на студентите со потребата од тестирање на софтвер, различните техники на моделирање на софтверот и искористување на тие модели за тестирање, како и практични работа на тестирање, валидација и верификација на софтвер.",
-		"prerequisite": {
-			"subjects": ["софтверско инженерство", "дизајн и архитектура на софтвер"]
-		},
-		"activated": true,
-		"participants": [427, 405, 325],
-		"mandatory": true,
-		"mandatoryFor": ["SIIS23"],
-		"semester": 6,
-		"season": "S",
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23"],
-		"professors": [
-			"Ѓорѓи Маџаров",
-			"Бојана Котеска",
-			"Христина Михајлоска Трпческа"
-		],
-		"assistants": ["Ана Тодоровска", "Славе Темков"],
-		"tags": ["Software Engineering"],
-		"technologies": ["Java"],
-		"evaluation": ["Theory", "Code", "Project"],
-		"isEasy": false
-	},
-	"Автоматизирање на процеси во машинско учење": {
-		"subject": "Автоматизирање на процеси во машинско учење",
-		"code": "F18L3S163, F23L3S163",
-		"level": 3,
-		"abstract": "Запознање со основните чекори за поставување на модели од машинско учење во продукција, оптимизација на piplelines во ML, дизајн на целосен животен циклус на ML моделите, CI/CD кај ML, упраување со ML код, следење на моделите во продукција, менаџирање со модели.",
-		"prerequisite": {
-			"subjects": [
-				"алгоритми и податочни структури",
-				"примена на алгоритми и податочни структури"
-			]
-		},
-		"activated": true,
-		"participants": [22, 0, 0],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "S",
-		"semester": 6,
-		"professors": ["Билјана Тојтовска Рибарски"],
-		"assistants": [],
-		"tags": [
-			"AI / ML",
-			"Cloud Engineering & DevOps",
-			"Software Engineering",
-			"Data Science"
-		],
-		"technologies": [],
-		"evaluation": [],
-		"isEasy": false
-	},
-	"Учење на далечина": {
-		"subject": "Учење на далечина",
-		"code": "F18L3S166, F23L3S166",
-		"level": 3,
-		"abstract": "Студентите ќе се запознаат со концептот за далечинско учење, со технологиите кои го поддржуваат далечинското учење, како\nи со придобивките со неговото користење. Со слушање на овој курс студентите ќе се оспособат да планираат и дизајнираат,\nда научат како се имплементираат системи за далечинско учење, ќе ја осознаат разликата помеѓу курсевите кај учење на\nдалечина и курсевите во класичната настава, улогата на инструкторот и ученикот во овој систем, како и сегашноста и\nиднината на системите за далечинско учење",
-		"prerequisite": {
-			"subjects": [
-				"алгоритми и податочни структури",
-				"примена на алгоритми и податочни структури"
-			]
-		},
-		"activated": true,
-		"participants": [130, 106, 142],
-		"mandatory": true,
-		"mandatoryFor": ["IE23"],
-		"semester": 6,
-		"season": "S",
-		"electiveFor": ["IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"professors": ["Гоце Арменски"],
-		"assistants": [],
-		"tags": ["Education"],
-		"technologies": [],
-		"evaluation": ["Theory", "Project"],
-		"isEasy": true
-	},
-	"Основи на теоријата на компјутерските науки": {
-		"subject": "Основи на теоријата на компјутерските науки",
-		"code": "F18L3S039, F23L3S039",
-		"level": 3,
-		"abstract": "На овој курс ќе стекнете основно разбирање за класичните модели кои се користат во основата на компјутерските науки за анализа на пресметковните процеси, вклучувајќи конечни автомати, граматики и Тјурингови машини. Овие  модели може да се користат за да се одговори на прашања како што се кои проблеми може да се решат со компјутер и дали има некои проблеми кои се суштински потешки за решавање од другите.",
-		"prerequisite": {
-			"subjects": [
-				"дискретна математика",
-				"дискретни структури 2",
-				"математика 2",
-				"избрани теми од математика"
-			]
-		},
-		"activated": true,
-		"participants": [97, 124, 90],
-		"mandatory": true,
-		"mandatoryFor": ["KN23"],
-		"semester": 6,
-		"season": "S",
-		"electiveFor": ["IE23", "IMB23", "KI23", "PIT23", "SIIS23"],
-		"professors": ["Марија Михова"],
-		"assistants": [],
-		"tags": ["Computer Science", "Mathematics"],
-		"technologies": [],
-		"evaluation": ["Theory", "Practical"],
-		"isEasy": false
-	},
-	"Автономна роботика": {
-		"subject": "Автономна роботика",
-		"code": "F18L3W072, F23L3W072",
-		"level": 3,
-		"abstract": "По завршувањето на овој предмет, студентот се очекува да има продлабочено знаење за развој на автономни роботски системи (автономни возила, автономни летала и сл.) со користење на веројатностните пристапи во роботиката.",
-		"prerequisite": {
-			"subjects": ["основи на роботиката", "алгоритми и податочни структури"]
-		},
-		"activated": false,
-		"participants": [0, 0, 0],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "W",
-		"semester": 7,
-		"professors": ["Петре Ламески"],
-		"assistants": [],
-		"tags": [
-			"Embedded Systems",
-			"AI / ML",
-			"Software Engineering",
-			"Computer Architecture"
-		],
-		"technologies": [],
-		"evaluation": [],
-		"isEasy": false
-	},
-	"Администрација на бази податоци": {
-		"subject": "Администрација на бази податоци",
-		"code": "F18L3W074, F23L3W074",
-		"level": 3,
-		"abstract": "Предметот ќе се фокусира на state-of-the-art технологиите поврзани со имплементација на базите на податоци. Технологиите и техниките кои се користат за имплементација на базите на податоци ќе бидат обработени како од кориснички, така и од системски аспект.\nОд аспект на системско инжинерство, предметот ќе навлезе во концептите и алгоритмите за: процесирање на трансакции, контрола на истовремено извршување, репрезентација на лог и метадата, безбедносни политики кај базите, техники за репликација и дистрибуција, бекап и реставрација.",
-		"prerequisite": {
-			"subjects": ["бази на податоци"]
-		},
-		"activated": true,
-		"participants": [10, 12, 10],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "W",
-		"semester": 7,
-		"professors": ["Вангел Ајановски"],
-		"assistants": [],
-		"tags": ["Databases", "Systems Infrastructure"],
-		"technologies": [],
-		"evaluation": [],
-		"isEasy": false
-	},
-	"Анализа и дизајн на ИС": {
-		"subject": "Анализа и дизајн на ИС",
-		"code": "F18L3W075, F23L3W075",
-		"level": 3,
-		"abstract": "Запознавање на студенти со актуелните техники за анализа и дизајн на информациските системи (ИС). Навлегување во студија на случај на развој на ИС со користење на актуелни методологии. Оспособување за практична анализа на кориснички побарувања и креирање ефективни модели во сите фази  развој на еден ИС, со нагласок на фазите на анализа и дизајн. По завршување на курсот се очекува студентот да демонстрира знаење за користење на современи пристапи во процесот на анализа и дизајн на информациските системи.",
-		"prerequisite": {
-			"subjects": ["бази на податоци"]
-		},
-		"activated": true,
-		"participants": [60, 110, 165],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "W",
-		"semester": 7,
-		"professors": ["Владимир Трајковиќ"],
-		"assistants": ["Јана Кузманова"],
-		"tags": ["Software Engineering", "Societal Skills"],
-		"technologies": ["any"],
-		"evaluation": ["Theory", "Practical"],
-		"isEasy": false
-	},
-	"Биолошки инспирирано пресметување": {
-		"subject": "Биолошки инспирирано пресметување",
-		"code": "F18L3S07, F23L3S078",
-		"level": 3,
-		"abstract": "Целта на овој курс е запознавање на студентите со алгоритми кои се инспирирани од феномени кои се појавуваат во природата и примена на истите за решавање на проблеми од оптимизација, дизајн и учење. Фокусот ќе биде поставен врз абстракцијата на алгоритмите од воочените феномени, анализа на нивниот резултат како и нивна споредба. Во текот на курсот ќе се посвети внимание на конкретни примени на споменатите алгоритми. По завршувањето на курсот се очекува студентите да се здобијат со:\n-\tЗнаење за природните феномени кои се инспирација за дискутираните алгоритми\n-\tРазбирање за силните и слабите страни на алгоритмите\n-\tСпособност за идентификување на соодветноста на алгоритмите и нивна примена во проблеми од оптимизација, дизајн и учење",
-		"prerequisite": {
-			"subjects": [
-				"алгоритми и податочни структури",
-				"примена на алгоритми и податочни структури"
-			]
-		},
-		"activated": true,
-		"participants": [13, 6, 7],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "S",
-		"semester": 8,
-		"professors": ["Илинка Иваноска", "Кире Триводалиев"],
-		"assistants": [],
-		"tags": ["AI / ML", "Computer Science"],
-		"technologies": [],
-		"evaluation": [],
-		"isEasy": false
-	},
-	"Блоковски вериги и криптовалути": {
-		"subject": "Блоковски вериги и криптовалути",
-		"code": "F18L3S121, F23L3W121",
-		"level": 3,
-		"abstract": "Целта на овој курс е да овозможи на слушателите да разберат како фунцкционираат крипто валутите,  и идејата, технологиите и организациите кои ги поддржуваат или произлегуваат од нив.",
-		"prerequisite": {
-			"subjects": [
-				"алгоритми и податочни структури",
-				"примена на алгоритми и податочни структури"
-			]
-		},
-		"activated": false,
-		"participants": [0, 14, 10],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "W",
-		"semester": 7,
-		"professors": ["Панче Рибарски"],
-		"assistants": [],
-		"tags": ["Cybersecurity", "Software Engineering", "Computer Science"],
-		"technologies": [],
-		"evaluation": ["Project"],
-		"isEasy": false
-	},
-	"Веб базирани системи": {
-		"subject": "Веб базирани системи",
-		"code": "F18L3W079, F23L3W079",
-		"level": 3,
-		"abstract": "Запознавање и користење на технологиите на семантички веб, поврзани податоци и графови на знаење. Студентите ќе научат да развиваат интелигентни апликации базирани на графови на знаење и да пронаоѓаат и користат отворени податочни множества.",
-		"prerequisite": {
-			"subjects": [
-				"алгоритми и податочни структури",
-				"примена на алгоритми и податочни структури"
-			]
-		},
-		"activated": true,
-		"participants": [63, 102, 140],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "W",
-		"semester": 7,
-		"professors": ["Димитар Трајанов", "Милош Јовановиќ"],
-		"assistants": ["Милена Трајаноска"],
-		"tags": ["Web Development", "Software Engineering", "AI / ML"],
-		"technologies": [],
-		"evaluation": ["Project", "Theory"],
-		"isEasy": false
-	},
-	"Веб пребарувачки системи": {
-		"subject": "Веб пребарувачки системи",
-		"code": "F18L3S080, F23L3S080",
-		"level": 3,
-		"abstract": "Запознавање со концепти за развој на веб пребарувачките системи. Разбирање на начините на обработување на прашањата и множеството на документи низ кои се пребарува, како и начини за автоматско собирање податоци од веб. По завршувањето на курсот се очекува студентот да демонстрира познавање на методи за процесирање на прашања, репрезентација на документите и нивно индексирање и класификацирање, да демонстрира познавање на методи за пребарување и индексирање на слики и да може самостојно да развива алгоритми за пребарување со користење на програмски алатки.",
-		"prerequisite": {
-			"subjects": [
-				"вештачка интелигенција",
-				"вовед во науката за податоци",
-				"машинско учење"
-			]
-		},
-		"activated": true,
-		"participants": [4, 3, 5],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "S",
-		"semester": 8,
-		"professors": ["Вангел Ајановски"],
-		"assistants": [],
-		"tags": ["Web Development", "Databases", "Computer Science"],
-		"technologies": [],
-		"evaluation": [],
-		"isEasy": false
-	},
-	"Виртуелна реалност": {
-		"subject": "Виртуелна реалност",
-		"code": "F18L3S083, F23L3S083",
-		"level": 3,
-		"abstract": "Предметот треба да овозможи запознавање на студентите со концептот на виртуелна реалност, различните\nвидови виртуелни околини, влезно-излезните уреди, како и основни програмерски техники за дизајнирање и\nразвој на виртуелни околини. По завршување на курсот се очекува студентот да го разбира концептот на\nвиртуелната реалност, да биде во можност да ги опише карактеристиките на различните видови виртуелни\nоколини и да има основни познавања за дизајнирање и развој на виртуелни светови.",
-		"prerequisite": {
-			"subjects": [
-				"алгоритми и податочни структури",
-				"примена на алгоритми и податочни структури"
-			]
-		},
-		"activated": true,
-		"participants": [82, 131, 162],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "S",
-		"semester": 8,
-		"professors": ["Катарина Тројачанец Динева", "Сузана Лошковска"],
-		"assistants": [],
-		"tags": ["UI/UX & Digital Media", "Multimedia"],
-		"technologies": ["Unity"],
-		"evaluation": ["Theory", "Project"],
-		"isEasy": true
-	},
-	"Вовед во анализа на временските серии": {
-		"subject": "Вовед во анализа на временските серии",
-		"code": "F18L3W076, F23L3W076",
-		"level": 3,
-		"abstract": "Запознавање на студентите со анализа на произволни временски серии со традиционални статистички методи, како и со методи базирани на длабоко учење. Курсот дава вовед во типовите на временски серии, покрива стационарни процеси, ARMA модели, ARIMA и сезонални ARIMA модели, временско-просторни методи. Со знаењето стекнато на курсот студентите ќе може да анализираат временски серии од разновидни извори, податочни текови (data streams), IoT и да откриваат трендови и аномалии, да предвидуваат идни појави, како и да ги користат за препознавање на разновидни настани кои се опишани со временски серии.",
-		"prerequisite": {
-			"subjects": [
-				"вештачка интелигенција",
-				"вовед во науката за податоци",
-				"машинско учење"
-			]
-		},
-		"activated": true,
-		"participants": [8, 0, 0],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "W",
-		"semester": 7,
-		"professors": ["Ефтим Здравевски"],
-		"assistants": [],
-		"tags": ["Data Science", "Mathematics", "AI / ML"],
-		"technologies": [],
-		"evaluation": [],
-		"isEasy": false
-	},
-	"Вовед во биоинформатиката": {
-		"subject": "Вовед во биоинформатиката",
-		"code": "F18L3W085, F23L3W085",
-		"level": 3,
-		"abstract": "Студентите да се запознаат со областите и проблемите кои ги покрива биоинформатиката, да\nбидат во можност да вршат генска и протеинска секвенцна анализа, да користат биолошки бази\nподатоци, да ги запознаат пресметковните методи за решавање проблеми во молекуларната\nбиологија.",
-		"prerequisite": {
-			"subjects": [
-				"вештачка интелигенција",
-				"машинско учење",
-				"вовед во науката за податоци"
-			]
-		},
-		"activated": true,
-		"participants": [20, 21, 10],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "W",
-		"semester": 7,
-		"professors": ["Моника Симјаноска", "Невена Ацковска"],
-		"assistants": [],
-		"tags": ["Data Science", "Computer Science"],
-		"technologies": [],
-		"evaluation": ["Theory", "Practical", "Project"],
-		"isEasy": false
-	},
-	"Вовед во когнитивни науки": {
-		"subject": "Вовед во когнитивни науки",
-		"code": "F18L3S086, F23L3S086",
-		"level": 3,
-		"abstract": "Целта е да се разбере како работи човечкиот мозок. Студентите ќе се запознаат со теоретските и емпириските погледи кои ја дефинираат когнитивната наука. Ќе се запознаат со истражувањата за природата на менталните процеси како перцепцијата, мислењето, меморијата, фантазијата, вниманието, јазикот, интелигенцијата, донесувањето одлуки и решавањето проблеми. Студентите ќе научат кои се алатките превземени од експерименталната психологија, наука на развојот, комјутерската наука, лингвистика, визуализацијата, филозофијата, антропологијата, бихевиоризмот, неврологијата. Курсот ќе ги поврзе сите овие пристапи кои се поврзуваат во когнитивната наука.",
-		"prerequisite": {
-			"credits": 120
-		},
-		"activated": true,
-		"participants": [41, 56, 139],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "S",
-		"semester": 8,
-		"professors": ["Андреа Кулаков"],
-		"assistants": ["Влатко Спасев"],
-		"tags": ["AI / ML", "Computer Science"],
-		"technologies": [],
-		"evaluation": ["Theory", "Project"],
-		"isEasy": true
-	},
-	"Вовед во паметни градови": {
-		"subject": "Вовед во паметни градови",
-		"code": "F18L3W088, F23L3W088",
-		"level": 3,
-		"abstract": "Да го запознае студентот со главните концепти, теми и трендови на паметните и одржливите градови, улогата на информациите во дизајнот на мрежните ресурси и влијанието врз урбаниот дизајн, развојот и урбаното живеење.",
-		"prerequisite": {
-			"subjects": [
-				"вештачка интелигенција",
-				"вовед во науката за податоци",
-				"машинско учење"
-			]
-		},
-		"activated": false,
-		"participants": [0, 41, 13],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "W",
-		"semester": 7,
-		"professors": ["Александра Каневче Дединец"],
-		"assistants": [],
-		"tags": ["Data Science", "AI / ML"],
-		"technologies": ["Python"],
-		"evaluation": ["Theory", "Project"],
-		"isEasy": false
-	},
-	"Вовед во препознавање на облици": {
-		"subject": "Вовед во препознавање на облици",
-		"code": "F18L3W089, F23L3W089",
-		"level": 3,
-		"abstract": "Целта на курсот е студентите да ги научат главните концепти на методите и техниките кои се применуваат за\nпрепознавање на облици.По завршувањето на курсот кандидатитеќе бидат оспособени за дизајнирање,\nреализирање и имплементација на системи за автоматско препознавање на облици, проценка на нивните\nперформанси и нивна оптимизација.",
-		"prerequisite": {
-			"subjects": [
-				"вештачка интелигенција",
-				"вовед во науката за податоци",
-				"машинско учење"
-			]
-		},
-		"activated": true,
-		"participants": [8, 8, 9],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "W",
-		"semester": 7,
-		"professors": ["Дејан Ѓорѓевиќ"],
-		"assistants": [],
-		"tags": ["AI / ML", "Data Science", "Computer Science"],
-		"technologies": ["any"],
-		"evaluation": ["Theory", "Code", "Project"],
-		"isEasy": false
-	},
-	"Дигитална постпродукција": {
-		"subject": "Дигитална постпродукција",
-		"code": "F18L3W092, F23L3W092",
-		"level": 3,
-		"abstract": "По завршување на курсот се очекува студентите да се оспособени за основни методи за дигитална постпродукција, дигитално композитирање, работа со секвенци од слики, интеграција на дигитални објекти во слики и следење и спарување на движења од различни извори",
-		"prerequisite": {
-			"subjects": [
-				"алгоритми и податочни структури",
-				"примена на алгоритми и податочни структури"
-			]
-		},
-		"activated": false,
-		"participants": [0, 0, 0],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "W",
-		"semester": 7,
-		"professors": [],
-		"assistants": [],
-		"tags": ["Multimedia", "UI/UX & Digital Media"],
-		"technologies": [],
-		"evaluation": [],
-		"isEasy": false
-	},
-	"Дизајн на компјутерски мрежи": {
-		"subject": "Дизајн на компјутерски мрежи",
-		"code": "F18L3S063, F23L3S063",
-		"level": 3,
-		"abstract": "Целта на овој курсот е да го оспособи студентот да работи со големи компјутерски мрежи и да обезбеди колаборативна работа на различни административни региони, како и да дизајнира различни типови компјутерски мрежи според потребите на крајните корисници.",
-		"prerequisite": {
-			"subjects": ["компјутерски мрежи", "компјутерски мрежи и безбедност"]
-		},
-		"activated": true,
-		"participants": [51, 35, 43],
-		"mandatory": true,
-		"mandatoryFor": ["IMB23"],
-		"semester": 8,
-		"season": "S",
-		"electiveFor": ["IE23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"professors": ["Александра Каневче Дединец", "Анастас Мишев"],
-		"assistants": ["Кирил Ќироски"],
-		"tags": ["Networking"],
-		"technologies": [],
-		"evaluation": ["Theory", "Practical", "Project"],
-		"isEasy": false
-	},
-	"Дистрибуирани системи": {
-		"subject": "Дистрибуирани системи",
-		"code": "F18L3W064, F23L3W064",
-		"level": 3,
-		"abstract": "Предметот има за цел запознавање со развојот на middleware системите. Предмеот ги покрива принципите врз кои се изградени дистрибуираните системи, пред се комуникациите, процесирањето, именување, конзистентност и репликација, справувње со дефекти и безбедност. Овие принципи се понатаму обработени во нивната примена кај дистрибуираните веб базирани системи, дистрибуираните објектно базирани системи, дистрибуираните датотечни системи и дистрибуираните коориднациски системи.",
-		"prerequisite": {
-			"subjects": ["компјутерски мрежи", "компјутерски мрежи и безбедност"]
-		},
-		"activated": true,
-		"participants": [40, 45, 52],
-		"mandatory": true,
-		"mandatoryFor": ["IMB23"],
-		"semester": 7,
-		"season": "W",
-		"electiveFor": ["IE23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"professors": ["Боро Јакимовски"],
-		"assistants": ["Ненад Анчев"],
-		"tags": [
-			"Cloud Engineering & DevOps",
-			"Systems Infrastructure",
-			"Networking",
-			"Software Engineering"
-		],
-		"technologies": ["Java"],
-		"evaluation": ["Theory", "Code"],
-		"isEasy": false
-	},
-	"Дистрибуирано складирање на податоци": {
-		"subject": "Дистрибуирано складирање на податоци",
-		"code": "F18L3W098, F23L3W098",
-		"level": 3,
-		"abstract": "Се поголемата важност и големиот обем на податоците побаруваат соодветни техники и технологии за нивно безбедно, достапно, надежно и скалабилно складирање. Се почестите приоди за складирање на податоци се ориентираат кон дистрибуирани решенија чии имплементации вклучуваат најразлични архитектури и модели со што се добиваат различни придобивки, специфични за секоја имплемнетација. Предметот има за цел да ги обработи техниките на хардверско, мрежно и софтвеско ниво за обезбедување на дистрибуирано складирање на податоците.",
-		"prerequisite": {
-			"subjects": ["компјутерски мрежи", "компјутерски мрежи и безбедност"]
-		},
-		"activated": false,
-		"participants": [0, 0, 0],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "W",
-		"semester": 7,
-		"professors": [],
-		"assistants": [],
-		"tags": [
-			"Databases",
-			"Cloud Engineering & DevOps",
-			"Systems Infrastructure"
-		],
-		"technologies": [],
-		"evaluation": [],
-		"isEasy": false
-	},
-	"Етичко хакирање": {
-		"subject": "Етичко хакирање",
-		"code": "F18L3S101, F23L3S101",
-		"level": 3,
-		"abstract": "Студентот ќе ги запознае основните концепти, техники и алатки кои се користат во полето на безбедност на системи. Со преземање на улогата на \"напаѓач\" студентот ќе се стекне со знаење за повеќето сигурносни слабости во неговата околина и начин како да се заштити од нив.",
-		"prerequisite": {
-			"subjects": ["компјутерски мрежи", "компјутерски мрежи и безбедност"]
-		},
-		"activated": true,
-		"participants": [82, 69, 48],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "S",
-		"semester": 8,
-		"professors": ["Анастас Мишев", "Христина Михајлоска Трпческа"],
-		"assistants": ["Војдан Ќорвезироски"],
-		"tags": ["Cybersecurity", "Networking"],
-		"technologies": [],
-		"evaluation": ["Theory", "Project"],
-		"isEasy": false
-	},
-	"ИКТ за развој": {
-		"subject": "ИКТ за развој",
-		"code": "F18L3S102, F23L3S102",
-		"level": 3,
-		"abstract": "Целта на курсот е да ги разгледа основите принципи и најдобри практики за користењето на технологијата за развој на човештвото. Да се разбере концептот на одржлив развој кој ги го вклучува влијанието врз природата, луѓето, општеството и управувањето. Разбирање на можностите за примена на нови ИКТ технологии за општо добро.",
-		"prerequisite": {
-			"subjects": ["бизнис и менаџмент"]
-		},
-		"activated": true,
-		"participants": [10, 0, 0],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "S",
-		"semester": 8,
-		"professors": [],
-		"assistants": [],
-		"tags": [],
-		"technologies": [],
-		"evaluation": [],
-		"isEasy": true
-	},
-	"Имплементација на софтверски системи со слободен и отворен код": {
-		"subject": "Имплементација на софтверски системи со слободен и отворен код",
-		"code": "F18L3W103, F23L3W103",
-		"level": 3,
-		"abstract": "По завршување на курсот се очекува студентите да се оспособени за продуктивно учество во поголеми софтверски\nтимови кои работат употребувајќи технологии со слободен и отворен код. Да бидат способни за работа во програмски јазици со отворен код, да развиваат веб апликации на тие платформи. Да бидат способни да водат софтверски проект\nбазиран на технологии со слободен и отворен код.",
-		"prerequisite": {
-			"subjects": [
-				"алгоритми и податочни структури",
-				"примена на алгоритми и податочни структури"
-			]
-		},
-		"activated": true,
-		"participants": [219, 73, 69],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "W",
-		"semester": 7,
-		"professors": ["Иван Чорбев", "Александар Стојменски"],
-		"assistants": ["Ема Пандилова"],
-		"tags": [
-			"Software Engineering",
-			"Systems Infrastructure",
-			"Web Development"
-		],
-		"technologies": ["Laravel"],
-		"evaluation": ["Theory", "Code", "Project"],
-		"isEasy": false
-	},
-	"Иновации во ИКТ": {
-		"subject": "Иновации во ИКТ",
-		"code": "F18L3W105, F23L3W105",
-		"level": 3,
-		"abstract": "Разбирање на иновативноста. Стекнување на иновативни вештини. Примена на ИКТ за креирање на иновации. Креирање на\nиновации во ИКТ.",
-		"prerequisite": {
-			"subjects": ["бизнис и менаџмент"]
-		},
-		"activated": true,
-		"participants": [38, 78, 93],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "W",
-		"semester": 7,
-		"professors": ["Магдалена Костоска Ѓорчевска", "Марјан Гушев"],
-		"assistants": ["Димитар Милески"],
-		"tags": ["Societal Skills", "Computer Science", "Software Engineering"],
-		"technologies": [],
-		"evaluation": ["Theory", "Project"],
-		"isEasy": true
-	},
-	"Откривање знаење со длабоко учење": {
-		"subject": "Откривање знаење со длабоко учење",
-		"code": "F18L3S106, F23L3S106",
-		"level": 3,
-		"abstract": "По завршување на предметот, студентот ќе биде оспособен за  избор на соодветни техники за откривање и извлекување на знаење од различен вид податоци. Студентот ќе поседува познавања за напредни архитектури за длабоко учење со примена во системи за препораки, анализа на граф-структурирани податоци и мултимодална фузија на податоци.",
-		"prerequisite": {
-			"subjects": [
-				"вештачка интелигенција",
-				"вовед во науката за податоци",
-				"машинско учење"
-			]
-		},
-		"activated": true,
-		"participants": [27, 31, 10],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "S",
-		"semester": 8,
-		"professors": ["Кире Триводалиев", "Соња Гиевска"],
-		"assistants": ["Мартина Тошевска"],
-		"tags": ["AI / ML", "Data Science"],
-		"technologies": ["Python"],
-		"evaluation": ["Project"],
-		"isEasy": false
-	},
-	"Интелигентни системи": {
-		"subject": "Интелигентни системи",
-		"code": "F18L3S107, F23L3S107",
-		"level": 3,
-		"abstract": "Целта на предметот е да го заокружи знаењето на студентите од областа на интелигентните системи, почнувајќи од претпроцесирањена податоците до валидирање на изградениот систем. Студентите ќе се оспособат да изградат интелигентен систем од почеток до крај на реални проблеми од специфичен домен, користејќи алатки за автоматизација на процесот на градење ИС.",
-		"prerequisite": {
-			"subjects": [
-				"вештачка интелигенција",
-				"вовед во науката за податоци",
-				"машинско учење"
-			]
-		},
-		"activated": true,
-		"participants": [7, 0, 6],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "S",
-		"semester": 8,
-		"professors": ["Ана Мадевска Богданова", "Бојан Илијоски"],
-		"assistants": [],
-		"tags": ["AI / ML", "Software Engineering", "Data Science"],
-		"technologies": ["Python"],
-		"evaluation": [],
-		"isEasy": false
-	},
-	"Интернет на нештата": {
-		"subject": "Интернет на нештата",
-		"code": "F18L3W108, F23L3W108",
-		"level": 3,
-		"abstract": "Студентот ќе биде запознаен со главните развојни чекори  и предизвици при дизајнирање на решенија базирани на Интернет на нештата.  Студентот ќе може да моделира, дизајнира и имплементира вакви системи во различни апликативни домени.",
-		"prerequisite": {
-			"subjects": ["компјутерски мрежи", "компјутерски мрежи и безбедност"]
-		},
-		"activated": true,
-		"participants": [20, 8, 30],
-		"mandatory": true,
-		"mandatoryFor": ["KI23"],
-		"semester": 7,
-		"season": "W",
-		"electiveFor": ["IE23", "IMB23", "KN23", "PIT23", "SIIS23"],
-		"professors": ["Игор Мишковски"],
-		"assistants": ["Владислав Бидиков"],
-		"tags": [
-			"Embedded Systems",
-			"Networking",
-			"Cloud Engineering & DevOps",
-			"Cybersecurity",
-			"AI / ML"
-		],
-		"technologies": [],
-		"evaluation": [],
-		"isEasy": false
-	},
-	"Компјутерска анимација": {
-		"subject": "Компјутерска анимација",
-		"code": "F18L3S113, F23L3S113",
-		"level": 3,
-		"abstract": "По завршување на курсот се очекува студентите да се оспособени за основни методи за продуктивно создавање на компјутерски базирани анимации, за работа во апликации за создавање анимации и можат самостојно да моделираат, текстурираат, ригуваат, осветлуваат, анимираат, рендерираат и композитираат дигитални сцени.",
-		"prerequisite": {
-			"subjects": [
-				"алгоритми и податочни структури",
-				"примена на алгоритми и податочни структури"
-			]
-		},
-		"activated": false,
-		"participants": [0, 32, 53],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "S",
-		"semester": 6,
-		"professors": ["Бобан Јоксимоски"],
-		"assistants": [],
-		"tags": [
-			"UI/UX & Digital Media",
-			"Multimedia",
-			"Game Development",
-			"Software Engineering"
-		],
-		"technologies": ["Blender"],
-		"evaluation": ["Project"],
-		"isEasy": false
-	},
-	"Компјутерски поддржано производство": {
-		"subject": "Компјутерски поддржано производство",
-		"code": "F18L3W117, F23L3W117",
-		"level": 3,
-		"abstract": "Целата на курсот е запознавање на студентите со теоријата, принципите и праксата за компјутерски потпомогнато производство, основните поими за системи и модели, контрола и симулација на производни процеси.",
-		"prerequisite": {
-			"subjects": [
-				"архитектура и организација на компјутери",
-				"компјутерски архитектури"
-			]
-		},
-		"activated": true,
-		"participants": [11, 7, 12],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "W",
-		"semester": 7,
-		"professors": ["Андреја Наумоски"],
-		"assistants": [],
-		"tags": [
-			"Embedded Systems",
-			"Software Engineering",
-			"Computer Architecture"
-		],
-		"technologies": [],
-		"evaluation": [],
-		"isEasy": false
-	},
-	"Македонски јазик": {
-		"subject": "Македонски јазик",
-		"code": "F18L3S069, F23L3S070",
-		"level": 3,
-		"abstract": "Стекнување на знаења и компетенции за Македонскиот јазик.",
-		"prerequisite": {},
-		"activated": false,
-		"participants": [0, 0, 0],
-		"mandatory": true,
-		"mandatoryFor": ["IE23"],
-		"semester": 8,
-		"season": "S",
-		"electiveFor": ["IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"professors": [],
-		"assistants": [],
-		"tags": ["Societal Skills", "Education"],
-		"technologies": [],
-		"evaluation": ["Theory"],
-		"isEasy": true
-	},
-	"Машинска визија": {
-		"subject": "Машинска визија",
-		"code": "F18L3W123, F23L3W123",
-		"level": 3,
-		"abstract": "Да се воведат студентите во основните концепти и техники во компјутерската визија. Студентите кои успешно ќе\nго завршат курсот ќе бидат способни за дизајнирање на ефикасни системи за компјутерска визија како:\nпрепознавање на ракопис, детекција и препознавање на лица, проценка на движење, следење на луѓе и возила,\nпрепознавање на гестови, препознавање и класификација на визуелни објекти, разбирање и анализа на сцени\nитн.",
-		"prerequisite": {
-			"credits": 120
-		},
-		"activated": false,
-		"participants": [0, 15, 35],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "W",
-		"semester": 7,
-		"professors": ["Андреа Кулаков", "Петре Ламески"],
-		"assistants": [],
-		"tags": ["AI / ML", "Multimedia", "Data Science"],
-		"technologies": ["Python"],
-		"evaluation": ["Theory", "Practical", "Project"],
-		"isEasy": false
-	},
-	"Менаџмент информациски системи": {
-		"subject": "Менаџмент информациски системи",
-		"code": "F18L3W027, F23L3W027",
-		"level": 3,
-		"abstract": "По завршување на курсот студентите ќе имаат познавање од видови и примена на менаџмент информациски системи.",
-		"prerequisite": {
-			"subjects": ["софтверско инженерство", "анализа на софтверските барања"]
-		},
-		"activated": true,
-		"participants": [466, 378, 399],
-		"mandatory": true,
-		"mandatoryFor": ["PIT23"],
-		"semester": 7,
-		"season": "W",
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "SIIS23"],
-		"professors": ["Љупчо Антовски", "Горан Велинов"],
-		"assistants": [],
-		"tags": ["Software Engineering", "Societal Skills"],
-		"technologies": [],
-		"evaluation": ["Theory", "Project"],
-		"isEasy": true
-	},
-	"Методика на информатиката": {
-		"subject": "Методика на информатиката",
-		"code": "F18L3S054, F23L3S054",
-		"level": 3,
-		"abstract": "Целта на предметот е оспособување на студентите да користат најсовремени техники за работа на час за да го предизвикаат интересот на учениците и истите да ги поттикнат на усвојување нови знаења за време на наставата во училницата. Студентите ќе се оспособат да спроведуваат активна настава во училницата, користејќи креативни техники според возраста на учениците и материјалот според наставниот план.",
-		"prerequisite": {
-			"credits": 150
-		},
-		"activated": true,
-		"participants": [115, 59, 16],
-		"mandatory": true,
-		"mandatoryFor": ["IE23"],
-		"semester": 8,
-		"season": "S",
-		"electiveFor": ["IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"professors": ["Ана Мадевска Богданова"],
-		"assistants": [],
-		"tags": ["Education", "Computer Science"],
-		"technologies": [],
-		"evaluation": ["Project"],
-		"isEasy": true
-	},
-	"Методологија на истражувањето во ИКТ": {
-		"subject": "Методологија на истражувањето во ИКТ",
-		"code": "F18L3W126, F23L3W126",
-		"level": 3,
-		"abstract": "Целта на курсот е студентите да се запознаат со основите на методологиите на истражување во ИКТ. По завршувањето на курсот кандидатите ќе имаат продлабочени знаења за методологиите на истражувања во ИКТ, ќе можат да конципираат и спроведат научно истражување, и да напишат извештај од научно истражувачката работа.",
-		"prerequisite": {
-			"credits": 150
-		},
-		"activated": true,
-		"participants": [79, 126, 146],
-		"mandatory": true,
-		"mandatoryFor": ["KN23"],
-		"semester": 7,
-		"season": "W",
-		"electiveFor": ["IE23", "IMB23", "KI23", "PIT23", "SIIS23"],
-		"professors": ["Андреја Наумоски", "Владимир Трајковиќ"],
-		"assistants": ["Мартина Тошевска", "Славе Темков"],
-		"tags": ["Societal Skills", "Computer Science"],
-		"technologies": [],
-		"evaluation": ["Theory"],
-		"isEasy": true
-	},
-	"Мобилни апликации": {
-		"subject": "Мобилни апликации",
-		"code": "F18L3S127, F23L3S127",
-		"level": 3,
-		"abstract": "По завршувањето на предметот се очекува студентот да има продлабочено знаење во примена на технологиите и алатките за дизајн и развој на мобилни апликации.",
-		"prerequisite": {
-			"subjects": [
-				"алгоритми и податочни структури",
-				"примена на алгоритми и податочни структури"
-			]
-		},
-		"activated": true,
-		"participants": [22, 40, 51],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "S",
-		"semester": 8,
-		"professors": ["Љупчо Антовски", "Петре Ламески"],
-		"assistants": [],
-		"tags": ["Software Engineering", "UI/UX & Digital Media", "Databases"],
-		"technologies": ["Swift"],
-		"evaluation": ["Project"],
-		"isEasy": false
-	},
-	"Мобилни информациски системи": {
-		"subject": "Мобилни информациски системи",
-		"code": "F18L3W128, F23L3W128",
-		"level": 3,
-		"abstract": "По завршувањето на предметот се очекува студентот да има продлабочено знаење во примена на технологиите и алатките за складирање, прибирање и обработка на податоци во дистрибуирана и сеприсутна околина со користење на различни мобилни платформи.",
-		"prerequisite": {
-			"subjects": [
-				"алгоритми и податочни структури",
-				"примена на алгоритми и податочни структури"
-			]
-		},
-		"activated": true,
-		"participants": [269, 157, 338],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "W",
-		"semester": 7,
-		"professors": ["Петре Ламески"],
-		"assistants": ["Мила Додевска"],
-		"tags": ["Software Engineering", "UI/UX & Digital Media", "Databases"],
-		"technologies": ["Flutter", "any"],
-		"evaluation": ["Project"],
-		"isEasy": false
-	},
-	"Мобилни платформи и програмирање": {
-		"subject": "Мобилни платформи и програмирање",
-		"code": "F18L3W129, F23L3W129",
-		"level": 3,
-		"abstract": "Целта на предметот е студентите да се запознаат со современите мобилни платформи и да научат да програмираат и развиваат мобилни апликации. Ќе научат да се справуваат со ограничувањата од мобилните уреди и да развиваат ефикасни програми. Изработените апликации ќе научат да ги публикуваат на маркет и да го следат користењето на истите",
-		"prerequisite": {
-			"subjects": [
-				"алгоритми и податочни структури",
-				"примена на алгоритми и податочни структури"
-			]
-		},
-		"activated": true,
-		"participants": [74, 113, 106],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "W",
-		"semester": 7,
-		"professors": ["Љупчо Антовски", "Костадин Мишев"],
-		"assistants": ["Мила Додевска"],
-		"tags": ["Software Engineering", "UI/UX & Digital Media", "Databases"],
-		"technologies": ["Kotlin"],
-		"evaluation": ["Project"],
-		"isEasy": false
-	},
-	"Моделирање и менаџирање на бизнис процеси": {
-		"subject": "Моделирање и менаџирање на бизнис процеси",
-		"code": "F18L3S130, F23L3S130",
-		"level": 3,
-		"abstract": "По завршувањето на предметот се очекува студентот да ги разбира и има продлабочено знаење за типови бизнис процеси и нивна поврзаност со ИС, ќе имаат продлабочено знаење во идентификување, моделирање и мапирање разни типови бизнис процеси, ќе знаат да применат алатки и јазици за моделирање на бизнис процеси преку соодветни дијаграми, ќе имаат познавање од принципите за подобрување на тек на процеси, ќе имаат познавање од концептите за податочна размена и интероперабилност.",
-		"prerequisite": {
-			"subjects": ["објектно-ориентирано програмирање"]
-		},
-		"activated": true,
-		"participants": [12, 39, 105],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "S",
-		"semester": 8,
-		"professors": ["Георгина Мирчева"],
-		"assistants": [],
-		"tags": ["Societal Skills", "Software Engineering"],
-		"technologies": [],
-		"evaluation": ["Theory", "Project"],
-		"isEasy": true
-	},
-	"Моделирање и симулација": {
-		"subject": "Моделирање и симулација",
-		"code": "F18L3W131, F23L3S131",
-		"level": 3,
-		"abstract": "Студентот ќе се здобие со знаења за користење на техники за моделирање со цел да го евалуира однесувањето на реалните системи. Студентот ќе стекне способност за конструирање, верификација и решавање\nна модели со различни нивоа на апстракција и деталност. Ќе бидат опфатени и методи за фитување на состојбата и параметрите на моделите со реални податоци, како и предвидување на идното однесување и \"што-ако\" анализи.",
-		"prerequisite": {
-			"subjects": [
-				"веројатност и статистика",
-				"основи на теоријата на информации",
-				"бизнис статистика",
-				"математика 3"
-			]
-		},
-		"activated": false,
-		"participants": [0, 14, 10],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "S",
-		"semester": 8,
-		"professors": ["Ласко Баснарков", "Мирослав Мирчев"],
-		"assistants": [],
-		"tags": ["Computer Science", "Software Engineering", "Data Science"],
-		"technologies": [],
-		"evaluation": [],
-		"isEasy": true
-	},
-	"Модерни трендови во роботика": {
-		"subject": "Модерни трендови во роботика",
-		"code": "F18L3S132, F23L3S132",
-		"level": 3,
-		"abstract": "Студентите ќе бидат воведени во модерните трендови во роботиката. Ќе бидат запознаени со современите техники на моделирање на околината, во која роботите стануваат секојдневие. Студентите ќе се стекнат со познавање на тековните трендови во роботиката како што се интеракција човек – робот, нанороботика, биолошки роботи, роботизирани производни процеси, роботика како асистивна технологија и други трендови",
-		"prerequisite": {
-			"subjects": ["оперативни системи"]
-		},
-		"activated": false,
-		"participants": [0, 0, 0],
-		"mandatory": true,
-		"mandatoryFor": ["KI23"],
-		"semester": 8,
-		"season": "S",
-		"electiveFor": ["IE23", "IMB23", "KN23", "PIT23", "SIIS23"],
-		"professors": [],
-		"assistants": [],
-		"tags": ["Embedded Systems", "AI / ML", "Software Engineering"],
-		"technologies": [],
-		"evaluation": [],
-		"isEasy": false
-	},
-	"Мрежна и мобилна форензика": {
-		"subject": "Мрежна и мобилна форензика",
-		"code": "F18L3W133, F23L3W133",
-		"level": 3,
-		"abstract": "Студентот ќе се здобие со знаења за примена на методологии за собирање, зачувување, анализа и документација на дигитални докази пронајдени како резултат на сајбер криминал во мрежна и мобилна околина.\nСтудентот ќе знае како да анализира и интерпретира живи мрежни мобилни дигитални докази.",
-		"prerequisite": {
-			"subjects": ["компјутерски мрежи", "компјутерски мрежи и безбедност"]
-		},
-		"activated": true,
-		"participants": [37, 29, 18],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "W",
-		"semester": 7,
-		"professors": ["Анастас Мишев", "Соња Филипоска"],
-		"assistants": ["Војдан Ќорвезироски"],
-		"tags": ["Cybersecurity", "Networking", "Embedded Systems"],
-		"technologies": [],
-		"evaluation": ["Project"],
-		"isEasy": false
-	},
-	"Напредна интеракција човек компјутер": {
-		"subject": "Напредна интеракција човек компјутер",
-		"code": "F18L3W137, F23L3W137",
-		"level": 3,
-		"abstract": "Овој предмет ги запознава студентите со основите на комплексната интеракција која се одвива меѓу човекот и компјутерот. Студентите се запознаваат и со техниките за моделирање на корисници, проблеми, апликации и средини како и на техники за евалуација и анализа на интелигентни интефејси. Се разгледуваат принципи за градење посредници кои ги опфаќаат ограничувањата и во двете примарно афектирани групи: човекот и компјутерот. Студентите треба да научат дека корисникот е еден од главните елементи при креирање на компјутерските системи. При тоа, се дава увид во начинот за развивање на хардверот и софтверот за различни групи на корисници, како и за специфични апликациски домени. Студентите стекнуваат познавања на принципи за проектирање на кориснички интерфејси адаптибилни на околината, интелигентни кориснички интерфејси базирани на агенти и интерфејси чувствителни на контекст, како и интелигентни решенија наменети за специфични типови на кориснички групи.",
-		"prerequisite": {
-			"subjects": [
-				"дизајн на интеракцијата човек-компјутер",
-				"алгоритми и податочни структури",
-				"Примена на алгоритми и податочни структури"
-			]
-		},
-		"activated": true,
-		"participants": [12, 29, 42],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "W",
-		"semester": 7,
-		"professors": ["Невена Ацковска", "Бојан Илијоски"],
-		"assistants": [],
-		"tags": ["UI/UX & Digital Media", "Software Engineering"],
-		"technologies": ["any"],
-		"evaluation": ["Theory", "Code", "Project"],
-		"isEasy": false
-	},
-	"Напредни бази на податоци": {
-		"subject": "Напредни бази на податоци",
-		"code": "F18L3S138, F23L3S138",
-		"level": 3,
-		"abstract": "Запознавање на студентите со напредните концепти на релационите бази на податоци, неопходни за моделирање, креирање, управување и одржување на базите на податоци, како и за  развој на податочно интензивни информациски системи. Со тоа студентите ќе се стекант со длабоки теоретски и практични знаења од областа на базите на податоци. Исто така, студентите ќе се запознат со современите текови на развој и проширување на традиционалните системи за управување на бази на податоци, а со цел да одговорат на актуелните предизвици во развојот на информатичката теорија и практика.",
-		"prerequisite": {
-			"credits": 90
-		},
-		"activated": true,
-		"participants": [6, 15, 121],
-		"mandatory": true,
-		"mandatoryFor": ["SIIS23"],
-		"semester": 6,
-		"season": "S",
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23"],
-		"professors": ["Горан Велинов"],
-		"assistants": ["Ненад Анчев"],
-		"tags": ["Databases", "Software Engineering", "Data Science"],
-		"technologies": ["SQL"],
-		"evaluation": ["Theory", "Code", "Project"],
-		"isEasy": false
-	},
-	"Web3 апликации": {
-		"subject": "Web3 апликации",
-		"code": "F18L3S139, F23L3S139",
-		"level": 3,
-		"abstract": "Целта на овој курс е да овозможи на слушателите да разберат како фунцкционираат web3 апликациите. Ќе се надгради знаењето од блоковски вериги со апликации кои работат над паметните договори.",
-		"prerequisite": {
-			"subjects": [
-				"алгоритми и податочни структури",
-				"примена на алгоритми и податочни структури"
-			]
-		},
-		"activated": false,
-		"participants": [0, 0, 0],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "S",
-		"semester": 8,
-		"professors": [],
-		"assistants": [],
-		"tags": [
-			"Web Development",
-			"Cybersecurity",
-			"Software Engineering",
-			"Databases"
-		],
-		"technologies": [],
-		"evaluation": [],
-		"isEasy": false
-	},
-	"Неструктурирани бази на податоци": {
-		"subject": "Неструктурирани бази на податоци",
-		"code": "F18L3S141, F23L3S141",
-		"level": 3,
-		"abstract": "Целта на курсот е студентите да се запознаат со неструктурираните и полуструктурираните типови на податоци, нивната организација и чување, како и техниките за манипулација и обработка на истите. Исто така студентите ќе бидат запознаени и со NoSQL базите на податоци, современи бази на податоци кои не подлежат на релациониот модел, а се користат во дистрибуирани и кластер околини. Посебен акцент ќе биде ставен на практичното знаење на некоја од NoSQL базите на податоци.",
-		"prerequisite": {
-			"subjects": ["бази на податоци"]
-		},
-		"activated": true,
-		"participants": [124, 69, 89],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "S",
-		"semester": 8,
-		"professors": ["Слободан Калајџиски"],
-		"assistants": [],
-		"tags": ["Databases", "Software Engineering", "Cloud Engineering & DevOps"],
-		"technologies": ["NoSQL"],
-		"evaluation": ["Theory", "Code", "Project"],
-		"isEasy": false
-	},
-	"Обработка на природните јазици": {
-		"subject": "Обработка на природните јазици",
-		"code": "F18L3W142, F23L3W142",
-		"level": 3,
-		"abstract": "Целта на предметот е студентитеда се стекнат со основните теоретски и практични знаења за алгоритмите за обработка на природните јазици. Студентите ќе стекнат знаења за најновите техники на машинско учење со фокус на длабоки невронски мрежи наменети за разбирање и генерирање на текст.",
-		"prerequisite": {
-			"subjects": [
-				"алгоритми и податочни структури",
-				"примена на алгоритми и податочни структури"
-			]
-		},
-		"activated": true,
-		"participants": [47, 26, 18],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "W",
-		"semester": 5,
-		"professors": ["Соња Гиевска"],
-		"assistants": ["Мартина Тошевска"],
-		"tags": [
-			"AI / ML",
-			"Data Science",
-			"Software Engineering",
-			"Computer Science"
-		],
-		"technologies": ["Python"],
-		"evaluation": ["Project"],
-		"isEasy": false
-	},
-	"Операциони истражувања": {
-		"subject": "Операциони истражувања",
-		"code": "F18L3W144, F23L3S144",
-		"level": 3,
-		"abstract": "Да го запознае студентот со областа на проблеми и методи на операциони истражувања, проблеми на оптимизација на ресурси и проекти и оптимално управување, со методи и техники на линеарно и нелинеарно програмирање, теории на одлучување и игри, операциони истражувања поврзани со управувaчки информациски системи и информациски системи за подршка на одлучување и предвидување.",
-		"prerequisite": {
-			"subjects": [
-				"веројатност и статистика",
-				"основи на теоријата на информации",
-				"математика 3",
-				"бизнис статистика"
-			]
-		},
-		"activated": false,
-		"participants": [0, 0, 0],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "S",
-		"semester": 8,
-		"professors": ["Александра Каневче Дединец"],
-		"assistants": [],
-		"tags": [
-			"Mathematics",
-			"Data Science",
-			"Computer Science",
-			"Societal Skills"
-		],
-		"technologies": [],
-		"evaluation": [],
-		"isEasy": false
-	},
-	"Оптички мрежи": {
-		"subject": "Оптички мрежи",
-		"code": "F18L3W145, F23L3W145",
-		"level": 3,
-		"abstract": "Студентот ќе се стекне со основни познавања за дизајн, контрола и управување на оптички мрежи со помош на современите мрежни технологии, како и со некои тековни развои во областа.",
-		"prerequisite": {
-			"subjects": ["компјутерски мрежи", "компјутерски мрежи и безбедност"]
-		},
-		"activated": false,
-		"participants": [0, 28, 34],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "W",
-		"semester": 7,
-		"professors": ["Мирослав Мирчев"],
-		"assistants": [],
-		"tags": ["Networking", "Physics"],
-		"technologies": [],
-		"evaluation": ["Project"],
-		"isEasy": false
-	},
-	"Пресметување во облак": {
-		"subject": "Пресметување во облак",
-		"code": "F18L3W068, F23L3W068",
-		"level": 3,
-		"abstract": "Овој предмет ќе го оспособи студентот со основни познавања за концептот на облак и услуги во облак.",
-		"prerequisite": {
-			"subjects": ["бази на податоци"]
-		},
-		"activated": true,
-		"participants": [32, 28, 28],
-		"mandatory": true,
-		"mandatoryFor": ["IMB23"],
-		"semester": 7,
-		"season": "W",
-		"electiveFor": ["IE23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"professors": ["Марјан Гушев"],
-		"assistants": ["Владислав Бидиков", "Димитар Милески"],
-		"tags": [
-			"Cloud Engineering & DevOps",
-			"Systems Infrastructure",
-			"Networking",
-			"Software Engineering"
-		],
-		"technologies": ["Java"],
-		"evaluation": ["Theory", "Code", "Project"],
-		"isEasy": false
-	},
-	"Претприемништво": {
-		"subject": "Претприемништво",
-		"code": "F18L3S028, F23L3S028",
-		"level": 3,
-		"abstract": "Студентите ќе бидат запознаени со предизвиците со кои ќе се соочат доколку се решат да започнат сопствен бизнис. Тие ќе можат да изработат иницијално истражување на пазарот, да ги дефинираат метриките со кои ќе ја следат успеноста на својот бизнис, како и да знаат како да препознаат дали обезбедиле вредност за своите клиенти. Конечно, тие ќе бидат оспособени да се претстават пред потенцијални клиенти, партнери и инвеститори.",
-		"prerequisite": {
-			"credits": 120
-		},
-		"activated": true,
-		"participants": [281, 216, 251],
-		"mandatory": true,
-		"mandatoryFor": ["SIIS23", "PIT23"],
-		"semester": 8,
-		"season": "S",
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23"],
-		"professors": ["Владимир Трајковиќ", "Ефтим Здравевски"],
-		"assistants": [],
-		"tags": ["Societal Skills"],
-		"technologies": [],
-		"evaluation": [],
-		"isEasy": true
-	},
-	"Програмирање на видео игри": {
-		"subject": "Програмирање на видео игри",
-		"code": "F18L3W152, F23L3W152",
-		"level": 3,
-		"abstract": "Целта на предметот е да ги запознае студентите со процесот на програмирање на видео игри. За таа цел студентите ќе бидат запознаени со основните компоненти на една видео игра и начинот на кој истите се програмираат. По завршување на курсот се очекува кандидатот да ги разбира концептите за програмирање на видео игри и да може да реализира програмски самостојно или во тим едноставна видео игра.",
-		"prerequisite": {
-			"subjects": [
-				"алгоритми и податочни структури",
-				"примена на алгоритми и податочни структури"
-			]
-		},
-		"activated": true,
-		"participants": [612, 459, 446],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "W",
-		"semester": 7,
-		"professors": ["Катарина Тројачанец Динева"],
-		"assistants": ["Славе Темков"],
-		"tags": [
-			"Game Development",
-			"Software Engineering",
-			"UI/UX & Digital Media",
-			"Multimedia"
-		],
-		"technologies": ["Python"],
-		"evaluation": ["Code", "Project"],
-		"isEasy": false
-	},
-	"Програмски јазици и компајлери": {
-		"subject": "Програмски јазици и компајлери",
-		"code": "F18L3S112, F23L3S112",
-		"level": 3,
-		"abstract": "Студентите треба да го разбрерат развојот и спектарот на програмските јазици, и да го сфатат процесот на конструкција на компајлер што ќе ги надгради како програмери кои навлегле во суштината на програмските јазици.",
-		"prerequisite": {
-			"subjects": [
-				"алгоритми и податочни структури",
-				"примена на алгоритми и податочни структури"
-			]
-		},
-		"activated": false,
-		"participants": [0, 0, 4],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "S",
-		"semester": 8,
-		"professors": ["Миле Јованов"],
-		"assistants": [],
-		"tags": ["Computer Science", "Software Engineering", "Mathematics"],
-		"technologies": [],
-		"evaluation": [],
-		"isEasy": false
-	},
-	"Програмски парадигми": {
-		"subject": "Програмски парадигми",
-		"code": "F18L3W038, F23L3W038",
-		"level": 3,
-		"abstract": "Целта на овој курс е запознавање на студентите со програмски парадигми различни од императивната и објектно-ориентираната, со фокус на декларативната и функционалната програмска парадигма. По завршувањето на курсот студентите треба да бидат способни да: Споредуваат различни програмски парадигми и да изберат соодветна за даден проблем, Користат логички програмски јазик за имплементација на ефикасни алгоритми,\tКористат логички програмски јазик за репрезентација и манипулација со знаење, Користат функционален програмски јазик за пишување на програми без странични ефекти, Разбираат и користат функции од прв и повисок ред, функционални затворања, мрзлива евалуација и апстракција на секвенци, Разбираат и пишуваат едноставни конкурентни програми",
-		"prerequisite": {
-			"subjects": [
-				"алгоритми и податочни структури",
-				"примена на алгоритми и податочни структури"
-			]
-		},
-		"activated": true,
-		"participants": [77, 69, 66],
-		"mandatory": true,
-		"mandatoryFor": ["KN23"],
-		"semester": 7,
-		"season": "W",
-		"electiveFor": ["IE23", "IMB23", "KI23", "PIT23", "SIIS23"],
-		"professors": ["Емил Станков", "Кире Триводалиев"],
-		"assistants": [],
-		"tags": ["Software Engineering", "Computer Science"],
-		"technologies": [],
-		"evaluation": ["Theory", "Code"],
-		"isEasy": false
-	},
-	"Вовед во рударење на масивни податоци": {
-		"subject": "Вовед во рударење на масивни податоци",
-		"code": "F18L3W154, F23L3W154",
-		"level": 3,
-		"abstract": "Студентите да се запознаат со алгоритмите и техниките на податочно рударење и машинско учење за анализа на големи податочни множества. Фокус ќе биде даден на дистрибуираните платформи како и на начинот на дефинирање и креирање на алгоритми за процесирање и анализа на многу големи податочни множества.",
-		"prerequisite": {
-			"subjects": [
-				"алгоритми и податочни структури",
-				"примена на алгоритми и податочни структури"
-			]
-		},
-		"activated": true,
-		"participants": [23, 16, 14],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "W",
-		"semester": 7,
-		"professors": ["Ѓорѓи Маџаров"],
-		"assistants": ["Стефан Андонов"],
-		"tags": ["Data Science", "AI / ML", "Cloud Engineering & DevOps"],
-		"technologies": [],
-		"evaluation": ["Project"],
-		"isEasy": false
-	},
-	"Самостоен проект": {
-		"subject": "Самостоен проект",
-		"code": "F18L3W058, F23L3W058",
-		"level": 3,
-		"abstract": "Целта на предметот е студентите со користење на современите алатки за  Електронско учење самостојно да ја изработат наставната програма за  предмет од основно или средно образование по  нивен избор.",
-		"prerequisite": {
-			"credits": 150
-		},
-		"activated": false,
-		"participants": [0, 0, 0],
-		"mandatory": true,
-		"mandatoryFor": ["IE23"],
-		"semester": 7,
-		"season": "W",
-		"electiveFor": [],
-		"professors": ["Сите професори"],
-		"assistants": [],
-		"tags": ["Education"],
-		"technologies": [],
-		"evaluation": ["Project"],
-		"isEasy": true
-	},
-	"Системи за поддршка при одлучувањето": {
-		"subject": "Системи за поддршка при одлучувањето",
-		"code": "F18L3W156, F23L3W156",
-		"level": 3,
-		"abstract": "Овој курс претставува вовед во примена на анализа на податоци за донесување деловни одлуки. Целта на курсот е студентите да се запознаат со методите, техниките и системите за поддршка при одлучувањето, како и анализа на одлуките. Да се запознаат со техниките за стекнување на знаење и репрезентација на знаење. По завршување на курсот студентите ќе стекнат знаење како да ги користат системите за поддршка при одлучувањето, правилно да изберат соодветен систем за поддршка при одлучувањето во даден бизнис контекст, како и да дизајнираат, развијат и менаџираат системи за поддршка при одлучувањето.",
-		"prerequisite": {
-			"subjects": [
-				"вештачка интелигенција",
-				"вовед во науката за податоци",
-				"машинско учење"
-			]
-		},
-		"activated": true,
-		"participants": [63, 153, 222],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "W",
-		"semester": 7,
-		"professors": ["Георгина Мирчева"],
-		"assistants": ["Димитар Китановски"],
-		"tags": [
-			"Data Science",
-			"AI / ML",
-			"Software Engineering",
-			"Societal Skills"
-		],
-		"technologies": ["Python"],
-		"evaluation": ["Theory"],
-		"isEasy": true
-	},
-	"Складови на податоци и аналитичка обработка": {
-		"subject": "Складови на податоци и аналитичка обработка",
-		"code": "F18L3S157, F23L3S157",
-		"level": 3,
-		"abstract": "Запознавање со oрганизацијата и манипулацијата со податоците организирани во складови на податоци, како и основните операции и алгоритми за работа со складови на податоци. Студентот ќе биде оспособен за интегрирање на оперативни бази на податоци во специјално дизајнирни модели погодни за аналитички потреби. Ова вклучува димензионо моделирање на складови на податоци, организација и манипулација со податоците сместени во складови на податоци, и изготвување на аналитички извештаи базирани на истите податоци.",
-		"prerequisite": {
-			"credits": 100
-		},
-		"activated": true,
-		"participants": [42, 49, 32],
-		"mandatory": true,
-		"mandatoryFor": ["KI23", "KN23"],
-		"semester": 6,
-		"season": "S",
-		"electiveFor": ["IE23", "IMB23", "PIT23", "SIIS23"],
-		"professors": ["Ефтим Здравевски"],
-		"assistants": ["Димитар Китановски"],
-		"tags": ["Databases", "Data Science", "Software Engineering"],
-		"technologies": ["SQL"],
-		"evaluation": ["Theory", "Code"],
-		"isEasy": false
-	},
-	"Софтвер за вградливи системи": {
-		"subject": "Софтвер за вградливи системи",
-		"code": "F18L3W048, F23L3W048",
-		"level": 3,
-		"abstract": "Целта на курсот е да ги оспособи студентите да креираат апликации наменети за микроконтролери како и работа со влез/излез, подетално со СТМ микроконтролерите. Студентите ќе научат да работат со Nucleo развојните плочи, да имплементираат код, да дебагираат и да управуваат со софтверска конфигурација. Исто така студентите ќе научат кога и како се користи оперативен систем во реално време.",
-		"prerequisite": {
-			"subjects": [
-				"алгоритми и податочни структури",
-				"примена на алгоритми и податочни структури"
-			]
-		},
-		"activated": true,
-		"participants": [26, 21, 31],
-		"mandatory": true,
-		"mandatoryFor": ["KI23"],
-		"semester": 7,
-		"season": "W",
-		"electiveFor": ["IE23", "IMB23", "KN23", "PIT23", "SIIS23"],
-		"professors": ["Моника Симјаноска"],
-		"assistants": [],
-		"tags": [
-			"Embedded Systems",
-			"Software Engineering",
-			"Computer Architecture"
-		],
-		"technologies": ["C", "C++"],
-		"evaluation": ["Project"],
-		"isEasy": false
-	},
-	"Софтверски дефинирани мрежи": {
-		"subject": "Софтверски дефинирани мрежи",
-		"code": "F18L3W160, F23L3S160",
-		"level": 3,
-		"abstract": "По завршувањето на курсот се очекува студентот да има познавање на архитектурата на софтверски дефинираните мрежи и мрежите со виртуелизирани мрежни функции. Да ги знае начините за софтверски пристап до мрежите,  технологиите за конвергирани мрежи и одвојување на корисничкaта од контролната рамнина, како и хардверот од софтверот.",
-		"prerequisite": {
-			"subjects": ["компјутерски мрежи", "компјутерски мрежи и безбедност"]
-		},
-		"activated": true,
-		"participants": [4, 0, 9],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "S",
-		"semester": 8,
-		"professors": ["Соња Филипоска"],
-		"assistants": [],
-		"tags": [
-			"Networking",
-			"Cloud Engineering & DevOps",
-			"Software Engineering",
-			"Cybersecurity"
-		],
-		"technologies": [],
-		"evaluation": [],
-		"isEasy": false
-	},
-	"Теорија на графови и социјални мрежи": {
-		"subject": "Теорија на графови и социјални мрежи",
-		"code": "F18L3W161, F23L3W161",
-		"level": 3,
-		"abstract": "Целта на курсот е студентите да се воведат во најважните аспекти од теоријата на графови, со подетален осврт на теоријата која е значајна за анализа на социјални мрежи.  Студентите ќе се запознаат со концептите, компонентите и организацијата на социјалните мрежи, како и технологиите за развој, интеркација и анализа на истите.",
-		"prerequisite": {
-			"subjects": [
-				"алгоритми и податочни структури",
-				"примена на алгоритми и податочни структури"
-			]
-		},
-		"activated": true,
-		"participants": [24, 12, 10],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "W",
-		"semester": 5,
-		"professors": ["Соња Гиевска"],
-		"assistants": ["Мартина Тошевска"],
-		"tags": ["Mathematics", "Computer Science", "Data Science", "Networking"],
-		"technologies": [],
-		"evaluation": [],
-		"isEasy": false
-	},
-	"Споделување и пресметување во толпа": {
-		"subject": "Споделување и пресметување во толпа",
-		"code": "F18L3S162, F23L3S162",
-		"level": 3,
-		"abstract": "Целта на предметот е да ги запознае студентите со можностите на толпата да споделува и обработува податоци кои овозможуваат да се решаваат проблеми кои се сеуште комплексни за компјутерските системи, но многу едноставни за колектив со човечка интелигенција. Предметот ќе ги воведе студентите во нов дизајн на апликации и концепт на програмирање кој се заснова на недоверливо учество на голем број поединци од толпата. Во предметот ќе се разгледаат постоечки апликации и платформи за собирање на податоци и решавање на обемни задачи на барање.",
-		"prerequisite": {
-			"subjects": [
-				"вештачка интелигенција",
-				"вовед во науката за податоци",
-				"машинско учење"
-			]
-		},
-		"activated": false,
-		"participants": [0, 0, 0],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "S",
-		"semester": 8,
-		"professors": [],
-		"assistants": [],
-		"tags": ["Data Science"],
-		"technologies": [],
-		"evaluation": [],
-		"isEasy": false
-	},
-	"Тимски проект": {
-		"subject": "Тимски проект",
-		"code": "F18L3W021, F23L3W021",
-		"level": 3,
-		"abstract": "На студентите им се дава можност групно да изработат еден поголем проект под надзор на ментор. Се поставува акцент на тимска работа и развој на комплексен софтвер. Пожелна е пракса во фирма.",
-		"prerequisite": {
-			"credits": 150
-		},
-		"activated": true,
-		"participants": [559, 420, 351],
-		"mandatory": true,
-		"mandatoryFor": ["SIIS23", "IMB23", "PIT23", "KI23", "KN23"],
-		"semester": 7,
-		"season": "W",
-		"electiveFor": [],
-		"professors": ["Сите професори"],
-		"assistants": [],
-		"tags": [],
-		"technologies": ["any"],
-		"evaluation": ["Project"],
-		"isEasy": true
-	},
-	"Управување со ИКТ проекти": {
-		"subject": "Управување со ИКТ проекти",
-		"code": "F18L3S022, F23L3S022",
-		"level": 3,
-		"abstract": "По завршувањето на предметот се очекува студентот да ги разбира и има продлабочено знаење во примена на техниките и методите за управување со ИКТ проекти, да има продлабочено знаење во утврдување софтверски и системски барања, познавање на метриките за следење на проекти и евалуација, да има знаење да примени техники за управување со барањата на разни проектни интересни групи, знаење за примена на тенхики за анализа  на трошоци, знаење за изготвување на извештаи, познавање на практични софтверски алатки за управување со проектен циклус.",
-		"prerequisite": {
-			"subjects": ["софтверско инженерство", "анализа на софтверските барања"]
-		},
-		"activated": true,
-		"participants": [512, 362, 426],
-		"mandatory": true,
-		"mandatoryFor": ["SIIS23", "PIT23", "KI23"],
-		"semester": 8,
-		"season": "S",
-		"electiveFor": ["IE23", "IMB23", "KN23"],
-		"professors": ["Љупчо Антовски", "Владимир Здравески", "Димитар Трајанов"],
-		"assistants": ["Милена Трајаноска"],
-		"tags": ["Societal Skills", "Software Engineering"],
-		"technologies": ["Git"],
-		"evaluation": ["Theory"],
-		"isEasy": true
-	},
-	"Примена на алгоритми и податочни структури": {
-		"subject": "Примена на алгоритми и податочни структури",
-		"code": "F23L2W201",
-		"level": 2,
-		"abstract": "Запознавање со основните податочни структури и алгоритми кои се понатаму неопходни за работа со бази на\nподатоци како и за други апликации. Студентот ќе биде оспособен за користење на структури и алгоритми\nсо линеарни листи, стебла, графови како и и индекси за пребарување. Исто така ќе биде оспособен за\nпрепознавање и користење на различните архетипи на алгоритми што се користат во практичната имплементација на многу\nсофтверски решенија.",
-		"prerequisite": {
-			"subjects": ["структурно програмирање"]
-		},
-		"activated": true,
-		"participants": [289, 58, 0],
-		"mandatory": true,
-		"mandatoryFor": ["IMB23", "PIT23", "IE23"],
-		"semester": 3,
-		"season": "W",
-		"electiveFor": [],
-		"professors": [
-			"Ефтим Здравевски",
-			"Магдалена Костоска Ѓорчевска",
-			"Слободан Калајџиски",
-			"Христина Михајлоска Трпческа"
-		],
-		"assistants": ["Мартин Динев", "Јана Кузманова"],
-		"tags": ["Computer Science", "Software Engineering"],
-		"technologies": ["Java"],
-		"evaluation": ["Theory", "Code"],
-		"isEasy": false
-	},
-	"Математика 3": {
-		"subject": "Математика 3",
-		"code": "F23L3W001",
-		"level": 3,
-		"abstract": "Да се воведат основните концепти од веројатност и статистичка анализа со дискусија на примените во компјутерските науки. Да се оспособат студентите за успешно следење на стручните предмети во кои се применуваат елементи од теорија на веројатност и статистика.",
-		"prerequisite": {},
-		"activated": true,
-		"participants": [367, 0, 0],
-		"mandatory": true,
-		"mandatoryFor": ["SIIS23"],
-		"semester": 3,
-		"season": "W",
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23"],
-		"professors": [
-			"Билјана Тојтовска Рибарски",
-			"Марија Михова",
-			"Наташа Илиевска",
-			"Илинка Иваноска"
-		],
-		"assistants": ["Јована Добрева", "Димитар Пешевски"],
-		"tags": ["Mathematics", "Data Science", "Computer Science"],
-		"technologies": ["R"],
-		"evaluation": ["Theory", "Practical", "Code"],
-		"isEasy": false
-	},
-	"Избрани теми од математика": {
-		"subject": "Избрани теми од математика",
-		"code": "F23L2W003",
-		"level": 2,
-		"abstract": "Курсот претставува вовед во основните математички концепти неопходни за повисоките курсеви од информациски технологии, компјутерско и софтверско инженерство.",
-		"prerequisite": {},
-		"activated": true,
-		"participants": [731, 777, 0],
-		"mandatory": true,
-		"mandatoryFor": ["PIT23"],
-		"semester": 1,
-		"season": "W",
-		"electiveFor": [],
-		"professors": [
-			"Весна Димитриевска Ристовска",
-			"Методија Јанчески",
-			"Наташа Илиевска",
-			"Дејан Спасов"
-		],
-		"assistants": ["Живко Атанаскоски", "Петар Секулоски"],
-		"tags": ["Mathematics"],
-		"technologies": [],
-		"evaluation": ["Theory", "Practical"],
-		"isEasy": false
-	},
-	"Математика 2": {
-		"subject": "Математика 2",
-		"code": "F23L2S001",
-		"level": 2,
-		"abstract": "Курсот претставува вовед во основните математички концепти неопходни за повисоките курсеви од информациски технологии, компјутерско и софтверско инженерство.",
-		"prerequisite": {},
-		"activated": true,
-		"participants": [657, 1056, 0],
-		"mandatory": true,
-		"mandatoryFor": ["SIIS23", "IMB23", "IE23"],
-		"semester": 2,
-		"season": "S",
-		"electiveFor": [],
-		"professors": [
-			"Билјана Тојтовска Рибарски",
-			"Весна Димитриевска Ристовска",
-			"Дејан Спасов",
-			"Емил Станков",
-			"Марија Михова",
-			"Методија Јанчески",
-			"Наташа Илиевска"
-		],
-		"assistants": ["Живко Атанаскоски", "Петар Секулоски", "Сијче Печкова"],
-		"tags": ["Mathematics", "Computer Science"],
-		"technologies": [],
-		"evaluation": ["Theory", "Practical"],
-		"isEasy": false
-	},
-	"Тестирање на софтвер": {
-		"subject": "Тестирање на софтвер",
-		"code": "F23L3W033",
-		"level": 3,
-		"abstract": "Целата на курсот е запознавање на студентите со воведните поими од областа на тестирање на софтвер, како потребата од тестирање на софтвер, како и практична работа на тестирање, валидација и верификација на софтвер.",
-		"prerequisite": {},
-		"activated": true,
-		"participants": [41, 0, 0],
-		"mandatory": true,
-		"mandatoryFor": ["PIT23"],
-		"semester": 7,
-		"season": "W",
-		"electiveFor": ["IE23", "IMB23", "KI23"],
-		"professors": ["Бојана Котеска"],
-		"assistants": ["Славе Темков"],
-		"tags": ["Software Engineering"],
-		"technologies": [],
-		"evaluation": [],
-		"isEasy": false
-	},
-	"Сензорски системи": {
-		"subject": "Сензорски системи",
-		"code": "F23L3W200",
-		"level": 3,
-		"abstract": "Студентот ќе биде запознаен со главните предизвици при дизајн на сензорските системи.",
-		"prerequisite": {
-			"subjects": [
-				"архитектура и организација на компјутери",
-				"компјутерски архитектури"
-			]
-		},
-		"activated": false,
-		"participants": [0, 0, 12],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "W",
-		"semester": 7,
-		"professors": ["Билјана Стојкоска Ристеска"],
-		"assistants": [],
-		"tags": ["Embedded Systems", "Networking", "Data Science"],
-		"technologies": [],
-		"evaluation": [],
-		"isEasy": false
-	},
-	"Адаптивни и интерактивни веб информациски системи": {
-		"subject": "Адаптивни и интерактивни веб информациски системи",
-		"code": "F23L3S069",
-		"level": 3,
-		"abstract": "Индустријата за персонализација и адаптација на веб е во пораст. Компаниите, институциите, универзитетите, и истражувачките лаборатории имаат потреба од бројни експерти кои ги познаваат и разбираат како функционираат адаптивните интерактивни системи, персонализацијата и социјалната навигација и интеракција за да водат развој на сопствени решенија или да нарачуваат готови решенија.\n\nОд овие причини курсот има за почетна цел да ги запознае студентите со светот на адаптивните и интерактивни веб информациски системи (АИИС). Потоа студентите ќе се стекнат знаења за различните аспекти на адаптација, персонализација, социјална навигација и интеракција во АИИС, и ќе се запознаат со во моментот најактуелните адаптивни веб технологии како готови решенија или како истражувачки демонстративни решенија кои се користат во пракса. Студентите ќе разгледуваат многу примери на модерни АИИС развиени од водечките Интернет компании како Google, Yahoo, IBM, Microsoft, Ebay, Facebook, Twitter, како и повеќе лидери на специјализирани индустрии како Netflix, Booking.com, Spotify, Hulu, Zalando.\n\nГлавна финална компетенција во овој предмет со која ќе се здобијат студентите е да го применат стекнатото знаење во реалниот свет преку анализа на потребите и исполнување на истите со постојните АИИС, критика на постојни АИИС и главните елементи од животен циклус за развој на сопствени решенија за АИИС, базирани на постојни техники и со користење на иновативни технологии за социјална интеракција и навигација, адаптација и персонализација.",
-		"prerequisite": {
-			"subjects": [
-				"алгоритми и податочни структури",
-				"примена на алгоритми и податочни структури"
-			]
-		},
-		"activated": false,
-		"participants": [0, 0, 0],
-		"mandatory": false,
-		"mandatoryFor": [],
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23", "PIT23", "SIIS23"],
-		"season": "S",
-		"semester": 8,
-		"professors": ["Вангел Ајановски"],
-		"assistants": [],
-		"tags": [
-			"Web Development",
-			"AI / ML",
-			"Software Engineering",
-			"UI/UX & Digital Media"
-		],
-		"technologies": [],
-		"evaluation": [],
-		"isEasy": false
-	},
-	"Спорт и здравје": {
-		"subject": "Спорт и здравје",
-		"code": "F23L1W004",
-		"level": 1,
-		"abstract": "Целта на предметот спорт и спортски активности е усвојување на нови и усовршување на старите моторни знаења и вештини, подобрување на моторните и фукционалните спсособности се со цел унапредување на здравјето, задоволувањето на потребате за движење, оспообување на студентот за рационално, содржајно користење на слободното време како и подобрување на квалитетот на животот во младоста, во зрелата возраст и староста. Унапредување на социјалната комуникација. Очекувани резултати: Оспособување на студентот за самостојно спортување и физичко вежбање, запознавање со законитостите на физичката култура и правилната исхрана. Стекнување знаења за структурата, правилата, принципите на тренажниот процес и специфичностите на избраната кинезиолошка активност.",
-		"prerequisite": {},
-		"activated": false,
-		"participants": [0, 0, 0],
-		"mandatory": true,
-		"mandatoryFor": ["SIIS23", "IMB23", "PIT23", "IE23", "KI23", "KN23"],
-		"semester": 1,
-		"season": "W",
-		"electiveFor": [],
-		"professors": [],
-		"assistants": [],
-		"tags": [],
-		"technologies": [],
-		"evaluation": [],
-		"isEasy": true
-	},
-	"Деловна пракса": {
-		"subject": "Деловна пракса",
-		"code": "F23L3S100",
-		"level": 3,
-		"abstract": "Оспособување на студентот самостојно да идентификува проблеми и нивните решенија практично да ги реализира.",
-		"prerequisite": {
-			"credits": 36
-		},
-		"activated": false,
-		"participants": [0, 0, 0],
-		"mandatory": true,
-		"mandatoryFor": ["SIIS23", "PIT23"],
-		"semester": 4,
-		"season": "S",
-		"electiveFor": ["IE23", "IMB23", "KI23", "KN23"],
-		"professors": [],
-		"assistants": [],
-		"tags": [],
-		"technologies": ["any"],
-		"evaluation": ["Project"],
-		"isEasy": false
-	}
-}
Index: ckend/subjects/management/data/subjects_by_program.json
===================================================================
--- backend/subjects/management/data/subjects_by_program.json	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,406 +1,0 @@
-{
-	"Спорт и здравје": {
-		"semester": 1,
-		"programs": ["SIIS23", "IMB23", "PIT23", "IE23", "KI23", "KN23"]
-	},
-	"Бизнис и менаџмент": {
-		"semester": 1,
-		"programs": ["SIIS23", "IMB23", "PIT23"]
-	},
-	"Вовед во компјутерските науки": {
-		"semester": 1,
-		"programs": ["SIIS23", "IMB23", "PIT23", "IE23", "KN23"]
-	},
-	"Професионални вештини": {
-		"semester": 1,
-		"programs": ["SIIS23", "IMB23", "PIT23", "IE23", "KI23", "KN23"]
-	},
-	"Структурно програмирање": {
-		"semester": 1,
-		"programs": ["SIIS23", "IMB23", "PIT23", "IE23", "KI23", "KN23"]
-	},
-	"Математика 1": {
-		"semester": 1,
-		"programs": ["SIIS23", "IMB23", "IE23"]
-	},
-	"Архитектура и организација на компјутери": {
-		"semester": 2,
-		"programs": ["SIIS23", "PIT23", "KN23"]
-	},
-	"Објектно-ориентирано програмирање": {
-		"semester": 2,
-		"programs": ["SIIS23", "IMB23", "PIT23", "IE23", "KI23", "KN23"]
-	},
-	"Математика 2": {
-		"semester": 2,
-		"programs": ["SIIS23", "IMB23", "IE23"]
-	},
-	"Објектно ориентирана анализа и дизајн": {
-		"semester": 2,
-		"programs": ["SIIS23"]
-	},
-	"F23L1S": {
-		"semester": 2,
-		"programs": ["SIIS23", "IMB23", "PIT23", "KI23", "KN23"]
-	},
-	"Алгоритми и податочни структури": {
-		"semester": 3,
-		"programs": ["SIIS23", "KI23", "KN23"]
-	},
-	"Компјутерски мрежи и безбедност": {
-		"semester": 3,
-		"programs": ["SIIS23", "PIT23", "IE23", "KN23"]
-	},
-	"Математика 3": {
-		"semester": 3,
-		"programs": ["SIIS23"]
-	},
-	"F23L2W": {
-		"semester": 3,
-		"programs": ["SIIS23", "IMB23", "PIT23", "IE23", "KI23", "KN23"]
-	},
-	"Анализа на софтверските барања": {
-		"semester": 4,
-		"programs": ["SIIS23"]
-	},
-	"Оперативни системи": {
-		"semester": 4,
-		"programs": ["SIIS23", "IMB23", "PIT23", "IE23", "KI23", "KN23"]
-	},
-	"Вештачка интелигенција": {
-		"semester": 4,
-		"programs": ["SIIS23", "KN23"]
-	},
-	"Деловна пракса": {
-		"semester": 4,
-		"programs": ["SIIS23", "PIT23"]
-	},
-	"F23L2S": {
-		"semester": 4,
-		"programs": ["SIIS23", "IMB23", "PIT23", "IE23", "KI23", "KN23"]
-	},
-	"Бази на податоци": {
-		"semester": 5,
-		"programs": ["SIIS23", "IMB23", "PIT23", "IE23", "KI23", "KN23"]
-	},
-	"Вовед во науката за податоци": {
-		"semester": 5,
-		"programs": ["SIIS23", "PIT23"]
-	},
-	"Дизајн и архитектура на софтвер": {
-		"semester": 5,
-		"programs": ["SIIS23"]
-	},
-	"Напредно програмирање": {
-		"semester": 5,
-		"programs": ["SIIS23", "KN23"]
-	},
-	"Дизајн на интеракцијата човек-компјутер": {
-		"semester": 6,
-		"programs": ["SIIS23", "PIT23", "KN23"]
-	},
-	"Интегрирани системи": {
-		"semester": 6,
-		"programs": ["SIIS23"]
-	},
-	"Софтверски квалитет и тестирање": {
-		"semester": 6,
-		"programs": ["SIIS23"]
-	},
-	"Напредни бази на податоци": {
-		"semester": 6,
-		"programs": ["SIIS23"]
-	},
-	"Тимски проект": {
-		"semester": 7,
-		"programs": ["SIIS23", "IMB23", "PIT23", "KI23", "KN23"]
-	},
-	"F23L3W": {
-		"semester": 7,
-		"programs": ["SIIS23", "IMB23", "PIT23", "IE23", "KI23", "KN23"]
-	},
-	"Управување со ИКТ проекти": {
-		"semester": 8,
-		"programs": ["SIIS23", "PIT23", "KI23"]
-	},
-	"Претприемништво": {
-		"semester": 8,
-		"programs": ["SIIS23", "PIT23"]
-	},
-	"Дипломска работа": {
-		"semester": 8,
-		"programs": ["SIIS23", "IMB23", "PIT23", "IE23", "KI23", "KN23"]
-	},
-	"F23L3S": {
-		"semester": 8,
-		"programs": ["SIIS23", "IMB23", "PIT23", "IE23", "KI23", "KN23"]
-	},
-	"Компјутерски архитектури": {
-		"semester": 2,
-		"programs": ["IMB23", "IE23", "KI23"]
-	},
-	"Основи на сајбер безбедноста": {
-		"semester": 2,
-		"programs": ["IMB23"]
-	},
-	"Компјутерски мрежи": {
-		"semester": 3,
-		"programs": ["IMB23", "KI23"]
-	},
-	"Основи на теоријата на информации": {
-		"semester": 3,
-		"programs": ["IMB23"]
-	},
-	"Управување со техничка поддршка": {
-		"semester": 3,
-		"programs": ["IMB23"]
-	},
-	"Примена на алгоритми и податочни структури": {
-		"semester": 3,
-		"programs": ["IMB23", "PIT23", "IE23"]
-	},
-	"Безжични и мобилни системи": {
-		"semester": 4,
-		"programs": ["IMB23"]
-	},
-	"Интернет технологии": {
-		"semester": 4,
-		"programs": ["IMB23"]
-	},
-	"Администрација на системи": {
-		"semester": 5,
-		"programs": ["IMB23"]
-	},
-	"Сајбер безбедност": {
-		"semester": 5,
-		"programs": ["IMB23"]
-	},
-	"Администрација на мрежи": {
-		"semester": 6,
-		"programs": ["IMB23"]
-	},
-	"Виртуелизација": {
-		"semester": 6,
-		"programs": ["IMB23"]
-	},
-	"Софтверски дефинирана безбедност": {
-		"semester": 6,
-		"programs": ["IMB23"]
-	},
-	"Дистрибуирани системи": {
-		"semester": 7,
-		"programs": ["IMB23"]
-	},
-	"Пресметување во облак": {
-		"semester": 7,
-		"programs": ["IMB23"]
-	},
-	"Дизајн на компјутерски мрежи": {
-		"semester": 8,
-		"programs": ["IMB23"]
-	},
-	"Инфраструктурно програмирање": {
-		"semester": 8,
-		"programs": ["IMB23"]
-	},
-	"Избрани теми од математика": {
-		"semester": 1,
-		"programs": ["PIT23"]
-	},
-	"Бизнис статистика": {
-		"semester": 2,
-		"programs": ["PIT23"]
-	},
-	"Основи на Веб дизајн": {
-		"semester": 2,
-		"programs": ["PIT23", "IE23"]
-	},
-	"Економија за ИКТ инженери": {
-		"semester": 3,
-		"programs": ["PIT23"]
-	},
-	"Маркетинг": {
-		"semester": 4,
-		"programs": ["PIT23"]
-	},
-	"Софтверско инженерство": {
-		"semester": 4,
-		"programs": ["PIT23", "KI23", "KN23"]
-	},
-	"Веб програмирање": {
-		"semester": 5,
-		"programs": ["PIT23", "KN23"]
-	},
-	"Напреден веб дизајн": {
-		"semester": 5,
-		"programs": ["PIT23"]
-	},
-	"Електронска и мобилна трговија": {
-		"semester": 6,
-		"programs": ["PIT23"]
-	},
-	"Менаџмент информациски системи": {
-		"semester": 7,
-		"programs": ["PIT23"]
-	},
-	"Тестирање на софтвер": {
-		"semester": 7,
-		"programs": ["PIT23"]
-	},
-	"Педагогија": {
-		"semester": 1,
-		"programs": ["IE23"]
-	},
-	"Е-учење": {
-		"semester": 2,
-		"programs": ["IE23"]
-	},
-	"Мултимедијални технологии": {
-		"semester": 3,
-		"programs": ["IE23"]
-	},
-	"Креативни вештини за решавање проблеми": {
-		"semester": 4,
-		"programs": ["IE23"]
-	},
-	"Информатичко размислување во образованието": {
-		"semester": 4,
-		"programs": ["IE23"]
-	},
-	"Медиуми и комуникации": {
-		"semester": 4,
-		"programs": ["IE23"]
-	},
-	"Дизајн на образовен софтвер": {
-		"semester": 5,
-		"programs": ["IE23"]
-	},
-	"Компјутерска етика": {
-		"semester": 5,
-		"programs": ["IE23"]
-	},
-	"Персонализирано учење": {
-		"semester": 5,
-		"programs": ["IE23"]
-	},
-	"Работа со надарени ученици": {
-		"semester": 6,
-		"programs": ["IE23"]
-	},
-	"Психологија на училишна возраст": {
-		"semester": 6,
-		"programs": ["IE23"]
-	},
-	"Учење на далечина": {
-		"semester": 6,
-		"programs": ["IE23"]
-	},
-	"Самостоен проект": {
-		"semester": 7,
-		"programs": ["IE23"]
-	},
-	"Методика на информатиката": {
-		"semester": 8,
-		"programs": ["IE23"]
-	},
-	"Македонски јазик": {
-		"semester": 8,
-		"programs": ["IE23"]
-	},
-	"Калкулус 1": {
-		"semester": 1,
-		"programs": ["KI23", "KN23"]
-	},
-	"Дизајн на дигитални кола": {
-		"semester": 1,
-		"programs": ["KI23"]
-	},
-	"Физика": {
-		"semester": 1,
-		"programs": ["KI23"]
-	},
-	"Дискретна математика": {
-		"semester": 2,
-		"programs": ["KI23"]
-	},
-	"Калкулус 2": {
-		"semester": 2,
-		"programs": ["KI23", "KN23"]
-	},
-	"Веројатност и статистика": {
-		"semester": 3,
-		"programs": ["KI23", "KN23"]
-	},
-	"Електрични кола": {
-		"semester": 4,
-		"programs": ["KI23"]
-	},
-	"Информациска безбедност": {
-		"semester": 5,
-		"programs": ["KI23"]
-	},
-	"Компјутерска електроника": {
-		"semester": 5,
-		"programs": ["KI23"]
-	},
-	"Основи на роботиката": {
-		"semester": 5,
-		"programs": ["KI23"]
-	},
-	"Вградливи микропроцесорски системи": {
-		"semester": 6,
-		"programs": ["KI23"]
-	},
-	"Процесирање на сигналите": {
-		"semester": 6,
-		"programs": ["KI23"]
-	},
-	"Складови на податоци и аналитичка обработка": {
-		"semester": 6,
-		"programs": ["KI23", "KN23"]
-	},
-	"Софтвер за вградливи системи": {
-		"semester": 7,
-		"programs": ["KI23"]
-	},
-	"Интернет на нештата": {
-		"semester": 7,
-		"programs": ["KI23"]
-	},
-	"Модерни трендови во роботика": {
-		"semester": 8,
-		"programs": ["KI23"]
-	},
-	"Дискретни структури 1": {
-		"semester": 1,
-		"programs": ["KN23"]
-	},
-	"Дискретни структури 2": {
-		"semester": 2,
-		"programs": ["KN23"]
-	},
-	"Линеарна алгебра и примени": {
-		"semester": 3,
-		"programs": ["KN23"]
-	},
-	"Паралелно и дистрибуирано процесирање": {
-		"semester": 5,
-		"programs": ["KN23"]
-	},
-	"Машинско учење": {
-		"semester": 6,
-		"programs": ["KN23"]
-	},
-	"Основи на теоријата на компјутерските науки": {
-		"semester": 6,
-		"programs": ["KN23"]
-	},
-	"Програмски парадигми": {
-		"semester": 7,
-		"programs": ["KN23"]
-	},
-	"Методологија на истражувањето во ИКТ": {
-		"semester": 7,
-		"programs": ["KN23"]
-	}
-}
Index: ckend/subjects/management/data/subjects_vector.json
===================================================================
--- backend/subjects/management/data/subjects_vector.json	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,3830 +1,0 @@
-{
-	"Архитектура и организација на компјутери": {
-		"professors": [
-			0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
-			1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1,
-			0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,
-			0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0],
-		"evaluation": [0, 1, 0, 1],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 0,
-		"year": 1,
-		"participants": 1
-	},
-	"Бизнис и менаџмент": {
-		"professors": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 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, 0, 0, 0,
-			0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0
-		],
-		"assistants": [
-			0, 0, 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, 0, 1, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0],
-		"evaluation": [0, 0, 0, 1],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 1,
-		"activated": 1,
-		"season": 1,
-		"year": 1,
-		"participants": 1
-	},
-	"Бизнис статистика": {
-		"professors": [
-			0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 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, 0, 0, 1, 0, 0, 0, 0,
-			1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0],
-		"evaluation": [0, 1, 0, 1],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 0,
-		"year": 1,
-		"participants": 1
-	},
-	"Вовед во компјутерските науки": {
-		"professors": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1
-		],
-		"tags": [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
-		"evaluation": [0, 1, 0, 1],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 1,
-		"year": 1,
-		"participants": 1
-	},
-	"Дизајн на дигитални кола": {
-		"professors": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
-		"evaluation": [0, 1, 0, 1],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 1,
-		"year": 1,
-		"participants": 0
-	},
-	"Дискретна математика": {
-		"professors": [
-			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,
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0],
-		"evaluation": [0, 1, 0, 1],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 0,
-		"year": 1,
-		"participants": 1
-	},
-	"Дискретни структури 1": {
-		"professors": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0],
-		"evaluation": [0, 1, 0, 1],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 1,
-		"year": 1,
-		"participants": 0.5
-	},
-	"Дискретни структури 2": {
-		"professors": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0],
-		"evaluation": [0, 1, 0, 1],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 0,
-		"year": 1,
-		"participants": 0.5
-	},
-	"Е-учење": {
-		"professors": [
-			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,
-			0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0],
-		"evaluation": [0, 0, 1, 1],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 1,
-		"activated": 1,
-		"season": 0,
-		"year": 1,
-		"participants": 0
-	},
-	"Математика 1": {
-		"professors": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0],
-		"evaluation": [0, 1, 0, 1],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 1,
-		"year": 1,
-		"participants": 1
-	},
-	"Калкулус 1": {
-		"professors": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 1, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0],
-		"evaluation": [0, 1, 0, 1],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 1,
-		"year": 1,
-		"participants": 0.5
-	},
-	"Калкулус 2": {
-		"professors": [
-			0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0],
-		"evaluation": [0, 1, 0, 1],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 0,
-		"year": 1,
-		"participants": 0.5
-	},
-	"Компјутерски архитектури": {
-		"professors": [
-			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,
-			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,
-			0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
-		"evaluation": [0, 1, 0, 1],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 0,
-		"year": 1,
-		"participants": 0.5
-	},
-	"Компјутерски компоненти": {
-		"professors": [
-			0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
-		"evaluation": [0, 0, 0, 1],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 1,
-		"activated": 1,
-		"season": 0,
-		"year": 1,
-		"participants": 0
-	},
-	"Креативни вештини за решавање проблеми": {
-		"professors": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0
-		],
-		"tags": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0],
-		"evaluation": [0, 0, 0, 1],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 1,
-		"activated": 1,
-		"season": 0,
-		"year": 2,
-		"participants": 0
-	},
-	"Маркетинг": {
-		"professors": [
-			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,
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0
-		],
-		"assistants": [
-			0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0],
-		"evaluation": [0, 0, 0, 1],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 1,
-		"activated": 1,
-		"season": 0,
-		"year": 2,
-		"participants": 1
-	},
-	"Објектно ориентирана анализа и дизајн": {
-		"professors": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0
-		],
-		"tags": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0],
-		"evaluation": [0, 1, 0, 1],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 0,
-		"year": 1,
-		"participants": 1
-	},
-	"Објектно-ориентирано програмирање": {
-		"professors": [
-			1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
-			0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1
-		],
-		"assistants": [
-			0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1
-		],
-		"tags": [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0],
-		"evaluation": [1, 0, 0, 1],
-		"technologies": [
-			0, 0, 0, 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
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 0,
-		"year": 1,
-		"participants": 1
-	},
-	"Основи на Веб дизајн": {
-		"professors": [
-			0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,
-			0, 0, 0, 0, 0, 1, 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, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 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
-		],
-		"tags": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1],
-		"evaluation": [1, 0, 0, 1],
-		"technologies": [
-			0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 0,
-		"year": 1,
-		"participants": 1
-	},
-	"Основи на сајбер безбедноста": {
-		"professors": [
-			0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 1, 0, 0
-		],
-		"assistants": [
-			0, 0, 0, 0, 0, 0, 0, 1, 0, 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, 0
-		],
-		"tags": [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0],
-		"evaluation": [0, 0, 0, 1],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 1,
-		"activated": 1,
-		"season": 0,
-		"year": 1,
-		"participants": 1
-	},
-	"Педагогија": {
-		"professors": [
-			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,
-			0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0],
-		"evaluation": [0, 0, 0, 1],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 1,
-		"activated": 1,
-		"season": 1,
-		"year": 1,
-		"participants": 0
-	},
-	"Професионални вештини": {
-		"professors": [
-			0, 0, 0, 0, 0, 0, 0, 0, 1, 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, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0,
-			0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0],
-		"evaluation": [0, 0, 1, 0],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 1,
-		"activated": 1,
-		"season": 1,
-		"year": 1,
-		"participants": 1
-	},
-	"Структурно програмирање": {
-		"professors": [
-			1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
-			0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
-			0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1
-		],
-		"assistants": [
-			0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1,
-			1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1
-		],
-		"tags": [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0],
-		"evaluation": [1, 0, 0, 1],
-		"technologies": [
-			0, 0, 0, 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
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 1,
-		"year": 1,
-		"participants": 1
-	},
-	"Физика": {
-		"professors": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0],
-		"evaluation": [0, 1, 0, 1],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 1,
-		"year": 1,
-		"participants": 0
-	},
-	"Алгоритми и податочни структури": {
-		"professors": [
-			0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0
-		],
-		"tags": [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0],
-		"evaluation": [1, 0, 0, 1],
-		"technologies": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 1,
-		"year": 2,
-		"participants": 1
-	},
-	"Анализа на софтверските барања": {
-		"professors": [
-			0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
-			0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0],
-		"evaluation": [0, 0, 1, 1],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 1,
-		"activated": 1,
-		"season": 0,
-		"year": 2,
-		"participants": 1
-	},
-	"Безжични и мобилни системи": {
-		"professors": [
-			0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 1, 0, 0
-		],
-		"assistants": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0
-		],
-		"tags": [0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0],
-		"evaluation": [0, 1, 0, 1],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 0,
-		"year": 2,
-		"participants": 0.5
-	},
-	"Веројатност и статистика": {
-		"professors": [
-			0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
-			1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			0, 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, 0, 0, 0, 0, 0, 1, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0],
-		"evaluation": [1, 1, 0, 1],
-		"technologies": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 1,
-		"year": 2,
-		"participants": 1
-	},
-	"Вештачка интелигенција": {
-		"professors": [
-			0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
-		"evaluation": [1, 0, 0, 1],
-		"technologies": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 0,
-		"year": 2,
-		"participants": 1
-	},
-	"Визуелно програмирање": {
-		"professors": [
-			1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1
-		],
-		"tags": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0],
-		"evaluation": [1, 0, 1, 0],
-		"technologies": [
-			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, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 0,
-		"year": 2,
-		"participants": 0.5
-	},
-	"Вовед во екоинформатиката": {
-		"professors": [
-			0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0],
-		"evaluation": [0, 0, 1, 1],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 1,
-		"activated": 1,
-		"season": 0,
-		"year": 2,
-		"participants": 0
-	},
-	"Вовед во случајни процеси": {
-		"professors": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0],
-		"evaluation": [0, 1, 0, 1],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 0,
-		"year": 2,
-		"participants": 0
-	},
-	"Дигитално процесирање на слика": {
-		"professors": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0],
-		"evaluation": [1, 0, 1, 1],
-		"technologies": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
-			0, 0, 0
-		],
-		"isEasy": 1,
-		"activated": 1,
-		"season": 0,
-		"year": 2,
-		"participants": 0.5
-	},
-	"Дигитизација": {
-		"professors": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0],
-		"evaluation": [0, 0, 1, 1],
-		"technologies": [
-			0, 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, 0
-		],
-		"isEasy": 1,
-		"activated": 1,
-		"season": 1,
-		"year": 2,
-		"participants": 0.5
-	},
-	"Дизајн на алгоритми": {
-		"professors": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0],
-		"evaluation": [1, 0, 1, 1],
-		"technologies": [
-			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,
-			0, 1, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 0,
-		"year": 2,
-		"participants": 0
-	},
-	"Е-влада": {
-		"professors": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0],
-		"evaluation": [0, 0, 0, 1],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 1,
-		"activated": 1,
-		"season": 0,
-		"year": 2,
-		"participants": 1
-	},
-	"Економија за ИКТ инженери": {
-		"professors": [
-			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,
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0
-		],
-		"assistants": [
-			0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0],
-		"evaluation": [0, 0, 0, 1],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 1,
-		"activated": 1,
-		"season": 1,
-		"year": 2,
-		"participants": 1
-	},
-	"Електрични кола": {
-		"professors": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0],
-		"evaluation": [0, 1, 0, 0],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 0,
-		"year": 2,
-		"participants": 0
-	},
-	"Информатичко размислување во образованието": {
-		"professors": [
-			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,
-			0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0],
-		"evaluation": [0, 0, 1, 0],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 1,
-		"activated": 1,
-		"season": 0,
-		"year": 2,
-		"participants": 0
-	},
-	"Инженерска математика": {
-		"professors": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0],
-		"evaluation": [0, 1, 1, 1],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 1,
-		"year": 2,
-		"participants": 0
-	},
-	"Интернет програмирање на клиентска страна": {
-		"professors": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,
-			0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 1, 0
-		],
-		"assistants": [
-			0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1],
-		"evaluation": [1, 0, 1, 1],
-		"technologies": [
-			0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 1,
-		"year": 2,
-		"participants": 1
-	},
-	"Интернет технологии": {
-		"professors": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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
-		],
-		"tags": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1],
-		"evaluation": [1, 0, 1, 1],
-		"technologies": [
-			1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 1, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 0,
-		"year": 2,
-		"participants": 1
-	},
-	"Компјутерска графика": {
-		"professors": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0],
-		"evaluation": [1, 0, 1, 1],
-		"technologies": [
-			0, 0, 0, 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
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 0,
-		"year": 2,
-		"participants": 0
-	},
-	"Компјутерски мрежи": {
-		"professors": [
-			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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0],
-		"evaluation": [0, 1, 0, 1],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 1,
-		"year": 2,
-		"participants": 0.5
-	},
-	"Компјутерски мрежи и безбедност": {
-		"professors": [
-			0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0,
-			0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0
-		],
-		"assistants": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0],
-		"evaluation": [0, 1, 0, 1],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 1,
-		"year": 2,
-		"participants": 1
-	},
-	"Концепти на информатичко општество": {
-		"professors": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 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, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0,
-			0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0],
-		"evaluation": [0, 0, 1, 1],
-		"technologies": [
-			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,
-			0, 1, 0
-		],
-		"isEasy": 1,
-		"activated": 1,
-		"season": 0,
-		"year": 2,
-		"participants": 1
-	},
-	"Медиуми и комуникации": {
-		"professors": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0],
-		"evaluation": [0, 0, 0, 1],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 1,
-		"activated": 1,
-		"season": 0,
-		"year": 2,
-		"participants": 1
-	},
-	"Мултимедијални технологии": {
-		"professors": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0],
-		"evaluation": [0, 1, 0, 1],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 1,
-		"activated": 1,
-		"season": 1,
-		"year": 2,
-		"participants": 0.5
-	},
-	"Напредно програмирање": {
-		"professors": [
-			1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 1
-		],
-		"tags": [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0],
-		"evaluation": [1, 0, 0, 1],
-		"technologies": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 1,
-		"year": 3,
-		"participants": 1
-	},
-	"Квантно пресметување": {
-		"professors": [
-			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,
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0],
-		"evaluation": [0, 0, 0, 0],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 0,
-		"season": 1,
-		"year": 4,
-		"participants": 0
-	},
-	"Оперативни системи": {
-		"professors": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
-			0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0,
-			0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			0, 1, 0, 0, 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, 1, 0, 1, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0],
-		"evaluation": [0, 1, 0, 1],
-		"technologies": [
-			0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 0,
-		"year": 2,
-		"participants": 1
-	},
-	"Основи на комуникациски системи": {
-		"professors": [
-			0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0],
-		"evaluation": [0, 0, 1, 0],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 1,
-		"year": 2,
-		"participants": 0
-	},
-	"Основи на теоријата на информации": {
-		"professors": [
-			0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0],
-		"evaluation": [0, 1, 0, 1],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 1,
-		"year": 2,
-		"participants": 0
-	},
-	"Софтверско инженерство": {
-		"professors": [
-			1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 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
-		],
-		"assistants": [
-			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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1
-		],
-		"tags": [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0],
-		"evaluation": [0, 1, 0, 1],
-		"technologies": [
-			0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 0,
-		"year": 2,
-		"participants": 1
-	},
-	"Теорија на информации со дигитални комуникации": {
-		"professors": [
-			0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0],
-		"evaluation": [0, 1, 0, 1],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 0,
-		"year": 2,
-		"participants": 0
-	},
-	"Управување со техничка поддршка": {
-		"professors": [
-			0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 1, 0, 0
-		],
-		"assistants": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0],
-		"evaluation": [0, 1, 1, 1],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 1,
-		"year": 2,
-		"participants": 1
-	},
-	"Шаблони за дизајн на кориснички интерфејси": {
-		"professors": [
-			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,
-			0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 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, 1, 0
-		],
-		"assistants": [
-			0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1],
-		"evaluation": [1, 0, 0, 1],
-		"technologies": [
-			0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 1
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 1,
-		"year": 2,
-		"participants": 1
-	},
-	"Агентно-базирани системи": {
-		"professors": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0],
-		"evaluation": [0, 0, 1, 0],
-		"technologies": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 0,
-		"year": 3,
-		"participants": 0
-	},
-	"Администрација на мрежи": {
-		"professors": [
-			0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0],
-		"evaluation": [0, 0, 1, 1],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 0,
-		"year": 3,
-		"participants": 0
-	},
-	"Администрација на системи": {
-		"professors": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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
-		],
-		"assistants": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0],
-		"evaluation": [0, 1, 0, 1],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 1,
-		"year": 3,
-		"participants": 0.5
-	},
-	"Бази на податоци": {
-		"professors": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0,
-			0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0
-		],
-		"assistants": [
-			1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
-			0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0],
-		"evaluation": [1, 0, 1, 1],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 1,
-		"year": 3,
-		"participants": 1
-	},
-	"Вградливи микропроцесорски системи": {
-		"professors": [
-			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,
-			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,
-			0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0
-		],
-		"tags": [0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0],
-		"evaluation": [0, 1, 1, 1],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 0,
-		"year": 3,
-		"participants": 0
-	},
-	"Веб програмирање": {
-		"professors": [
-			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,
-			0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1],
-		"evaluation": [1, 0, 1, 1],
-		"technologies": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 1,
-		"year": 3,
-		"participants": 1
-	},
-	"Визуелизација": {
-		"professors": [
-			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,
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0
-		],
-		"assistants": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0],
-		"evaluation": [0, 0, 1, 0],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 1,
-		"activated": 1,
-		"season": 1,
-		"year": 3,
-		"participants": 0.5
-	},
-	"Виртуелизација": {
-		"professors": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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
-		],
-		"assistants": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0],
-		"evaluation": [0, 1, 1, 1],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 0,
-		"year": 3,
-		"participants": 0
-	},
-	"Вовед во мрежна наука": {
-		"professors": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0],
-		"evaluation": [0, 0, 1, 0],
-		"technologies": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
-			0, 0, 0
-		],
-		"isEasy": 1,
-		"activated": 1,
-		"season": 0,
-		"year": 3,
-		"participants": 0
-	},
-	"Вовед во науката за податоци": {
-		"professors": [
-			0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
-		"evaluation": [1, 0, 1, 1],
-		"technologies": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 1,
-		"year": 3,
-		"participants": 1
-	},
-	"Географски информациски системи": {
-		"professors": [
-			0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
-		"evaluation": [0, 0, 1, 0],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 0,
-		"year": 3,
-		"participants": 0
-	},
-	"Дигитална форензика": {
-		"professors": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0],
-		"evaluation": [0, 0, 1, 1],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 1,
-		"activated": 1,
-		"season": 0,
-		"year": 3,
-		"participants": 0.5
-	},
-	"Дигитални библиотеки": {
-		"professors": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
-		"evaluation": [0, 0, 0, 1],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 1,
-		"activated": 1,
-		"season": 0,
-		"year": 3,
-		"participants": 0.5
-	},
-	"Дизајн и архитектура на софтвер": {
-		"professors": [
-			0, 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, 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, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0],
-		"evaluation": [0, 0, 1, 1],
-		"technologies": [
-			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,
-			0, 1, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 1,
-		"year": 3,
-		"participants": 1
-	},
-	"Дизајн на интеракцијата човек-компјутер": {
-		"professors": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 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, 0, 0, 0, 1, 0, 1, 0
-		],
-		"assistants": [
-			0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
-			0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1],
-		"evaluation": [1, 0, 1, 1],
-		"technologies": [
-			0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 0,
-		"year": 3,
-		"participants": 1
-	},
-	"Дизајн на образовен софтвер": {
-		"professors": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0],
-		"evaluation": [0, 0, 1, 1],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 1,
-		"activated": 1,
-		"season": 1,
-		"year": 3,
-		"participants": 0.5
-	},
-	"Електронска и мобилна трговија": {
-		"professors": [
-			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,
-			0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0,
-			0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1],
-		"evaluation": [1, 0, 1, 1],
-		"technologies": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 0,
-		"year": 3,
-		"participants": 1
-	},
-	"Интегрирани системи": {
-		"professors": [
-			0, 0, 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, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1],
-		"evaluation": [0, 1, 1, 1],
-		"technologies": [
-			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, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 0,
-		"year": 3,
-		"participants": 1
-	},
-	"Информациска безбедност": {
-		"professors": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0],
-		"evaluation": [0, 1, 1, 1],
-		"technologies": [
-			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,
-			0, 1, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 1,
-		"year": 3,
-		"participants": 0
-	},
-	"Инфраструктурно програмирање": {
-		"professors": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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
-		],
-		"assistants": [
-			0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0
-		],
-		"tags": [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0],
-		"evaluation": [0, 0, 0, 0],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 0,
-		"season": 0,
-		"year": 4,
-		"participants": 0
-	},
-	"Компјутерска електроника": {
-		"professors": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0],
-		"evaluation": [0, 1, 1, 0],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 1,
-		"year": 3,
-		"participants": 0
-	},
-	"Компјутерска етика": {
-		"professors": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0],
-		"evaluation": [0, 0, 1, 1],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 1,
-		"activated": 1,
-		"season": 1,
-		"year": 3,
-		"participants": 0.5
-	},
-	"Компјутерски звук, музика и говор": {
-		"professors": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0],
-		"evaluation": [0, 0, 1, 0],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 0,
-		"year": 3,
-		"participants": 0
-	},
-	"Континуирана интеграција и испорака": {
-		"professors": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
-			0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0],
-		"evaluation": [0, 1, 1, 1],
-		"technologies": [
-			0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 0,
-		"year": 3,
-		"participants": 0.5
-	},
-	"Криптографија": {
-		"professors": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0],
-		"evaluation": [0, 1, 0, 1],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 0,
-		"year": 3,
-		"participants": 0
-	},
-	"Линеарна алгебра и примени": {
-		"professors": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0],
-		"evaluation": [0, 1, 0, 1],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 1,
-		"year": 2,
-		"participants": 0.5
-	},
-	"Машинско учење": {
-		"professors": [
-			0, 0, 0, 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, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
-		"evaluation": [0, 1, 1, 1],
-		"technologies": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 0,
-		"year": 3,
-		"participants": 0.5
-	},
-	"Мерење и анализа на сообраќај": {
-		"professors": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0],
-		"evaluation": [0, 0, 0, 0],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 1,
-		"activated": 0,
-		"season": 0,
-		"year": 3,
-		"participants": 0
-	},
-	"Сајбер безбедност": {
-		"professors": [
-			0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 1, 0, 0
-		],
-		"assistants": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0
-		],
-		"tags": [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0],
-		"evaluation": [0, 1, 1, 1],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 1,
-		"year": 3,
-		"participants": 0.5
-	},
-	"Мултимедиски мрежи": {
-		"professors": [
-			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,
-			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,
-			0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0],
-		"evaluation": [0, 1, 1, 1],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 1,
-		"year": 3,
-		"participants": 0.5
-	},
-	"Мултимедиски системи": {
-		"professors": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0],
-		"evaluation": [0, 0, 0, 0],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 1,
-		"activated": 1,
-		"season": 0,
-		"year": 3,
-		"participants": 1
-	},
-	"Напреден веб дизајн": {
-		"professors": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,
-			0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			0, 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, 0, 0, 0, 0, 0, 0, 1, 0
-		],
-		"tags": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1],
-		"evaluation": [1, 0, 1, 1],
-		"technologies": [
-			0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			1, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 1,
-		"year": 3,
-		"participants": 0.5
-	},
-	"Основи на роботиката": {
-		"professors": [
-			0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0
-		],
-		"tags": [1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0],
-		"evaluation": [1, 0, 1, 1],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 1,
-		"year": 3,
-		"participants": 0.5
-	},
-	"Паралелно и дистрибуирано процесирање": {
-		"professors": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0],
-		"evaluation": [0, 0, 1, 0],
-		"technologies": [
-			0, 0, 0, 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
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 1,
-		"year": 3,
-		"participants": 0
-	},
-	"Паралелно програмирање": {
-		"professors": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0],
-		"evaluation": [0, 0, 0, 0],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 0,
-		"year": 3,
-		"participants": 0
-	},
-	"Персонализирано учење": {
-		"professors": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
-		"evaluation": [0, 0, 0, 0],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 1,
-		"activated": 0,
-		"season": 1,
-		"year": 3,
-		"participants": 0
-	},
-	"Податочно рударење": {
-		"professors": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
-		"evaluation": [1, 0, 1, 1],
-		"technologies": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 0,
-		"year": 3,
-		"participants": 0
-	},
-	"Процесирање на сигналите": {
-		"professors": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0],
-		"evaluation": [1, 0, 0, 1],
-		"technologies": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 0,
-		"year": 3,
-		"participants": 0
-	},
-	"Вештачка интелигенција за игри": {
-		"professors": [
-			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,
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0],
-		"evaluation": [0, 0, 0, 0],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 0,
-		"season": 0,
-		"year": 3,
-		"participants": 0
-	},
-	"Психологија на училишна возраст": {
-		"professors": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0],
-		"evaluation": [0, 0, 0, 1],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 1,
-		"activated": 1,
-		"season": 0,
-		"year": 3,
-		"participants": 1
-	},
-	"Работа со надарени ученици": {
-		"professors": [
-			0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0],
-		"evaluation": [0, 0, 0, 1],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 1,
-		"activated": 1,
-		"season": 0,
-		"year": 3,
-		"participants": 0
-	},
-	"Сервисно ориентирани архитектури": {
-		"professors": [
-			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,
-			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,
-			0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1],
-		"evaluation": [0, 0, 1, 1],
-		"technologies": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 0,
-		"year": 3,
-		"participants": 0
-	},
-	"Современи компјутерски архитектури": {
-		"professors": [
-			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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
-		"evaluation": [0, 0, 0, 0],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 0,
-		"season": 1,
-		"year": 3,
-		"participants": 0
-	},
-	"Софтверски дефинирана безбедност": {
-		"professors": [
-			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,
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0],
-		"evaluation": [0, 0, 0, 0],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 0,
-		"year": 3,
-		"participants": 0
-	},
-	"Софтверски квалитет и тестирање": {
-		"professors": [
-			1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1
-		],
-		"assistants": [
-			0, 0, 0, 0, 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, 0, 0, 0, 0, 1, 0
-		],
-		"tags": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0],
-		"evaluation": [1, 0, 1, 1],
-		"technologies": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 0,
-		"year": 3,
-		"participants": 1
-	},
-	"Автоматизирање на процеси во машинско учење": {
-		"professors": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0],
-		"evaluation": [0, 0, 0, 0],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 0,
-		"year": 3,
-		"participants": 0
-	},
-	"Учење на далечина": {
-		"professors": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
-		"evaluation": [0, 0, 1, 1],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 1,
-		"activated": 1,
-		"season": 0,
-		"year": 3,
-		"participants": 0.5
-	},
-	"Основи на теоријата на компјутерските науки": {
-		"professors": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0],
-		"evaluation": [0, 1, 0, 1],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 0,
-		"year": 3,
-		"participants": 0.5
-	},
-	"Автономна роботика": {
-		"professors": [
-			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,
-			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,
-			0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0],
-		"evaluation": [0, 0, 0, 0],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 0,
-		"season": 1,
-		"year": 4,
-		"participants": 0
-	},
-	"Администрација на бази податоци": {
-		"professors": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0],
-		"evaluation": [0, 0, 0, 0],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 1,
-		"year": 4,
-		"participants": 0
-	},
-	"Анализа и дизајн на ИС": {
-		"professors": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0],
-		"evaluation": [0, 1, 0, 1],
-		"technologies": [
-			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,
-			0, 1, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 1,
-		"year": 4,
-		"participants": 0.5
-	},
-	"Биолошки инспирирано пресметување": {
-		"professors": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 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
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
-		"evaluation": [0, 0, 0, 0],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 0,
-		"year": 4,
-		"participants": 0
-	},
-	"Блоковски вериги и криптовалути": {
-		"professors": [
-			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,
-			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,
-			0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0],
-		"evaluation": [0, 0, 1, 0],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 0,
-		"season": 1,
-		"year": 4,
-		"participants": 0
-	},
-	"Веб базирани системи": {
-		"professors": [
-			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,
-			0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1],
-		"evaluation": [0, 0, 1, 1],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 1,
-		"year": 4,
-		"participants": 0.5
-	},
-	"Веб пребарувачки системи": {
-		"professors": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
-		"evaluation": [0, 0, 0, 0],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 0,
-		"year": 4,
-		"participants": 0
-	},
-	"Виртуелна реалност": {
-		"professors": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0],
-		"evaluation": [0, 0, 1, 1],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 1,
-		"activated": 1,
-		"season": 0,
-		"year": 4,
-		"participants": 0.5
-	},
-	"Вовед во анализа на временските серии": {
-		"professors": [
-			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,
-			0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0],
-		"evaluation": [0, 0, 0, 0],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 1,
-		"year": 4,
-		"participants": 0
-	},
-	"Вовед во биоинформатиката": {
-		"professors": [
-			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,
-			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,
-			0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
-		"evaluation": [0, 1, 1, 1],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 1,
-		"year": 4,
-		"participants": 0
-	},
-	"Вовед во когнитивни науки": {
-		"professors": [
-			0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0
-		],
-		"tags": [1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
-		"evaluation": [0, 0, 1, 1],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 1,
-		"activated": 1,
-		"season": 0,
-		"year": 4,
-		"participants": 0
-	},
-	"Вовед во паметни градови": {
-		"professors": [
-			0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
-		"evaluation": [0, 0, 1, 1],
-		"technologies": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 0,
-		"season": 1,
-		"year": 4,
-		"participants": 0
-	},
-	"Вовед во препознавање на облици": {
-		"professors": [
-			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,
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
-		"evaluation": [1, 0, 1, 1],
-		"technologies": [
-			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,
-			0, 1, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 1,
-		"year": 4,
-		"participants": 0
-	},
-	"Дигитална постпродукција": {
-		"professors": [
-			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,
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0],
-		"evaluation": [0, 0, 0, 0],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 0,
-		"season": 1,
-		"year": 4,
-		"participants": 0
-	},
-	"Дизајн на компјутерски мрежи": {
-		"professors": [
-			0, 0, 0, 1, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0],
-		"evaluation": [0, 1, 1, 1],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 0,
-		"year": 4,
-		"participants": 0
-	},
-	"Дистрибуирани системи": {
-		"professors": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0
-		],
-		"tags": [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0],
-		"evaluation": [1, 0, 0, 1],
-		"technologies": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 1,
-		"year": 4,
-		"participants": 0
-	},
-	"Дистрибуирано складирање на податоци": {
-		"professors": [
-			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,
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0],
-		"evaluation": [0, 0, 0, 0],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 0,
-		"season": 1,
-		"year": 4,
-		"participants": 0
-	},
-	"Етичко хакирање": {
-		"professors": [
-			0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 1
-		],
-		"assistants": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0
-		],
-		"tags": [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0],
-		"evaluation": [0, 0, 1, 1],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 0,
-		"year": 4,
-		"participants": 0
-	},
-	"ИКТ за развој": {
-		"professors": [
-			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,
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
-		"evaluation": [0, 0, 0, 0],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 1,
-		"activated": 1,
-		"season": 0,
-		"year": 4,
-		"participants": 0
-	},
-	"Имплементација на софтверски системи со слободен и отворен код": {
-		"professors": [
-			0, 0, 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, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1],
-		"evaluation": [1, 0, 1, 1],
-		"technologies": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 1,
-		"year": 4,
-		"participants": 0.5
-	},
-	"Иновации во ИКТ": {
-		"professors": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0],
-		"evaluation": [0, 0, 1, 1],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 1,
-		"activated": 1,
-		"season": 1,
-		"year": 4,
-		"participants": 0
-	},
-	"Откривање знаење со длабоко учење": {
-		"professors": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
-		"evaluation": [0, 0, 1, 0],
-		"technologies": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 0,
-		"year": 4,
-		"participants": 0
-	},
-	"Интелигентни системи": {
-		"professors": [
-			0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0],
-		"evaluation": [0, 0, 0, 0],
-		"technologies": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 0,
-		"year": 4,
-		"participants": 0
-	},
-	"Интернет на нештата": {
-		"professors": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0
-		],
-		"assistants": [
-			0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0
-		],
-		"tags": [1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0],
-		"evaluation": [0, 0, 0, 0],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 1,
-		"year": 4,
-		"participants": 0
-	},
-	"Компјутерска анимација": {
-		"professors": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0],
-		"evaluation": [0, 0, 1, 0],
-		"technologies": [
-			0, 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, 0
-		],
-		"isEasy": 0,
-		"activated": 0,
-		"season": 0,
-		"year": 3,
-		"participants": 0
-	},
-	"Компјутерски поддржано производство": {
-		"professors": [
-			0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0],
-		"evaluation": [0, 0, 0, 0],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 1,
-		"year": 4,
-		"participants": 0
-	},
-	"Македонски јазик": {
-		"professors": [
-			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,
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0],
-		"evaluation": [0, 0, 0, 1],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 1,
-		"activated": 0,
-		"season": 0,
-		"year": 4,
-		"participants": 0
-	},
-	"Машинска визија": {
-		"professors": [
-			0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0],
-		"evaluation": [0, 1, 1, 1],
-		"technologies": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 0,
-		"season": 1,
-		"year": 4,
-		"participants": 0
-	},
-	"Менаџмент информациски системи": {
-		"professors": [
-			0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0],
-		"evaluation": [0, 0, 1, 1],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 1,
-		"activated": 1,
-		"season": 1,
-		"year": 4,
-		"participants": 1
-	},
-	"Методика на информатиката": {
-		"professors": [
-			0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
-		"evaluation": [0, 0, 1, 0],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 1,
-		"activated": 1,
-		"season": 0,
-		"year": 4,
-		"participants": 0
-	},
-	"Методологија на истражувањето во ИКТ": {
-		"professors": [
-			0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0
-		],
-		"tags": [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0],
-		"evaluation": [0, 0, 0, 1],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 1,
-		"activated": 1,
-		"season": 1,
-		"year": 4,
-		"participants": 0.5
-	},
-	"Мобилни апликации": {
-		"professors": [
-			0, 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, 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, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0],
-		"evaluation": [0, 0, 1, 0],
-		"technologies": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 0,
-		"year": 4,
-		"participants": 0
-	},
-	"Мобилни информациски системи": {
-		"professors": [
-			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,
-			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,
-			0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0],
-		"evaluation": [0, 0, 1, 0],
-		"technologies": [
-			0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 1, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 1,
-		"year": 4,
-		"participants": 0.5
-	},
-	"Мобилни платформи и програмирање": {
-		"professors": [
-			0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0],
-		"evaluation": [0, 0, 1, 0],
-		"technologies": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 1,
-		"year": 4,
-		"participants": 0
-	},
-	"Моделирање и менаџирање на бизнис процеси": {
-		"professors": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0],
-		"evaluation": [0, 0, 1, 1],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 1,
-		"activated": 1,
-		"season": 0,
-		"year": 4,
-		"participants": 0
-	},
-	"Моделирање и симулација": {
-		"professors": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0],
-		"evaluation": [0, 0, 0, 0],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 1,
-		"activated": 0,
-		"season": 0,
-		"year": 4,
-		"participants": 0
-	},
-	"Модерни трендови во роботика": {
-		"professors": [
-			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,
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0],
-		"evaluation": [0, 0, 0, 0],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 0,
-		"season": 0,
-		"year": 4,
-		"participants": 0
-	},
-	"Мрежна и мобилна форензика": {
-		"professors": [
-			0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 1, 0, 0
-		],
-		"assistants": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0
-		],
-		"tags": [0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0],
-		"evaluation": [0, 0, 1, 0],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 1,
-		"year": 4,
-		"participants": 0
-	},
-	"Напредна интеракција човек компјутер": {
-		"professors": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0],
-		"evaluation": [1, 0, 1, 1],
-		"technologies": [
-			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,
-			0, 1, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 1,
-		"year": 4,
-		"participants": 0
-	},
-	"Напредни бази на податоци": {
-		"professors": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0],
-		"evaluation": [1, 0, 1, 1],
-		"technologies": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 0,
-		"year": 3,
-		"participants": 0
-	},
-	"Web3 апликации": {
-		"professors": [
-			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,
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1],
-		"evaluation": [0, 0, 0, 0],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 0,
-		"season": 0,
-		"year": 4,
-		"participants": 0
-	},
-	"Неструктурирани бази на податоци": {
-		"professors": [
-			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,
-			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,
-			0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0],
-		"evaluation": [1, 0, 1, 1],
-		"technologies": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 0,
-		"year": 4,
-		"participants": 0
-	},
-	"Обработка на природните јазици": {
-		"professors": [
-			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,
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0],
-		"evaluation": [0, 0, 1, 0],
-		"technologies": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 1,
-		"year": 3,
-		"participants": 0
-	},
-	"Операциони истражувања": {
-		"professors": [
-			0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0],
-		"evaluation": [0, 0, 0, 0],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 0,
-		"season": 0,
-		"year": 4,
-		"participants": 0
-	},
-	"Оптички мрежи": {
-		"professors": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0],
-		"evaluation": [0, 0, 1, 0],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 0,
-		"season": 1,
-		"year": 4,
-		"participants": 0
-	},
-	"Пресметување во облак": {
-		"professors": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0],
-		"evaluation": [1, 0, 1, 1],
-		"technologies": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 1,
-		"year": 4,
-		"participants": 0
-	},
-	"Претприемништво": {
-		"professors": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
-			0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0],
-		"evaluation": [0, 0, 0, 0],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 1,
-		"activated": 1,
-		"season": 0,
-		"year": 4,
-		"participants": 0.5
-	},
-	"Програмирање на видео игри": {
-		"professors": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0
-		],
-		"tags": [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0],
-		"evaluation": [1, 0, 1, 0],
-		"technologies": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 1,
-		"year": 4,
-		"participants": 1
-	},
-	"Програмски јазици и компајлери": {
-		"professors": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0],
-		"evaluation": [0, 0, 0, 0],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 0,
-		"season": 0,
-		"year": 4,
-		"participants": 0
-	},
-	"Програмски парадигми": {
-		"professors": [
-			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,
-			0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0],
-		"evaluation": [1, 0, 0, 1],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 1,
-		"year": 4,
-		"participants": 0
-	},
-	"Вовед во рударење на масивни податоци": {
-		"professors": [
-			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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1
-		],
-		"tags": [1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
-		"evaluation": [0, 0, 1, 0],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 1,
-		"year": 4,
-		"participants": 0
-	},
-	"Самостоен проект": {
-		"professors": [
-			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,
-			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,
-			0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
-		"evaluation": [0, 0, 1, 0],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 1,
-		"activated": 0,
-		"season": 1,
-		"year": 4,
-		"participants": 0
-	},
-	"Системи за поддршка при одлучувањето": {
-		"professors": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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
-		],
-		"tags": [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0],
-		"evaluation": [0, 0, 0, 1],
-		"technologies": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
-			0, 0, 0
-		],
-		"isEasy": 1,
-		"activated": 1,
-		"season": 1,
-		"year": 4,
-		"participants": 0.5
-	},
-	"Складови на податоци и аналитичка обработка": {
-		"professors": [
-			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,
-			0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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
-		],
-		"tags": [0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0],
-		"evaluation": [1, 0, 0, 1],
-		"technologies": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 0,
-		"year": 3,
-		"participants": 0
-	},
-	"Софтвер за вградливи системи": {
-		"professors": [
-			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,
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0],
-		"evaluation": [0, 0, 1, 0],
-		"technologies": [
-			0, 0, 1, 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
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 1,
-		"year": 4,
-		"participants": 0
-	},
-	"Софтверски дефинирани мрежи": {
-		"professors": [
-			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,
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0],
-		"evaluation": [0, 0, 0, 0],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 0,
-		"year": 4,
-		"participants": 0
-	},
-	"Теорија на графови и социјални мрежи": {
-		"professors": [
-			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,
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0],
-		"evaluation": [0, 0, 0, 0],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 1,
-		"year": 3,
-		"participants": 0
-	},
-	"Споделување и пресметување во толпа": {
-		"professors": [
-			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,
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
-		"evaluation": [0, 0, 0, 0],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 0,
-		"season": 0,
-		"year": 4,
-		"participants": 0
-	},
-	"Тимски проект": {
-		"professors": [
-			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,
-			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,
-			0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
-		"evaluation": [0, 0, 1, 0],
-		"technologies": [
-			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,
-			0, 1, 0
-		],
-		"isEasy": 1,
-		"activated": 1,
-		"season": 1,
-		"year": 4,
-		"participants": 1
-	},
-	"Управување со ИКТ проекти": {
-		"professors": [
-			0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
-			0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0],
-		"evaluation": [0, 0, 0, 1],
-		"technologies": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0
-		],
-		"isEasy": 1,
-		"activated": 1,
-		"season": 0,
-		"year": 4,
-		"participants": 1
-	},
-	"Примена на алгоритми и податочни структури": {
-		"professors": [
-			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,
-			0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1
-		],
-		"assistants": [
-			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,
-			1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0],
-		"evaluation": [1, 0, 0, 1],
-		"technologies": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 1,
-		"year": 2,
-		"participants": 0.5
-	},
-	"Математика 3": {
-		"professors": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
-			1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0],
-		"evaluation": [1, 1, 0, 1],
-		"technologies": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 1,
-		"year": 2,
-		"participants": 0.5
-	},
-	"Избрани теми од математика": {
-		"professors": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
-			1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
-			1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0],
-		"evaluation": [0, 1, 0, 1],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 1,
-		"year": 1,
-		"participants": 1
-	},
-	"Математика 2": {
-		"professors": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
-			1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0,
-			1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0
-		],
-		"tags": [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0],
-		"evaluation": [0, 1, 0, 1],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 0,
-		"year": 1,
-		"participants": 1
-	},
-	"Тестирање на софтвер": {
-		"professors": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0
-		],
-		"tags": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0],
-		"evaluation": [0, 0, 0, 0],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 1,
-		"season": 1,
-		"year": 4,
-		"participants": 0
-	},
-	"Сензорски системи": {
-		"professors": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0],
-		"evaluation": [0, 0, 0, 0],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 0,
-		"season": 1,
-		"year": 4,
-		"participants": 0
-	},
-	"Адаптивни и интерактивни веб информациски системи": {
-		"professors": [
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1],
-		"evaluation": [0, 0, 0, 0],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 0,
-		"activated": 0,
-		"season": 0,
-		"year": 4,
-		"participants": 0
-	},
-	"Спорт и здравје": {
-		"professors": [
-			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,
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
-		"evaluation": [0, 0, 0, 0],
-		"technologies": [
-			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,
-			0, 0, 0
-		],
-		"isEasy": 1,
-		"activated": 0,
-		"season": 1,
-		"year": 1,
-		"participants": 0
-	},
-	"Деловна пракса": {
-		"professors": [
-			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,
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"assistants": [
-			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,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		],
-		"tags": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
-		"evaluation": [0, 0, 1, 0],
-		"technologies": [
-			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,
-			0, 1, 0
-		],
-		"isEasy": 0,
-		"activated": 0,
-		"season": 0,
-		"year": 2,
-		"participants": 0
-	}
-}
Index: ckend/subjects/management/data/tag_graph.json
===================================================================
--- backend/subjects/management/data/tag_graph.json	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,86 +1,0 @@
-{
-	"0": [
-		[6, 1.5],
-		[5, 3],
-		[10, 3]
-	],
-	"1": [
-		[12, 0.75],
-		[18, 1.5],
-		[15, 1]
-	],
-	"2": [
-		[16, 1.5],
-		[12, 2],
-		[3, 1],
-		[4, 1]
-	],
-	"3": [
-		[10, 1],
-		[13, 0.33],
-		[2, 0.5],
-		[15, 1]
-	],
-	"4": [
-		[16, 1],
-		[12, 2],
-		[2, 1]
-	],
-	"5": [
-		[0, 3],
-		[10, 3]
-	],
-	"6": [
-		[18, 2],
-		[0, 1.5],
-		[15, 1.5]
-	],
-	"7": [[14, 1]],
-	"8": [[9, 1]],
-	"9": [
-		[8, 1],
-		[10, 2],
-		[13, 2]
-	],
-	"10": [
-		[13, 1],
-		[3, 2],
-		[9, 2],
-		[0, 3],
-		[5, 3]
-	],
-	"11": [[17, 1]],
-	"12": [
-		[1, 1.5],
-		[2, 1],
-		[4, 2]
-	],
-	"13": [
-		[10, 1],
-		[3, 0.5],
-		[9, 2]
-	],
-	"14": [[7, 1]],
-	"15": [
-		[16, 0.5],
-		[18, 1.5],
-		[1, 0.5],
-		[6, 1.5],
-		[3, 1]
-	],
-	"16": [
-		[4, 1],
-		[2, 1],
-		[15, 0.5]
-	],
-	"17": [
-		[11, 1],
-		[18, 2]
-	],
-	"18": [
-		[6, 2],
-		[1, 1.5],
-		[17, 2],
-		[15, 1.5]
-	]
-}
Index: ckend/subjects/management/data/vocabulary.json
===================================================================
--- backend/subjects/management/data/vocabulary.json	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,157 +1,0 @@
-{
-	"professors": [
-		"Ѓорѓи Маџаров",
-		"Љупчо Антовски",
-		"Александар Стојменски",
-		"Александра Каневче Дединец",
-		"Александра Поповска Митровиќ",
-		"Ана Мадевска Богданова",
-		"Анастас Мишев",
-		"Андреа Кулаков",
-		"Андреја Наумоски",
-		"Билјана Стојкоска Ристеска",
-		"Билјана Тојтовска Рибарски",
-		"Бобан Јоксимоски",
-		"Боро Јакимовски",
-		"Бојан Илијоски",
-		"Бојана Котеска",
-		"Вангел Ајановски",
-		"Верица Бакева Смиљкова",
-		"Весна Димитриевска Ристовска",
-		"Весна Димитрова",
-		"Владимир Здравески",
-		"Владимир Трајковиќ",
-		"Георгина Мирчева",
-		"Горан Велинов",
-		"Гоце Арменски",
-		"Дејан Ѓорѓевиќ",
-		"Дејан Спасов",
-		"Димитар Трајанов",
-		"Елена Ризов",
-		"Емил Станков",
-		"Ефтим Здравевски",
-		"Иван Китановски",
-		"Иван Чорбев",
-		"Ивица Димитровски",
-		"Игор Мишковски",
-		"Илинка Иваноска",
-		"Калина Сотироска",
-		"Катарина Тројачанец Динева",
-		"Катерина Здравкова",
-		"Кире Триводалиев",
-		"Коста Митрески",
-		"Костадин Мишев",
-		"Ласко Баснарков",
-		"Магдалена Костоска Ѓорчевска",
-		"Марија Михова",
-		"Марјан Гушев",
-		"Методија Јанчески",
-		"Миле Јованов",
-		"Милош Јовановиќ",
-		"Мирослав Мирчев",
-		"Моника Симјаноска",
-		"Наташа Илиевска",
-		"Невена Ацковска",
-		"Панче Рибарски",
-		"Петре Ламески",
-		"Ристе Стојанов",
-		"Сашо Граматиков",
-		"Сите професори",
-		"Слободан Калајџиски",
-		"Смилка Јанеска Саркањац",
-		"Соња Гиевска",
-		"Соња Филипоска",
-		"Сузана Лошковска",
-		"Христина Михајлоска Трпческа"
-	],
-	"assistants": [
-		"Јана Кузманова",
-		"Јована Добрева",
-		"Александар Тенев",
-		"Ана Мадевска Богданова",
-		"Ана Тодоровска",
-		"Весна Димитриевска Ристовска",
-		"Владимир Здравески",
-		"Владислав Бидиков",
-		"Влатко Спасев",
-		"Војдан Ќорвезироски",
-		"Дарко Сасански",
-		"Димитар Китановски",
-		"Димитар Милески",
-		"Димитар Пешевски",
-		"Евгенија Крајчевска",
-		"Елена Атанасоска",
-		"Елена Ризов",
-		"Ема Пандилова",
-		"Живко Атанаскоски",
-		"Зорица Карапанчева",
-		"Иван Китановски",
-		"Кирил Ќироски",
-		"Марија Стојчева",
-		"Марија Танеска",
-		"Марко Петров",
-		"Мартин Динев",
-		"Мартина Тошевска",
-		"Мила Додевска",
-		"Милан Тодоровиќ",
-		"Милена Трајаноска",
-		"Моника Симјаноска",
-		"Ненад Анчев",
-		"Петар Секулоски",
-		"Сијче Печкова",
-		"Славе Темков",
-		"Стефан Андонов"
-	],
-	"technologies": [
-		".NET",
-		"Blender",
-		"C",
-		"C++",
-		"CSS",
-		"Django",
-		"Docker",
-		"Figma",
-		"Flutter",
-		"Git",
-		"HTML",
-		"Java",
-		"JavaScript",
-		"Jenkins",
-		"Kotlin",
-		"Kubernetes",
-		"Laravel",
-		"NoSQL",
-		"Python",
-		"R",
-		"React",
-		"SQL",
-		"Spring",
-		"Swift",
-		"Unity",
-		"Vue",
-		"any",
-		"jQuery"
-	],
-	"tags": [
-		"AI / ML",
-		"Cloud Engineering & DevOps",
-		"Computer Architecture",
-		"Computer Science",
-		"Cybersecurity",
-		"Data Science",
-		"Databases",
-		"Education",
-		"Embedded Systems",
-		"Game Development",
-		"Mathematics",
-		"Multimedia",
-		"Networking",
-		"Physics",
-		"Societal Skills",
-		"Software Engineering",
-		"Systems Infrastructure",
-		"UI/UX & Digital Media",
-		"Web Development"
-	],
-	"evaluation": ["Code", "Practical", "Project", "Theory"]
-}
Index: ckend/subjects/migrations/0001_initial.py
===================================================================
--- backend/subjects/migrations/0001_initial.py	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,49 +1,0 @@
-# Generated by Django 5.1.7 on 2025-04-28 20:27
-
-import django.contrib.postgres.fields
-import django.db.models.deletion
-from django.db import migrations, models
-
-
-class Migration(migrations.Migration):
-
-    initial = True
-
-    dependencies = [
-    ]
-
-    operations = [
-        migrations.CreateModel(
-            name='Subject',
-            fields=[
-                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
-                ('name', models.TextField()),
-                ('code', models.TextField()),
-                ('abstract', models.TextField()),
-            ],
-            options={
-                'db_table': 'subject',
-            },
-        ),
-        migrations.CreateModel(
-            name='Subject_Info',
-            fields=[
-                ('subject', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, primary_key=True, serialize=False, to='subjects.subject')),
-                ('level', models.IntegerField()),
-                ('short', models.TextField(blank=True, null=True)),
-                ('prerequisite', models.JSONField(blank=True, null=True)),
-                ('activated', models.BooleanField()),
-                ('participants', django.contrib.postgres.fields.ArrayField(base_field=models.IntegerField(blank=True), size=None)),
-                ('mandatory', models.BooleanField()),
-                ('mandatory_for', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(blank=True, max_length=16), size=None)),
-                ('semester', models.IntegerField()),
-                ('season', models.TextField()),
-                ('elective_for', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(blank=True, max_length=16), size=None)),
-                ('professors', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(blank=True, max_length=64), size=None)),
-                ('assistants', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(blank=True, max_length=64), size=None)),
-            ],
-            options={
-                'db_table': 'subject_info',
-            },
-        ),
-    ]
Index: ckend/subjects/migrations/0002_subject_info_evaluation_subject_info_is_easy_and_more.py
===================================================================
--- backend/subjects/migrations/0002_subject_info_evaluation_subject_info_is_easy_and_more.py	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,38 +1,0 @@
-# Generated by Django 5.1.7 on 2025-05-15 10:29
-
-import django.contrib.postgres.fields
-from django.db import migrations, models
-
-
-class Migration(migrations.Migration):
-
-    dependencies = [
-        ('subjects', '0001_initial'),
-    ]
-
-    operations = [
-        migrations.AddField(
-            model_name='subject_info',
-            name='evaluation',
-            field=django.contrib.postgres.fields.ArrayField(base_field=models.CharField(blank=True, max_length=64), default=[], size=None),
-            preserve_default=False,
-        ),
-        migrations.AddField(
-            model_name='subject_info',
-            name='is_easy',
-            field=models.BooleanField(default=False),
-            preserve_default=False,
-        ),
-        migrations.AddField(
-            model_name='subject_info',
-            name='tags',
-            field=django.contrib.postgres.fields.ArrayField(base_field=models.CharField(blank=True, max_length=64), default=[], size=None),
-            preserve_default=False,
-        ),
-        migrations.AddField(
-            model_name='subject_info',
-            name='technologies',
-            field=django.contrib.postgres.fields.ArrayField(base_field=models.CharField(blank=True, max_length=64), default=[], size=None),
-            preserve_default=False,
-        ),
-    ]
Index: ckend/subjects/migrations/0003_remove_subject_info_short.py
===================================================================
--- backend/subjects/migrations/0003_remove_subject_info_short.py	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,17 +1,0 @@
-# Generated by Django 5.1.7 on 2025-06-27 10:45
-
-from django.db import migrations
-
-
-class Migration(migrations.Migration):
-
-    dependencies = [
-        ('subjects', '0002_subject_info_evaluation_subject_info_is_easy_and_more'),
-    ]
-
-    operations = [
-        migrations.RemoveField(
-            model_name='subject_info',
-            name='short',
-        ),
-    ]
Index: ckend/subjects/migrations/0004_evaluationreview_evaluationmethod_review_otherreview_and_more.py
===================================================================
--- backend/subjects/migrations/0004_evaluationreview_evaluationmethod_review_otherreview_and_more.py	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,68 +1,0 @@
-# Generated by Django 5.1.7 on 2025-07-12 11:56
-
-import django.core.validators
-import django.db.models.deletion
-from django.db import migrations, models
-
-
-class Migration(migrations.Migration):
-
-    dependencies = [
-        ('auth_form', '0018_student_disliked_subjects_student_liked_subjects'),
-        ('subjects', '0003_remove_subject_info_short'),
-    ]
-
-    operations = [
-        migrations.CreateModel(
-            name='EvaluationReview',
-            fields=[
-                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
-            ],
-        ),
-        migrations.CreateModel(
-            name='EvaluationMethod',
-            fields=[
-                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
-                ('note', models.CharField(blank=True, max_length=64, null=True)),
-                ('evaluation_review', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='subjects.evaluationreview')),
-            ],
-        ),
-        migrations.CreateModel(
-            name='Review',
-            fields=[
-                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
-                ('is_confirmed', models.BooleanField(default=False, help_text='Has an admin confirmed this post is valid.')),
-                ('upvotes', models.IntegerField(default=0)),
-                ('downvotes', models.IntegerField(default=0)),
-                ('review_type', models.CharField(choices=[('evaluation', 'Evaluation'), ('other', 'Other')], max_length=16)),
-                ('student', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='auth_form.student')),
-                ('subject', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='subjects.subject')),
-            ],
-        ),
-        migrations.CreateModel(
-            name='OtherReview',
-            fields=[
-                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
-                ('content', models.TextField()),
-                ('category', models.CharField(choices=[('material', 'Material'), ('staff', 'Staff'), ('other', 'Other')], max_length=16)),
-                ('review', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to='subjects.review')),
-            ],
-        ),
-        migrations.AddField(
-            model_name='evaluationreview',
-            name='review',
-            field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to='subjects.review'),
-        ),
-        migrations.CreateModel(
-            name='EvaluationComponent',
-            fields=[
-                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
-                ('category', models.CharField(choices=[('project', 'Project'), ('theory', 'Theory'), ('practical', 'Practical'), ('homework', 'Homework'), ('labs', 'Labs'), ('presentation', 'Presentation'), ('attendance', 'Attendance')], max_length=16)),
-                ('percentage', models.IntegerField(validators=[django.core.validators.MinValueValidator(0), django.core.validators.MaxValueValidator(100)])),
-                ('evaluation_method', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='subjects.evaluationmethod')),
-            ],
-            options={
-                'constraints': [models.UniqueConstraint(fields=('evaluation_method', 'category'), name='unique_component_per_method')],
-            },
-        ),
-    ]
Index: ckend/subjects/migrations/0005_remove_review_downvotes_remove_review_upvotes_and_more.py
===================================================================
--- backend/subjects/migrations/0005_remove_review_downvotes_remove_review_upvotes_and_more.py	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,41 +1,0 @@
-# Generated by Django 5.1.7 on 2025-07-12 12:27
-
-import django.db.models.deletion
-from django.db import migrations, models
-
-
-class Migration(migrations.Migration):
-
-    dependencies = [
-        ('auth_form', '0018_student_disliked_subjects_student_liked_subjects'),
-        ('subjects', '0004_evaluationreview_evaluationmethod_review_otherreview_and_more'),
-    ]
-
-    operations = [
-        migrations.RemoveField(
-            model_name='review',
-            name='downvotes',
-        ),
-        migrations.RemoveField(
-            model_name='review',
-            name='upvotes',
-        ),
-        migrations.CreateModel(
-            name='ReviewVote',
-            fields=[
-                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
-                ('vote_type', models.CharField(choices=[('up', 'Upvote'), ('down', 'Downvote')], max_length=4)),
-                ('review', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='subjects.review')),
-                ('student', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='auth_form.student')),
-            ],
-        ),
-        migrations.AddField(
-            model_name='review',
-            name='votes',
-            field=models.ManyToManyField(related_name='review_votes', through='subjects.ReviewVote', to='auth_form.student'),
-        ),
-        migrations.AddConstraint(
-            model_name='reviewvote',
-            constraint=models.UniqueConstraint(fields=('review', 'student'), name='unique_review_per_student'),
-        ),
-    ]
Index: ckend/subjects/migrations/0006_evaluationreview_signature_condition_and_more.py
===================================================================
--- backend/subjects/migrations/0006_evaluationreview_signature_condition_and_more.py	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,34 +1,0 @@
-# Generated by Django 5.1.7 on 2025-07-12 19:00
-
-import django.db.models.deletion
-from django.db import migrations, models
-
-
-class Migration(migrations.Migration):
-
-    dependencies = [
-        ('subjects', '0005_remove_review_downvotes_remove_review_upvotes_and_more'),
-    ]
-
-    operations = [
-        migrations.AddField(
-            model_name='evaluationreview',
-            name='signature_condition',
-            field=models.CharField(blank=True, max_length=64),
-        ),
-        migrations.AlterField(
-            model_name='evaluationcomponent',
-            name='evaluation_method',
-            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='components', to='subjects.evaluationmethod'),
-        ),
-        migrations.AlterField(
-            model_name='evaluationmethod',
-            name='evaluation_review',
-            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='methods', to='subjects.evaluationreview'),
-        ),
-        migrations.AlterField(
-            model_name='evaluationmethod',
-            name='note',
-            field=models.CharField(blank=True, help_text='additional info about this particular evaluation method.', max_length=64, null=True),
-        ),
-    ]
Index: ckend/subjects/migrations/0007_review_date_posted_alter_evaluationreview_review_and_more.py
===================================================================
--- backend/subjects/migrations/0007_review_date_posted_alter_evaluationreview_review_and_more.py	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,31 +1,0 @@
-# Generated by Django 5.1.7 on 2025-07-15 14:00
-
-import django.db.models.deletion
-import django.utils.timezone
-from django.db import migrations, models
-
-
-class Migration(migrations.Migration):
-
-    dependencies = [
-        ('subjects', '0006_evaluationreview_signature_condition_and_more'),
-    ]
-
-    operations = [
-        migrations.AddField(
-            model_name='review',
-            name='date_posted',
-            field=models.DateField(auto_now_add=True, default=django.utils.timezone.now),
-            preserve_default=False,
-        ),
-        migrations.AlterField(
-            model_name='evaluationreview',
-            name='review',
-            field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='evaluation_review', to='subjects.review'),
-        ),
-        migrations.AlterField(
-            model_name='otherreview',
-            name='review',
-            field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='other_review', to='subjects.review'),
-        ),
-    ]
Index: ckend/subjects/models.py
===================================================================
--- backend/subjects/models.py	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,139 +1,0 @@
-from django.core.validators import MinValueValidator, MaxValueValidator
-from django.db import models
-from django.contrib.postgres.fields import ArrayField
-from auth_form.models import Student
-
-
-class Subject(models.Model):
-    name = models.TextField(null=False)
-    code = models.TextField(null=False)
-    abstract = models.TextField()
-
-    def __str__(self):
-        return f"{self.code} - {self.name}"
-    
-    class Meta:
-        db_table = "subject"
-
-class Subject_Info(models.Model):
-    subject = models.OneToOneField(
-        Subject,
-        on_delete=models.CASCADE,
-        primary_key=True
-    )
-
-    level = models.IntegerField(null=False)
-    prerequisite = models.JSONField(blank=True, null=True)
-    activated = models.BooleanField(null=False)
-    participants = ArrayField(models.IntegerField(blank=True))
-    mandatory = models.BooleanField(null=False)
-    mandatory_for = ArrayField(models.CharField(max_length=16, blank=True))
-    semester = models.IntegerField(null=False)
-    season = models.TextField(null=False)
-    elective_for = ArrayField(models.CharField(max_length=16, blank=True))
-    professors = ArrayField(models.CharField(max_length=64, blank=True))
-    assistants = ArrayField(models.CharField(max_length=64, blank=True))
-    tags = ArrayField(models.CharField(max_length=64, blank=True))
-    technologies = ArrayField(models.CharField(max_length=64, blank=True))
-    evaluation = ArrayField(models.CharField(max_length=64, blank=True))
-    is_easy = models.BooleanField(null=False)
-
-    def __str__(self):
-        return f"Subject info for {self.subject.name}"
-
-    class Meta:
-        db_table = 'subject_info'
-
-
-class Review(models.Model):
-    REVIEW_TYPE_CHOICES = [
-        ("evaluation", "Evaluation"),
-        ("other", "Other"),
-    ]
-    # each review is written by one student
-    # one student can write many reviews
-    student = models.ForeignKey(Student, on_delete=models.CASCADE)
-    # each review is about one subject
-    # one subject can have many reviews
-    subject = models.ForeignKey(Subject, on_delete=models.CASCADE)
-    is_confirmed = models.BooleanField(default=False, help_text="Has an admin confirmed this post is valid.")
-    votes = models.ManyToManyField(
-        Student, through='ReviewVote', related_name='review_votes'
-    )
-    review_type = models.CharField(max_length=16, choices=REVIEW_TYPE_CHOICES)
-    date_posted = models.DateField(auto_now_add=True)
-
-    def __str__(self):
-        return f"Review #{self.id} for {self.subject.name} from {self.student.index}."
-
-    @property
-    def votes_score(self):
-        upvotes = self.reviewvote_set.filter(vote_type='up').count()
-        downvotes = self.reviewvote_set.filter(vote_type='down').count()
-        return upvotes - downvotes
-
-
-class ReviewVote(models.Model):
-    VOTE_TYPES = [
-        ('up', 'Upvote'),
-        ('down', 'Downvote'),
-    ]
-    review = models.ForeignKey(Review, on_delete=models.CASCADE)
-    student = models.ForeignKey(Student, on_delete=models.CASCADE)
-    vote_type = models.CharField(max_length=4, choices=VOTE_TYPES)
-
-    class Meta:
-        constraints = [
-            models.UniqueConstraint(fields=['review', 'student'], name='unique_review_per_student')
-        ]
-
-class EvaluationReview(models.Model):
-    review = models.OneToOneField(Review, on_delete=models.CASCADE, related_name='evaluation_review')
-    signature_condition = models.CharField(max_length=64, blank=True)
-
-class EvaluationMethod(models.Model):
-    # one evaluation review could have more evaluation methods
-    # example through a project and through exams
-    # method A: project: 90%, labs: 10%
-    # method B: theory: 35%, practical: 35%, labs: 10%, project: 20%
-    # each of these (method A - project, method A - labs, method B - project etc. is a EvaluationComponent)
-    evaluation_review = models.ForeignKey(EvaluationReview, on_delete=models.CASCADE, related_name='methods')
-    note = models.CharField(max_length=64, null=True, blank=True, help_text="additional info about this particular evaluation method.")
-
-class EvaluationComponent(models.Model):
-    CATEGORY_TYPE_CHOICES = [
-        ("project", "Project"),
-        ("theory", "Theory"),
-        ("practical", "Practical"),
-        ("homework", "Homework"),
-        ("labs", "Labs"),
-        ("presentation", "Presentation"),
-        ("attendance", "Attendance"),
-        # todo: check if there are more
-    ]
-    evaluation_method = models.ForeignKey(EvaluationMethod, on_delete=models.CASCADE, related_name='components')
-    category = models.CharField(max_length=16, choices=CATEGORY_TYPE_CHOICES)
-    percentage = models.IntegerField(validators=[MinValueValidator(0), MaxValueValidator(100)])
-
-    def __str__(self):
-        subject = self.evaluation_method.evaluation_review.review.subject.name
-        return f"{self.percentage}% of the grade for {subject} is from {self.category}"
-
-    class Meta:
-        constraints = [
-            models.UniqueConstraint(fields=['evaluation_method', 'category'], name='unique_component_per_method')
-        ]
-
-class OtherReview(models.Model):
-    CATEGORY_TYPE_CHOICES = [
-        ("material", "Material"),
-        ("staff", "Staff"),
-        ("other", "Other"),
-    ]
-    review = models.OneToOneField(Review, on_delete=models.CASCADE, related_name='other_review')
-    content = models.TextField()
-    category = models.CharField(max_length=16, choices=CATEGORY_TYPE_CHOICES)
-
-    def __str__(self):
-        return f"Review for {self.category} about {self.review.subject.name}."
-
Index: ckend/subjects/serializers.py
===================================================================
--- backend/subjects/serializers.py	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,140 +1,0 @@
-from rest_framework import serializers
-from .models import (Subject, Subject_Info, EvaluationMethod, EvaluationComponent,
-                     EvaluationReview, OtherReview, Review, ReviewVote)
-
-class SubjectInfoSerializer(serializers.ModelSerializer):
-    class Meta:
-        model = Subject_Info
-        fields = [
-            'level',
-            'prerequisite',
-            'activated',
-            'participants',
-            'mandatory',
-            'mandatory_for',
-            'semester',
-            'season',
-            'elective_for',
-            'professors',
-            'assistants',
-            'tags',
-            'technologies',
-            'evaluation',
-            'is_easy'
-        ]
-
-class SubjectSerializer(serializers.ModelSerializer):
-    subject_info = SubjectInfoSerializer()
-    class Meta:
-        model = Subject
-        fields = [
-            'id', 'name', 'code', 'abstract', 'subject_info'
-        ]
-
-class ReviewMetaSerializer(serializers.ModelSerializer):
-    student = serializers.SerializerMethodField()
-    subject = serializers.SerializerMethodField()
-    user_has_voted = serializers.SerializerMethodField()
-
-    class Meta:
-        model = Review
-        fields = ['id', 'student', 'subject', 'is_confirmed', 'votes_score', 'user_has_voted', 'date_posted']
-
-
-    def get_user_has_voted(self, obj):
-        request = self.context.get("request")
-        if request and hasattr(request, 'user') and request.user.is_authenticated:
-            if hasattr(request.user, 'student'):
-                student = request.user.student
-                try:
-                    vote = ReviewVote.objects.get(review=obj, student=student)
-                    return vote.vote_type
-                except ReviewVote.DoesNotExist:
-                    return 'none'
-        return 'none'
-
-
-    def get_student(self, obj):
-        return obj.student.index
-
-    def get_subject(self, obj):
-        return {"name": obj.subject.name, "code": obj.subject.code}
-
-class EvaluationComponentSerializer(serializers.ModelSerializer):
-    class Meta:
-        model = EvaluationComponent
-        fields = ['category', 'percentage']
-
-
-class EvaluationMethodSerializer(serializers.ModelSerializer):
-    components = EvaluationComponentSerializer(many=True)
-
-    class Meta:
-        model = EvaluationMethod
-        fields = ['note', 'components']
-
-    def validate(self, data):
-        total = sum(comp['percentage'] for comp in data['components'])
-        if total != 100:
-            raise serializers.ValidationError("Sum of component percentages must equal 100.")
-        return data
-
-    def create(self, validated_data):
-        components_data = validated_data.pop('components')
-        method = EvaluationMethod.objects.create(**validated_data)
-
-        for comp_data in components_data:
-            EvaluationComponent.objects.create(evaluation_method=method, **comp_data)
-
-        return method
-
-
-class EvaluationReviewSerializer(serializers.ModelSerializer):
-    methods = EvaluationMethodSerializer(many=True)
-    review = serializers.SerializerMethodField()
-
-    class Meta:
-        model = EvaluationReview
-        fields = ['review', 'methods', 'signature_condition']
-
-    def validate(self, data):
-        methods = data.get('methods', [])
-        if len(methods) > 3:
-            raise serializers.ValidationError("A subject can't have more than 3 evaluation methods.")
-        return data
-
-    def get_review(self, obj):
-        if obj:
-            return ReviewMetaSerializer(obj.review, context=self.context).data
-        return None
-
-    def create(self, validated_data):
-        methods_data = validated_data.pop('methods')
-        review = self.context['review']
-        evaluation_review = EvaluationReview.objects.create(review=review, **validated_data)
-        for method_data in methods_data:
-            validated_method_data = self.fields['methods'].child.run_validation(method_data)
-            validated_method_data['evaluation_review'] = evaluation_review
-            self.fields['methods'].child.create(validated_method_data)
-
-        return evaluation_review
-
-class OtherReviewSerializer(serializers.ModelSerializer):
-    review = serializers.SerializerMethodField()
-
-    class Meta:
-        model = OtherReview
-        fields = ['review', 'category', 'content']
-
-    def validate(self, data):
-        content: str = data['content']
-        if len(content) > 700:
-            raise serializers.ValidationError("Content length can be bigger than 700 characters.")
-        return data
-
-    def get_review(self, obj):
-        return ReviewMetaSerializer(obj.review, context=self.context).data
-
-    def create(self, validated_data):
-        review = self.context['review']
-        return OtherReview.objects.create(review=review, **validated_data)
Index: ckend/subjects/urls.py
===================================================================
--- backend/subjects/urls.py	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,16 +1,0 @@
-from django.urls import path
-from .views import (ToggleSubjectPreferences, PreferencesView, all_subjects,
-                    RecommendationsView, SubjectReview, ReviewsForSubject, ToggleVote, ReviewListView,
-                    AdminSubjectReview)
-urlpatterns = [
-    path('all/', all_subjects, name='all_subjects'),
-    path('recommendations/', RecommendationsView.as_view(), name='get_recommendations'),
-    path('preferences/', PreferencesView.as_view(), name='student-preferences'),
-    path('toggle-subject-pref/', ToggleSubjectPreferences.as_view(), name='student-toggle-preferences'),
-    path('subject-review/', SubjectReview.as_view(), name='subject-review'),
-    path('admin-subject-review/<int:pk>/', AdminSubjectReview.as_view(), name='subject-review'),
-    path('subjects-reviews-list/', ReviewListView.as_view(), name='review-list'),
-    path('subject-review/toggle-vote/', ToggleVote.as_view(), name='toggle-vote'),
-    path('subject-review/<str:code>/', ReviewsForSubject.as_view(), name='subject-review'),
-
-]
Index: ckend/subjects/utils.py
===================================================================
--- backend/subjects/utils.py	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,358 +1,0 @@
-from subjects.models import Subject
-from pathlib import Path
-import json
-from django.db.models import Q
-import os
-from subjects.consts import BIAS_STUDENT_HAS_ONE, BIAS_SUBJECT_HAS_ONE, WEIGHTS, NUMBER_OF_SUGGESTIONS
-
-base_dir = Path(__file__).resolve().parent
-
-VOCAB_FILE_PATH = base_dir / 'management' / 'data' / 'vocabulary.json'
-TAG_GRAPH_PATH = base_dir / 'management' / 'data' / 'tag_graph.json'
-SUBJECTS_VECTOR_PATH = base_dir / 'management' / 'data' / 'subjects_vector.json'
-if not os.path.exists(VOCAB_FILE_PATH) or not os.path.exists(TAG_GRAPH_PATH) or not os.path.exists(SUBJECTS_VECTOR_PATH):
-    raise FileNotFoundError("required data files are missing. ensure 'vocabulary.json', 'tag_graph.json', and 'subjects_vector.json' are present in the 'management/data' directory.")
-
-with open(VOCAB_FILE_PATH, 'r', encoding='utf-8') as f:
-    VOCABULARY = json.load(f)
-
-with open(SUBJECTS_VECTOR_PATH, 'r', encoding='utf-8') as f:
-    SUBJECTS_VECTOR = json.load(f)
-
-with open(TAG_GRAPH_PATH, 'r', encoding='utf-8') as f:
-    TAG_GRAPH = json.load(f)
-
-def get_recommendations_cache_key(student, season, not_activated):
-    passed_subjects_hash = hash(tuple(sorted(student.passed_subjects.values_list('id', flat=True))))
-    cache_key = (f"student_{student.id}_season_{season}_not_activated_{not_activated}_effort_{student.study_effort}"
-                 f"_year_{student.current_year}_passed_{passed_subjects_hash}")
-    return cache_key
-
-def get_eligible_subjects(student, season = 2, not_activated = 0):
-    """
-    determines and returns a list of subjects that a student is eligible to enroll in.
-    args:
-        student: the student instance for whom eligible subjects are being determined.
-        season (int, optional): the season to filter subjects by.
-            - 0: summer
-            - 1: winter
-            - 2: all (default)
-        not_activated (int, optional): whether to exclude subjects that are not activated.
-            - 0: exclude not activated subjects (default)
-            - 1: include not activated subjects
-    returns:
-        list: a list of Subject instances that the student is eligible to enroll in.
-
-    eligibility criteria:
-        - excludes subjects the student has already passed.
-        - filters subjects by the specified season.
-        - applies additional filters based on the student's study effort:
-            1. only easy subjects from years up to and including the student's current year.
-            2. easy and non-easy subjects from years up to and including the student's current year.
-            3. easy and non-easy subjects from the student's current year only.
-            4. easy and non-easy subjects from the student's current year and above.
-            5. only non-easy subjects from the student's current year and above.
-        - excludes subjects from levels where the student has already fulfilled the credit limit (L1: 6 credits, L2: 36 credits).
-        - further filters subjects to ensure the student meets all prerequisites (credits and required subjects).
-        - only includes subjects that are elective for the student's study track.
-    """
-    passed_ids = set(student.passed_subjects.values_list('id', flat=True))
-    total_credits = student.total_credits
-    level_credits = student.level_credits
-    study_track = student.study_track
-    study_effort = student.study_effort
-    current_year = student.current_year
-    
-    all_subjects = (Subject.objects
-        .exclude(id__in=passed_ids)
-        .select_related('subject_info')
-        .filter(subject_info__elective_for__contains=[study_track])
-    )
-
-    if not_activated == 0:
-        all_subjects = all_subjects.filter(subject_info__activated=True)
-
-    if season == 0:
-        all_subjects = all_subjects.exclude(subject_info__season='W')
-    elif season == 1:
-        all_subjects = all_subjects.exclude(subject_info__season='S')
-
-    if study_effort < 3:
-        all_subjects = all_subjects.exclude(subject_info__semester__gt=current_year * 2)
-        if study_effort == 1:
-            all_subjects = all_subjects.filter(subject_info__is_easy=True)
-    elif study_effort == 3:
-        eligible_semesters = [current_year * 2, current_year * 2 - 1]
-        all_subjects = all_subjects.filter(
-            subject_info__semester__in=eligible_semesters
-        )
-    else:
-        all_subjects = all_subjects.filter(subject_info__semester__gte=(current_year * 2 - 1))
-        if study_effort == 5:
-            all_subjects = all_subjects.exclude(subject_info__is_easy=True)
-
-    if level_credits[0] >= 6:
-        all_subjects = all_subjects.exclude(subject_info__level=1)
-    if level_credits[1] >= 36:
-        all_subjects = all_subjects.exclude(subject_info__level=2)
-
-    valid_subjects = []
-    for subject in all_subjects:
-        subject_info_ = subject.subject_info
-        prereqs = subject_info_.prerequisite or {}
-        if prereqs.get('credits') and total_credits < prereqs['credits']:
-            continue
-        required_subjects = prereqs.get('subjects')
-        if required_subjects and not passed_ids.intersection(required_subjects): 
-            continue
-        valid_subjects.append(subject)
-
-    return valid_subjects
-
-def get_student_vector(student):
-    """
-    generates a vector representation of a student based on a predefined vocabulary.
-
-    reads form the vocabulary and constructs a dictionary representing the
-    student's attributes as binary vectors, indicating the presence (1)
-    or absence (0) of specific words for each attribute. it also normalizes
-    the student's study effort and includes the current year.
-
-    args:
-        student: an object representing a student
-    returns:
-        dict: a dictionary containing binary vectors for each vocabulary key, normalized study effort,
-        and current year.
-    """
-
-    student_vector = {}
-    for key in VOCABULARY:
-        student_values = getattr(student, key, [])
-
-        student_vector[key] = []
-        words = VOCABULARY[key]
-        for word in words:
-            student_vector[key].append(1 if word in student_values else 0)
-
-    student_vector['study_effort'] = student.study_effort / 5
-    student_vector['current_year'] = student.current_year
-
-    return student_vector
-
-
-def map_to_subjects_vector(subjects):
-    """
-    map a list of subject objects to their corresponding vector representations.
-
-    args:
-        subjects (list): a list of subject objects.
-    returns:
-        dict: a dictionary mapping subject names to their vector representations from SUBJECTS_VECTOR .
-    """
-    filtered_subject_vectors = {}
-    for subject in subjects:
-        vector = SUBJECTS_VECTOR.get(subject.name)
-        if vector:
-            filtered_subject_vectors[subject.name] = vector
-    
-    return filtered_subject_vectors
-
-
-def score_tags(student_vector, subject_vector):
-    """
-    calculates a similarity score between a student's tag vector and a subject's tag vector,
-    using a tag graph to account for relationships between tags.
-    the score is computed as follows:
-    - for each tag, if both student and subject have the tag (value 1), this is a full match, and the score is incremented.
-    - if both tags are zeroes, ignore them.
-    - if the tags differ but one of them is 1, this is a partial match. the tag graph is used to find neighboring tags and 
-        adjust the score based on the presence of related tags and their respective weights. 
-        biases are used to ensure that a partial match will never result in a full increment, i.e., it will never be as valuable as a full match.
-    - the score is normalized by the total number of tags where either the student or subject has the tag.
-
-    args:
-            student_vector (dict): a dictionary containing a 'tags' key with a list of binary values representing the student's tags.
-            subject_vector (dict): a dictionary containing a 'tags' key with a list of binary values representing the subject's tags.
-    returns:
-            float: the normalized similarity score between the student and subject tag vectors.
-    """
-    student_tags = student_vector['tags']
-    subject_tags = subject_vector['tags']
-    score = 0
-    tot_count = 0
-    for i in range(len(student_tags)):
-        if student_tags[i] == 1 or subject_tags[i] == 1: tot_count += 1
-        
-        if student_tags[i] == subject_tags[i]: 
-            if student_tags[i] == 1:
-                # full match
-                score += 1
-        else:
-            # partial match
-            neighbors = TAG_GRAPH[str(i)]
-            total_weight = sum(weight for _, weight in neighbors)
-            if student_tags[i] == 1:
-                for neighbor in neighbors: 
-                    if subject_tags[neighbor[0]] == 1: score += neighbor[1] / total_weight * BIAS_STUDENT_HAS_ONE
-            else:
-                for neighbor in neighbors:
-                    if student_tags[neighbor[0]] == 1: score += neighbor[1] / total_weight * BIAS_SUBJECT_HAS_ONE
-    
-    return score / tot_count if tot_count != 0 else 0
-
-def score_for_preferences(student_vector, eligible_subjects):
-    """
-    calculates and returns a dictionary of scores for each eligible subject based on a student's preferences.
-
-    args:
-        student_vector (dict): a dictionary representing the student's preferences and attributes. 
-        eligible_subjects (dict): a dictionary where each key is a subject name and each value is a dictionary 
-    returns:
-        dict: A dictionary where each key is a subject name and each value is a dictionary containing scores for each preference key
-    notes:
-        - the "tags" score is calculated separately and then normalized by the maximum tag score across all subjects.
-        - all other preference scores are calculated as the ratio of matching 1's between student and subject vectors.
-    """
-    subjects_tag_scores = {}
-    max_tag_score = 0
-    for subject in eligible_subjects:
-        subjects_tag_scores[subject] = {}
-        subject_vector = eligible_subjects[subject]
-        for key in student_vector:
-            if key in ["index", "study_effort", "current_year"]: continue
-            if key == "tags":
-                tag_score = score_tags(student_vector, subject_vector)
-                subjects_tag_scores[subject][key] = tag_score
-                max_tag_score = max(tag_score, max_tag_score)
-                continue
-
-            student_values = student_vector[key]
-            subject_values = subject_vector[key]
-            tot_count = 0
-            match_count = 0
-
-            for i in range(len(student_values)):
-                if subject_values[i] == 1:
-                    tot_count += 1
-                    if student_values[i] == 1:
-                        match_count += 1
-            
-            score = match_count / tot_count if tot_count != 0 else 0
-            subjects_tag_scores[subject][key] = score
-        
-        study_effort = student_vector["study_effort"]
-        
-        if (study_effort == 0.4 and subject_vector['isEasy']) or (study_effort == 0.8 and not subject_vector['isEasy']):
-            subjects_tag_scores[subject]['effort'] = 1
-        else:
-            subjects_tag_scores[subject]['effort'] = 0
-            
-        subjects_tag_scores[subject]['activated'] = subject_vector['activated']
-
-        subjects_tag_scores[subject]['participant_score'] = subject_vector['participants']
-    
-    if max_tag_score != 0:
-        for subject in eligible_subjects:
-            subjects_tag_scores[subject]['tags'] /= max_tag_score 
-
-    return subjects_tag_scores
-
-def get_explanation_message(criterion, score, student_vector):
-    """Generates a human-readable explanation for a single matching criterion."""
-
-    study_effort = student_vector.get('study_effort', 0)
-    # Thresholds to decide if a match is significant enough to be an "explanation"
-    thresholds = {
-        'tags': 0.7, 'evaluation': 0.5, 'technologies': 0.5,
-        'professors': 0.5, 'assistants': 0.5, 'participant_score': 0.5,
-        'effort': 0 # no threshold for effort, as it is binary
-    }
-
-    if score < thresholds.get(criterion, 1.0):
-        return None
-
-    if criterion == "effort":
-        if round(study_effort * 5) not in (2, 4):  # only show for effort==2 or 4
-            return None
-        return "Се совпаѓа со твојот вложен труд" if score == 1 else "Не се совпаѓа со твојот вложен труд"
-    
-    messages = {
-        'tags': f"Супер совпаѓање со твоите полиња на интерес ({score:.1%})",
-        'evaluation': f"Се совпаѓа со твоите посакувани методи на евалуација ({score:.1%})",
-        'technologies': f"Се совпаѓа со технологиите кои ги сакаш ({score:.1%})",
-        'professors': f"Го предаваат професори кои ги сакаш ({score:.1%})",
-        'assistants': f"Има асистенти кои ги сакаш ({score:.1%})",
-        'participant_score': f"Одбран од многу студенти",
-    }
-    return messages.get(criterion)
-
-# def get_detailed_tag_matches(student_vector, subject_vector):
-#     """Identifies the specific tags that matched between the student and subject."""
-
-#     student_tags_indices = {i for i, val in enumerate(student_vector['tags']) if val == 1}
-#     subject_tags_indices = {i for i, val in enumerate(subject_vector['tags']) if val == 1}
-    
-#     matching_indices = student_tags_indices.intersection(subject_tags_indices)
-    
-#     # Map indices back to tag names from the vocabulary
-#     all_tags = VOCABULARY.get('tags', [])
-#     matching_tags = [all_tags[i] for i in matching_indices if i < len(all_tags)]
-    
-#     return matching_tags
-
-
-def get_recommendations_with_details(subjects_tag_scores, student_vector):
-    """
-    Generates a sorted list of recommended subjects with detailed explanations.
-
-    Args:
-        subjects_tag_scores (dict): Scores for each subject across different criteria.
-
-    Returns:
-        list: A list of dictionaries, each containing detailed info for a recommended subject.
-    """
-    detailed_results = []
-
-    for subject_name, individual_scores in subjects_tag_scores.items():
-        total_score = 0
-        weighted_scores = {}
-        explanations = []
-
-        for criterion, score in individual_scores.items():
-            weight = WEIGHTS.get(criterion, 0)
-            weighted_score = weight * score
-            total_score += weighted_score
-            weighted_scores[criterion] = weighted_score
-            
-            message = get_explanation_message(criterion, score, student_vector)
-            if message:
-                explanations.append(message)
-
-            # Sort explanations by their match percentage, it extracts the percentage from the message (e.g. Something (72.8%)) and sorts them in descending order
-            explanations.sort(key=lambda msg: -(float(msg.split('(')[-1].replace('%)', '')) if '(' in msg and '%' in msg else float('-inf')))
-        # primary_reason_criterion = max(weighted_scores, key=weighted_scores.get)
-        # primary_reason_score = individual_scores[primary_reason_criterion]
-        # primary_reason = get_explanation_message(primary_reason_criterion, primary_reason_score)
-        # if not primary_reason:
-        #     primary_reason = f"Добро совпаѓање поради {primary_reason_criterion.replace('_', ' ')}"
-
-        # matching_tags = get_detailed_tag_matches(student_vector, eligible_subjects_dict[subject_name])
-
-        detailed_results.append({
-            'subject_name': subject_name,
-            'total_score': total_score,
-            # 'primary_reason': primary_reason,
-            'explanations': explanations,
-            'detailed_scores': individual_scores,
-            # 'matching_tags': matching_tags,
-            'match_percentage': min(total_score * 100, 100)
-        })
-
-
-    max_score = max([res['total_score'] for res in detailed_results]) or 1
-    for res in detailed_results:
-        res['match_percentage'] = round((res['total_score'] / max_score) * 100, 1)
-
-    detailed_results.sort(key=lambda x: x['total_score'], reverse=True)
-    return detailed_results[:NUMBER_OF_SUGGESTIONS]
-    
Index: ckend/subjects/views.py
===================================================================
--- backend/subjects/views.py	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,359 +1,0 @@
-import json
-from django.http import HttpResponse
-from django.core.cache import cache
-from django.shortcuts import get_object_or_404
-from rest_framework.decorators import api_view
-from rest_framework.response import Response
-from rest_framework import status
-from rest_framework.views import APIView
-from rest_framework.permissions import IsAuthenticated
-from django.db.models import Case, When, Count, F, Q
-from subjects.utils import get_eligible_subjects, get_recommendations_cache_key, get_recommendations_with_details, map_to_subjects_vector, score_for_preferences, get_student_vector
-from .serializers import SubjectSerializer, EvaluationReviewSerializer, OtherReviewSerializer
-from .models import Subject, Review, EvaluationReview, OtherReview, ReviewVote
-from rest_framework.pagination import LimitOffsetPagination
-from auth_form.permissions import IsStudent, IsAdmin
-import logging
-
-def index(request):
-    return HttpResponse("ok")
-
-@api_view(['GET'])
-def all_subjects(request):
-    subjects = Subject.objects.select_related('subject_info').filter(subject_info__isnull=False).order_by('id')
-    serializer = SubjectSerializer(subjects, many=True)
-    return Response(serializer.data)
-
-class RecommendationsView(APIView):
-    permission_classes = [IsAuthenticated, IsStudent]
-    def get(self, request):
-        season = request.query_params.get('season', 2)
-        not_activated = request.query_params.get('not_activated', 0)
-        try:
-            not_activated = int(not_activated)
-            season = int(season)
-        except ValueError:
-            return Response({"message": "invalid params"}, status=status.HTTP_400_BAD_REQUEST)
-
-        student = request.user.student
-        if not student:
-            return Response({"message": "Could not find student"}, status=status.HTTP_400_BAD_REQUEST)
-        cache_key = get_recommendations_cache_key(student, season, not_activated)
-        if cache_key:
-            cached_data = cache.get(cache_key)
-            if cached_data:
-                return Response(json.loads(cached_data), status=status.HTTP_200_OK)
-        try:
-            eligible_subjects = get_eligible_subjects(student, season=season, not_activated=not_activated)
-            if not eligible_subjects:
-                return Response({"data": []}, status=status.HTTP_200_OK)
-            
-            eligible_subjects_dict = map_to_subjects_vector(eligible_subjects)
-            student_vector = get_student_vector(student)
-
-            subjects_scores = score_for_preferences(student_vector, eligible_subjects_dict)
-            
-            recommendations_with_details = get_recommendations_with_details(
-                subjects_scores, student_vector
-            )
-
-            if not recommendations_with_details:
-                return Response({"data": []}, status=status.HTTP_200_OK)
-            final_subject_names = [rec['subject_name'] for rec in recommendations_with_details]
-            details_map = {rec['subject_name']: rec for rec in recommendations_with_details}
-
-            order = Case(*[When(name=name, then=pos) for pos, name in enumerate(final_subject_names)])
-            recommended_subject_objects = Subject.objects.filter(name__in=final_subject_names).order_by(order)
-
-            serializer = SubjectSerializer(recommended_subject_objects, many=True)
-            
-            final_response_data = []
-            for subject_data in serializer.data:
-                details = details_map.get(subject_data['name'])
-                if details:
-                    subject_data['recommendation_details'] = {
-                        'match_percentage': details['match_percentage'],
-                        # 'primary_reason': details['primary_reason'],
-                        'explanations': details['explanations'],
-                        # 'matching_tags': details['matching_tags'],
-                        # 'detailed_scores': details['detailed_scores']
-                    }
-                final_response_data.append(subject_data)
-
-            response_payload = {"data": final_response_data}
-            if cache_key:
-                cache.set(cache_key, json.dumps(response_payload), timeout=60 * 60 * 24 * 14)
-            return Response(response_payload, status=status.HTTP_200_OK)
-
-        except Exception as e:
-            logging.error(f"Recommendation error for student {student.id}: {e}", exc_info=True)
-            return Response({"message": f"An error occurred: {str(e)}"}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
-
-class PreferencesView(APIView):
-    permission_classes = [IsAuthenticated, IsStudent]
-
-    def get(self, request, *args, **kwargs):
-        try:
-            student = request.user.student
-            favorite_ids = list(student.favorite_subjects.all().values_list('id', flat=True))
-            liked_ids = list(student.liked_subjects.all().values_list('id', flat=True))
-            disliked_ids = list(student.disliked_subjects.all().values_list('id', flat=True))
-            return Response({'favorite_ids': favorite_ids, 'liked_ids': liked_ids, 'disliked_ids': disliked_ids}, status=status.HTTP_200_OK)
-        except Exception as e:
-            return Response({'error': str(e)}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
-        
-class ToggleSubjectPreferences(APIView):
-    """
-    Toggles the favorite status of a subject for the authenticated user.
-    Expects a POST request with {'subject_id': <id>}.
-    """
-    permission_classes = [IsAuthenticated, IsStudent]
-    def post(self, request, *args, **kwargs):
-        subject_id = request.data.get('subject_id')
-        action_type = request.data.get('action_type') 
-        if not subject_id:
-            return Response({"message": "Subject ID is required"}, status=status.HTTP_400_BAD_REQUEST)
-
-        try:
-            student = request.user.student
-            subject = Subject.objects.get(id=subject_id)
-
-            if action_type == 'favorite':
-                if subject in student.favorite_subjects.all():
-                    student.favorite_subjects.remove(subject)
-                    action = 'removed'
-                else:
-                    student.favorite_subjects.add(subject)
-                    action = 'added'
-            elif action_type == 'liked':
-                if subject in student.liked_subjects.all():
-                    student.liked_subjects.remove(subject)
-                    action = 'removed'
-                else:
-                    student.liked_subjects.add(subject)
-                    action = 'added'
-            elif action_type == 'disliked':
-                if subject in student.disliked_subjects.all():
-                    student.disliked_subjects.remove(subject)
-                    action = 'removed'
-                else:
-                    student.disliked_subjects.add(subject)
-                    action = 'added'
-            else:
-                return Response({"message": "Invalid action type. Use 'favorite', 'liked', or 'disliked'."},
-                                status=status.HTTP_400_BAD_REQUEST)
-                
-            return Response({
-                'status': 'success',
-                'action': action,
-                'subject_id': subject.id
-            }, status=status.HTTP_200_OK)
-
-        except Subject.DoesNotExist:
-            return Response({'error': 'Subject not found.'}, status=status.HTTP_404_NOT_FOUND)
-        except AttributeError:
-            return Response({'error': 'Student profile not found for this user.'}, status=status.HTTP_404_NOT_FOUND)
-        except Exception as e:
-            return Response({'error': f'An unexpected error occurred: {str(e)}'}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
-
-class SubjectReview(APIView):
-    permission_classes = [IsAuthenticated, IsStudent]
-    def post(self, request):
-        student = request.user.student
-        subject_id = request.data.get('subject_id')
-        review_type = request.data.get('type')
-
-        if not subject_id or review_type not in ['evaluation', 'other']:
-            return Response({'error': 'Missing or invalid data.'}, status=status.HTTP_400_BAD_REQUEST)
-        try:
-            subject_id = int(subject_id)
-        except (TypeError, ValueError):
-            return Response({'error': 'Invalid subject ID.'}, status=status.HTTP_400_BAD_REQUEST)
-
-        try:
-            subject = Subject.objects.get(pk=subject_id)
-        except Subject.DoesNotExist:
-            return Response({'error': 'Subject not found.'}, status=status.HTTP_404_NOT_FOUND)
-
-        existing = Review.objects.filter(
-            student=student,
-            subject_id=subject_id,
-            review_type=review_type
-        ).exists()
-
-        if existing:
-            return Response(
-                {"error": "You have already submitted this type of review for this subject."},
-                status=status.HTTP_400_BAD_REQUEST
-            )
-
-        # if review_type == 'evaluation' and \
-        #     EvaluationReview.objects.filter(review__subject_id=subject_id).exists():
-        #     return Response(
-        #         {"error": "An evaluation review for this subject already exists."},
-        #         status=status.HTTP_400_BAD_REQUEST
-        #     )
-
-        review = Review.objects.create(
-            student=student,
-            subject=subject,
-            review_type=review_type
-        )
-
-        if review_type == "evaluation":
-            serializer = EvaluationReviewSerializer(data=request.data, context={'review': review})
-        else:
-            serializer = OtherReviewSerializer(data=request.data, context={'review': review})
-
-        if serializer.is_valid():
-            serializer.save()
-            return Response({
-                    "message": f"{review_type.capitalize()} review created.",
-                    "review_id": review.id,
-                    },
-                status=status.HTTP_201_CREATED)
-        else:
-            review.delete()
-            return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
-
-class AdminSubjectReview(APIView):
-    def get_permissions(self):
-        if self.request.method=='DELETE':
-            return [IsAuthenticated()]
-        elif self.request.method == 'PATCH':
-            return [IsAuthenticated(), IsAdmin()]
-        return []
-    def delete(self, request, pk):
-        review = get_object_or_404(Review, pk=pk)
-        review.delete()
-        return Response({"message": "Review deleted"}, status=status.HTTP_200_OK)
-
-    def patch(self, request, pk):
-        review = get_object_or_404(Review, pk=pk)
-        is_confirmed = request.data.get('is_confirmed')
-        if is_confirmed is None:
-            return Response({"message": "Missing is_confirmed param."}, status=status.HTTP_400_BAD_REQUEST)
-        review.is_confirmed = is_confirmed
-        review.save()
-        return Response({"message": "Review confirmed"}, status=status.HTTP_200_OK)
-    
-class ReviewsForSubject(APIView):
-    def get(self, request, code):
-        subject = Subject.objects.filter(code=code)
-        if not subject.exists():
-            return Response({'error': 'Subject not found.'}, status=status.HTTP_404_NOT_FOUND)
-
-        reviews = Review.objects.filter(subject__code=code)
-
-        evaluation_review = EvaluationReview.objects.filter(review__in=reviews).first()
-        other_reviews = OtherReview.objects.filter(review__in=reviews)
-
-        context = {'request': request}
-        evaluation_serializer = EvaluationReviewSerializer(evaluation_review, context=context)
-        other_serializer = OtherReviewSerializer(other_reviews, many=True, context=context)
-
-        return Response({
-            "evaluation": evaluation_serializer.data,
-            "other": other_serializer.data
-        }, status=status.HTTP_200_OK)
-
-class ToggleVote(APIView):
-    permission_classes = [IsAuthenticated]
-
-    def post(self, request):
-        review_id = request.data.get('review_id')
-        vote_type = request.data.get('vote_type')
-        if vote_type not in ['up', 'down']:
-            return Response({"error": "Invalid vote type."}, status=status.HTTP_400_BAD_REQUEST)
-        if not review_id:
-            return Response({"error": "Review ID is required."}, status=status.HTTP_400_BAD_REQUEST)
-
-        student = request.user.student
-
-        try:
-            review = Review.objects.get(pk=review_id)
-        except Review.DoesNotExist:
-            return Response({"error": "Review not found."}, status=status.HTTP_404_NOT_FOUND)
-
-        try:
-            vote = ReviewVote.objects.get(review=review, student=student)
-            if vote.vote_type == vote_type:
-                vote.delete()
-                return Response({"message": "Vote deleted.", "vote_score": review.votes_score}, status=status.HTTP_200_OK)
-            vote.vote_type = vote_type
-            vote.save()
-            return Response({"message": "Vote updated.", "vote_score": review.votes_score}, status=status.HTTP_200_OK)
-        except ReviewVote.DoesNotExist:
-            ReviewVote.objects.create(review=review, student=student, vote_type=vote_type)
-            return Response({"message": "Vote recorded.", "vote_score": review.votes_score}, status=status.HTTP_201_CREATED)
-
-class ReviewListView(APIView):
-    permission_classes = [IsAuthenticated]
-
-    def get(self, request):
-        review_query_set = Review.objects.all()
-
-        review_type = request.query_params.get('type')
-        if review_type:
-            if review_type not in ["evaluation", "other"]:
-                return Response({"message": "Invalid type."}, status=status.HTTP_400_BAD_REQUEST)
-            review_query_set = review_query_set.filter(review_type=review_type)
-
-        is_confirmed = request.query_params.get('is_confirmed')
-        if is_confirmed:
-            if is_confirmed not in ["true", "false"]:
-                    return Response({"message": "Invalid is_confirmed param."}, status=status.HTTP_400_BAD_REQUEST)
-            is_confirmed = True if is_confirmed == "true" else False
-            review_query_set = review_query_set.filter(is_confirmed=is_confirmed)
-
-        subject_code = request.query_params.get("subject_code")
-        if subject_code:
-            review_query_set = review_query_set.filter(subject__code=subject_code)
-
-        my_reviews = request.query_params.get('my_reviews')
-        if my_reviews and my_reviews.lower() == 'true':
-            if hasattr(request.user, 'student'):
-                review_query_set = review_query_set.filter(student=request.user.student)
-            else:
-                review_query_set = review_query_set.none()
-
-        sort_by = request.query_params.get('sort_by', 'date')  
-        sort_order = request.query_params.get('sort_order', 'desc')
-        
-        if sort_by not in ['date', 'votes']:
-            return Response({"message": "Invalid sort_by param."}, status=status.HTTP_400_BAD_REQUEST)
-        
-        if sort_order not in ['asc', 'desc']:
-            return Response({"message": "Invalid sort_order param."}, status=status.HTTP_400_BAD_REQUEST)
-
-        if sort_by == 'votes':
-            review_query_set = review_query_set.annotate(
-                vote_score=Count('votes', filter=Q(reviewvote__vote_type='up')) -
-                           Count('votes', filter=Q(reviewvote__vote_type='down'))
-            )
-
-            if sort_order == 'desc':
-                review_query_set = review_query_set.order_by('-vote_score', '-id')
-            else:
-                review_query_set = review_query_set.order_by('vote_score', 'id')
-        else:  
-            if sort_order == 'desc':
-                review_query_set = review_query_set.order_by('-id')
-            else:
-                review_query_set = review_query_set.order_by('id')
-
-        review_query_set = review_query_set.select_related("evaluation_review", "other_review")
-
-        paginator = LimitOffsetPagination()
-        paginated_query_set = paginator.paginate_queryset(review_query_set, request)
-
-        data = []
-        for review in paginated_query_set:
-            if review.review_type == 'evaluation' and hasattr(review, "evaluation_review"):
-                    serializer = EvaluationReviewSerializer(review.evaluation_review, context={'request': request})
-                    data.append(serializer.data)
-            elif review.review_type == 'other' and hasattr(review, "other_review"):
-                serializer = OtherReviewSerializer(review.other_review, context={'request': request})
-                data.append(serializer.data)
-
-        return paginator.get_paginated_response(data)
Index: ckend/wait-for-db.sh
===================================================================
--- backend/wait-for-db.sh	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,16 +1,0 @@
-#!/bin/bash
-set -e
-
-host="$1"
-port="$2"
-shift 2
-cmd="$@"
-
-# Wait until PostgreSQL is ready
-until PGPASSWORD="$DB_PASS" psql -h "$host" -p "$port" -U "$DB_USER" -d "$DB_NAME" -c '\q'; do
-  >&2 echo "Postgres is unavailable - sleeping"
-  sleep 1
-done
-
->&2 echo "Postgres is up - executing command"
-exec $cmd
Index: docker-compose.yml
===================================================================
--- docker-compose.yml	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ docker-compose.yml	(revision 516baa4eda127c8c3a0f761c69f90c8c5ff421e3)
@@ -1,2 +1,4 @@
+version: "3.8"
+
 services:
   backend:
@@ -8,12 +10,7 @@
     ports:
       - "8000:8000"
-    env_file:
-      - ./backend/.env # Load environment variables from the .env file
     environment:
       - DEBUG=True
-      - DB_PORT=5432
-    command: ./wait-for-db.sh db 5432 python manage.py runserver 0.0.0.0:8000
-    depends_on:
-      - db
+    command: python manage.py runserver 0.0.0.0:8000
     networks:
       - app-network
@@ -30,20 +27,6 @@
     environment:
       - NODE_ENV=development
-      - CHOKIDAR_USEPOLLING="true"
-      - VITE_GOOGLE_CLIENT_ID=${GOOGLE_CLIENT_ID}
-      - VITE_USE_OAUTH=${VITE_USE_OAUTH}
     depends_on:
       - backend
-    networks:
-      - app-network
-
-  db:
-    image: postgres:13
-    environment:
-      - POSTGRES_DB=${DB_NAME}
-      - POSTGRES_USER=${DB_USER}
-      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
-    volumes:
-      - postgres-data:/var/lib/postgresql/data
     networks:
       - app-network
@@ -52,5 +35,2 @@
   app-network:
     driver: bridge
-
-volumes:
-  postgres-data:
Index: frontend/Dockerfile
===================================================================
--- frontend/Dockerfile	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ frontend/Dockerfile	(revision 516baa4eda127c8c3a0f761c69f90c8c5ff421e3)
@@ -1,4 +1,4 @@
 # Use an official Node.js runtime as the base image
-FROM node:22
+FROM node:18
 
 # Set working directory
@@ -14,7 +14,4 @@
 COPY . .
 
-# build tailwind css
-RUN npm run build:css
-
 # Expose port 3000 for React
 EXPOSE 3000
Index: frontend/README.md
===================================================================
--- frontend/README.md	(revision 516baa4eda127c8c3a0f761c69f90c8c5ff421e3)
+++ frontend/README.md	(revision 516baa4eda127c8c3a0f761c69f90c8c5ff421e3)
@@ -0,0 +1,54 @@
+# React + TypeScript + Vite
+
+This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.
+
+Currently, two official plugins are available:
+
+- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh
+- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh
+
+## Expanding the ESLint configuration
+
+If you are developing a production application, we recommend updating the configuration to enable type-aware lint rules:
+
+```js
+export default tseslint.config({
+  extends: [
+    // Remove ...tseslint.configs.recommended and replace with this
+    ...tseslint.configs.recommendedTypeChecked,
+    // Alternatively, use this for stricter rules
+    ...tseslint.configs.strictTypeChecked,
+    // Optionally, add this for stylistic rules
+    ...tseslint.configs.stylisticTypeChecked,
+  ],
+  languageOptions: {
+    // other options...
+    parserOptions: {
+      project: ['./tsconfig.node.json', './tsconfig.app.json'],
+      tsconfigRootDir: import.meta.dirname,
+    },
+  },
+})
+```
+
+You can also install [eslint-plugin-react-x](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-x) and [eslint-plugin-react-dom](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-dom) for React-specific lint rules:
+
+```js
+// eslint.config.js
+import reactX from 'eslint-plugin-react-x'
+import reactDom from 'eslint-plugin-react-dom'
+
+export default tseslint.config({
+  plugins: {
+    // Add the react-x and react-dom plugins
+    'react-x': reactX,
+    'react-dom': reactDom,
+  },
+  rules: {
+    // other rules...
+    // Enable its recommended typescript rules
+    ...reactX.configs['recommended-typescript'].rules,
+    ...reactDom.configs.recommended.rules,
+  },
+})
+```
Index: frontend/index.html
===================================================================
--- frontend/index.html	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ frontend/index.html	(revision 516baa4eda127c8c3a0f761c69f90c8c5ff421e3)
@@ -1,13 +1,13 @@
-<!DOCTYPE html>
+<!doctype html>
 <html lang="en">
-	<head>
-		<meta charset="UTF-8" />
-		<link rel="icon" type="image/x-icon" href="src/assets/favicon-16x16.png" />
-		<meta name="viewport" content="width=device-width, initial-scale=1.0" />
-		<title>IzberiIzboren</title>
-	</head>
-	<body>
-		<div id="root"></div>
-		<script type="module" src="/src/main.tsx"></script>
-	</body>
+  <head>
+    <meta charset="UTF-8" />
+    <link rel="icon" type="image/svg+xml" href="/vite.svg" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <title>Vite + React + TS</title>
+  </head>
+  <body>
+    <div id="root"></div>
+    <script type="module" src="/src/main.tsx"></script>
+  </body>
 </html>
Index: frontend/package-lock.json
===================================================================
--- frontend/package-lock.json	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ frontend/package-lock.json	(revision 516baa4eda127c8c3a0f761c69f90c8c5ff421e3)
@@ -1,4727 +1,3320 @@
 {
-	"name": "frontend",
-	"version": "0.0.0",
-	"lockfileVersion": 3,
-	"requires": true,
-	"packages": {
-		"": {
-			"name": "frontend",
-			"version": "0.0.0",
-			"dependencies": {
-				"@react-oauth/google": "^0.12.2",
-				"axios": "^1.9.0",
-				"jwt-decode": "^4.0.0",
-				"lucide-react": "^0.513.0",
-				"react": "^19.0.0",
-				"react-dom": "^19.0.0",
-				"react-router-dom": "^7.6.0",
-				"react-toastify": "^11.0.5"
-			},
-			"devDependencies": {
-				"@eslint/js": "^9.22.0",
-				"@types/react": "^19.0.10",
-				"@types/react-dom": "^19.0.4",
-				"@vitejs/plugin-react": "^4.3.4",
-				"autoprefixer": "^10.4.21",
-				"eslint": "^9.22.0",
-				"eslint-plugin-react-hooks": "^5.2.0",
-				"eslint-plugin-react-refresh": "^0.4.19",
-				"globals": "^16.0.0",
-				"postcss": "^8.5.3",
-				"tailwindcss": "^3.4.17",
-				"typescript": "~5.7.2",
-				"typescript-eslint": "^8.26.1",
-				"vite": "^6.3.5"
-			}
-		},
-		"node_modules/@alloc/quick-lru": {
-			"version": "5.2.0",
-			"resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz",
-			"integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==",
-			"dev": true,
-			"license": "MIT",
-			"engines": {
-				"node": ">=10"
-			},
-			"funding": {
-				"url": "https://github.com/sponsors/sindresorhus"
-			}
-		},
-		"node_modules/@ampproject/remapping": {
-			"version": "2.3.0",
-			"resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz",
-			"integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==",
-			"dev": true,
-			"license": "Apache-2.0",
-			"dependencies": {
-				"@jridgewell/gen-mapping": "^0.3.5",
-				"@jridgewell/trace-mapping": "^0.3.24"
-			},
-			"engines": {
-				"node": ">=6.0.0"
-			}
-		},
-		"node_modules/@babel/code-frame": {
-			"version": "7.26.2",
-			"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz",
-			"integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"@babel/helper-validator-identifier": "^7.25.9",
-				"js-tokens": "^4.0.0",
-				"picocolors": "^1.0.0"
-			},
-			"engines": {
-				"node": ">=6.9.0"
-			}
-		},
-		"node_modules/@babel/compat-data": {
-			"version": "7.26.8",
-			"resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.8.tgz",
-			"integrity": "sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==",
-			"dev": true,
-			"license": "MIT",
-			"engines": {
-				"node": ">=6.9.0"
-			}
-		},
-		"node_modules/@babel/core": {
-			"version": "7.26.10",
-			"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.10.tgz",
-			"integrity": "sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"@ampproject/remapping": "^2.2.0",
-				"@babel/code-frame": "^7.26.2",
-				"@babel/generator": "^7.26.10",
-				"@babel/helper-compilation-targets": "^7.26.5",
-				"@babel/helper-module-transforms": "^7.26.0",
-				"@babel/helpers": "^7.26.10",
-				"@babel/parser": "^7.26.10",
-				"@babel/template": "^7.26.9",
-				"@babel/traverse": "^7.26.10",
-				"@babel/types": "^7.26.10",
-				"convert-source-map": "^2.0.0",
-				"debug": "^4.1.0",
-				"gensync": "^1.0.0-beta.2",
-				"json5": "^2.2.3",
-				"semver": "^6.3.1"
-			},
-			"engines": {
-				"node": ">=6.9.0"
-			},
-			"funding": {
-				"type": "opencollective",
-				"url": "https://opencollective.com/babel"
-			}
-		},
-		"node_modules/@babel/generator": {
-			"version": "7.27.0",
-			"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.0.tgz",
-			"integrity": "sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"@babel/parser": "^7.27.0",
-				"@babel/types": "^7.27.0",
-				"@jridgewell/gen-mapping": "^0.3.5",
-				"@jridgewell/trace-mapping": "^0.3.25",
-				"jsesc": "^3.0.2"
-			},
-			"engines": {
-				"node": ">=6.9.0"
-			}
-		},
-		"node_modules/@babel/helper-compilation-targets": {
-			"version": "7.27.0",
-			"resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.0.tgz",
-			"integrity": "sha512-LVk7fbXml0H2xH34dFzKQ7TDZ2G4/rVTOrq9V+icbbadjbVxxeFeDsNHv2SrZeWoA+6ZiTyWYWtScEIW07EAcA==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"@babel/compat-data": "^7.26.8",
-				"@babel/helper-validator-option": "^7.25.9",
-				"browserslist": "^4.24.0",
-				"lru-cache": "^5.1.1",
-				"semver": "^6.3.1"
-			},
-			"engines": {
-				"node": ">=6.9.0"
-			}
-		},
-		"node_modules/@babel/helper-module-imports": {
-			"version": "7.25.9",
-			"resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz",
-			"integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"@babel/traverse": "^7.25.9",
-				"@babel/types": "^7.25.9"
-			},
-			"engines": {
-				"node": ">=6.9.0"
-			}
-		},
-		"node_modules/@babel/helper-module-transforms": {
-			"version": "7.26.0",
-			"resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz",
-			"integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"@babel/helper-module-imports": "^7.25.9",
-				"@babel/helper-validator-identifier": "^7.25.9",
-				"@babel/traverse": "^7.25.9"
-			},
-			"engines": {
-				"node": ">=6.9.0"
-			},
-			"peerDependencies": {
-				"@babel/core": "^7.0.0"
-			}
-		},
-		"node_modules/@babel/helper-plugin-utils": {
-			"version": "7.26.5",
-			"resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz",
-			"integrity": "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==",
-			"dev": true,
-			"license": "MIT",
-			"engines": {
-				"node": ">=6.9.0"
-			}
-		},
-		"node_modules/@babel/helper-string-parser": {
-			"version": "7.25.9",
-			"resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz",
-			"integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==",
-			"dev": true,
-			"license": "MIT",
-			"engines": {
-				"node": ">=6.9.0"
-			}
-		},
-		"node_modules/@babel/helper-validator-identifier": {
-			"version": "7.25.9",
-			"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz",
-			"integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==",
-			"dev": true,
-			"license": "MIT",
-			"engines": {
-				"node": ">=6.9.0"
-			}
-		},
-		"node_modules/@babel/helper-validator-option": {
-			"version": "7.25.9",
-			"resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz",
-			"integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==",
-			"dev": true,
-			"license": "MIT",
-			"engines": {
-				"node": ">=6.9.0"
-			}
-		},
-		"node_modules/@babel/helpers": {
-			"version": "7.27.0",
-			"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.0.tgz",
-			"integrity": "sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"@babel/template": "^7.27.0",
-				"@babel/types": "^7.27.0"
-			},
-			"engines": {
-				"node": ">=6.9.0"
-			}
-		},
-		"node_modules/@babel/parser": {
-			"version": "7.27.0",
-			"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.0.tgz",
-			"integrity": "sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"@babel/types": "^7.27.0"
-			},
-			"bin": {
-				"parser": "bin/babel-parser.js"
-			},
-			"engines": {
-				"node": ">=6.0.0"
-			}
-		},
-		"node_modules/@babel/plugin-transform-react-jsx-self": {
-			"version": "7.25.9",
-			"resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.25.9.tgz",
-			"integrity": "sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"@babel/helper-plugin-utils": "^7.25.9"
-			},
-			"engines": {
-				"node": ">=6.9.0"
-			},
-			"peerDependencies": {
-				"@babel/core": "^7.0.0-0"
-			}
-		},
-		"node_modules/@babel/plugin-transform-react-jsx-source": {
-			"version": "7.25.9",
-			"resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.25.9.tgz",
-			"integrity": "sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"@babel/helper-plugin-utils": "^7.25.9"
-			},
-			"engines": {
-				"node": ">=6.9.0"
-			},
-			"peerDependencies": {
-				"@babel/core": "^7.0.0-0"
-			}
-		},
-		"node_modules/@babel/template": {
-			"version": "7.27.0",
-			"resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.0.tgz",
-			"integrity": "sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"@babel/code-frame": "^7.26.2",
-				"@babel/parser": "^7.27.0",
-				"@babel/types": "^7.27.0"
-			},
-			"engines": {
-				"node": ">=6.9.0"
-			}
-		},
-		"node_modules/@babel/traverse": {
-			"version": "7.27.0",
-			"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.0.tgz",
-			"integrity": "sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"@babel/code-frame": "^7.26.2",
-				"@babel/generator": "^7.27.0",
-				"@babel/parser": "^7.27.0",
-				"@babel/template": "^7.27.0",
-				"@babel/types": "^7.27.0",
-				"debug": "^4.3.1",
-				"globals": "^11.1.0"
-			},
-			"engines": {
-				"node": ">=6.9.0"
-			}
-		},
-		"node_modules/@babel/traverse/node_modules/globals": {
-			"version": "11.12.0",
-			"resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
-			"integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
-			"dev": true,
-			"license": "MIT",
-			"engines": {
-				"node": ">=4"
-			}
-		},
-		"node_modules/@babel/types": {
-			"version": "7.27.0",
-			"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.0.tgz",
-			"integrity": "sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"@babel/helper-string-parser": "^7.25.9",
-				"@babel/helper-validator-identifier": "^7.25.9"
-			},
-			"engines": {
-				"node": ">=6.9.0"
-			}
-		},
-		"node_modules/@esbuild/aix-ppc64": {
-			"version": "0.25.2",
-			"resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.2.tgz",
-			"integrity": "sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag==",
-			"cpu": [
-				"ppc64"
-			],
-			"dev": true,
-			"license": "MIT",
-			"optional": true,
-			"os": [
-				"aix"
-			],
-			"engines": {
-				"node": ">=18"
-			}
-		},
-		"node_modules/@esbuild/android-arm": {
-			"version": "0.25.2",
-			"resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.2.tgz",
-			"integrity": "sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA==",
-			"cpu": [
-				"arm"
-			],
-			"dev": true,
-			"license": "MIT",
-			"optional": true,
-			"os": [
-				"android"
-			],
-			"engines": {
-				"node": ">=18"
-			}
-		},
-		"node_modules/@esbuild/android-arm64": {
-			"version": "0.25.2",
-			"resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.2.tgz",
-			"integrity": "sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w==",
-			"cpu": [
-				"arm64"
-			],
-			"dev": true,
-			"license": "MIT",
-			"optional": true,
-			"os": [
-				"android"
-			],
-			"engines": {
-				"node": ">=18"
-			}
-		},
-		"node_modules/@esbuild/android-x64": {
-			"version": "0.25.2",
-			"resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.2.tgz",
-			"integrity": "sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg==",
-			"cpu": [
-				"x64"
-			],
-			"dev": true,
-			"license": "MIT",
-			"optional": true,
-			"os": [
-				"android"
-			],
-			"engines": {
-				"node": ">=18"
-			}
-		},
-		"node_modules/@esbuild/darwin-arm64": {
-			"version": "0.25.2",
-			"resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.2.tgz",
-			"integrity": "sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA==",
-			"cpu": [
-				"arm64"
-			],
-			"dev": true,
-			"license": "MIT",
-			"optional": true,
-			"os": [
-				"darwin"
-			],
-			"engines": {
-				"node": ">=18"
-			}
-		},
-		"node_modules/@esbuild/darwin-x64": {
-			"version": "0.25.2",
-			"resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.2.tgz",
-			"integrity": "sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA==",
-			"cpu": [
-				"x64"
-			],
-			"dev": true,
-			"license": "MIT",
-			"optional": true,
-			"os": [
-				"darwin"
-			],
-			"engines": {
-				"node": ">=18"
-			}
-		},
-		"node_modules/@esbuild/freebsd-arm64": {
-			"version": "0.25.2",
-			"resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.2.tgz",
-			"integrity": "sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w==",
-			"cpu": [
-				"arm64"
-			],
-			"dev": true,
-			"license": "MIT",
-			"optional": true,
-			"os": [
-				"freebsd"
-			],
-			"engines": {
-				"node": ">=18"
-			}
-		},
-		"node_modules/@esbuild/freebsd-x64": {
-			"version": "0.25.2",
-			"resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.2.tgz",
-			"integrity": "sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ==",
-			"cpu": [
-				"x64"
-			],
-			"dev": true,
-			"license": "MIT",
-			"optional": true,
-			"os": [
-				"freebsd"
-			],
-			"engines": {
-				"node": ">=18"
-			}
-		},
-		"node_modules/@esbuild/linux-arm": {
-			"version": "0.25.2",
-			"resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.2.tgz",
-			"integrity": "sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g==",
-			"cpu": [
-				"arm"
-			],
-			"dev": true,
-			"license": "MIT",
-			"optional": true,
-			"os": [
-				"linux"
-			],
-			"engines": {
-				"node": ">=18"
-			}
-		},
-		"node_modules/@esbuild/linux-arm64": {
-			"version": "0.25.2",
-			"resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.2.tgz",
-			"integrity": "sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g==",
-			"cpu": [
-				"arm64"
-			],
-			"dev": true,
-			"license": "MIT",
-			"optional": true,
-			"os": [
-				"linux"
-			],
-			"engines": {
-				"node": ">=18"
-			}
-		},
-		"node_modules/@esbuild/linux-ia32": {
-			"version": "0.25.2",
-			"resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.2.tgz",
-			"integrity": "sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ==",
-			"cpu": [
-				"ia32"
-			],
-			"dev": true,
-			"license": "MIT",
-			"optional": true,
-			"os": [
-				"linux"
-			],
-			"engines": {
-				"node": ">=18"
-			}
-		},
-		"node_modules/@esbuild/linux-loong64": {
-			"version": "0.25.2",
-			"resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.2.tgz",
-			"integrity": "sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w==",
-			"cpu": [
-				"loong64"
-			],
-			"dev": true,
-			"license": "MIT",
-			"optional": true,
-			"os": [
-				"linux"
-			],
-			"engines": {
-				"node": ">=18"
-			}
-		},
-		"node_modules/@esbuild/linux-mips64el": {
-			"version": "0.25.2",
-			"resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.2.tgz",
-			"integrity": "sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q==",
-			"cpu": [
-				"mips64el"
-			],
-			"dev": true,
-			"license": "MIT",
-			"optional": true,
-			"os": [
-				"linux"
-			],
-			"engines": {
-				"node": ">=18"
-			}
-		},
-		"node_modules/@esbuild/linux-ppc64": {
-			"version": "0.25.2",
-			"resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.2.tgz",
-			"integrity": "sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g==",
-			"cpu": [
-				"ppc64"
-			],
-			"dev": true,
-			"license": "MIT",
-			"optional": true,
-			"os": [
-				"linux"
-			],
-			"engines": {
-				"node": ">=18"
-			}
-		},
-		"node_modules/@esbuild/linux-riscv64": {
-			"version": "0.25.2",
-			"resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.2.tgz",
-			"integrity": "sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw==",
-			"cpu": [
-				"riscv64"
-			],
-			"dev": true,
-			"license": "MIT",
-			"optional": true,
-			"os": [
-				"linux"
-			],
-			"engines": {
-				"node": ">=18"
-			}
-		},
-		"node_modules/@esbuild/linux-s390x": {
-			"version": "0.25.2",
-			"resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.2.tgz",
-			"integrity": "sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q==",
-			"cpu": [
-				"s390x"
-			],
-			"dev": true,
-			"license": "MIT",
-			"optional": true,
-			"os": [
-				"linux"
-			],
-			"engines": {
-				"node": ">=18"
-			}
-		},
-		"node_modules/@esbuild/linux-x64": {
-			"version": "0.25.2",
-			"resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.2.tgz",
-			"integrity": "sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg==",
-			"cpu": [
-				"x64"
-			],
-			"dev": true,
-			"license": "MIT",
-			"optional": true,
-			"os": [
-				"linux"
-			],
-			"engines": {
-				"node": ">=18"
-			}
-		},
-		"node_modules/@esbuild/netbsd-arm64": {
-			"version": "0.25.2",
-			"resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.2.tgz",
-			"integrity": "sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw==",
-			"cpu": [
-				"arm64"
-			],
-			"dev": true,
-			"license": "MIT",
-			"optional": true,
-			"os": [
-				"netbsd"
-			],
-			"engines": {
-				"node": ">=18"
-			}
-		},
-		"node_modules/@esbuild/netbsd-x64": {
-			"version": "0.25.2",
-			"resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.2.tgz",
-			"integrity": "sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg==",
-			"cpu": [
-				"x64"
-			],
-			"dev": true,
-			"license": "MIT",
-			"optional": true,
-			"os": [
-				"netbsd"
-			],
-			"engines": {
-				"node": ">=18"
-			}
-		},
-		"node_modules/@esbuild/openbsd-arm64": {
-			"version": "0.25.2",
-			"resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.2.tgz",
-			"integrity": "sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg==",
-			"cpu": [
-				"arm64"
-			],
-			"dev": true,
-			"license": "MIT",
-			"optional": true,
-			"os": [
-				"openbsd"
-			],
-			"engines": {
-				"node": ">=18"
-			}
-		},
-		"node_modules/@esbuild/openbsd-x64": {
-			"version": "0.25.2",
-			"resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.2.tgz",
-			"integrity": "sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw==",
-			"cpu": [
-				"x64"
-			],
-			"dev": true,
-			"license": "MIT",
-			"optional": true,
-			"os": [
-				"openbsd"
-			],
-			"engines": {
-				"node": ">=18"
-			}
-		},
-		"node_modules/@esbuild/sunos-x64": {
-			"version": "0.25.2",
-			"resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.2.tgz",
-			"integrity": "sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA==",
-			"cpu": [
-				"x64"
-			],
-			"dev": true,
-			"license": "MIT",
-			"optional": true,
-			"os": [
-				"sunos"
-			],
-			"engines": {
-				"node": ">=18"
-			}
-		},
-		"node_modules/@esbuild/win32-arm64": {
-			"version": "0.25.2",
-			"resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.2.tgz",
-			"integrity": "sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q==",
-			"cpu": [
-				"arm64"
-			],
-			"dev": true,
-			"license": "MIT",
-			"optional": true,
-			"os": [
-				"win32"
-			],
-			"engines": {
-				"node": ">=18"
-			}
-		},
-		"node_modules/@esbuild/win32-ia32": {
-			"version": "0.25.2",
-			"resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.2.tgz",
-			"integrity": "sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg==",
-			"cpu": [
-				"ia32"
-			],
-			"dev": true,
-			"license": "MIT",
-			"optional": true,
-			"os": [
-				"win32"
-			],
-			"engines": {
-				"node": ">=18"
-			}
-		},
-		"node_modules/@esbuild/win32-x64": {
-			"version": "0.25.2",
-			"resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.2.tgz",
-			"integrity": "sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA==",
-			"cpu": [
-				"x64"
-			],
-			"dev": true,
-			"license": "MIT",
-			"optional": true,
-			"os": [
-				"win32"
-			],
-			"engines": {
-				"node": ">=18"
-			}
-		},
-		"node_modules/@eslint-community/eslint-utils": {
-			"version": "4.6.0",
-			"resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.6.0.tgz",
-			"integrity": "sha512-WhCn7Z7TauhBtmzhvKpoQs0Wwb/kBcy4CwpuI0/eEIr2Lx2auxmulAzLr91wVZJaz47iUZdkXOK7WlAfxGKCnA==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"eslint-visitor-keys": "^3.4.3"
-			},
-			"engines": {
-				"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
-			},
-			"funding": {
-				"url": "https://opencollective.com/eslint"
-			},
-			"peerDependencies": {
-				"eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
-			}
-		},
-		"node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": {
-			"version": "3.4.3",
-			"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
-			"integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
-			"dev": true,
-			"license": "Apache-2.0",
-			"engines": {
-				"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
-			},
-			"funding": {
-				"url": "https://opencollective.com/eslint"
-			}
-		},
-		"node_modules/@eslint-community/regexpp": {
-			"version": "4.12.1",
-			"resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz",
-			"integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==",
-			"dev": true,
-			"license": "MIT",
-			"engines": {
-				"node": "^12.0.0 || ^14.0.0 || >=16.0.0"
-			}
-		},
-		"node_modules/@eslint/config-array": {
-			"version": "0.20.0",
-			"resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.20.0.tgz",
-			"integrity": "sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==",
-			"dev": true,
-			"license": "Apache-2.0",
-			"dependencies": {
-				"@eslint/object-schema": "^2.1.6",
-				"debug": "^4.3.1",
-				"minimatch": "^3.1.2"
-			},
-			"engines": {
-				"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
-			}
-		},
-		"node_modules/@eslint/config-helpers": {
-			"version": "0.2.1",
-			"resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.1.tgz",
-			"integrity": "sha512-RI17tsD2frtDu/3dmI7QRrD4bedNKPM08ziRYaC5AhkGrzIAJelm9kJU1TznK+apx6V+cqRz8tfpEeG3oIyjxw==",
-			"dev": true,
-			"license": "Apache-2.0",
-			"engines": {
-				"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
-			}
-		},
-		"node_modules/@eslint/core": {
-			"version": "0.12.0",
-			"resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.12.0.tgz",
-			"integrity": "sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==",
-			"dev": true,
-			"license": "Apache-2.0",
-			"dependencies": {
-				"@types/json-schema": "^7.0.15"
-			},
-			"engines": {
-				"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
-			}
-		},
-		"node_modules/@eslint/eslintrc": {
-			"version": "3.3.1",
-			"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz",
-			"integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"ajv": "^6.12.4",
-				"debug": "^4.3.2",
-				"espree": "^10.0.1",
-				"globals": "^14.0.0",
-				"ignore": "^5.2.0",
-				"import-fresh": "^3.2.1",
-				"js-yaml": "^4.1.0",
-				"minimatch": "^3.1.2",
-				"strip-json-comments": "^3.1.1"
-			},
-			"engines": {
-				"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
-			},
-			"funding": {
-				"url": "https://opencollective.com/eslint"
-			}
-		},
-		"node_modules/@eslint/eslintrc/node_modules/globals": {
-			"version": "14.0.0",
-			"resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz",
-			"integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==",
-			"dev": true,
-			"license": "MIT",
-			"engines": {
-				"node": ">=18"
-			},
-			"funding": {
-				"url": "https://github.com/sponsors/sindresorhus"
-			}
-		},
-		"node_modules/@eslint/js": {
-			"version": "9.24.0",
-			"resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.24.0.tgz",
-			"integrity": "sha512-uIY/y3z0uvOGX8cp1C2fiC4+ZmBhp6yZWkojtHL1YEMnRt1Y63HB9TM17proGEmeG7HeUY+UP36F0aknKYTpYA==",
-			"dev": true,
-			"license": "MIT",
-			"engines": {
-				"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
-			}
-		},
-		"node_modules/@eslint/object-schema": {
-			"version": "2.1.6",
-			"resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz",
-			"integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==",
-			"dev": true,
-			"license": "Apache-2.0",
-			"engines": {
-				"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
-			}
-		},
-		"node_modules/@eslint/plugin-kit": {
-			"version": "0.2.8",
-			"resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.8.tgz",
-			"integrity": "sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA==",
-			"dev": true,
-			"license": "Apache-2.0",
-			"dependencies": {
-				"@eslint/core": "^0.13.0",
-				"levn": "^0.4.1"
-			},
-			"engines": {
-				"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
-			}
-		},
-		"node_modules/@eslint/plugin-kit/node_modules/@eslint/core": {
-			"version": "0.13.0",
-			"resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.13.0.tgz",
-			"integrity": "sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==",
-			"dev": true,
-			"license": "Apache-2.0",
-			"dependencies": {
-				"@types/json-schema": "^7.0.15"
-			},
-			"engines": {
-				"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
-			}
-		},
-		"node_modules/@humanfs/core": {
-			"version": "0.19.1",
-			"resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz",
-			"integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==",
-			"dev": true,
-			"license": "Apache-2.0",
-			"engines": {
-				"node": ">=18.18.0"
-			}
-		},
-		"node_modules/@humanfs/node": {
-			"version": "0.16.6",
-			"resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz",
-			"integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==",
-			"dev": true,
-			"license": "Apache-2.0",
-			"dependencies": {
-				"@humanfs/core": "^0.19.1",
-				"@humanwhocodes/retry": "^0.3.0"
-			},
-			"engines": {
-				"node": ">=18.18.0"
-			}
-		},
-		"node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": {
-			"version": "0.3.1",
-			"resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz",
-			"integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==",
-			"dev": true,
-			"license": "Apache-2.0",
-			"engines": {
-				"node": ">=18.18"
-			},
-			"funding": {
-				"type": "github",
-				"url": "https://github.com/sponsors/nzakas"
-			}
-		},
-		"node_modules/@humanwhocodes/module-importer": {
-			"version": "1.0.1",
-			"resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
-			"integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
-			"dev": true,
-			"license": "Apache-2.0",
-			"engines": {
-				"node": ">=12.22"
-			},
-			"funding": {
-				"type": "github",
-				"url": "https://github.com/sponsors/nzakas"
-			}
-		},
-		"node_modules/@humanwhocodes/retry": {
-			"version": "0.4.2",
-			"resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.2.tgz",
-			"integrity": "sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==",
-			"dev": true,
-			"license": "Apache-2.0",
-			"engines": {
-				"node": ">=18.18"
-			},
-			"funding": {
-				"type": "github",
-				"url": "https://github.com/sponsors/nzakas"
-			}
-		},
-		"node_modules/@isaacs/cliui": {
-			"version": "8.0.2",
-			"resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
-			"integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
-			"dev": true,
-			"license": "ISC",
-			"dependencies": {
-				"string-width": "^5.1.2",
-				"string-width-cjs": "npm:string-width@^4.2.0",
-				"strip-ansi": "^7.0.1",
-				"strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
-				"wrap-ansi": "^8.1.0",
-				"wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
-			},
-			"engines": {
-				"node": ">=12"
-			}
-		},
-		"node_modules/@jridgewell/gen-mapping": {
-			"version": "0.3.8",
-			"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz",
-			"integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"@jridgewell/set-array": "^1.2.1",
-				"@jridgewell/sourcemap-codec": "^1.4.10",
-				"@jridgewell/trace-mapping": "^0.3.24"
-			},
-			"engines": {
-				"node": ">=6.0.0"
-			}
-		},
-		"node_modules/@jridgewell/resolve-uri": {
-			"version": "3.1.2",
-			"resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
-			"integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
-			"dev": true,
-			"license": "MIT",
-			"engines": {
-				"node": ">=6.0.0"
-			}
-		},
-		"node_modules/@jridgewell/set-array": {
-			"version": "1.2.1",
-			"resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
-			"integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
-			"dev": true,
-			"license": "MIT",
-			"engines": {
-				"node": ">=6.0.0"
-			}
-		},
-		"node_modules/@jridgewell/sourcemap-codec": {
-			"version": "1.5.0",
-			"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
-			"integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==",
-			"dev": true,
-			"license": "MIT"
-		},
-		"node_modules/@jridgewell/trace-mapping": {
-			"version": "0.3.25",
-			"resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
-			"integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"@jridgewell/resolve-uri": "^3.1.0",
-				"@jridgewell/sourcemap-codec": "^1.4.14"
-			}
-		},
-		"node_modules/@nodelib/fs.scandir": {
-			"version": "2.1.5",
-			"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
-			"integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"@nodelib/fs.stat": "2.0.5",
-				"run-parallel": "^1.1.9"
-			},
-			"engines": {
-				"node": ">= 8"
-			}
-		},
-		"node_modules/@nodelib/fs.stat": {
-			"version": "2.0.5",
-			"resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
-			"integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
-			"dev": true,
-			"license": "MIT",
-			"engines": {
-				"node": ">= 8"
-			}
-		},
-		"node_modules/@nodelib/fs.walk": {
-			"version": "1.2.8",
-			"resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
-			"integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"@nodelib/fs.scandir": "2.1.5",
-				"fastq": "^1.6.0"
-			},
-			"engines": {
-				"node": ">= 8"
-			}
-		},
-		"node_modules/@pkgjs/parseargs": {
-			"version": "0.11.0",
-			"resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
-			"integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
-			"dev": true,
-			"license": "MIT",
-			"optional": true,
-			"engines": {
-				"node": ">=14"
-			}
-		},
-		"node_modules/@react-oauth/google": {
-			"version": "0.12.2",
-			"resolved": "https://registry.npmjs.org/@react-oauth/google/-/google-0.12.2.tgz",
-			"integrity": "sha512-d1GVm2uD4E44EJft2RbKtp8Z1fp/gK8Lb6KHgs3pHlM0PxCXGLaq8LLYQYENnN4xPWO1gkL4apBtlPKzpLvZwg==",
-			"license": "MIT",
-			"peerDependencies": {
-				"react": ">=16.8.0",
-				"react-dom": ">=16.8.0"
-			}
-		},
-		"node_modules/@rollup/rollup-android-arm-eabi": {
-			"version": "4.40.0",
-			"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.40.0.tgz",
-			"integrity": "sha512-+Fbls/diZ0RDerhE8kyC6hjADCXA1K4yVNlH0EYfd2XjyH0UGgzaQ8MlT0pCXAThfxv3QUAczHaL+qSv1E4/Cg==",
-			"cpu": [
-				"arm"
-			],
-			"dev": true,
-			"license": "MIT",
-			"optional": true,
-			"os": [
-				"android"
-			]
-		},
-		"node_modules/@rollup/rollup-android-arm64": {
-			"version": "4.40.0",
-			"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.40.0.tgz",
-			"integrity": "sha512-PPA6aEEsTPRz+/4xxAmaoWDqh67N7wFbgFUJGMnanCFs0TV99M0M8QhhaSCks+n6EbQoFvLQgYOGXxlMGQe/6w==",
-			"cpu": [
-				"arm64"
-			],
-			"dev": true,
-			"license": "MIT",
-			"optional": true,
-			"os": [
-				"android"
-			]
-		},
-		"node_modules/@rollup/rollup-darwin-arm64": {
-			"version": "4.40.0",
-			"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.40.0.tgz",
-			"integrity": "sha512-GwYOcOakYHdfnjjKwqpTGgn5a6cUX7+Ra2HeNj/GdXvO2VJOOXCiYYlRFU4CubFM67EhbmzLOmACKEfvp3J1kQ==",
-			"cpu": [
-				"arm64"
-			],
-			"dev": true,
-			"license": "MIT",
-			"optional": true,
-			"os": [
-				"darwin"
-			]
-		},
-		"node_modules/@rollup/rollup-darwin-x64": {
-			"version": "4.40.0",
-			"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.40.0.tgz",
-			"integrity": "sha512-CoLEGJ+2eheqD9KBSxmma6ld01czS52Iw0e2qMZNpPDlf7Z9mj8xmMemxEucinev4LgHalDPczMyxzbq+Q+EtA==",
-			"cpu": [
-				"x64"
-			],
-			"dev": true,
-			"license": "MIT",
-			"optional": true,
-			"os": [
-				"darwin"
-			]
-		},
-		"node_modules/@rollup/rollup-freebsd-arm64": {
-			"version": "4.40.0",
-			"resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.40.0.tgz",
-			"integrity": "sha512-r7yGiS4HN/kibvESzmrOB/PxKMhPTlz+FcGvoUIKYoTyGd5toHp48g1uZy1o1xQvybwwpqpe010JrcGG2s5nkg==",
-			"cpu": [
-				"arm64"
-			],
-			"dev": true,
-			"license": "MIT",
-			"optional": true,
-			"os": [
-				"freebsd"
-			]
-		},
-		"node_modules/@rollup/rollup-freebsd-x64": {
-			"version": "4.40.0",
-			"resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.40.0.tgz",
-			"integrity": "sha512-mVDxzlf0oLzV3oZOr0SMJ0lSDd3xC4CmnWJ8Val8isp9jRGl5Dq//LLDSPFrasS7pSm6m5xAcKaw3sHXhBjoRw==",
-			"cpu": [
-				"x64"
-			],
-			"dev": true,
-			"license": "MIT",
-			"optional": true,
-			"os": [
-				"freebsd"
-			]
-		},
-		"node_modules/@rollup/rollup-linux-arm-gnueabihf": {
-			"version": "4.40.0",
-			"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.40.0.tgz",
-			"integrity": "sha512-y/qUMOpJxBMy8xCXD++jeu8t7kzjlOCkoxxajL58G62PJGBZVl/Gwpm7JK9+YvlB701rcQTzjUZ1JgUoPTnoQA==",
-			"cpu": [
-				"arm"
-			],
-			"dev": true,
-			"license": "MIT",
-			"optional": true,
-			"os": [
-				"linux"
-			]
-		},
-		"node_modules/@rollup/rollup-linux-arm-musleabihf": {
-			"version": "4.40.0",
-			"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.40.0.tgz",
-			"integrity": "sha512-GoCsPibtVdJFPv/BOIvBKO/XmwZLwaNWdyD8TKlXuqp0veo2sHE+A/vpMQ5iSArRUz/uaoj4h5S6Pn0+PdhRjg==",
-			"cpu": [
-				"arm"
-			],
-			"dev": true,
-			"license": "MIT",
-			"optional": true,
-			"os": [
-				"linux"
-			]
-		},
-		"node_modules/@rollup/rollup-linux-arm64-gnu": {
-			"version": "4.40.0",
-			"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.40.0.tgz",
-			"integrity": "sha512-L5ZLphTjjAD9leJzSLI7rr8fNqJMlGDKlazW2tX4IUF9P7R5TMQPElpH82Q7eNIDQnQlAyiNVfRPfP2vM5Avvg==",
-			"cpu": [
-				"arm64"
-			],
-			"dev": true,
-			"license": "MIT",
-			"optional": true,
-			"os": [
-				"linux"
-			]
-		},
-		"node_modules/@rollup/rollup-linux-arm64-musl": {
-			"version": "4.40.0",
-			"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.40.0.tgz",
-			"integrity": "sha512-ATZvCRGCDtv1Y4gpDIXsS+wfFeFuLwVxyUBSLawjgXK2tRE6fnsQEkE4csQQYWlBlsFztRzCnBvWVfcae/1qxQ==",
-			"cpu": [
-				"arm64"
-			],
-			"dev": true,
-			"license": "MIT",
-			"optional": true,
-			"os": [
-				"linux"
-			]
-		},
-		"node_modules/@rollup/rollup-linux-loongarch64-gnu": {
-			"version": "4.40.0",
-			"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.40.0.tgz",
-			"integrity": "sha512-wG9e2XtIhd++QugU5MD9i7OnpaVb08ji3P1y/hNbxrQ3sYEelKJOq1UJ5dXczeo6Hj2rfDEL5GdtkMSVLa/AOg==",
-			"cpu": [
-				"loong64"
-			],
-			"dev": true,
-			"license": "MIT",
-			"optional": true,
-			"os": [
-				"linux"
-			]
-		},
-		"node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
-			"version": "4.40.0",
-			"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.40.0.tgz",
-			"integrity": "sha512-vgXfWmj0f3jAUvC7TZSU/m/cOE558ILWDzS7jBhiCAFpY2WEBn5jqgbqvmzlMjtp8KlLcBlXVD2mkTSEQE6Ixw==",
-			"cpu": [
-				"ppc64"
-			],
-			"dev": true,
-			"license": "MIT",
-			"optional": true,
-			"os": [
-				"linux"
-			]
-		},
-		"node_modules/@rollup/rollup-linux-riscv64-gnu": {
-			"version": "4.40.0",
-			"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.40.0.tgz",
-			"integrity": "sha512-uJkYTugqtPZBS3Z136arevt/FsKTF/J9dEMTX/cwR7lsAW4bShzI2R0pJVw+hcBTWF4dxVckYh72Hk3/hWNKvA==",
-			"cpu": [
-				"riscv64"
-			],
-			"dev": true,
-			"license": "MIT",
-			"optional": true,
-			"os": [
-				"linux"
-			]
-		},
-		"node_modules/@rollup/rollup-linux-riscv64-musl": {
-			"version": "4.40.0",
-			"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.40.0.tgz",
-			"integrity": "sha512-rKmSj6EXQRnhSkE22+WvrqOqRtk733x3p5sWpZilhmjnkHkpeCgWsFFo0dGnUGeA+OZjRl3+VYq+HyCOEuwcxQ==",
-			"cpu": [
-				"riscv64"
-			],
-			"dev": true,
-			"license": "MIT",
-			"optional": true,
-			"os": [
-				"linux"
-			]
-		},
-		"node_modules/@rollup/rollup-linux-s390x-gnu": {
-			"version": "4.40.0",
-			"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.40.0.tgz",
-			"integrity": "sha512-SpnYlAfKPOoVsQqmTFJ0usx0z84bzGOS9anAC0AZ3rdSo3snecihbhFTlJZ8XMwzqAcodjFU4+/SM311dqE5Sw==",
-			"cpu": [
-				"s390x"
-			],
-			"dev": true,
-			"license": "MIT",
-			"optional": true,
-			"os": [
-				"linux"
-			]
-		},
-		"node_modules/@rollup/rollup-linux-x64-gnu": {
-			"version": "4.40.0",
-			"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.40.0.tgz",
-			"integrity": "sha512-RcDGMtqF9EFN8i2RYN2W+64CdHruJ5rPqrlYw+cgM3uOVPSsnAQps7cpjXe9be/yDp8UC7VLoCoKC8J3Kn2FkQ==",
-			"cpu": [
-				"x64"
-			],
-			"dev": true,
-			"license": "MIT",
-			"optional": true,
-			"os": [
-				"linux"
-			]
-		},
-		"node_modules/@rollup/rollup-linux-x64-musl": {
-			"version": "4.40.0",
-			"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.40.0.tgz",
-			"integrity": "sha512-HZvjpiUmSNx5zFgwtQAV1GaGazT2RWvqeDi0hV+AtC8unqqDSsaFjPxfsO6qPtKRRg25SisACWnJ37Yio8ttaw==",
-			"cpu": [
-				"x64"
-			],
-			"dev": true,
-			"license": "MIT",
-			"optional": true,
-			"os": [
-				"linux"
-			]
-		},
-		"node_modules/@rollup/rollup-win32-arm64-msvc": {
-			"version": "4.40.0",
-			"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.40.0.tgz",
-			"integrity": "sha512-UtZQQI5k/b8d7d3i9AZmA/t+Q4tk3hOC0tMOMSq2GlMYOfxbesxG4mJSeDp0EHs30N9bsfwUvs3zF4v/RzOeTQ==",
-			"cpu": [
-				"arm64"
-			],
-			"dev": true,
-			"license": "MIT",
-			"optional": true,
-			"os": [
-				"win32"
-			]
-		},
-		"node_modules/@rollup/rollup-win32-ia32-msvc": {
-			"version": "4.40.0",
-			"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.40.0.tgz",
-			"integrity": "sha512-+m03kvI2f5syIqHXCZLPVYplP8pQch9JHyXKZ3AGMKlg8dCyr2PKHjwRLiW53LTrN/Nc3EqHOKxUxzoSPdKddA==",
-			"cpu": [
-				"ia32"
-			],
-			"dev": true,
-			"license": "MIT",
-			"optional": true,
-			"os": [
-				"win32"
-			]
-		},
-		"node_modules/@rollup/rollup-win32-x64-msvc": {
-			"version": "4.40.0",
-			"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.40.0.tgz",
-			"integrity": "sha512-lpPE1cLfP5oPzVjKMx10pgBmKELQnFJXHgvtHCtuJWOv8MxqdEIMNtgHgBFf7Ea2/7EuVwa9fodWUfXAlXZLZQ==",
-			"cpu": [
-				"x64"
-			],
-			"dev": true,
-			"license": "MIT",
-			"optional": true,
-			"os": [
-				"win32"
-			]
-		},
-		"node_modules/@types/babel__core": {
-			"version": "7.20.5",
-			"resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz",
-			"integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"@babel/parser": "^7.20.7",
-				"@babel/types": "^7.20.7",
-				"@types/babel__generator": "*",
-				"@types/babel__template": "*",
-				"@types/babel__traverse": "*"
-			}
-		},
-		"node_modules/@types/babel__generator": {
-			"version": "7.27.0",
-			"resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz",
-			"integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"@babel/types": "^7.0.0"
-			}
-		},
-		"node_modules/@types/babel__template": {
-			"version": "7.4.4",
-			"resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz",
-			"integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"@babel/parser": "^7.1.0",
-				"@babel/types": "^7.0.0"
-			}
-		},
-		"node_modules/@types/babel__traverse": {
-			"version": "7.20.7",
-			"resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.7.tgz",
-			"integrity": "sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"@babel/types": "^7.20.7"
-			}
-		},
-		"node_modules/@types/estree": {
-			"version": "1.0.7",
-			"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz",
-			"integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==",
-			"dev": true,
-			"license": "MIT"
-		},
-		"node_modules/@types/json-schema": {
-			"version": "7.0.15",
-			"resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
-			"integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
-			"dev": true,
-			"license": "MIT"
-		},
-		"node_modules/@types/react": {
-			"version": "19.1.2",
-			"resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.2.tgz",
-			"integrity": "sha512-oxLPMytKchWGbnQM9O7D67uPa9paTNxO7jVoNMXgkkErULBPhPARCfkKL9ytcIJJRGjbsVwW4ugJzyFFvm/Tiw==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"csstype": "^3.0.2"
-			}
-		},
-		"node_modules/@types/react-dom": {
-			"version": "19.1.2",
-			"resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.1.2.tgz",
-			"integrity": "sha512-XGJkWF41Qq305SKWEILa1O8vzhb3aOo3ogBlSmiqNko/WmRb6QIaweuZCXjKygVDXpzXb5wyxKTSOsmkuqj+Qw==",
-			"dev": true,
-			"license": "MIT",
-			"peerDependencies": {
-				"@types/react": "^19.0.0"
-			}
-		},
-		"node_modules/@typescript-eslint/eslint-plugin": {
-			"version": "8.30.1",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.30.1.tgz",
-			"integrity": "sha512-v+VWphxMjn+1t48/jO4t950D6KR8JaJuNXzi33Ve6P8sEmPr5k6CEXjdGwT6+LodVnEa91EQCtwjWNUCPweo+Q==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"@eslint-community/regexpp": "^4.10.0",
-				"@typescript-eslint/scope-manager": "8.30.1",
-				"@typescript-eslint/type-utils": "8.30.1",
-				"@typescript-eslint/utils": "8.30.1",
-				"@typescript-eslint/visitor-keys": "8.30.1",
-				"graphemer": "^1.4.0",
-				"ignore": "^5.3.1",
-				"natural-compare": "^1.4.0",
-				"ts-api-utils": "^2.0.1"
-			},
-			"engines": {
-				"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
-			},
-			"funding": {
-				"type": "opencollective",
-				"url": "https://opencollective.com/typescript-eslint"
-			},
-			"peerDependencies": {
-				"@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0",
-				"eslint": "^8.57.0 || ^9.0.0",
-				"typescript": ">=4.8.4 <5.9.0"
-			}
-		},
-		"node_modules/@typescript-eslint/parser": {
-			"version": "8.30.1",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.30.1.tgz",
-			"integrity": "sha512-H+vqmWwT5xoNrXqWs/fesmssOW70gxFlgcMlYcBaWNPIEWDgLa4W9nkSPmhuOgLnXq9QYgkZ31fhDyLhleCsAg==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"@typescript-eslint/scope-manager": "8.30.1",
-				"@typescript-eslint/types": "8.30.1",
-				"@typescript-eslint/typescript-estree": "8.30.1",
-				"@typescript-eslint/visitor-keys": "8.30.1",
-				"debug": "^4.3.4"
-			},
-			"engines": {
-				"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
-			},
-			"funding": {
-				"type": "opencollective",
-				"url": "https://opencollective.com/typescript-eslint"
-			},
-			"peerDependencies": {
-				"eslint": "^8.57.0 || ^9.0.0",
-				"typescript": ">=4.8.4 <5.9.0"
-			}
-		},
-		"node_modules/@typescript-eslint/scope-manager": {
-			"version": "8.30.1",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.30.1.tgz",
-			"integrity": "sha512-+C0B6ChFXZkuaNDl73FJxRYT0G7ufVPOSQkqkpM/U198wUwUFOtgo1k/QzFh1KjpBitaK7R1tgjVz6o9HmsRPg==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"@typescript-eslint/types": "8.30.1",
-				"@typescript-eslint/visitor-keys": "8.30.1"
-			},
-			"engines": {
-				"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
-			},
-			"funding": {
-				"type": "opencollective",
-				"url": "https://opencollective.com/typescript-eslint"
-			}
-		},
-		"node_modules/@typescript-eslint/type-utils": {
-			"version": "8.30.1",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.30.1.tgz",
-			"integrity": "sha512-64uBF76bfQiJyHgZISC7vcNz3adqQKIccVoKubyQcOnNcdJBvYOILV1v22Qhsw3tw3VQu5ll8ND6hycgAR5fEA==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"@typescript-eslint/typescript-estree": "8.30.1",
-				"@typescript-eslint/utils": "8.30.1",
-				"debug": "^4.3.4",
-				"ts-api-utils": "^2.0.1"
-			},
-			"engines": {
-				"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
-			},
-			"funding": {
-				"type": "opencollective",
-				"url": "https://opencollective.com/typescript-eslint"
-			},
-			"peerDependencies": {
-				"eslint": "^8.57.0 || ^9.0.0",
-				"typescript": ">=4.8.4 <5.9.0"
-			}
-		},
-		"node_modules/@typescript-eslint/types": {
-			"version": "8.30.1",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.30.1.tgz",
-			"integrity": "sha512-81KawPfkuulyWo5QdyG/LOKbspyyiW+p4vpn4bYO7DM/hZImlVnFwrpCTnmNMOt8CvLRr5ojI9nU1Ekpw4RcEw==",
-			"dev": true,
-			"license": "MIT",
-			"engines": {
-				"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
-			},
-			"funding": {
-				"type": "opencollective",
-				"url": "https://opencollective.com/typescript-eslint"
-			}
-		},
-		"node_modules/@typescript-eslint/typescript-estree": {
-			"version": "8.30.1",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.30.1.tgz",
-			"integrity": "sha512-kQQnxymiUy9tTb1F2uep9W6aBiYODgq5EMSk6Nxh4Z+BDUoYUSa029ISs5zTzKBFnexQEh71KqwjKnRz58lusQ==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"@typescript-eslint/types": "8.30.1",
-				"@typescript-eslint/visitor-keys": "8.30.1",
-				"debug": "^4.3.4",
-				"fast-glob": "^3.3.2",
-				"is-glob": "^4.0.3",
-				"minimatch": "^9.0.4",
-				"semver": "^7.6.0",
-				"ts-api-utils": "^2.0.1"
-			},
-			"engines": {
-				"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
-			},
-			"funding": {
-				"type": "opencollective",
-				"url": "https://opencollective.com/typescript-eslint"
-			},
-			"peerDependencies": {
-				"typescript": ">=4.8.4 <5.9.0"
-			}
-		},
-		"node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": {
-			"version": "2.0.1",
-			"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
-			"integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"balanced-match": "^1.0.0"
-			}
-		},
-		"node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": {
-			"version": "9.0.5",
-			"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
-			"integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
-			"dev": true,
-			"license": "ISC",
-			"dependencies": {
-				"brace-expansion": "^2.0.1"
-			},
-			"engines": {
-				"node": ">=16 || 14 >=14.17"
-			},
-			"funding": {
-				"url": "https://github.com/sponsors/isaacs"
-			}
-		},
-		"node_modules/@typescript-eslint/typescript-estree/node_modules/semver": {
-			"version": "7.7.1",
-			"resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz",
-			"integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==",
-			"dev": true,
-			"license": "ISC",
-			"bin": {
-				"semver": "bin/semver.js"
-			},
-			"engines": {
-				"node": ">=10"
-			}
-		},
-		"node_modules/@typescript-eslint/utils": {
-			"version": "8.30.1",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.30.1.tgz",
-			"integrity": "sha512-T/8q4R9En2tcEsWPQgB5BQ0XJVOtfARcUvOa8yJP3fh9M/mXraLxZrkCfGb6ChrO/V3W+Xbd04RacUEqk1CFEQ==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"@eslint-community/eslint-utils": "^4.4.0",
-				"@typescript-eslint/scope-manager": "8.30.1",
-				"@typescript-eslint/types": "8.30.1",
-				"@typescript-eslint/typescript-estree": "8.30.1"
-			},
-			"engines": {
-				"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
-			},
-			"funding": {
-				"type": "opencollective",
-				"url": "https://opencollective.com/typescript-eslint"
-			},
-			"peerDependencies": {
-				"eslint": "^8.57.0 || ^9.0.0",
-				"typescript": ">=4.8.4 <5.9.0"
-			}
-		},
-		"node_modules/@typescript-eslint/visitor-keys": {
-			"version": "8.30.1",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.30.1.tgz",
-			"integrity": "sha512-aEhgas7aJ6vZnNFC7K4/vMGDGyOiqWcYZPpIWrTKuTAlsvDNKy2GFDqh9smL+iq069ZvR0YzEeq0B8NJlLzjFA==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"@typescript-eslint/types": "8.30.1",
-				"eslint-visitor-keys": "^4.2.0"
-			},
-			"engines": {
-				"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
-			},
-			"funding": {
-				"type": "opencollective",
-				"url": "https://opencollective.com/typescript-eslint"
-			}
-		},
-		"node_modules/@vitejs/plugin-react": {
-			"version": "4.4.0",
-			"resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.4.0.tgz",
-			"integrity": "sha512-x/EztcTKVj+TDeANY1WjNeYsvZjZdfWRMP/KXi5Yn8BoTzpa13ZltaQqKfvWYbX8CE10GOHHdC5v86jY9x8i/g==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"@babel/core": "^7.26.10",
-				"@babel/plugin-transform-react-jsx-self": "^7.25.9",
-				"@babel/plugin-transform-react-jsx-source": "^7.25.9",
-				"@types/babel__core": "^7.20.5",
-				"react-refresh": "^0.17.0"
-			},
-			"engines": {
-				"node": "^14.18.0 || >=16.0.0"
-			},
-			"peerDependencies": {
-				"vite": "^4.2.0 || ^5.0.0 || ^6.0.0"
-			}
-		},
-		"node_modules/acorn": {
-			"version": "8.14.1",
-			"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz",
-			"integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==",
-			"dev": true,
-			"license": "MIT",
-			"bin": {
-				"acorn": "bin/acorn"
-			},
-			"engines": {
-				"node": ">=0.4.0"
-			}
-		},
-		"node_modules/acorn-jsx": {
-			"version": "5.3.2",
-			"resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
-			"integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
-			"dev": true,
-			"license": "MIT",
-			"peerDependencies": {
-				"acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
-			}
-		},
-		"node_modules/ajv": {
-			"version": "6.12.6",
-			"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
-			"integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"fast-deep-equal": "^3.1.1",
-				"fast-json-stable-stringify": "^2.0.0",
-				"json-schema-traverse": "^0.4.1",
-				"uri-js": "^4.2.2"
-			},
-			"funding": {
-				"type": "github",
-				"url": "https://github.com/sponsors/epoberezkin"
-			}
-		},
-		"node_modules/ansi-regex": {
-			"version": "6.1.0",
-			"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
-			"integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
-			"dev": true,
-			"license": "MIT",
-			"engines": {
-				"node": ">=12"
-			},
-			"funding": {
-				"url": "https://github.com/chalk/ansi-regex?sponsor=1"
-			}
-		},
-		"node_modules/ansi-styles": {
-			"version": "4.3.0",
-			"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-			"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"color-convert": "^2.0.1"
-			},
-			"engines": {
-				"node": ">=8"
-			},
-			"funding": {
-				"url": "https://github.com/chalk/ansi-styles?sponsor=1"
-			}
-		},
-		"node_modules/any-promise": {
-			"version": "1.3.0",
-			"resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
-			"integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==",
-			"dev": true,
-			"license": "MIT"
-		},
-		"node_modules/anymatch": {
-			"version": "3.1.3",
-			"resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
-			"integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
-			"dev": true,
-			"license": "ISC",
-			"dependencies": {
-				"normalize-path": "^3.0.0",
-				"picomatch": "^2.0.4"
-			},
-			"engines": {
-				"node": ">= 8"
-			}
-		},
-		"node_modules/arg": {
-			"version": "5.0.2",
-			"resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
-			"integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==",
-			"dev": true,
-			"license": "MIT"
-		},
-		"node_modules/argparse": {
-			"version": "2.0.1",
-			"resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
-			"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
-			"dev": true,
-			"license": "Python-2.0"
-		},
-		"node_modules/asynckit": {
-			"version": "0.4.0",
-			"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
-			"integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
-			"license": "MIT"
-		},
-		"node_modules/autoprefixer": {
-			"version": "10.4.21",
-			"resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.21.tgz",
-			"integrity": "sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==",
-			"dev": true,
-			"funding": [
-				{
-					"type": "opencollective",
-					"url": "https://opencollective.com/postcss/"
-				},
-				{
-					"type": "tidelift",
-					"url": "https://tidelift.com/funding/github/npm/autoprefixer"
-				},
-				{
-					"type": "github",
-					"url": "https://github.com/sponsors/ai"
-				}
-			],
-			"license": "MIT",
-			"dependencies": {
-				"browserslist": "^4.24.4",
-				"caniuse-lite": "^1.0.30001702",
-				"fraction.js": "^4.3.7",
-				"normalize-range": "^0.1.2",
-				"picocolors": "^1.1.1",
-				"postcss-value-parser": "^4.2.0"
-			},
-			"bin": {
-				"autoprefixer": "bin/autoprefixer"
-			},
-			"engines": {
-				"node": "^10 || ^12 || >=14"
-			},
-			"peerDependencies": {
-				"postcss": "^8.1.0"
-			}
-		},
-		"node_modules/axios": {
-			"version": "1.9.0",
-			"resolved": "https://registry.npmjs.org/axios/-/axios-1.9.0.tgz",
-			"integrity": "sha512-re4CqKTJaURpzbLHtIi6XpDv20/CnpXOtjRY5/CU32L8gU8ek9UIivcfvSWvmKEngmVbrUtPpdDwWDWL7DNHvg==",
-			"license": "MIT",
-			"dependencies": {
-				"follow-redirects": "^1.15.6",
-				"form-data": "^4.0.0",
-				"proxy-from-env": "^1.1.0"
-			}
-		},
-		"node_modules/balanced-match": {
-			"version": "1.0.2",
-			"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
-			"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
-			"dev": true,
-			"license": "MIT"
-		},
-		"node_modules/binary-extensions": {
-			"version": "2.3.0",
-			"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
-			"integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
-			"dev": true,
-			"license": "MIT",
-			"engines": {
-				"node": ">=8"
-			},
-			"funding": {
-				"url": "https://github.com/sponsors/sindresorhus"
-			}
-		},
-		"node_modules/brace-expansion": {
-			"version": "1.1.11",
-			"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
-			"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"balanced-match": "^1.0.0",
-				"concat-map": "0.0.1"
-			}
-		},
-		"node_modules/braces": {
-			"version": "3.0.3",
-			"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
-			"integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"fill-range": "^7.1.1"
-			},
-			"engines": {
-				"node": ">=8"
-			}
-		},
-		"node_modules/browserslist": {
-			"version": "4.24.4",
-			"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz",
-			"integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==",
-			"dev": true,
-			"funding": [
-				{
-					"type": "opencollective",
-					"url": "https://opencollective.com/browserslist"
-				},
-				{
-					"type": "tidelift",
-					"url": "https://tidelift.com/funding/github/npm/browserslist"
-				},
-				{
-					"type": "github",
-					"url": "https://github.com/sponsors/ai"
-				}
-			],
-			"license": "MIT",
-			"dependencies": {
-				"caniuse-lite": "^1.0.30001688",
-				"electron-to-chromium": "^1.5.73",
-				"node-releases": "^2.0.19",
-				"update-browserslist-db": "^1.1.1"
-			},
-			"bin": {
-				"browserslist": "cli.js"
-			},
-			"engines": {
-				"node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
-			}
-		},
-		"node_modules/call-bind-apply-helpers": {
-			"version": "1.0.2",
-			"resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
-			"integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
-			"license": "MIT",
-			"dependencies": {
-				"es-errors": "^1.3.0",
-				"function-bind": "^1.1.2"
-			},
-			"engines": {
-				"node": ">= 0.4"
-			}
-		},
-		"node_modules/callsites": {
-			"version": "3.1.0",
-			"resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
-			"integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
-			"dev": true,
-			"license": "MIT",
-			"engines": {
-				"node": ">=6"
-			}
-		},
-		"node_modules/camelcase-css": {
-			"version": "2.0.1",
-			"resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz",
-			"integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==",
-			"dev": true,
-			"license": "MIT",
-			"engines": {
-				"node": ">= 6"
-			}
-		},
-		"node_modules/caniuse-lite": {
-			"version": "1.0.30001714",
-			"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001714.tgz",
-			"integrity": "sha512-mtgapdwDLSSBnCI3JokHM7oEQBLxiJKVRtg10AxM1AyeiKcM96f0Mkbqeq+1AbiCtvMcHRulAAEMu693JrSWqg==",
-			"dev": true,
-			"funding": [
-				{
-					"type": "opencollective",
-					"url": "https://opencollective.com/browserslist"
-				},
-				{
-					"type": "tidelift",
-					"url": "https://tidelift.com/funding/github/npm/caniuse-lite"
-				},
-				{
-					"type": "github",
-					"url": "https://github.com/sponsors/ai"
-				}
-			],
-			"license": "CC-BY-4.0"
-		},
-		"node_modules/chalk": {
-			"version": "4.1.2",
-			"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-			"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"ansi-styles": "^4.1.0",
-				"supports-color": "^7.1.0"
-			},
-			"engines": {
-				"node": ">=10"
-			},
-			"funding": {
-				"url": "https://github.com/chalk/chalk?sponsor=1"
-			}
-		},
-		"node_modules/chokidar": {
-			"version": "3.6.0",
-			"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
-			"integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"anymatch": "~3.1.2",
-				"braces": "~3.0.2",
-				"glob-parent": "~5.1.2",
-				"is-binary-path": "~2.1.0",
-				"is-glob": "~4.0.1",
-				"normalize-path": "~3.0.0",
-				"readdirp": "~3.6.0"
-			},
-			"engines": {
-				"node": ">= 8.10.0"
-			},
-			"funding": {
-				"url": "https://paulmillr.com/funding/"
-			},
-			"optionalDependencies": {
-				"fsevents": "~2.3.2"
-			}
-		},
-		"node_modules/chokidar/node_modules/glob-parent": {
-			"version": "5.1.2",
-			"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
-			"integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
-			"dev": true,
-			"license": "ISC",
-			"dependencies": {
-				"is-glob": "^4.0.1"
-			},
-			"engines": {
-				"node": ">= 6"
-			}
-		},
-		"node_modules/clsx": {
-			"version": "2.1.1",
-			"resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz",
-			"integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==",
-			"license": "MIT",
-			"engines": {
-				"node": ">=6"
-			}
-		},
-		"node_modules/color-convert": {
-			"version": "2.0.1",
-			"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
-			"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"color-name": "~1.1.4"
-			},
-			"engines": {
-				"node": ">=7.0.0"
-			}
-		},
-		"node_modules/color-name": {
-			"version": "1.1.4",
-			"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-			"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
-			"dev": true,
-			"license": "MIT"
-		},
-		"node_modules/combined-stream": {
-			"version": "1.0.8",
-			"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
-			"integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
-			"license": "MIT",
-			"dependencies": {
-				"delayed-stream": "~1.0.0"
-			},
-			"engines": {
-				"node": ">= 0.8"
-			}
-		},
-		"node_modules/commander": {
-			"version": "4.1.1",
-			"resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
-			"integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==",
-			"dev": true,
-			"license": "MIT",
-			"engines": {
-				"node": ">= 6"
-			}
-		},
-		"node_modules/concat-map": {
-			"version": "0.0.1",
-			"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
-			"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
-			"dev": true,
-			"license": "MIT"
-		},
-		"node_modules/convert-source-map": {
-			"version": "2.0.0",
-			"resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
-			"integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
-			"dev": true,
-			"license": "MIT"
-		},
-		"node_modules/cookie": {
-			"version": "1.0.2",
-			"resolved": "https://registry.npmjs.org/cookie/-/cookie-1.0.2.tgz",
-			"integrity": "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==",
-			"license": "MIT",
-			"engines": {
-				"node": ">=18"
-			}
-		},
-		"node_modules/cross-spawn": {
-			"version": "7.0.6",
-			"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
-			"integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"path-key": "^3.1.0",
-				"shebang-command": "^2.0.0",
-				"which": "^2.0.1"
-			},
-			"engines": {
-				"node": ">= 8"
-			}
-		},
-		"node_modules/cssesc": {
-			"version": "3.0.0",
-			"resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
-			"integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
-			"dev": true,
-			"license": "MIT",
-			"bin": {
-				"cssesc": "bin/cssesc"
-			},
-			"engines": {
-				"node": ">=4"
-			}
-		},
-		"node_modules/csstype": {
-			"version": "3.1.3",
-			"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
-			"integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
-			"dev": true,
-			"license": "MIT"
-		},
-		"node_modules/debug": {
-			"version": "4.4.0",
-			"resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz",
-			"integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"ms": "^2.1.3"
-			},
-			"engines": {
-				"node": ">=6.0"
-			},
-			"peerDependenciesMeta": {
-				"supports-color": {
-					"optional": true
-				}
-			}
-		},
-		"node_modules/deep-is": {
-			"version": "0.1.4",
-			"resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
-			"integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
-			"dev": true,
-			"license": "MIT"
-		},
-		"node_modules/delayed-stream": {
-			"version": "1.0.0",
-			"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
-			"integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
-			"license": "MIT",
-			"engines": {
-				"node": ">=0.4.0"
-			}
-		},
-		"node_modules/didyoumean": {
-			"version": "1.2.2",
-			"resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",
-			"integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==",
-			"dev": true,
-			"license": "Apache-2.0"
-		},
-		"node_modules/dlv": {
-			"version": "1.1.3",
-			"resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz",
-			"integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==",
-			"dev": true,
-			"license": "MIT"
-		},
-		"node_modules/dunder-proto": {
-			"version": "1.0.1",
-			"resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
-			"integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
-			"license": "MIT",
-			"dependencies": {
-				"call-bind-apply-helpers": "^1.0.1",
-				"es-errors": "^1.3.0",
-				"gopd": "^1.2.0"
-			},
-			"engines": {
-				"node": ">= 0.4"
-			}
-		},
-		"node_modules/eastasianwidth": {
-			"version": "0.2.0",
-			"resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
-			"integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
-			"dev": true,
-			"license": "MIT"
-		},
-		"node_modules/electron-to-chromium": {
-			"version": "1.5.137",
-			"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.137.tgz",
-			"integrity": "sha512-/QSJaU2JyIuTbbABAo/crOs+SuAZLS+fVVS10PVrIT9hrRkmZl8Hb0xPSkKRUUWHQtYzXHpQUW3Dy5hwMzGZkA==",
-			"dev": true,
-			"license": "ISC"
-		},
-		"node_modules/emoji-regex": {
-			"version": "9.2.2",
-			"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
-			"integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
-			"dev": true,
-			"license": "MIT"
-		},
-		"node_modules/es-define-property": {
-			"version": "1.0.1",
-			"resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
-			"integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
-			"license": "MIT",
-			"engines": {
-				"node": ">= 0.4"
-			}
-		},
-		"node_modules/es-errors": {
-			"version": "1.3.0",
-			"resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
-			"integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
-			"license": "MIT",
-			"engines": {
-				"node": ">= 0.4"
-			}
-		},
-		"node_modules/es-object-atoms": {
-			"version": "1.1.1",
-			"resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
-			"integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
-			"license": "MIT",
-			"dependencies": {
-				"es-errors": "^1.3.0"
-			},
-			"engines": {
-				"node": ">= 0.4"
-			}
-		},
-		"node_modules/es-set-tostringtag": {
-			"version": "2.1.0",
-			"resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz",
-			"integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==",
-			"license": "MIT",
-			"dependencies": {
-				"es-errors": "^1.3.0",
-				"get-intrinsic": "^1.2.6",
-				"has-tostringtag": "^1.0.2",
-				"hasown": "^2.0.2"
-			},
-			"engines": {
-				"node": ">= 0.4"
-			}
-		},
-		"node_modules/esbuild": {
-			"version": "0.25.2",
-			"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.2.tgz",
-			"integrity": "sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ==",
-			"dev": true,
-			"hasInstallScript": true,
-			"license": "MIT",
-			"bin": {
-				"esbuild": "bin/esbuild"
-			},
-			"engines": {
-				"node": ">=18"
-			},
-			"optionalDependencies": {
-				"@esbuild/aix-ppc64": "0.25.2",
-				"@esbuild/android-arm": "0.25.2",
-				"@esbuild/android-arm64": "0.25.2",
-				"@esbuild/android-x64": "0.25.2",
-				"@esbuild/darwin-arm64": "0.25.2",
-				"@esbuild/darwin-x64": "0.25.2",
-				"@esbuild/freebsd-arm64": "0.25.2",
-				"@esbuild/freebsd-x64": "0.25.2",
-				"@esbuild/linux-arm": "0.25.2",
-				"@esbuild/linux-arm64": "0.25.2",
-				"@esbuild/linux-ia32": "0.25.2",
-				"@esbuild/linux-loong64": "0.25.2",
-				"@esbuild/linux-mips64el": "0.25.2",
-				"@esbuild/linux-ppc64": "0.25.2",
-				"@esbuild/linux-riscv64": "0.25.2",
-				"@esbuild/linux-s390x": "0.25.2",
-				"@esbuild/linux-x64": "0.25.2",
-				"@esbuild/netbsd-arm64": "0.25.2",
-				"@esbuild/netbsd-x64": "0.25.2",
-				"@esbuild/openbsd-arm64": "0.25.2",
-				"@esbuild/openbsd-x64": "0.25.2",
-				"@esbuild/sunos-x64": "0.25.2",
-				"@esbuild/win32-arm64": "0.25.2",
-				"@esbuild/win32-ia32": "0.25.2",
-				"@esbuild/win32-x64": "0.25.2"
-			}
-		},
-		"node_modules/escalade": {
-			"version": "3.2.0",
-			"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
-			"integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
-			"dev": true,
-			"license": "MIT",
-			"engines": {
-				"node": ">=6"
-			}
-		},
-		"node_modules/escape-string-regexp": {
-			"version": "4.0.0",
-			"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
-			"integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
-			"dev": true,
-			"license": "MIT",
-			"engines": {
-				"node": ">=10"
-			},
-			"funding": {
-				"url": "https://github.com/sponsors/sindresorhus"
-			}
-		},
-		"node_modules/eslint": {
-			"version": "9.24.0",
-			"resolved": "https://registry.npmjs.org/eslint/-/eslint-9.24.0.tgz",
-			"integrity": "sha512-eh/jxIEJyZrvbWRe4XuVclLPDYSYYYgLy5zXGGxD6j8zjSAxFEzI2fL/8xNq6O2yKqVt+eF2YhV+hxjV6UKXwQ==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"@eslint-community/eslint-utils": "^4.2.0",
-				"@eslint-community/regexpp": "^4.12.1",
-				"@eslint/config-array": "^0.20.0",
-				"@eslint/config-helpers": "^0.2.0",
-				"@eslint/core": "^0.12.0",
-				"@eslint/eslintrc": "^3.3.1",
-				"@eslint/js": "9.24.0",
-				"@eslint/plugin-kit": "^0.2.7",
-				"@humanfs/node": "^0.16.6",
-				"@humanwhocodes/module-importer": "^1.0.1",
-				"@humanwhocodes/retry": "^0.4.2",
-				"@types/estree": "^1.0.6",
-				"@types/json-schema": "^7.0.15",
-				"ajv": "^6.12.4",
-				"chalk": "^4.0.0",
-				"cross-spawn": "^7.0.6",
-				"debug": "^4.3.2",
-				"escape-string-regexp": "^4.0.0",
-				"eslint-scope": "^8.3.0",
-				"eslint-visitor-keys": "^4.2.0",
-				"espree": "^10.3.0",
-				"esquery": "^1.5.0",
-				"esutils": "^2.0.2",
-				"fast-deep-equal": "^3.1.3",
-				"file-entry-cache": "^8.0.0",
-				"find-up": "^5.0.0",
-				"glob-parent": "^6.0.2",
-				"ignore": "^5.2.0",
-				"imurmurhash": "^0.1.4",
-				"is-glob": "^4.0.0",
-				"json-stable-stringify-without-jsonify": "^1.0.1",
-				"lodash.merge": "^4.6.2",
-				"minimatch": "^3.1.2",
-				"natural-compare": "^1.4.0",
-				"optionator": "^0.9.3"
-			},
-			"bin": {
-				"eslint": "bin/eslint.js"
-			},
-			"engines": {
-				"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
-			},
-			"funding": {
-				"url": "https://eslint.org/donate"
-			},
-			"peerDependencies": {
-				"jiti": "*"
-			},
-			"peerDependenciesMeta": {
-				"jiti": {
-					"optional": true
-				}
-			}
-		},
-		"node_modules/eslint-plugin-react-hooks": {
-			"version": "5.2.0",
-			"resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz",
-			"integrity": "sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==",
-			"dev": true,
-			"license": "MIT",
-			"engines": {
-				"node": ">=10"
-			},
-			"peerDependencies": {
-				"eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0"
-			}
-		},
-		"node_modules/eslint-plugin-react-refresh": {
-			"version": "0.4.19",
-			"resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.19.tgz",
-			"integrity": "sha512-eyy8pcr/YxSYjBoqIFSrlbn9i/xvxUFa8CjzAYo9cFjgGXqq1hyjihcpZvxRLalpaWmueWR81xn7vuKmAFijDQ==",
-			"dev": true,
-			"license": "MIT",
-			"peerDependencies": {
-				"eslint": ">=8.40"
-			}
-		},
-		"node_modules/eslint-scope": {
-			"version": "8.3.0",
-			"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.3.0.tgz",
-			"integrity": "sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==",
-			"dev": true,
-			"license": "BSD-2-Clause",
-			"dependencies": {
-				"esrecurse": "^4.3.0",
-				"estraverse": "^5.2.0"
-			},
-			"engines": {
-				"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
-			},
-			"funding": {
-				"url": "https://opencollective.com/eslint"
-			}
-		},
-		"node_modules/eslint-visitor-keys": {
-			"version": "4.2.0",
-			"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz",
-			"integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==",
-			"dev": true,
-			"license": "Apache-2.0",
-			"engines": {
-				"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
-			},
-			"funding": {
-				"url": "https://opencollective.com/eslint"
-			}
-		},
-		"node_modules/espree": {
-			"version": "10.3.0",
-			"resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz",
-			"integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==",
-			"dev": true,
-			"license": "BSD-2-Clause",
-			"dependencies": {
-				"acorn": "^8.14.0",
-				"acorn-jsx": "^5.3.2",
-				"eslint-visitor-keys": "^4.2.0"
-			},
-			"engines": {
-				"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
-			},
-			"funding": {
-				"url": "https://opencollective.com/eslint"
-			}
-		},
-		"node_modules/esquery": {
-			"version": "1.6.0",
-			"resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz",
-			"integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==",
-			"dev": true,
-			"license": "BSD-3-Clause",
-			"dependencies": {
-				"estraverse": "^5.1.0"
-			},
-			"engines": {
-				"node": ">=0.10"
-			}
-		},
-		"node_modules/esrecurse": {
-			"version": "4.3.0",
-			"resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
-			"integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
-			"dev": true,
-			"license": "BSD-2-Clause",
-			"dependencies": {
-				"estraverse": "^5.2.0"
-			},
-			"engines": {
-				"node": ">=4.0"
-			}
-		},
-		"node_modules/estraverse": {
-			"version": "5.3.0",
-			"resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
-			"integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
-			"dev": true,
-			"license": "BSD-2-Clause",
-			"engines": {
-				"node": ">=4.0"
-			}
-		},
-		"node_modules/esutils": {
-			"version": "2.0.3",
-			"resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
-			"integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
-			"dev": true,
-			"license": "BSD-2-Clause",
-			"engines": {
-				"node": ">=0.10.0"
-			}
-		},
-		"node_modules/fast-deep-equal": {
-			"version": "3.1.3",
-			"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
-			"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
-			"dev": true,
-			"license": "MIT"
-		},
-		"node_modules/fast-glob": {
-			"version": "3.3.3",
-			"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz",
-			"integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"@nodelib/fs.stat": "^2.0.2",
-				"@nodelib/fs.walk": "^1.2.3",
-				"glob-parent": "^5.1.2",
-				"merge2": "^1.3.0",
-				"micromatch": "^4.0.8"
-			},
-			"engines": {
-				"node": ">=8.6.0"
-			}
-		},
-		"node_modules/fast-glob/node_modules/glob-parent": {
-			"version": "5.1.2",
-			"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
-			"integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
-			"dev": true,
-			"license": "ISC",
-			"dependencies": {
-				"is-glob": "^4.0.1"
-			},
-			"engines": {
-				"node": ">= 6"
-			}
-		},
-		"node_modules/fast-json-stable-stringify": {
-			"version": "2.1.0",
-			"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
-			"integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
-			"dev": true,
-			"license": "MIT"
-		},
-		"node_modules/fast-levenshtein": {
-			"version": "2.0.6",
-			"resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
-			"integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
-			"dev": true,
-			"license": "MIT"
-		},
-		"node_modules/fastq": {
-			"version": "1.19.1",
-			"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz",
-			"integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==",
-			"dev": true,
-			"license": "ISC",
-			"dependencies": {
-				"reusify": "^1.0.4"
-			}
-		},
-		"node_modules/file-entry-cache": {
-			"version": "8.0.0",
-			"resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz",
-			"integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"flat-cache": "^4.0.0"
-			},
-			"engines": {
-				"node": ">=16.0.0"
-			}
-		},
-		"node_modules/fill-range": {
-			"version": "7.1.1",
-			"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
-			"integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"to-regex-range": "^5.0.1"
-			},
-			"engines": {
-				"node": ">=8"
-			}
-		},
-		"node_modules/find-up": {
-			"version": "5.0.0",
-			"resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
-			"integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"locate-path": "^6.0.0",
-				"path-exists": "^4.0.0"
-			},
-			"engines": {
-				"node": ">=10"
-			},
-			"funding": {
-				"url": "https://github.com/sponsors/sindresorhus"
-			}
-		},
-		"node_modules/flat-cache": {
-			"version": "4.0.1",
-			"resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz",
-			"integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"flatted": "^3.2.9",
-				"keyv": "^4.5.4"
-			},
-			"engines": {
-				"node": ">=16"
-			}
-		},
-		"node_modules/flatted": {
-			"version": "3.3.3",
-			"resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz",
-			"integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==",
-			"dev": true,
-			"license": "ISC"
-		},
-		"node_modules/follow-redirects": {
-			"version": "1.15.9",
-			"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz",
-			"integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==",
-			"funding": [
-				{
-					"type": "individual",
-					"url": "https://github.com/sponsors/RubenVerborgh"
-				}
-			],
-			"license": "MIT",
-			"engines": {
-				"node": ">=4.0"
-			},
-			"peerDependenciesMeta": {
-				"debug": {
-					"optional": true
-				}
-			}
-		},
-		"node_modules/foreground-child": {
-			"version": "3.3.1",
-			"resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz",
-			"integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==",
-			"dev": true,
-			"license": "ISC",
-			"dependencies": {
-				"cross-spawn": "^7.0.6",
-				"signal-exit": "^4.0.1"
-			},
-			"engines": {
-				"node": ">=14"
-			},
-			"funding": {
-				"url": "https://github.com/sponsors/isaacs"
-			}
-		},
-		"node_modules/form-data": {
-			"version": "4.0.2",
-			"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz",
-			"integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==",
-			"license": "MIT",
-			"dependencies": {
-				"asynckit": "^0.4.0",
-				"combined-stream": "^1.0.8",
-				"es-set-tostringtag": "^2.1.0",
-				"mime-types": "^2.1.12"
-			},
-			"engines": {
-				"node": ">= 6"
-			}
-		},
-		"node_modules/fraction.js": {
-			"version": "4.3.7",
-			"resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz",
-			"integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==",
-			"dev": true,
-			"license": "MIT",
-			"engines": {
-				"node": "*"
-			},
-			"funding": {
-				"type": "patreon",
-				"url": "https://github.com/sponsors/rawify"
-			}
-		},
-		"node_modules/fsevents": {
-			"version": "2.3.3",
-			"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
-			"integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
-			"dev": true,
-			"hasInstallScript": true,
-			"license": "MIT",
-			"optional": true,
-			"os": [
-				"darwin"
-			],
-			"engines": {
-				"node": "^8.16.0 || ^10.6.0 || >=11.0.0"
-			}
-		},
-		"node_modules/function-bind": {
-			"version": "1.1.2",
-			"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
-			"integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
-			"license": "MIT",
-			"funding": {
-				"url": "https://github.com/sponsors/ljharb"
-			}
-		},
-		"node_modules/gensync": {
-			"version": "1.0.0-beta.2",
-			"resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
-			"integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
-			"dev": true,
-			"license": "MIT",
-			"engines": {
-				"node": ">=6.9.0"
-			}
-		},
-		"node_modules/get-intrinsic": {
-			"version": "1.3.0",
-			"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
-			"integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
-			"license": "MIT",
-			"dependencies": {
-				"call-bind-apply-helpers": "^1.0.2",
-				"es-define-property": "^1.0.1",
-				"es-errors": "^1.3.0",
-				"es-object-atoms": "^1.1.1",
-				"function-bind": "^1.1.2",
-				"get-proto": "^1.0.1",
-				"gopd": "^1.2.0",
-				"has-symbols": "^1.1.0",
-				"hasown": "^2.0.2",
-				"math-intrinsics": "^1.1.0"
-			},
-			"engines": {
-				"node": ">= 0.4"
-			},
-			"funding": {
-				"url": "https://github.com/sponsors/ljharb"
-			}
-		},
-		"node_modules/get-proto": {
-			"version": "1.0.1",
-			"resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
-			"integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
-			"license": "MIT",
-			"dependencies": {
-				"dunder-proto": "^1.0.1",
-				"es-object-atoms": "^1.0.0"
-			},
-			"engines": {
-				"node": ">= 0.4"
-			}
-		},
-		"node_modules/glob": {
-			"version": "10.4.5",
-			"resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
-			"integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
-			"dev": true,
-			"license": "ISC",
-			"dependencies": {
-				"foreground-child": "^3.1.0",
-				"jackspeak": "^3.1.2",
-				"minimatch": "^9.0.4",
-				"minipass": "^7.1.2",
-				"package-json-from-dist": "^1.0.0",
-				"path-scurry": "^1.11.1"
-			},
-			"bin": {
-				"glob": "dist/esm/bin.mjs"
-			},
-			"funding": {
-				"url": "https://github.com/sponsors/isaacs"
-			}
-		},
-		"node_modules/glob-parent": {
-			"version": "6.0.2",
-			"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
-			"integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
-			"dev": true,
-			"license": "ISC",
-			"dependencies": {
-				"is-glob": "^4.0.3"
-			},
-			"engines": {
-				"node": ">=10.13.0"
-			}
-		},
-		"node_modules/glob/node_modules/brace-expansion": {
-			"version": "2.0.1",
-			"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
-			"integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"balanced-match": "^1.0.0"
-			}
-		},
-		"node_modules/glob/node_modules/minimatch": {
-			"version": "9.0.5",
-			"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
-			"integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
-			"dev": true,
-			"license": "ISC",
-			"dependencies": {
-				"brace-expansion": "^2.0.1"
-			},
-			"engines": {
-				"node": ">=16 || 14 >=14.17"
-			},
-			"funding": {
-				"url": "https://github.com/sponsors/isaacs"
-			}
-		},
-		"node_modules/globals": {
-			"version": "16.0.0",
-			"resolved": "https://registry.npmjs.org/globals/-/globals-16.0.0.tgz",
-			"integrity": "sha512-iInW14XItCXET01CQFqudPOWP2jYMl7T+QRQT+UNcR/iQncN/F0UNpgd76iFkBPgNQb4+X3LV9tLJYzwh+Gl3A==",
-			"dev": true,
-			"license": "MIT",
-			"engines": {
-				"node": ">=18"
-			},
-			"funding": {
-				"url": "https://github.com/sponsors/sindresorhus"
-			}
-		},
-		"node_modules/gopd": {
-			"version": "1.2.0",
-			"resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
-			"integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
-			"license": "MIT",
-			"engines": {
-				"node": ">= 0.4"
-			},
-			"funding": {
-				"url": "https://github.com/sponsors/ljharb"
-			}
-		},
-		"node_modules/graphemer": {
-			"version": "1.4.0",
-			"resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
-			"integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
-			"dev": true,
-			"license": "MIT"
-		},
-		"node_modules/has-flag": {
-			"version": "4.0.0",
-			"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-			"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
-			"dev": true,
-			"license": "MIT",
-			"engines": {
-				"node": ">=8"
-			}
-		},
-		"node_modules/has-symbols": {
-			"version": "1.1.0",
-			"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
-			"integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
-			"license": "MIT",
-			"engines": {
-				"node": ">= 0.4"
-			},
-			"funding": {
-				"url": "https://github.com/sponsors/ljharb"
-			}
-		},
-		"node_modules/has-tostringtag": {
-			"version": "1.0.2",
-			"resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
-			"integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
-			"license": "MIT",
-			"dependencies": {
-				"has-symbols": "^1.0.3"
-			},
-			"engines": {
-				"node": ">= 0.4"
-			},
-			"funding": {
-				"url": "https://github.com/sponsors/ljharb"
-			}
-		},
-		"node_modules/hasown": {
-			"version": "2.0.2",
-			"resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
-			"integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
-			"license": "MIT",
-			"dependencies": {
-				"function-bind": "^1.1.2"
-			},
-			"engines": {
-				"node": ">= 0.4"
-			}
-		},
-		"node_modules/ignore": {
-			"version": "5.3.2",
-			"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
-			"integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
-			"dev": true,
-			"license": "MIT",
-			"engines": {
-				"node": ">= 4"
-			}
-		},
-		"node_modules/import-fresh": {
-			"version": "3.3.1",
-			"resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz",
-			"integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"parent-module": "^1.0.0",
-				"resolve-from": "^4.0.0"
-			},
-			"engines": {
-				"node": ">=6"
-			},
-			"funding": {
-				"url": "https://github.com/sponsors/sindresorhus"
-			}
-		},
-		"node_modules/imurmurhash": {
-			"version": "0.1.4",
-			"resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
-			"integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
-			"dev": true,
-			"license": "MIT",
-			"engines": {
-				"node": ">=0.8.19"
-			}
-		},
-		"node_modules/is-binary-path": {
-			"version": "2.1.0",
-			"resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
-			"integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"binary-extensions": "^2.0.0"
-			},
-			"engines": {
-				"node": ">=8"
-			}
-		},
-		"node_modules/is-core-module": {
-			"version": "2.16.1",
-			"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz",
-			"integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"hasown": "^2.0.2"
-			},
-			"engines": {
-				"node": ">= 0.4"
-			},
-			"funding": {
-				"url": "https://github.com/sponsors/ljharb"
-			}
-		},
-		"node_modules/is-extglob": {
-			"version": "2.1.1",
-			"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
-			"integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
-			"dev": true,
-			"license": "MIT",
-			"engines": {
-				"node": ">=0.10.0"
-			}
-		},
-		"node_modules/is-fullwidth-code-point": {
-			"version": "3.0.0",
-			"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
-			"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
-			"dev": true,
-			"license": "MIT",
-			"engines": {
-				"node": ">=8"
-			}
-		},
-		"node_modules/is-glob": {
-			"version": "4.0.3",
-			"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
-			"integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"is-extglob": "^2.1.1"
-			},
-			"engines": {
-				"node": ">=0.10.0"
-			}
-		},
-		"node_modules/is-number": {
-			"version": "7.0.0",
-			"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
-			"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
-			"dev": true,
-			"license": "MIT",
-			"engines": {
-				"node": ">=0.12.0"
-			}
-		},
-		"node_modules/isexe": {
-			"version": "2.0.0",
-			"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
-			"integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
-			"dev": true,
-			"license": "ISC"
-		},
-		"node_modules/jackspeak": {
-			"version": "3.4.3",
-			"resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",
-			"integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==",
-			"dev": true,
-			"license": "BlueOak-1.0.0",
-			"dependencies": {
-				"@isaacs/cliui": "^8.0.2"
-			},
-			"funding": {
-				"url": "https://github.com/sponsors/isaacs"
-			},
-			"optionalDependencies": {
-				"@pkgjs/parseargs": "^0.11.0"
-			}
-		},
-		"node_modules/jiti": {
-			"version": "1.21.7",
-			"resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz",
-			"integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==",
-			"dev": true,
-			"license": "MIT",
-			"bin": {
-				"jiti": "bin/jiti.js"
-			}
-		},
-		"node_modules/js-tokens": {
-			"version": "4.0.0",
-			"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
-			"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
-			"dev": true,
-			"license": "MIT"
-		},
-		"node_modules/js-yaml": {
-			"version": "4.1.0",
-			"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
-			"integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"argparse": "^2.0.1"
-			},
-			"bin": {
-				"js-yaml": "bin/js-yaml.js"
-			}
-		},
-		"node_modules/jsesc": {
-			"version": "3.1.0",
-			"resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz",
-			"integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==",
-			"dev": true,
-			"license": "MIT",
-			"bin": {
-				"jsesc": "bin/jsesc"
-			},
-			"engines": {
-				"node": ">=6"
-			}
-		},
-		"node_modules/json-buffer": {
-			"version": "3.0.1",
-			"resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
-			"integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
-			"dev": true,
-			"license": "MIT"
-		},
-		"node_modules/json-schema-traverse": {
-			"version": "0.4.1",
-			"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
-			"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
-			"dev": true,
-			"license": "MIT"
-		},
-		"node_modules/json-stable-stringify-without-jsonify": {
-			"version": "1.0.1",
-			"resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
-			"integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
-			"dev": true,
-			"license": "MIT"
-		},
-		"node_modules/json5": {
-			"version": "2.2.3",
-			"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
-			"integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
-			"dev": true,
-			"license": "MIT",
-			"bin": {
-				"json5": "lib/cli.js"
-			},
-			"engines": {
-				"node": ">=6"
-			}
-		},
-		"node_modules/jwt-decode": {
-			"version": "4.0.0",
-			"resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-4.0.0.tgz",
-			"integrity": "sha512-+KJGIyHgkGuIq3IEBNftfhW/LfWhXUIY6OmyVWjliu5KH1y0fw7VQ8YndE2O4qZdMSd9SqbnC8GOcZEy0Om7sA==",
-			"license": "MIT",
-			"engines": {
-				"node": ">=18"
-			}
-		},
-		"node_modules/keyv": {
-			"version": "4.5.4",
-			"resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
-			"integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"json-buffer": "3.0.1"
-			}
-		},
-		"node_modules/levn": {
-			"version": "0.4.1",
-			"resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
-			"integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"prelude-ls": "^1.2.1",
-				"type-check": "~0.4.0"
-			},
-			"engines": {
-				"node": ">= 0.8.0"
-			}
-		},
-		"node_modules/lilconfig": {
-			"version": "3.1.3",
-			"resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz",
-			"integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==",
-			"dev": true,
-			"license": "MIT",
-			"engines": {
-				"node": ">=14"
-			},
-			"funding": {
-				"url": "https://github.com/sponsors/antonk52"
-			}
-		},
-		"node_modules/lines-and-columns": {
-			"version": "1.2.4",
-			"resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
-			"integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
-			"dev": true,
-			"license": "MIT"
-		},
-		"node_modules/locate-path": {
-			"version": "6.0.0",
-			"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
-			"integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"p-locate": "^5.0.0"
-			},
-			"engines": {
-				"node": ">=10"
-			},
-			"funding": {
-				"url": "https://github.com/sponsors/sindresorhus"
-			}
-		},
-		"node_modules/lodash.merge": {
-			"version": "4.6.2",
-			"resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
-			"integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
-			"dev": true,
-			"license": "MIT"
-		},
-		"node_modules/lru-cache": {
-			"version": "5.1.1",
-			"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
-			"integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
-			"dev": true,
-			"license": "ISC",
-			"dependencies": {
-				"yallist": "^3.0.2"
-			}
-		},
-		"node_modules/lucide-react": {
-			"version": "0.513.0",
-			"resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.513.0.tgz",
-			"integrity": "sha512-CJZKq2g8Y8yN4Aq002GahSXbG2JpFv9kXwyiOAMvUBv7pxeOFHUWKB0mO7MiY4ZVFCV4aNjv2BJFq/z3DgKPQg==",
-			"license": "ISC",
-			"peerDependencies": {
-				"react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0"
-			}
-		},
-		"node_modules/math-intrinsics": {
-			"version": "1.1.0",
-			"resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
-			"integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
-			"license": "MIT",
-			"engines": {
-				"node": ">= 0.4"
-			}
-		},
-		"node_modules/merge2": {
-			"version": "1.4.1",
-			"resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
-			"integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
-			"dev": true,
-			"license": "MIT",
-			"engines": {
-				"node": ">= 8"
-			}
-		},
-		"node_modules/micromatch": {
-			"version": "4.0.8",
-			"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
-			"integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"braces": "^3.0.3",
-				"picomatch": "^2.3.1"
-			},
-			"engines": {
-				"node": ">=8.6"
-			}
-		},
-		"node_modules/mime-db": {
-			"version": "1.52.0",
-			"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
-			"integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
-			"license": "MIT",
-			"engines": {
-				"node": ">= 0.6"
-			}
-		},
-		"node_modules/mime-types": {
-			"version": "2.1.35",
-			"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
-			"integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
-			"license": "MIT",
-			"dependencies": {
-				"mime-db": "1.52.0"
-			},
-			"engines": {
-				"node": ">= 0.6"
-			}
-		},
-		"node_modules/minimatch": {
-			"version": "3.1.2",
-			"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
-			"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
-			"dev": true,
-			"license": "ISC",
-			"dependencies": {
-				"brace-expansion": "^1.1.7"
-			},
-			"engines": {
-				"node": "*"
-			}
-		},
-		"node_modules/minipass": {
-			"version": "7.1.2",
-			"resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
-			"integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
-			"dev": true,
-			"license": "ISC",
-			"engines": {
-				"node": ">=16 || 14 >=14.17"
-			}
-		},
-		"node_modules/ms": {
-			"version": "2.1.3",
-			"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
-			"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
-			"dev": true,
-			"license": "MIT"
-		},
-		"node_modules/mz": {
-			"version": "2.7.0",
-			"resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
-			"integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"any-promise": "^1.0.0",
-				"object-assign": "^4.0.1",
-				"thenify-all": "^1.0.0"
-			}
-		},
-		"node_modules/nanoid": {
-			"version": "3.3.11",
-			"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz",
-			"integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
-			"dev": true,
-			"funding": [
-				{
-					"type": "github",
-					"url": "https://github.com/sponsors/ai"
-				}
-			],
-			"license": "MIT",
-			"bin": {
-				"nanoid": "bin/nanoid.cjs"
-			},
-			"engines": {
-				"node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
-			}
-		},
-		"node_modules/natural-compare": {
-			"version": "1.4.0",
-			"resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
-			"integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
-			"dev": true,
-			"license": "MIT"
-		},
-		"node_modules/node-releases": {
-			"version": "2.0.19",
-			"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz",
-			"integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==",
-			"dev": true,
-			"license": "MIT"
-		},
-		"node_modules/normalize-path": {
-			"version": "3.0.0",
-			"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
-			"integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
-			"dev": true,
-			"license": "MIT",
-			"engines": {
-				"node": ">=0.10.0"
-			}
-		},
-		"node_modules/normalize-range": {
-			"version": "0.1.2",
-			"resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
-			"integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==",
-			"dev": true,
-			"license": "MIT",
-			"engines": {
-				"node": ">=0.10.0"
-			}
-		},
-		"node_modules/object-assign": {
-			"version": "4.1.1",
-			"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
-			"integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
-			"dev": true,
-			"license": "MIT",
-			"engines": {
-				"node": ">=0.10.0"
-			}
-		},
-		"node_modules/object-hash": {
-			"version": "3.0.0",
-			"resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz",
-			"integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==",
-			"dev": true,
-			"license": "MIT",
-			"engines": {
-				"node": ">= 6"
-			}
-		},
-		"node_modules/optionator": {
-			"version": "0.9.4",
-			"resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz",
-			"integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"deep-is": "^0.1.3",
-				"fast-levenshtein": "^2.0.6",
-				"levn": "^0.4.1",
-				"prelude-ls": "^1.2.1",
-				"type-check": "^0.4.0",
-				"word-wrap": "^1.2.5"
-			},
-			"engines": {
-				"node": ">= 0.8.0"
-			}
-		},
-		"node_modules/p-limit": {
-			"version": "3.1.0",
-			"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
-			"integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"yocto-queue": "^0.1.0"
-			},
-			"engines": {
-				"node": ">=10"
-			},
-			"funding": {
-				"url": "https://github.com/sponsors/sindresorhus"
-			}
-		},
-		"node_modules/p-locate": {
-			"version": "5.0.0",
-			"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
-			"integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"p-limit": "^3.0.2"
-			},
-			"engines": {
-				"node": ">=10"
-			},
-			"funding": {
-				"url": "https://github.com/sponsors/sindresorhus"
-			}
-		},
-		"node_modules/package-json-from-dist": {
-			"version": "1.0.1",
-			"resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz",
-			"integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==",
-			"dev": true,
-			"license": "BlueOak-1.0.0"
-		},
-		"node_modules/parent-module": {
-			"version": "1.0.1",
-			"resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
-			"integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"callsites": "^3.0.0"
-			},
-			"engines": {
-				"node": ">=6"
-			}
-		},
-		"node_modules/path-exists": {
-			"version": "4.0.0",
-			"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
-			"integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
-			"dev": true,
-			"license": "MIT",
-			"engines": {
-				"node": ">=8"
-			}
-		},
-		"node_modules/path-key": {
-			"version": "3.1.1",
-			"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
-			"integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
-			"dev": true,
-			"license": "MIT",
-			"engines": {
-				"node": ">=8"
-			}
-		},
-		"node_modules/path-parse": {
-			"version": "1.0.7",
-			"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
-			"integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
-			"dev": true,
-			"license": "MIT"
-		},
-		"node_modules/path-scurry": {
-			"version": "1.11.1",
-			"resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
-			"integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
-			"dev": true,
-			"license": "BlueOak-1.0.0",
-			"dependencies": {
-				"lru-cache": "^10.2.0",
-				"minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
-			},
-			"engines": {
-				"node": ">=16 || 14 >=14.18"
-			},
-			"funding": {
-				"url": "https://github.com/sponsors/isaacs"
-			}
-		},
-		"node_modules/path-scurry/node_modules/lru-cache": {
-			"version": "10.4.3",
-			"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
-			"integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
-			"dev": true,
-			"license": "ISC"
-		},
-		"node_modules/picocolors": {
-			"version": "1.1.1",
-			"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
-			"integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
-			"dev": true,
-			"license": "ISC"
-		},
-		"node_modules/picomatch": {
-			"version": "2.3.1",
-			"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
-			"integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
-			"dev": true,
-			"license": "MIT",
-			"engines": {
-				"node": ">=8.6"
-			},
-			"funding": {
-				"url": "https://github.com/sponsors/jonschlinkert"
-			}
-		},
-		"node_modules/pify": {
-			"version": "2.3.0",
-			"resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
-			"integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
-			"dev": true,
-			"license": "MIT",
-			"engines": {
-				"node": ">=0.10.0"
-			}
-		},
-		"node_modules/pirates": {
-			"version": "4.0.7",
-			"resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz",
-			"integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==",
-			"dev": true,
-			"license": "MIT",
-			"engines": {
-				"node": ">= 6"
-			}
-		},
-		"node_modules/postcss": {
-			"version": "8.5.3",
-			"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz",
-			"integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==",
-			"dev": true,
-			"funding": [
-				{
-					"type": "opencollective",
-					"url": "https://opencollective.com/postcss/"
-				},
-				{
-					"type": "tidelift",
-					"url": "https://tidelift.com/funding/github/npm/postcss"
-				},
-				{
-					"type": "github",
-					"url": "https://github.com/sponsors/ai"
-				}
-			],
-			"license": "MIT",
-			"dependencies": {
-				"nanoid": "^3.3.8",
-				"picocolors": "^1.1.1",
-				"source-map-js": "^1.2.1"
-			},
-			"engines": {
-				"node": "^10 || ^12 || >=14"
-			}
-		},
-		"node_modules/postcss-import": {
-			"version": "15.1.0",
-			"resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz",
-			"integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"postcss-value-parser": "^4.0.0",
-				"read-cache": "^1.0.0",
-				"resolve": "^1.1.7"
-			},
-			"engines": {
-				"node": ">=14.0.0"
-			},
-			"peerDependencies": {
-				"postcss": "^8.0.0"
-			}
-		},
-		"node_modules/postcss-js": {
-			"version": "4.0.1",
-			"resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz",
-			"integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"camelcase-css": "^2.0.1"
-			},
-			"engines": {
-				"node": "^12 || ^14 || >= 16"
-			},
-			"funding": {
-				"type": "opencollective",
-				"url": "https://opencollective.com/postcss/"
-			},
-			"peerDependencies": {
-				"postcss": "^8.4.21"
-			}
-		},
-		"node_modules/postcss-load-config": {
-			"version": "4.0.2",
-			"resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz",
-			"integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==",
-			"dev": true,
-			"funding": [
-				{
-					"type": "opencollective",
-					"url": "https://opencollective.com/postcss/"
-				},
-				{
-					"type": "github",
-					"url": "https://github.com/sponsors/ai"
-				}
-			],
-			"license": "MIT",
-			"dependencies": {
-				"lilconfig": "^3.0.0",
-				"yaml": "^2.3.4"
-			},
-			"engines": {
-				"node": ">= 14"
-			},
-			"peerDependencies": {
-				"postcss": ">=8.0.9",
-				"ts-node": ">=9.0.0"
-			},
-			"peerDependenciesMeta": {
-				"postcss": {
-					"optional": true
-				},
-				"ts-node": {
-					"optional": true
-				}
-			}
-		},
-		"node_modules/postcss-nested": {
-			"version": "6.2.0",
-			"resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz",
-			"integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==",
-			"dev": true,
-			"funding": [
-				{
-					"type": "opencollective",
-					"url": "https://opencollective.com/postcss/"
-				},
-				{
-					"type": "github",
-					"url": "https://github.com/sponsors/ai"
-				}
-			],
-			"license": "MIT",
-			"dependencies": {
-				"postcss-selector-parser": "^6.1.1"
-			},
-			"engines": {
-				"node": ">=12.0"
-			},
-			"peerDependencies": {
-				"postcss": "^8.2.14"
-			}
-		},
-		"node_modules/postcss-selector-parser": {
-			"version": "6.1.2",
-			"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz",
-			"integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"cssesc": "^3.0.0",
-				"util-deprecate": "^1.0.2"
-			},
-			"engines": {
-				"node": ">=4"
-			}
-		},
-		"node_modules/postcss-value-parser": {
-			"version": "4.2.0",
-			"resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
-			"integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
-			"dev": true,
-			"license": "MIT"
-		},
-		"node_modules/prelude-ls": {
-			"version": "1.2.1",
-			"resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
-			"integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
-			"dev": true,
-			"license": "MIT",
-			"engines": {
-				"node": ">= 0.8.0"
-			}
-		},
-		"node_modules/proxy-from-env": {
-			"version": "1.1.0",
-			"resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
-			"integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
-			"license": "MIT"
-		},
-		"node_modules/punycode": {
-			"version": "2.3.1",
-			"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
-			"integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
-			"dev": true,
-			"license": "MIT",
-			"engines": {
-				"node": ">=6"
-			}
-		},
-		"node_modules/queue-microtask": {
-			"version": "1.2.3",
-			"resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
-			"integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
-			"dev": true,
-			"funding": [
-				{
-					"type": "github",
-					"url": "https://github.com/sponsors/feross"
-				},
-				{
-					"type": "patreon",
-					"url": "https://www.patreon.com/feross"
-				},
-				{
-					"type": "consulting",
-					"url": "https://feross.org/support"
-				}
-			],
-			"license": "MIT"
-		},
-		"node_modules/react": {
-			"version": "19.1.0",
-			"resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz",
-			"integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==",
-			"license": "MIT",
-			"engines": {
-				"node": ">=0.10.0"
-			}
-		},
-		"node_modules/react-dom": {
-			"version": "19.1.0",
-			"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz",
-			"integrity": "sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==",
-			"license": "MIT",
-			"dependencies": {
-				"scheduler": "^0.26.0"
-			},
-			"peerDependencies": {
-				"react": "^19.1.0"
-			}
-		},
-		"node_modules/react-refresh": {
-			"version": "0.17.0",
-			"resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz",
-			"integrity": "sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==",
-			"dev": true,
-			"license": "MIT",
-			"engines": {
-				"node": ">=0.10.0"
-			}
-		},
-		"node_modules/react-router": {
-			"version": "7.6.0",
-			"resolved": "https://registry.npmjs.org/react-router/-/react-router-7.6.0.tgz",
-			"integrity": "sha512-GGufuHIVCJDbnIAXP3P9Sxzq3UUsddG3rrI3ut1q6m0FI6vxVBF3JoPQ38+W/blslLH4a5Yutp8drkEpXoddGQ==",
-			"license": "MIT",
-			"dependencies": {
-				"cookie": "^1.0.1",
-				"set-cookie-parser": "^2.6.0"
-			},
-			"engines": {
-				"node": ">=20.0.0"
-			},
-			"peerDependencies": {
-				"react": ">=18",
-				"react-dom": ">=18"
-			},
-			"peerDependenciesMeta": {
-				"react-dom": {
-					"optional": true
-				}
-			}
-		},
-		"node_modules/react-router-dom": {
-			"version": "7.6.0",
-			"resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.6.0.tgz",
-			"integrity": "sha512-DYgm6RDEuKdopSyGOWZGtDfSm7Aofb8CCzgkliTjtu/eDuB0gcsv6qdFhhi8HdtmA+KHkt5MfZ5K2PdzjugYsA==",
-			"license": "MIT",
-			"dependencies": {
-				"react-router": "7.6.0"
-			},
-			"engines": {
-				"node": ">=20.0.0"
-			},
-			"peerDependencies": {
-				"react": ">=18",
-				"react-dom": ">=18"
-			}
-		},
-		"node_modules/react-toastify": {
-			"version": "11.0.5",
-			"resolved": "https://registry.npmjs.org/react-toastify/-/react-toastify-11.0.5.tgz",
-			"integrity": "sha512-EpqHBGvnSTtHYhCPLxML05NLY2ZX0JURbAdNYa6BUkk+amz4wbKBQvoKQAB0ardvSarUBuY4Q4s1sluAzZwkmA==",
-			"license": "MIT",
-			"dependencies": {
-				"clsx": "^2.1.1"
-			},
-			"peerDependencies": {
-				"react": "^18 || ^19",
-				"react-dom": "^18 || ^19"
-			}
-		},
-		"node_modules/read-cache": {
-			"version": "1.0.0",
-			"resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
-			"integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"pify": "^2.3.0"
-			}
-		},
-		"node_modules/readdirp": {
-			"version": "3.6.0",
-			"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
-			"integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"picomatch": "^2.2.1"
-			},
-			"engines": {
-				"node": ">=8.10.0"
-			}
-		},
-		"node_modules/resolve": {
-			"version": "1.22.10",
-			"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz",
-			"integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"is-core-module": "^2.16.0",
-				"path-parse": "^1.0.7",
-				"supports-preserve-symlinks-flag": "^1.0.0"
-			},
-			"bin": {
-				"resolve": "bin/resolve"
-			},
-			"engines": {
-				"node": ">= 0.4"
-			},
-			"funding": {
-				"url": "https://github.com/sponsors/ljharb"
-			}
-		},
-		"node_modules/resolve-from": {
-			"version": "4.0.0",
-			"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
-			"integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
-			"dev": true,
-			"license": "MIT",
-			"engines": {
-				"node": ">=4"
-			}
-		},
-		"node_modules/reusify": {
-			"version": "1.1.0",
-			"resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz",
-			"integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==",
-			"dev": true,
-			"license": "MIT",
-			"engines": {
-				"iojs": ">=1.0.0",
-				"node": ">=0.10.0"
-			}
-		},
-		"node_modules/rollup": {
-			"version": "4.40.0",
-			"resolved": "https://registry.npmjs.org/rollup/-/rollup-4.40.0.tgz",
-			"integrity": "sha512-Noe455xmA96nnqH5piFtLobsGbCij7Tu+tb3c1vYjNbTkfzGqXqQXG3wJaYXkRZuQ0vEYN4bhwg7QnIrqB5B+w==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"@types/estree": "1.0.7"
-			},
-			"bin": {
-				"rollup": "dist/bin/rollup"
-			},
-			"engines": {
-				"node": ">=18.0.0",
-				"npm": ">=8.0.0"
-			},
-			"optionalDependencies": {
-				"@rollup/rollup-android-arm-eabi": "4.40.0",
-				"@rollup/rollup-android-arm64": "4.40.0",
-				"@rollup/rollup-darwin-arm64": "4.40.0",
-				"@rollup/rollup-darwin-x64": "4.40.0",
-				"@rollup/rollup-freebsd-arm64": "4.40.0",
-				"@rollup/rollup-freebsd-x64": "4.40.0",
-				"@rollup/rollup-linux-arm-gnueabihf": "4.40.0",
-				"@rollup/rollup-linux-arm-musleabihf": "4.40.0",
-				"@rollup/rollup-linux-arm64-gnu": "4.40.0",
-				"@rollup/rollup-linux-arm64-musl": "4.40.0",
-				"@rollup/rollup-linux-loongarch64-gnu": "4.40.0",
-				"@rollup/rollup-linux-powerpc64le-gnu": "4.40.0",
-				"@rollup/rollup-linux-riscv64-gnu": "4.40.0",
-				"@rollup/rollup-linux-riscv64-musl": "4.40.0",
-				"@rollup/rollup-linux-s390x-gnu": "4.40.0",
-				"@rollup/rollup-linux-x64-gnu": "4.40.0",
-				"@rollup/rollup-linux-x64-musl": "4.40.0",
-				"@rollup/rollup-win32-arm64-msvc": "4.40.0",
-				"@rollup/rollup-win32-ia32-msvc": "4.40.0",
-				"@rollup/rollup-win32-x64-msvc": "4.40.0",
-				"fsevents": "~2.3.2"
-			}
-		},
-		"node_modules/run-parallel": {
-			"version": "1.2.0",
-			"resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
-			"integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
-			"dev": true,
-			"funding": [
-				{
-					"type": "github",
-					"url": "https://github.com/sponsors/feross"
-				},
-				{
-					"type": "patreon",
-					"url": "https://www.patreon.com/feross"
-				},
-				{
-					"type": "consulting",
-					"url": "https://feross.org/support"
-				}
-			],
-			"license": "MIT",
-			"dependencies": {
-				"queue-microtask": "^1.2.2"
-			}
-		},
-		"node_modules/scheduler": {
-			"version": "0.26.0",
-			"resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz",
-			"integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==",
-			"license": "MIT"
-		},
-		"node_modules/semver": {
-			"version": "6.3.1",
-			"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
-			"integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
-			"dev": true,
-			"license": "ISC",
-			"bin": {
-				"semver": "bin/semver.js"
-			}
-		},
-		"node_modules/set-cookie-parser": {
-			"version": "2.7.1",
-			"resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz",
-			"integrity": "sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==",
-			"license": "MIT"
-		},
-		"node_modules/shebang-command": {
-			"version": "2.0.0",
-			"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
-			"integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"shebang-regex": "^3.0.0"
-			},
-			"engines": {
-				"node": ">=8"
-			}
-		},
-		"node_modules/shebang-regex": {
-			"version": "3.0.0",
-			"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
-			"integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
-			"dev": true,
-			"license": "MIT",
-			"engines": {
-				"node": ">=8"
-			}
-		},
-		"node_modules/signal-exit": {
-			"version": "4.1.0",
-			"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
-			"integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
-			"dev": true,
-			"license": "ISC",
-			"engines": {
-				"node": ">=14"
-			},
-			"funding": {
-				"url": "https://github.com/sponsors/isaacs"
-			}
-		},
-		"node_modules/source-map-js": {
-			"version": "1.2.1",
-			"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
-			"integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
-			"dev": true,
-			"license": "BSD-3-Clause",
-			"engines": {
-				"node": ">=0.10.0"
-			}
-		},
-		"node_modules/string-width": {
-			"version": "5.1.2",
-			"resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
-			"integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"eastasianwidth": "^0.2.0",
-				"emoji-regex": "^9.2.2",
-				"strip-ansi": "^7.0.1"
-			},
-			"engines": {
-				"node": ">=12"
-			},
-			"funding": {
-				"url": "https://github.com/sponsors/sindresorhus"
-			}
-		},
-		"node_modules/string-width-cjs": {
-			"name": "string-width",
-			"version": "4.2.3",
-			"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
-			"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"emoji-regex": "^8.0.0",
-				"is-fullwidth-code-point": "^3.0.0",
-				"strip-ansi": "^6.0.1"
-			},
-			"engines": {
-				"node": ">=8"
-			}
-		},
-		"node_modules/string-width-cjs/node_modules/ansi-regex": {
-			"version": "5.0.1",
-			"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
-			"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
-			"dev": true,
-			"license": "MIT",
-			"engines": {
-				"node": ">=8"
-			}
-		},
-		"node_modules/string-width-cjs/node_modules/emoji-regex": {
-			"version": "8.0.0",
-			"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
-			"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
-			"dev": true,
-			"license": "MIT"
-		},
-		"node_modules/string-width-cjs/node_modules/strip-ansi": {
-			"version": "6.0.1",
-			"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
-			"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"ansi-regex": "^5.0.1"
-			},
-			"engines": {
-				"node": ">=8"
-			}
-		},
-		"node_modules/strip-ansi": {
-			"version": "7.1.0",
-			"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
-			"integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"ansi-regex": "^6.0.1"
-			},
-			"engines": {
-				"node": ">=12"
-			},
-			"funding": {
-				"url": "https://github.com/chalk/strip-ansi?sponsor=1"
-			}
-		},
-		"node_modules/strip-ansi-cjs": {
-			"name": "strip-ansi",
-			"version": "6.0.1",
-			"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
-			"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"ansi-regex": "^5.0.1"
-			},
-			"engines": {
-				"node": ">=8"
-			}
-		},
-		"node_modules/strip-ansi-cjs/node_modules/ansi-regex": {
-			"version": "5.0.1",
-			"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
-			"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
-			"dev": true,
-			"license": "MIT",
-			"engines": {
-				"node": ">=8"
-			}
-		},
-		"node_modules/strip-json-comments": {
-			"version": "3.1.1",
-			"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
-			"integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
-			"dev": true,
-			"license": "MIT",
-			"engines": {
-				"node": ">=8"
-			},
-			"funding": {
-				"url": "https://github.com/sponsors/sindresorhus"
-			}
-		},
-		"node_modules/sucrase": {
-			"version": "3.35.0",
-			"resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz",
-			"integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"@jridgewell/gen-mapping": "^0.3.2",
-				"commander": "^4.0.0",
-				"glob": "^10.3.10",
-				"lines-and-columns": "^1.1.6",
-				"mz": "^2.7.0",
-				"pirates": "^4.0.1",
-				"ts-interface-checker": "^0.1.9"
-			},
-			"bin": {
-				"sucrase": "bin/sucrase",
-				"sucrase-node": "bin/sucrase-node"
-			},
-			"engines": {
-				"node": ">=16 || 14 >=14.17"
-			}
-		},
-		"node_modules/supports-color": {
-			"version": "7.2.0",
-			"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
-			"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"has-flag": "^4.0.0"
-			},
-			"engines": {
-				"node": ">=8"
-			}
-		},
-		"node_modules/supports-preserve-symlinks-flag": {
-			"version": "1.0.0",
-			"resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
-			"integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
-			"dev": true,
-			"license": "MIT",
-			"engines": {
-				"node": ">= 0.4"
-			},
-			"funding": {
-				"url": "https://github.com/sponsors/ljharb"
-			}
-		},
-		"node_modules/tailwindcss": {
-			"version": "3.4.17",
-			"resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.17.tgz",
-			"integrity": "sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"@alloc/quick-lru": "^5.2.0",
-				"arg": "^5.0.2",
-				"chokidar": "^3.6.0",
-				"didyoumean": "^1.2.2",
-				"dlv": "^1.1.3",
-				"fast-glob": "^3.3.2",
-				"glob-parent": "^6.0.2",
-				"is-glob": "^4.0.3",
-				"jiti": "^1.21.6",
-				"lilconfig": "^3.1.3",
-				"micromatch": "^4.0.8",
-				"normalize-path": "^3.0.0",
-				"object-hash": "^3.0.0",
-				"picocolors": "^1.1.1",
-				"postcss": "^8.4.47",
-				"postcss-import": "^15.1.0",
-				"postcss-js": "^4.0.1",
-				"postcss-load-config": "^4.0.2",
-				"postcss-nested": "^6.2.0",
-				"postcss-selector-parser": "^6.1.2",
-				"resolve": "^1.22.8",
-				"sucrase": "^3.35.0"
-			},
-			"bin": {
-				"tailwind": "lib/cli.js",
-				"tailwindcss": "lib/cli.js"
-			},
-			"engines": {
-				"node": ">=14.0.0"
-			}
-		},
-		"node_modules/thenify": {
-			"version": "3.3.1",
-			"resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz",
-			"integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"any-promise": "^1.0.0"
-			}
-		},
-		"node_modules/thenify-all": {
-			"version": "1.6.0",
-			"resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz",
-			"integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"thenify": ">= 3.1.0 < 4"
-			},
-			"engines": {
-				"node": ">=0.8"
-			}
-		},
-		"node_modules/tinyglobby": {
-			"version": "0.2.13",
-			"resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.13.tgz",
-			"integrity": "sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"fdir": "^6.4.4",
-				"picomatch": "^4.0.2"
-			},
-			"engines": {
-				"node": ">=12.0.0"
-			},
-			"funding": {
-				"url": "https://github.com/sponsors/SuperchupuDev"
-			}
-		},
-		"node_modules/tinyglobby/node_modules/fdir": {
-			"version": "6.4.4",
-			"resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.4.tgz",
-			"integrity": "sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==",
-			"dev": true,
-			"license": "MIT",
-			"peerDependencies": {
-				"picomatch": "^3 || ^4"
-			},
-			"peerDependenciesMeta": {
-				"picomatch": {
-					"optional": true
-				}
-			}
-		},
-		"node_modules/tinyglobby/node_modules/picomatch": {
-			"version": "4.0.2",
-			"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
-			"integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
-			"dev": true,
-			"license": "MIT",
-			"engines": {
-				"node": ">=12"
-			},
-			"funding": {
-				"url": "https://github.com/sponsors/jonschlinkert"
-			}
-		},
-		"node_modules/to-regex-range": {
-			"version": "5.0.1",
-			"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
-			"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"is-number": "^7.0.0"
-			},
-			"engines": {
-				"node": ">=8.0"
-			}
-		},
-		"node_modules/ts-api-utils": {
-			"version": "2.1.0",
-			"resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz",
-			"integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==",
-			"dev": true,
-			"license": "MIT",
-			"engines": {
-				"node": ">=18.12"
-			},
-			"peerDependencies": {
-				"typescript": ">=4.8.4"
-			}
-		},
-		"node_modules/ts-interface-checker": {
-			"version": "0.1.13",
-			"resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz",
-			"integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==",
-			"dev": true,
-			"license": "Apache-2.0"
-		},
-		"node_modules/type-check": {
-			"version": "0.4.0",
-			"resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
-			"integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"prelude-ls": "^1.2.1"
-			},
-			"engines": {
-				"node": ">= 0.8.0"
-			}
-		},
-		"node_modules/typescript": {
-			"version": "5.7.3",
-			"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz",
-			"integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==",
-			"dev": true,
-			"license": "Apache-2.0",
-			"bin": {
-				"tsc": "bin/tsc",
-				"tsserver": "bin/tsserver"
-			},
-			"engines": {
-				"node": ">=14.17"
-			}
-		},
-		"node_modules/typescript-eslint": {
-			"version": "8.30.1",
-			"resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.30.1.tgz",
-			"integrity": "sha512-D7lC0kcehVH7Mb26MRQi64LMyRJsj3dToJxM1+JVTl53DQSV5/7oUGWQLcKl1C1KnoVHxMMU2FNQMffr7F3Row==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"@typescript-eslint/eslint-plugin": "8.30.1",
-				"@typescript-eslint/parser": "8.30.1",
-				"@typescript-eslint/utils": "8.30.1"
-			},
-			"engines": {
-				"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
-			},
-			"funding": {
-				"type": "opencollective",
-				"url": "https://opencollective.com/typescript-eslint"
-			},
-			"peerDependencies": {
-				"eslint": "^8.57.0 || ^9.0.0",
-				"typescript": ">=4.8.4 <5.9.0"
-			}
-		},
-		"node_modules/update-browserslist-db": {
-			"version": "1.1.3",
-			"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz",
-			"integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==",
-			"dev": true,
-			"funding": [
-				{
-					"type": "opencollective",
-					"url": "https://opencollective.com/browserslist"
-				},
-				{
-					"type": "tidelift",
-					"url": "https://tidelift.com/funding/github/npm/browserslist"
-				},
-				{
-					"type": "github",
-					"url": "https://github.com/sponsors/ai"
-				}
-			],
-			"license": "MIT",
-			"dependencies": {
-				"escalade": "^3.2.0",
-				"picocolors": "^1.1.1"
-			},
-			"bin": {
-				"update-browserslist-db": "cli.js"
-			},
-			"peerDependencies": {
-				"browserslist": ">= 4.21.0"
-			}
-		},
-		"node_modules/uri-js": {
-			"version": "4.4.1",
-			"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
-			"integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
-			"dev": true,
-			"license": "BSD-2-Clause",
-			"dependencies": {
-				"punycode": "^2.1.0"
-			}
-		},
-		"node_modules/util-deprecate": {
-			"version": "1.0.2",
-			"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
-			"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
-			"dev": true,
-			"license": "MIT"
-		},
-		"node_modules/vite": {
-			"version": "6.3.5",
-			"resolved": "https://registry.npmjs.org/vite/-/vite-6.3.5.tgz",
-			"integrity": "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"esbuild": "^0.25.0",
-				"fdir": "^6.4.4",
-				"picomatch": "^4.0.2",
-				"postcss": "^8.5.3",
-				"rollup": "^4.34.9",
-				"tinyglobby": "^0.2.13"
-			},
-			"bin": {
-				"vite": "bin/vite.js"
-			},
-			"engines": {
-				"node": "^18.0.0 || ^20.0.0 || >=22.0.0"
-			},
-			"funding": {
-				"url": "https://github.com/vitejs/vite?sponsor=1"
-			},
-			"optionalDependencies": {
-				"fsevents": "~2.3.3"
-			},
-			"peerDependencies": {
-				"@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0",
-				"jiti": ">=1.21.0",
-				"less": "*",
-				"lightningcss": "^1.21.0",
-				"sass": "*",
-				"sass-embedded": "*",
-				"stylus": "*",
-				"sugarss": "*",
-				"terser": "^5.16.0",
-				"tsx": "^4.8.1",
-				"yaml": "^2.4.2"
-			},
-			"peerDependenciesMeta": {
-				"@types/node": {
-					"optional": true
-				},
-				"jiti": {
-					"optional": true
-				},
-				"less": {
-					"optional": true
-				},
-				"lightningcss": {
-					"optional": true
-				},
-				"sass": {
-					"optional": true
-				},
-				"sass-embedded": {
-					"optional": true
-				},
-				"stylus": {
-					"optional": true
-				},
-				"sugarss": {
-					"optional": true
-				},
-				"terser": {
-					"optional": true
-				},
-				"tsx": {
-					"optional": true
-				},
-				"yaml": {
-					"optional": true
-				}
-			}
-		},
-		"node_modules/vite/node_modules/fdir": {
-			"version": "6.4.4",
-			"resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.4.tgz",
-			"integrity": "sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==",
-			"dev": true,
-			"license": "MIT",
-			"peerDependencies": {
-				"picomatch": "^3 || ^4"
-			},
-			"peerDependenciesMeta": {
-				"picomatch": {
-					"optional": true
-				}
-			}
-		},
-		"node_modules/vite/node_modules/picomatch": {
-			"version": "4.0.2",
-			"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
-			"integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
-			"dev": true,
-			"license": "MIT",
-			"engines": {
-				"node": ">=12"
-			},
-			"funding": {
-				"url": "https://github.com/sponsors/jonschlinkert"
-			}
-		},
-		"node_modules/which": {
-			"version": "2.0.2",
-			"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
-			"integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
-			"dev": true,
-			"license": "ISC",
-			"dependencies": {
-				"isexe": "^2.0.0"
-			},
-			"bin": {
-				"node-which": "bin/node-which"
-			},
-			"engines": {
-				"node": ">= 8"
-			}
-		},
-		"node_modules/word-wrap": {
-			"version": "1.2.5",
-			"resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
-			"integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==",
-			"dev": true,
-			"license": "MIT",
-			"engines": {
-				"node": ">=0.10.0"
-			}
-		},
-		"node_modules/wrap-ansi": {
-			"version": "8.1.0",
-			"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
-			"integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"ansi-styles": "^6.1.0",
-				"string-width": "^5.0.1",
-				"strip-ansi": "^7.0.1"
-			},
-			"engines": {
-				"node": ">=12"
-			},
-			"funding": {
-				"url": "https://github.com/chalk/wrap-ansi?sponsor=1"
-			}
-		},
-		"node_modules/wrap-ansi-cjs": {
-			"name": "wrap-ansi",
-			"version": "7.0.0",
-			"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
-			"integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"ansi-styles": "^4.0.0",
-				"string-width": "^4.1.0",
-				"strip-ansi": "^6.0.0"
-			},
-			"engines": {
-				"node": ">=10"
-			},
-			"funding": {
-				"url": "https://github.com/chalk/wrap-ansi?sponsor=1"
-			}
-		},
-		"node_modules/wrap-ansi-cjs/node_modules/ansi-regex": {
-			"version": "5.0.1",
-			"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
-			"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
-			"dev": true,
-			"license": "MIT",
-			"engines": {
-				"node": ">=8"
-			}
-		},
-		"node_modules/wrap-ansi-cjs/node_modules/emoji-regex": {
-			"version": "8.0.0",
-			"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
-			"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
-			"dev": true,
-			"license": "MIT"
-		},
-		"node_modules/wrap-ansi-cjs/node_modules/string-width": {
-			"version": "4.2.3",
-			"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
-			"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"emoji-regex": "^8.0.0",
-				"is-fullwidth-code-point": "^3.0.0",
-				"strip-ansi": "^6.0.1"
-			},
-			"engines": {
-				"node": ">=8"
-			}
-		},
-		"node_modules/wrap-ansi-cjs/node_modules/strip-ansi": {
-			"version": "6.0.1",
-			"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
-			"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"ansi-regex": "^5.0.1"
-			},
-			"engines": {
-				"node": ">=8"
-			}
-		},
-		"node_modules/wrap-ansi/node_modules/ansi-styles": {
-			"version": "6.2.1",
-			"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
-			"integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
-			"dev": true,
-			"license": "MIT",
-			"engines": {
-				"node": ">=12"
-			},
-			"funding": {
-				"url": "https://github.com/chalk/ansi-styles?sponsor=1"
-			}
-		},
-		"node_modules/yallist": {
-			"version": "3.1.1",
-			"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
-			"integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
-			"dev": true,
-			"license": "ISC"
-		},
-		"node_modules/yaml": {
-			"version": "2.7.1",
-			"resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.1.tgz",
-			"integrity": "sha512-10ULxpnOCQXxJvBgxsn9ptjq6uviG/htZKk9veJGhlqn3w/DxQ631zFF+nlQXLwmImeS5amR2dl2U8sg6U9jsQ==",
-			"dev": true,
-			"license": "ISC",
-			"bin": {
-				"yaml": "bin.mjs"
-			},
-			"engines": {
-				"node": ">= 14"
-			}
-		},
-		"node_modules/yocto-queue": {
-			"version": "0.1.0",
-			"resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
-			"integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
-			"dev": true,
-			"license": "MIT",
-			"engines": {
-				"node": ">=10"
-			},
-			"funding": {
-				"url": "https://github.com/sponsors/sindresorhus"
-			}
-		}
-	}
+  "name": "frontend",
+  "version": "0.0.0",
+  "lockfileVersion": 3,
+  "requires": true,
+  "packages": {
+    "": {
+      "name": "frontend",
+      "version": "0.0.0",
+      "dependencies": {
+        "react": "^19.0.0",
+        "react-dom": "^19.0.0"
+      },
+      "devDependencies": {
+        "@eslint/js": "^9.22.0",
+        "@types/react": "^19.0.10",
+        "@types/react-dom": "^19.0.4",
+        "@vitejs/plugin-react": "^4.3.4",
+        "eslint": "^9.22.0",
+        "eslint-plugin-react-hooks": "^5.2.0",
+        "eslint-plugin-react-refresh": "^0.4.19",
+        "globals": "^16.0.0",
+        "typescript": "~5.7.2",
+        "typescript-eslint": "^8.26.1",
+        "vite": "^6.3.0"
+      }
+    },
+    "node_modules/@ampproject/remapping": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz",
+      "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==",
+      "dev": true,
+      "license": "Apache-2.0",
+      "dependencies": {
+        "@jridgewell/gen-mapping": "^0.3.5",
+        "@jridgewell/trace-mapping": "^0.3.24"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/@babel/code-frame": {
+      "version": "7.26.2",
+      "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz",
+      "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-validator-identifier": "^7.25.9",
+        "js-tokens": "^4.0.0",
+        "picocolors": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/compat-data": {
+      "version": "7.26.8",
+      "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.8.tgz",
+      "integrity": "sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/core": {
+      "version": "7.26.10",
+      "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.10.tgz",
+      "integrity": "sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@ampproject/remapping": "^2.2.0",
+        "@babel/code-frame": "^7.26.2",
+        "@babel/generator": "^7.26.10",
+        "@babel/helper-compilation-targets": "^7.26.5",
+        "@babel/helper-module-transforms": "^7.26.0",
+        "@babel/helpers": "^7.26.10",
+        "@babel/parser": "^7.26.10",
+        "@babel/template": "^7.26.9",
+        "@babel/traverse": "^7.26.10",
+        "@babel/types": "^7.26.10",
+        "convert-source-map": "^2.0.0",
+        "debug": "^4.1.0",
+        "gensync": "^1.0.0-beta.2",
+        "json5": "^2.2.3",
+        "semver": "^6.3.1"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/babel"
+      }
+    },
+    "node_modules/@babel/generator": {
+      "version": "7.27.0",
+      "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.0.tgz",
+      "integrity": "sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/parser": "^7.27.0",
+        "@babel/types": "^7.27.0",
+        "@jridgewell/gen-mapping": "^0.3.5",
+        "@jridgewell/trace-mapping": "^0.3.25",
+        "jsesc": "^3.0.2"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-compilation-targets": {
+      "version": "7.27.0",
+      "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.0.tgz",
+      "integrity": "sha512-LVk7fbXml0H2xH34dFzKQ7TDZ2G4/rVTOrq9V+icbbadjbVxxeFeDsNHv2SrZeWoA+6ZiTyWYWtScEIW07EAcA==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/compat-data": "^7.26.8",
+        "@babel/helper-validator-option": "^7.25.9",
+        "browserslist": "^4.24.0",
+        "lru-cache": "^5.1.1",
+        "semver": "^6.3.1"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-module-imports": {
+      "version": "7.25.9",
+      "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz",
+      "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/traverse": "^7.25.9",
+        "@babel/types": "^7.25.9"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-module-transforms": {
+      "version": "7.26.0",
+      "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz",
+      "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-module-imports": "^7.25.9",
+        "@babel/helper-validator-identifier": "^7.25.9",
+        "@babel/traverse": "^7.25.9"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0"
+      }
+    },
+    "node_modules/@babel/helper-plugin-utils": {
+      "version": "7.26.5",
+      "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz",
+      "integrity": "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-string-parser": {
+      "version": "7.25.9",
+      "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz",
+      "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-validator-identifier": {
+      "version": "7.25.9",
+      "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz",
+      "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-validator-option": {
+      "version": "7.25.9",
+      "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz",
+      "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helpers": {
+      "version": "7.27.0",
+      "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.0.tgz",
+      "integrity": "sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/template": "^7.27.0",
+        "@babel/types": "^7.27.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/parser": {
+      "version": "7.27.0",
+      "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.0.tgz",
+      "integrity": "sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/types": "^7.27.0"
+      },
+      "bin": {
+        "parser": "bin/babel-parser.js"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-react-jsx-self": {
+      "version": "7.25.9",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.25.9.tgz",
+      "integrity": "sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.25.9"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-react-jsx-source": {
+      "version": "7.25.9",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.25.9.tgz",
+      "integrity": "sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.25.9"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/template": {
+      "version": "7.27.0",
+      "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.0.tgz",
+      "integrity": "sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/code-frame": "^7.26.2",
+        "@babel/parser": "^7.27.0",
+        "@babel/types": "^7.27.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/traverse": {
+      "version": "7.27.0",
+      "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.0.tgz",
+      "integrity": "sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/code-frame": "^7.26.2",
+        "@babel/generator": "^7.27.0",
+        "@babel/parser": "^7.27.0",
+        "@babel/template": "^7.27.0",
+        "@babel/types": "^7.27.0",
+        "debug": "^4.3.1",
+        "globals": "^11.1.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/traverse/node_modules/globals": {
+      "version": "11.12.0",
+      "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
+      "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/@babel/types": {
+      "version": "7.27.0",
+      "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.0.tgz",
+      "integrity": "sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-string-parser": "^7.25.9",
+        "@babel/helper-validator-identifier": "^7.25.9"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@esbuild/aix-ppc64": {
+      "version": "0.25.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.2.tgz",
+      "integrity": "sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag==",
+      "cpu": [
+        "ppc64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "aix"
+      ],
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@esbuild/android-arm": {
+      "version": "0.25.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.2.tgz",
+      "integrity": "sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA==",
+      "cpu": [
+        "arm"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "android"
+      ],
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@esbuild/android-arm64": {
+      "version": "0.25.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.2.tgz",
+      "integrity": "sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "android"
+      ],
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@esbuild/android-x64": {
+      "version": "0.25.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.2.tgz",
+      "integrity": "sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "android"
+      ],
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@esbuild/darwin-arm64": {
+      "version": "0.25.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.2.tgz",
+      "integrity": "sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "darwin"
+      ],
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@esbuild/darwin-x64": {
+      "version": "0.25.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.2.tgz",
+      "integrity": "sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "darwin"
+      ],
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@esbuild/freebsd-arm64": {
+      "version": "0.25.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.2.tgz",
+      "integrity": "sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "freebsd"
+      ],
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@esbuild/freebsd-x64": {
+      "version": "0.25.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.2.tgz",
+      "integrity": "sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "freebsd"
+      ],
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@esbuild/linux-arm": {
+      "version": "0.25.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.2.tgz",
+      "integrity": "sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g==",
+      "cpu": [
+        "arm"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@esbuild/linux-arm64": {
+      "version": "0.25.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.2.tgz",
+      "integrity": "sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@esbuild/linux-ia32": {
+      "version": "0.25.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.2.tgz",
+      "integrity": "sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ==",
+      "cpu": [
+        "ia32"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@esbuild/linux-loong64": {
+      "version": "0.25.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.2.tgz",
+      "integrity": "sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w==",
+      "cpu": [
+        "loong64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@esbuild/linux-mips64el": {
+      "version": "0.25.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.2.tgz",
+      "integrity": "sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q==",
+      "cpu": [
+        "mips64el"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@esbuild/linux-ppc64": {
+      "version": "0.25.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.2.tgz",
+      "integrity": "sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g==",
+      "cpu": [
+        "ppc64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@esbuild/linux-riscv64": {
+      "version": "0.25.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.2.tgz",
+      "integrity": "sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw==",
+      "cpu": [
+        "riscv64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@esbuild/linux-s390x": {
+      "version": "0.25.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.2.tgz",
+      "integrity": "sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q==",
+      "cpu": [
+        "s390x"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@esbuild/linux-x64": {
+      "version": "0.25.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.2.tgz",
+      "integrity": "sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@esbuild/netbsd-arm64": {
+      "version": "0.25.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.2.tgz",
+      "integrity": "sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "netbsd"
+      ],
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@esbuild/netbsd-x64": {
+      "version": "0.25.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.2.tgz",
+      "integrity": "sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "netbsd"
+      ],
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@esbuild/openbsd-arm64": {
+      "version": "0.25.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.2.tgz",
+      "integrity": "sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "openbsd"
+      ],
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@esbuild/openbsd-x64": {
+      "version": "0.25.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.2.tgz",
+      "integrity": "sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "openbsd"
+      ],
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@esbuild/sunos-x64": {
+      "version": "0.25.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.2.tgz",
+      "integrity": "sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "sunos"
+      ],
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@esbuild/win32-arm64": {
+      "version": "0.25.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.2.tgz",
+      "integrity": "sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "win32"
+      ],
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@esbuild/win32-ia32": {
+      "version": "0.25.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.2.tgz",
+      "integrity": "sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg==",
+      "cpu": [
+        "ia32"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "win32"
+      ],
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@esbuild/win32-x64": {
+      "version": "0.25.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.2.tgz",
+      "integrity": "sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "win32"
+      ],
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@eslint-community/eslint-utils": {
+      "version": "4.6.0",
+      "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.6.0.tgz",
+      "integrity": "sha512-WhCn7Z7TauhBtmzhvKpoQs0Wwb/kBcy4CwpuI0/eEIr2Lx2auxmulAzLr91wVZJaz47iUZdkXOK7WlAfxGKCnA==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "eslint-visitor-keys": "^3.4.3"
+      },
+      "engines": {
+        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/eslint"
+      },
+      "peerDependencies": {
+        "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
+      }
+    },
+    "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": {
+      "version": "3.4.3",
+      "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
+      "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
+      "dev": true,
+      "license": "Apache-2.0",
+      "engines": {
+        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/eslint"
+      }
+    },
+    "node_modules/@eslint-community/regexpp": {
+      "version": "4.12.1",
+      "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz",
+      "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
+      }
+    },
+    "node_modules/@eslint/config-array": {
+      "version": "0.20.0",
+      "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.20.0.tgz",
+      "integrity": "sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==",
+      "dev": true,
+      "license": "Apache-2.0",
+      "dependencies": {
+        "@eslint/object-schema": "^2.1.6",
+        "debug": "^4.3.1",
+        "minimatch": "^3.1.2"
+      },
+      "engines": {
+        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+      }
+    },
+    "node_modules/@eslint/config-helpers": {
+      "version": "0.2.1",
+      "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.1.tgz",
+      "integrity": "sha512-RI17tsD2frtDu/3dmI7QRrD4bedNKPM08ziRYaC5AhkGrzIAJelm9kJU1TznK+apx6V+cqRz8tfpEeG3oIyjxw==",
+      "dev": true,
+      "license": "Apache-2.0",
+      "engines": {
+        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+      }
+    },
+    "node_modules/@eslint/core": {
+      "version": "0.12.0",
+      "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.12.0.tgz",
+      "integrity": "sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==",
+      "dev": true,
+      "license": "Apache-2.0",
+      "dependencies": {
+        "@types/json-schema": "^7.0.15"
+      },
+      "engines": {
+        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+      }
+    },
+    "node_modules/@eslint/eslintrc": {
+      "version": "3.3.1",
+      "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz",
+      "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ajv": "^6.12.4",
+        "debug": "^4.3.2",
+        "espree": "^10.0.1",
+        "globals": "^14.0.0",
+        "ignore": "^5.2.0",
+        "import-fresh": "^3.2.1",
+        "js-yaml": "^4.1.0",
+        "minimatch": "^3.1.2",
+        "strip-json-comments": "^3.1.1"
+      },
+      "engines": {
+        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/eslint"
+      }
+    },
+    "node_modules/@eslint/eslintrc/node_modules/globals": {
+      "version": "14.0.0",
+      "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz",
+      "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=18"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/@eslint/js": {
+      "version": "9.24.0",
+      "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.24.0.tgz",
+      "integrity": "sha512-uIY/y3z0uvOGX8cp1C2fiC4+ZmBhp6yZWkojtHL1YEMnRt1Y63HB9TM17proGEmeG7HeUY+UP36F0aknKYTpYA==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+      }
+    },
+    "node_modules/@eslint/object-schema": {
+      "version": "2.1.6",
+      "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz",
+      "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==",
+      "dev": true,
+      "license": "Apache-2.0",
+      "engines": {
+        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+      }
+    },
+    "node_modules/@eslint/plugin-kit": {
+      "version": "0.2.8",
+      "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.8.tgz",
+      "integrity": "sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA==",
+      "dev": true,
+      "license": "Apache-2.0",
+      "dependencies": {
+        "@eslint/core": "^0.13.0",
+        "levn": "^0.4.1"
+      },
+      "engines": {
+        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+      }
+    },
+    "node_modules/@eslint/plugin-kit/node_modules/@eslint/core": {
+      "version": "0.13.0",
+      "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.13.0.tgz",
+      "integrity": "sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==",
+      "dev": true,
+      "license": "Apache-2.0",
+      "dependencies": {
+        "@types/json-schema": "^7.0.15"
+      },
+      "engines": {
+        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+      }
+    },
+    "node_modules/@humanfs/core": {
+      "version": "0.19.1",
+      "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz",
+      "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==",
+      "dev": true,
+      "license": "Apache-2.0",
+      "engines": {
+        "node": ">=18.18.0"
+      }
+    },
+    "node_modules/@humanfs/node": {
+      "version": "0.16.6",
+      "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz",
+      "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==",
+      "dev": true,
+      "license": "Apache-2.0",
+      "dependencies": {
+        "@humanfs/core": "^0.19.1",
+        "@humanwhocodes/retry": "^0.3.0"
+      },
+      "engines": {
+        "node": ">=18.18.0"
+      }
+    },
+    "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": {
+      "version": "0.3.1",
+      "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz",
+      "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==",
+      "dev": true,
+      "license": "Apache-2.0",
+      "engines": {
+        "node": ">=18.18"
+      },
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/nzakas"
+      }
+    },
+    "node_modules/@humanwhocodes/module-importer": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
+      "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
+      "dev": true,
+      "license": "Apache-2.0",
+      "engines": {
+        "node": ">=12.22"
+      },
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/nzakas"
+      }
+    },
+    "node_modules/@humanwhocodes/retry": {
+      "version": "0.4.2",
+      "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.2.tgz",
+      "integrity": "sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==",
+      "dev": true,
+      "license": "Apache-2.0",
+      "engines": {
+        "node": ">=18.18"
+      },
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/nzakas"
+      }
+    },
+    "node_modules/@jridgewell/gen-mapping": {
+      "version": "0.3.8",
+      "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz",
+      "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@jridgewell/set-array": "^1.2.1",
+        "@jridgewell/sourcemap-codec": "^1.4.10",
+        "@jridgewell/trace-mapping": "^0.3.24"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/@jridgewell/resolve-uri": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
+      "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/@jridgewell/set-array": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
+      "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/@jridgewell/sourcemap-codec": {
+      "version": "1.5.0",
+      "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
+      "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/@jridgewell/trace-mapping": {
+      "version": "0.3.25",
+      "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
+      "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@jridgewell/resolve-uri": "^3.1.0",
+        "@jridgewell/sourcemap-codec": "^1.4.14"
+      }
+    },
+    "node_modules/@nodelib/fs.scandir": {
+      "version": "2.1.5",
+      "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+      "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@nodelib/fs.stat": "2.0.5",
+        "run-parallel": "^1.1.9"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/@nodelib/fs.stat": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+      "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/@nodelib/fs.walk": {
+      "version": "1.2.8",
+      "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+      "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@nodelib/fs.scandir": "2.1.5",
+        "fastq": "^1.6.0"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/@rollup/rollup-android-arm-eabi": {
+      "version": "4.40.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.40.0.tgz",
+      "integrity": "sha512-+Fbls/diZ0RDerhE8kyC6hjADCXA1K4yVNlH0EYfd2XjyH0UGgzaQ8MlT0pCXAThfxv3QUAczHaL+qSv1E4/Cg==",
+      "cpu": [
+        "arm"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "android"
+      ]
+    },
+    "node_modules/@rollup/rollup-android-arm64": {
+      "version": "4.40.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.40.0.tgz",
+      "integrity": "sha512-PPA6aEEsTPRz+/4xxAmaoWDqh67N7wFbgFUJGMnanCFs0TV99M0M8QhhaSCks+n6EbQoFvLQgYOGXxlMGQe/6w==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "android"
+      ]
+    },
+    "node_modules/@rollup/rollup-darwin-arm64": {
+      "version": "4.40.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.40.0.tgz",
+      "integrity": "sha512-GwYOcOakYHdfnjjKwqpTGgn5a6cUX7+Ra2HeNj/GdXvO2VJOOXCiYYlRFU4CubFM67EhbmzLOmACKEfvp3J1kQ==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "darwin"
+      ]
+    },
+    "node_modules/@rollup/rollup-darwin-x64": {
+      "version": "4.40.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.40.0.tgz",
+      "integrity": "sha512-CoLEGJ+2eheqD9KBSxmma6ld01czS52Iw0e2qMZNpPDlf7Z9mj8xmMemxEucinev4LgHalDPczMyxzbq+Q+EtA==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "darwin"
+      ]
+    },
+    "node_modules/@rollup/rollup-freebsd-arm64": {
+      "version": "4.40.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.40.0.tgz",
+      "integrity": "sha512-r7yGiS4HN/kibvESzmrOB/PxKMhPTlz+FcGvoUIKYoTyGd5toHp48g1uZy1o1xQvybwwpqpe010JrcGG2s5nkg==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "freebsd"
+      ]
+    },
+    "node_modules/@rollup/rollup-freebsd-x64": {
+      "version": "4.40.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.40.0.tgz",
+      "integrity": "sha512-mVDxzlf0oLzV3oZOr0SMJ0lSDd3xC4CmnWJ8Val8isp9jRGl5Dq//LLDSPFrasS7pSm6m5xAcKaw3sHXhBjoRw==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "freebsd"
+      ]
+    },
+    "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
+      "version": "4.40.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.40.0.tgz",
+      "integrity": "sha512-y/qUMOpJxBMy8xCXD++jeu8t7kzjlOCkoxxajL58G62PJGBZVl/Gwpm7JK9+YvlB701rcQTzjUZ1JgUoPTnoQA==",
+      "cpu": [
+        "arm"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "linux"
+      ]
+    },
+    "node_modules/@rollup/rollup-linux-arm-musleabihf": {
+      "version": "4.40.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.40.0.tgz",
+      "integrity": "sha512-GoCsPibtVdJFPv/BOIvBKO/XmwZLwaNWdyD8TKlXuqp0veo2sHE+A/vpMQ5iSArRUz/uaoj4h5S6Pn0+PdhRjg==",
+      "cpu": [
+        "arm"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "linux"
+      ]
+    },
+    "node_modules/@rollup/rollup-linux-arm64-gnu": {
+      "version": "4.40.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.40.0.tgz",
+      "integrity": "sha512-L5ZLphTjjAD9leJzSLI7rr8fNqJMlGDKlazW2tX4IUF9P7R5TMQPElpH82Q7eNIDQnQlAyiNVfRPfP2vM5Avvg==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "linux"
+      ]
+    },
+    "node_modules/@rollup/rollup-linux-arm64-musl": {
+      "version": "4.40.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.40.0.tgz",
+      "integrity": "sha512-ATZvCRGCDtv1Y4gpDIXsS+wfFeFuLwVxyUBSLawjgXK2tRE6fnsQEkE4csQQYWlBlsFztRzCnBvWVfcae/1qxQ==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "linux"
+      ]
+    },
+    "node_modules/@rollup/rollup-linux-loongarch64-gnu": {
+      "version": "4.40.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.40.0.tgz",
+      "integrity": "sha512-wG9e2XtIhd++QugU5MD9i7OnpaVb08ji3P1y/hNbxrQ3sYEelKJOq1UJ5dXczeo6Hj2rfDEL5GdtkMSVLa/AOg==",
+      "cpu": [
+        "loong64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "linux"
+      ]
+    },
+    "node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
+      "version": "4.40.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.40.0.tgz",
+      "integrity": "sha512-vgXfWmj0f3jAUvC7TZSU/m/cOE558ILWDzS7jBhiCAFpY2WEBn5jqgbqvmzlMjtp8KlLcBlXVD2mkTSEQE6Ixw==",
+      "cpu": [
+        "ppc64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "linux"
+      ]
+    },
+    "node_modules/@rollup/rollup-linux-riscv64-gnu": {
+      "version": "4.40.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.40.0.tgz",
+      "integrity": "sha512-uJkYTugqtPZBS3Z136arevt/FsKTF/J9dEMTX/cwR7lsAW4bShzI2R0pJVw+hcBTWF4dxVckYh72Hk3/hWNKvA==",
+      "cpu": [
+        "riscv64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "linux"
+      ]
+    },
+    "node_modules/@rollup/rollup-linux-riscv64-musl": {
+      "version": "4.40.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.40.0.tgz",
+      "integrity": "sha512-rKmSj6EXQRnhSkE22+WvrqOqRtk733x3p5sWpZilhmjnkHkpeCgWsFFo0dGnUGeA+OZjRl3+VYq+HyCOEuwcxQ==",
+      "cpu": [
+        "riscv64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "linux"
+      ]
+    },
+    "node_modules/@rollup/rollup-linux-s390x-gnu": {
+      "version": "4.40.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.40.0.tgz",
+      "integrity": "sha512-SpnYlAfKPOoVsQqmTFJ0usx0z84bzGOS9anAC0AZ3rdSo3snecihbhFTlJZ8XMwzqAcodjFU4+/SM311dqE5Sw==",
+      "cpu": [
+        "s390x"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "linux"
+      ]
+    },
+    "node_modules/@rollup/rollup-linux-x64-gnu": {
+      "version": "4.40.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.40.0.tgz",
+      "integrity": "sha512-RcDGMtqF9EFN8i2RYN2W+64CdHruJ5rPqrlYw+cgM3uOVPSsnAQps7cpjXe9be/yDp8UC7VLoCoKC8J3Kn2FkQ==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "linux"
+      ]
+    },
+    "node_modules/@rollup/rollup-linux-x64-musl": {
+      "version": "4.40.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.40.0.tgz",
+      "integrity": "sha512-HZvjpiUmSNx5zFgwtQAV1GaGazT2RWvqeDi0hV+AtC8unqqDSsaFjPxfsO6qPtKRRg25SisACWnJ37Yio8ttaw==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "linux"
+      ]
+    },
+    "node_modules/@rollup/rollup-win32-arm64-msvc": {
+      "version": "4.40.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.40.0.tgz",
+      "integrity": "sha512-UtZQQI5k/b8d7d3i9AZmA/t+Q4tk3hOC0tMOMSq2GlMYOfxbesxG4mJSeDp0EHs30N9bsfwUvs3zF4v/RzOeTQ==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "win32"
+      ]
+    },
+    "node_modules/@rollup/rollup-win32-ia32-msvc": {
+      "version": "4.40.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.40.0.tgz",
+      "integrity": "sha512-+m03kvI2f5syIqHXCZLPVYplP8pQch9JHyXKZ3AGMKlg8dCyr2PKHjwRLiW53LTrN/Nc3EqHOKxUxzoSPdKddA==",
+      "cpu": [
+        "ia32"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "win32"
+      ]
+    },
+    "node_modules/@rollup/rollup-win32-x64-msvc": {
+      "version": "4.40.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.40.0.tgz",
+      "integrity": "sha512-lpPE1cLfP5oPzVjKMx10pgBmKELQnFJXHgvtHCtuJWOv8MxqdEIMNtgHgBFf7Ea2/7EuVwa9fodWUfXAlXZLZQ==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "win32"
+      ]
+    },
+    "node_modules/@types/babel__core": {
+      "version": "7.20.5",
+      "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz",
+      "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/parser": "^7.20.7",
+        "@babel/types": "^7.20.7",
+        "@types/babel__generator": "*",
+        "@types/babel__template": "*",
+        "@types/babel__traverse": "*"
+      }
+    },
+    "node_modules/@types/babel__generator": {
+      "version": "7.27.0",
+      "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz",
+      "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/types": "^7.0.0"
+      }
+    },
+    "node_modules/@types/babel__template": {
+      "version": "7.4.4",
+      "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz",
+      "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/parser": "^7.1.0",
+        "@babel/types": "^7.0.0"
+      }
+    },
+    "node_modules/@types/babel__traverse": {
+      "version": "7.20.7",
+      "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.7.tgz",
+      "integrity": "sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/types": "^7.20.7"
+      }
+    },
+    "node_modules/@types/estree": {
+      "version": "1.0.7",
+      "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz",
+      "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/@types/json-schema": {
+      "version": "7.0.15",
+      "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
+      "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/@types/react": {
+      "version": "19.1.2",
+      "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.2.tgz",
+      "integrity": "sha512-oxLPMytKchWGbnQM9O7D67uPa9paTNxO7jVoNMXgkkErULBPhPARCfkKL9ytcIJJRGjbsVwW4ugJzyFFvm/Tiw==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "csstype": "^3.0.2"
+      }
+    },
+    "node_modules/@types/react-dom": {
+      "version": "19.1.2",
+      "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.1.2.tgz",
+      "integrity": "sha512-XGJkWF41Qq305SKWEILa1O8vzhb3aOo3ogBlSmiqNko/WmRb6QIaweuZCXjKygVDXpzXb5wyxKTSOsmkuqj+Qw==",
+      "dev": true,
+      "license": "MIT",
+      "peerDependencies": {
+        "@types/react": "^19.0.0"
+      }
+    },
+    "node_modules/@typescript-eslint/eslint-plugin": {
+      "version": "8.30.1",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.30.1.tgz",
+      "integrity": "sha512-v+VWphxMjn+1t48/jO4t950D6KR8JaJuNXzi33Ve6P8sEmPr5k6CEXjdGwT6+LodVnEa91EQCtwjWNUCPweo+Q==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@eslint-community/regexpp": "^4.10.0",
+        "@typescript-eslint/scope-manager": "8.30.1",
+        "@typescript-eslint/type-utils": "8.30.1",
+        "@typescript-eslint/utils": "8.30.1",
+        "@typescript-eslint/visitor-keys": "8.30.1",
+        "graphemer": "^1.4.0",
+        "ignore": "^5.3.1",
+        "natural-compare": "^1.4.0",
+        "ts-api-utils": "^2.0.1"
+      },
+      "engines": {
+        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/typescript-eslint"
+      },
+      "peerDependencies": {
+        "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0",
+        "eslint": "^8.57.0 || ^9.0.0",
+        "typescript": ">=4.8.4 <5.9.0"
+      }
+    },
+    "node_modules/@typescript-eslint/parser": {
+      "version": "8.30.1",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.30.1.tgz",
+      "integrity": "sha512-H+vqmWwT5xoNrXqWs/fesmssOW70gxFlgcMlYcBaWNPIEWDgLa4W9nkSPmhuOgLnXq9QYgkZ31fhDyLhleCsAg==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@typescript-eslint/scope-manager": "8.30.1",
+        "@typescript-eslint/types": "8.30.1",
+        "@typescript-eslint/typescript-estree": "8.30.1",
+        "@typescript-eslint/visitor-keys": "8.30.1",
+        "debug": "^4.3.4"
+      },
+      "engines": {
+        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/typescript-eslint"
+      },
+      "peerDependencies": {
+        "eslint": "^8.57.0 || ^9.0.0",
+        "typescript": ">=4.8.4 <5.9.0"
+      }
+    },
+    "node_modules/@typescript-eslint/scope-manager": {
+      "version": "8.30.1",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.30.1.tgz",
+      "integrity": "sha512-+C0B6ChFXZkuaNDl73FJxRYT0G7ufVPOSQkqkpM/U198wUwUFOtgo1k/QzFh1KjpBitaK7R1tgjVz6o9HmsRPg==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@typescript-eslint/types": "8.30.1",
+        "@typescript-eslint/visitor-keys": "8.30.1"
+      },
+      "engines": {
+        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/typescript-eslint"
+      }
+    },
+    "node_modules/@typescript-eslint/type-utils": {
+      "version": "8.30.1",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.30.1.tgz",
+      "integrity": "sha512-64uBF76bfQiJyHgZISC7vcNz3adqQKIccVoKubyQcOnNcdJBvYOILV1v22Qhsw3tw3VQu5ll8ND6hycgAR5fEA==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@typescript-eslint/typescript-estree": "8.30.1",
+        "@typescript-eslint/utils": "8.30.1",
+        "debug": "^4.3.4",
+        "ts-api-utils": "^2.0.1"
+      },
+      "engines": {
+        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/typescript-eslint"
+      },
+      "peerDependencies": {
+        "eslint": "^8.57.0 || ^9.0.0",
+        "typescript": ">=4.8.4 <5.9.0"
+      }
+    },
+    "node_modules/@typescript-eslint/types": {
+      "version": "8.30.1",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.30.1.tgz",
+      "integrity": "sha512-81KawPfkuulyWo5QdyG/LOKbspyyiW+p4vpn4bYO7DM/hZImlVnFwrpCTnmNMOt8CvLRr5ojI9nU1Ekpw4RcEw==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/typescript-eslint"
+      }
+    },
+    "node_modules/@typescript-eslint/typescript-estree": {
+      "version": "8.30.1",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.30.1.tgz",
+      "integrity": "sha512-kQQnxymiUy9tTb1F2uep9W6aBiYODgq5EMSk6Nxh4Z+BDUoYUSa029ISs5zTzKBFnexQEh71KqwjKnRz58lusQ==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@typescript-eslint/types": "8.30.1",
+        "@typescript-eslint/visitor-keys": "8.30.1",
+        "debug": "^4.3.4",
+        "fast-glob": "^3.3.2",
+        "is-glob": "^4.0.3",
+        "minimatch": "^9.0.4",
+        "semver": "^7.6.0",
+        "ts-api-utils": "^2.0.1"
+      },
+      "engines": {
+        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/typescript-eslint"
+      },
+      "peerDependencies": {
+        "typescript": ">=4.8.4 <5.9.0"
+      }
+    },
+    "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+      "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "balanced-match": "^1.0.0"
+      }
+    },
+    "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": {
+      "version": "9.0.5",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
+      "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "brace-expansion": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=16 || 14 >=14.17"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      }
+    },
+    "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": {
+      "version": "7.7.1",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz",
+      "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==",
+      "dev": true,
+      "license": "ISC",
+      "bin": {
+        "semver": "bin/semver.js"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/@typescript-eslint/utils": {
+      "version": "8.30.1",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.30.1.tgz",
+      "integrity": "sha512-T/8q4R9En2tcEsWPQgB5BQ0XJVOtfARcUvOa8yJP3fh9M/mXraLxZrkCfGb6ChrO/V3W+Xbd04RacUEqk1CFEQ==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@eslint-community/eslint-utils": "^4.4.0",
+        "@typescript-eslint/scope-manager": "8.30.1",
+        "@typescript-eslint/types": "8.30.1",
+        "@typescript-eslint/typescript-estree": "8.30.1"
+      },
+      "engines": {
+        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/typescript-eslint"
+      },
+      "peerDependencies": {
+        "eslint": "^8.57.0 || ^9.0.0",
+        "typescript": ">=4.8.4 <5.9.0"
+      }
+    },
+    "node_modules/@typescript-eslint/visitor-keys": {
+      "version": "8.30.1",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.30.1.tgz",
+      "integrity": "sha512-aEhgas7aJ6vZnNFC7K4/vMGDGyOiqWcYZPpIWrTKuTAlsvDNKy2GFDqh9smL+iq069ZvR0YzEeq0B8NJlLzjFA==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@typescript-eslint/types": "8.30.1",
+        "eslint-visitor-keys": "^4.2.0"
+      },
+      "engines": {
+        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/typescript-eslint"
+      }
+    },
+    "node_modules/@vitejs/plugin-react": {
+      "version": "4.4.0",
+      "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.4.0.tgz",
+      "integrity": "sha512-x/EztcTKVj+TDeANY1WjNeYsvZjZdfWRMP/KXi5Yn8BoTzpa13ZltaQqKfvWYbX8CE10GOHHdC5v86jY9x8i/g==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/core": "^7.26.10",
+        "@babel/plugin-transform-react-jsx-self": "^7.25.9",
+        "@babel/plugin-transform-react-jsx-source": "^7.25.9",
+        "@types/babel__core": "^7.20.5",
+        "react-refresh": "^0.17.0"
+      },
+      "engines": {
+        "node": "^14.18.0 || >=16.0.0"
+      },
+      "peerDependencies": {
+        "vite": "^4.2.0 || ^5.0.0 || ^6.0.0"
+      }
+    },
+    "node_modules/acorn": {
+      "version": "8.14.1",
+      "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz",
+      "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==",
+      "dev": true,
+      "license": "MIT",
+      "bin": {
+        "acorn": "bin/acorn"
+      },
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/acorn-jsx": {
+      "version": "5.3.2",
+      "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+      "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
+      "dev": true,
+      "license": "MIT",
+      "peerDependencies": {
+        "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
+      }
+    },
+    "node_modules/ajv": {
+      "version": "6.12.6",
+      "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+      "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "fast-deep-equal": "^3.1.1",
+        "fast-json-stable-stringify": "^2.0.0",
+        "json-schema-traverse": "^0.4.1",
+        "uri-js": "^4.2.2"
+      },
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/epoberezkin"
+      }
+    },
+    "node_modules/ansi-styles": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "color-convert": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+      }
+    },
+    "node_modules/argparse": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+      "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+      "dev": true,
+      "license": "Python-2.0"
+    },
+    "node_modules/balanced-match": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+      "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/brace-expansion": {
+      "version": "1.1.11",
+      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "balanced-match": "^1.0.0",
+        "concat-map": "0.0.1"
+      }
+    },
+    "node_modules/braces": {
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+      "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "fill-range": "^7.1.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/browserslist": {
+      "version": "4.24.4",
+      "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz",
+      "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/browserslist"
+        },
+        {
+          "type": "tidelift",
+          "url": "https://tidelift.com/funding/github/npm/browserslist"
+        },
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/ai"
+        }
+      ],
+      "license": "MIT",
+      "dependencies": {
+        "caniuse-lite": "^1.0.30001688",
+        "electron-to-chromium": "^1.5.73",
+        "node-releases": "^2.0.19",
+        "update-browserslist-db": "^1.1.1"
+      },
+      "bin": {
+        "browserslist": "cli.js"
+      },
+      "engines": {
+        "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
+      }
+    },
+    "node_modules/callsites": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+      "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/caniuse-lite": {
+      "version": "1.0.30001714",
+      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001714.tgz",
+      "integrity": "sha512-mtgapdwDLSSBnCI3JokHM7oEQBLxiJKVRtg10AxM1AyeiKcM96f0Mkbqeq+1AbiCtvMcHRulAAEMu693JrSWqg==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/browserslist"
+        },
+        {
+          "type": "tidelift",
+          "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
+        },
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/ai"
+        }
+      ],
+      "license": "CC-BY-4.0"
+    },
+    "node_modules/chalk": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/chalk?sponsor=1"
+      }
+    },
+    "node_modules/color-convert": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "color-name": "~1.1.4"
+      },
+      "engines": {
+        "node": ">=7.0.0"
+      }
+    },
+    "node_modules/color-name": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/concat-map": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+      "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/convert-source-map": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
+      "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/cross-spawn": {
+      "version": "7.0.6",
+      "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
+      "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "path-key": "^3.1.0",
+        "shebang-command": "^2.0.0",
+        "which": "^2.0.1"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/csstype": {
+      "version": "3.1.3",
+      "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
+      "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/debug": {
+      "version": "4.4.0",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz",
+      "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ms": "^2.1.3"
+      },
+      "engines": {
+        "node": ">=6.0"
+      },
+      "peerDependenciesMeta": {
+        "supports-color": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/deep-is": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
+      "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/electron-to-chromium": {
+      "version": "1.5.137",
+      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.137.tgz",
+      "integrity": "sha512-/QSJaU2JyIuTbbABAo/crOs+SuAZLS+fVVS10PVrIT9hrRkmZl8Hb0xPSkKRUUWHQtYzXHpQUW3Dy5hwMzGZkA==",
+      "dev": true,
+      "license": "ISC"
+    },
+    "node_modules/esbuild": {
+      "version": "0.25.2",
+      "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.2.tgz",
+      "integrity": "sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ==",
+      "dev": true,
+      "hasInstallScript": true,
+      "license": "MIT",
+      "bin": {
+        "esbuild": "bin/esbuild"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "optionalDependencies": {
+        "@esbuild/aix-ppc64": "0.25.2",
+        "@esbuild/android-arm": "0.25.2",
+        "@esbuild/android-arm64": "0.25.2",
+        "@esbuild/android-x64": "0.25.2",
+        "@esbuild/darwin-arm64": "0.25.2",
+        "@esbuild/darwin-x64": "0.25.2",
+        "@esbuild/freebsd-arm64": "0.25.2",
+        "@esbuild/freebsd-x64": "0.25.2",
+        "@esbuild/linux-arm": "0.25.2",
+        "@esbuild/linux-arm64": "0.25.2",
+        "@esbuild/linux-ia32": "0.25.2",
+        "@esbuild/linux-loong64": "0.25.2",
+        "@esbuild/linux-mips64el": "0.25.2",
+        "@esbuild/linux-ppc64": "0.25.2",
+        "@esbuild/linux-riscv64": "0.25.2",
+        "@esbuild/linux-s390x": "0.25.2",
+        "@esbuild/linux-x64": "0.25.2",
+        "@esbuild/netbsd-arm64": "0.25.2",
+        "@esbuild/netbsd-x64": "0.25.2",
+        "@esbuild/openbsd-arm64": "0.25.2",
+        "@esbuild/openbsd-x64": "0.25.2",
+        "@esbuild/sunos-x64": "0.25.2",
+        "@esbuild/win32-arm64": "0.25.2",
+        "@esbuild/win32-ia32": "0.25.2",
+        "@esbuild/win32-x64": "0.25.2"
+      }
+    },
+    "node_modules/escalade": {
+      "version": "3.2.0",
+      "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
+      "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/escape-string-regexp": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+      "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/eslint": {
+      "version": "9.24.0",
+      "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.24.0.tgz",
+      "integrity": "sha512-eh/jxIEJyZrvbWRe4XuVclLPDYSYYYgLy5zXGGxD6j8zjSAxFEzI2fL/8xNq6O2yKqVt+eF2YhV+hxjV6UKXwQ==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@eslint-community/eslint-utils": "^4.2.0",
+        "@eslint-community/regexpp": "^4.12.1",
+        "@eslint/config-array": "^0.20.0",
+        "@eslint/config-helpers": "^0.2.0",
+        "@eslint/core": "^0.12.0",
+        "@eslint/eslintrc": "^3.3.1",
+        "@eslint/js": "9.24.0",
+        "@eslint/plugin-kit": "^0.2.7",
+        "@humanfs/node": "^0.16.6",
+        "@humanwhocodes/module-importer": "^1.0.1",
+        "@humanwhocodes/retry": "^0.4.2",
+        "@types/estree": "^1.0.6",
+        "@types/json-schema": "^7.0.15",
+        "ajv": "^6.12.4",
+        "chalk": "^4.0.0",
+        "cross-spawn": "^7.0.6",
+        "debug": "^4.3.2",
+        "escape-string-regexp": "^4.0.0",
+        "eslint-scope": "^8.3.0",
+        "eslint-visitor-keys": "^4.2.0",
+        "espree": "^10.3.0",
+        "esquery": "^1.5.0",
+        "esutils": "^2.0.2",
+        "fast-deep-equal": "^3.1.3",
+        "file-entry-cache": "^8.0.0",
+        "find-up": "^5.0.0",
+        "glob-parent": "^6.0.2",
+        "ignore": "^5.2.0",
+        "imurmurhash": "^0.1.4",
+        "is-glob": "^4.0.0",
+        "json-stable-stringify-without-jsonify": "^1.0.1",
+        "lodash.merge": "^4.6.2",
+        "minimatch": "^3.1.2",
+        "natural-compare": "^1.4.0",
+        "optionator": "^0.9.3"
+      },
+      "bin": {
+        "eslint": "bin/eslint.js"
+      },
+      "engines": {
+        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+      },
+      "funding": {
+        "url": "https://eslint.org/donate"
+      },
+      "peerDependencies": {
+        "jiti": "*"
+      },
+      "peerDependenciesMeta": {
+        "jiti": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/eslint-plugin-react-hooks": {
+      "version": "5.2.0",
+      "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz",
+      "integrity": "sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=10"
+      },
+      "peerDependencies": {
+        "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0"
+      }
+    },
+    "node_modules/eslint-plugin-react-refresh": {
+      "version": "0.4.19",
+      "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.19.tgz",
+      "integrity": "sha512-eyy8pcr/YxSYjBoqIFSrlbn9i/xvxUFa8CjzAYo9cFjgGXqq1hyjihcpZvxRLalpaWmueWR81xn7vuKmAFijDQ==",
+      "dev": true,
+      "license": "MIT",
+      "peerDependencies": {
+        "eslint": ">=8.40"
+      }
+    },
+    "node_modules/eslint-scope": {
+      "version": "8.3.0",
+      "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.3.0.tgz",
+      "integrity": "sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==",
+      "dev": true,
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "esrecurse": "^4.3.0",
+        "estraverse": "^5.2.0"
+      },
+      "engines": {
+        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/eslint"
+      }
+    },
+    "node_modules/eslint-visitor-keys": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz",
+      "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==",
+      "dev": true,
+      "license": "Apache-2.0",
+      "engines": {
+        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/eslint"
+      }
+    },
+    "node_modules/espree": {
+      "version": "10.3.0",
+      "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz",
+      "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==",
+      "dev": true,
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "acorn": "^8.14.0",
+        "acorn-jsx": "^5.3.2",
+        "eslint-visitor-keys": "^4.2.0"
+      },
+      "engines": {
+        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/eslint"
+      }
+    },
+    "node_modules/esquery": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz",
+      "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==",
+      "dev": true,
+      "license": "BSD-3-Clause",
+      "dependencies": {
+        "estraverse": "^5.1.0"
+      },
+      "engines": {
+        "node": ">=0.10"
+      }
+    },
+    "node_modules/esrecurse": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
+      "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+      "dev": true,
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "estraverse": "^5.2.0"
+      },
+      "engines": {
+        "node": ">=4.0"
+      }
+    },
+    "node_modules/estraverse": {
+      "version": "5.3.0",
+      "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+      "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+      "dev": true,
+      "license": "BSD-2-Clause",
+      "engines": {
+        "node": ">=4.0"
+      }
+    },
+    "node_modules/esutils": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+      "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+      "dev": true,
+      "license": "BSD-2-Clause",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/fast-deep-equal": {
+      "version": "3.1.3",
+      "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+      "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/fast-glob": {
+      "version": "3.3.3",
+      "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz",
+      "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@nodelib/fs.stat": "^2.0.2",
+        "@nodelib/fs.walk": "^1.2.3",
+        "glob-parent": "^5.1.2",
+        "merge2": "^1.3.0",
+        "micromatch": "^4.0.8"
+      },
+      "engines": {
+        "node": ">=8.6.0"
+      }
+    },
+    "node_modules/fast-glob/node_modules/glob-parent": {
+      "version": "5.1.2",
+      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+      "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "is-glob": "^4.0.1"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/fast-json-stable-stringify": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+      "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/fast-levenshtein": {
+      "version": "2.0.6",
+      "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+      "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/fastq": {
+      "version": "1.19.1",
+      "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz",
+      "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "reusify": "^1.0.4"
+      }
+    },
+    "node_modules/file-entry-cache": {
+      "version": "8.0.0",
+      "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz",
+      "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "flat-cache": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=16.0.0"
+      }
+    },
+    "node_modules/fill-range": {
+      "version": "7.1.1",
+      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+      "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "to-regex-range": "^5.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/find-up": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+      "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "locate-path": "^6.0.0",
+        "path-exists": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/flat-cache": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz",
+      "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "flatted": "^3.2.9",
+        "keyv": "^4.5.4"
+      },
+      "engines": {
+        "node": ">=16"
+      }
+    },
+    "node_modules/flatted": {
+      "version": "3.3.3",
+      "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz",
+      "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==",
+      "dev": true,
+      "license": "ISC"
+    },
+    "node_modules/fsevents": {
+      "version": "2.3.3",
+      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+      "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+      "dev": true,
+      "hasInstallScript": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "darwin"
+      ],
+      "engines": {
+        "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+      }
+    },
+    "node_modules/gensync": {
+      "version": "1.0.0-beta.2",
+      "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
+      "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/glob-parent": {
+      "version": "6.0.2",
+      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
+      "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "is-glob": "^4.0.3"
+      },
+      "engines": {
+        "node": ">=10.13.0"
+      }
+    },
+    "node_modules/globals": {
+      "version": "16.0.0",
+      "resolved": "https://registry.npmjs.org/globals/-/globals-16.0.0.tgz",
+      "integrity": "sha512-iInW14XItCXET01CQFqudPOWP2jYMl7T+QRQT+UNcR/iQncN/F0UNpgd76iFkBPgNQb4+X3LV9tLJYzwh+Gl3A==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=18"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/graphemer": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
+      "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/has-flag": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+      "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/ignore": {
+      "version": "5.3.2",
+      "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
+      "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 4"
+      }
+    },
+    "node_modules/import-fresh": {
+      "version": "3.3.1",
+      "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz",
+      "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "parent-module": "^1.0.0",
+        "resolve-from": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/imurmurhash": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+      "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.8.19"
+      }
+    },
+    "node_modules/is-extglob": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+      "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-glob": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+      "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "is-extglob": "^2.1.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-number": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+      "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.12.0"
+      }
+    },
+    "node_modules/isexe": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+      "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+      "dev": true,
+      "license": "ISC"
+    },
+    "node_modules/js-tokens": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+      "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/js-yaml": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+      "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "argparse": "^2.0.1"
+      },
+      "bin": {
+        "js-yaml": "bin/js-yaml.js"
+      }
+    },
+    "node_modules/jsesc": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz",
+      "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==",
+      "dev": true,
+      "license": "MIT",
+      "bin": {
+        "jsesc": "bin/jsesc"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/json-buffer": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
+      "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/json-schema-traverse": {
+      "version": "0.4.1",
+      "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+      "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/json-stable-stringify-without-jsonify": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+      "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/json5": {
+      "version": "2.2.3",
+      "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
+      "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
+      "dev": true,
+      "license": "MIT",
+      "bin": {
+        "json5": "lib/cli.js"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/keyv": {
+      "version": "4.5.4",
+      "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
+      "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "json-buffer": "3.0.1"
+      }
+    },
+    "node_modules/levn": {
+      "version": "0.4.1",
+      "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
+      "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "prelude-ls": "^1.2.1",
+        "type-check": "~0.4.0"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/locate-path": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+      "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "p-locate": "^5.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/lodash.merge": {
+      "version": "4.6.2",
+      "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
+      "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/lru-cache": {
+      "version": "5.1.1",
+      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
+      "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "yallist": "^3.0.2"
+      }
+    },
+    "node_modules/merge2": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+      "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/micromatch": {
+      "version": "4.0.8",
+      "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
+      "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "braces": "^3.0.3",
+        "picomatch": "^2.3.1"
+      },
+      "engines": {
+        "node": ">=8.6"
+      }
+    },
+    "node_modules/minimatch": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+      "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "brace-expansion": "^1.1.7"
+      },
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/ms": {
+      "version": "2.1.3",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+      "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/nanoid": {
+      "version": "3.3.11",
+      "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz",
+      "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/ai"
+        }
+      ],
+      "license": "MIT",
+      "bin": {
+        "nanoid": "bin/nanoid.cjs"
+      },
+      "engines": {
+        "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+      }
+    },
+    "node_modules/natural-compare": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+      "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/node-releases": {
+      "version": "2.0.19",
+      "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz",
+      "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/optionator": {
+      "version": "0.9.4",
+      "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz",
+      "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "deep-is": "^0.1.3",
+        "fast-levenshtein": "^2.0.6",
+        "levn": "^0.4.1",
+        "prelude-ls": "^1.2.1",
+        "type-check": "^0.4.0",
+        "word-wrap": "^1.2.5"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/p-limit": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+      "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "yocto-queue": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/p-locate": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
+      "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "p-limit": "^3.0.2"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/parent-module": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+      "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "callsites": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/path-exists": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+      "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/path-key": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+      "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/picocolors": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
+      "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
+      "dev": true,
+      "license": "ISC"
+    },
+    "node_modules/picomatch": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+      "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=8.6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/jonschlinkert"
+      }
+    },
+    "node_modules/postcss": {
+      "version": "8.5.3",
+      "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz",
+      "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/postcss/"
+        },
+        {
+          "type": "tidelift",
+          "url": "https://tidelift.com/funding/github/npm/postcss"
+        },
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/ai"
+        }
+      ],
+      "license": "MIT",
+      "dependencies": {
+        "nanoid": "^3.3.8",
+        "picocolors": "^1.1.1",
+        "source-map-js": "^1.2.1"
+      },
+      "engines": {
+        "node": "^10 || ^12 || >=14"
+      }
+    },
+    "node_modules/prelude-ls": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
+      "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/punycode": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
+      "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/queue-microtask": {
+      "version": "1.2.3",
+      "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+      "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/feross"
+        },
+        {
+          "type": "patreon",
+          "url": "https://www.patreon.com/feross"
+        },
+        {
+          "type": "consulting",
+          "url": "https://feross.org/support"
+        }
+      ],
+      "license": "MIT"
+    },
+    "node_modules/react": {
+      "version": "19.1.0",
+      "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz",
+      "integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/react-dom": {
+      "version": "19.1.0",
+      "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz",
+      "integrity": "sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==",
+      "license": "MIT",
+      "dependencies": {
+        "scheduler": "^0.26.0"
+      },
+      "peerDependencies": {
+        "react": "^19.1.0"
+      }
+    },
+    "node_modules/react-refresh": {
+      "version": "0.17.0",
+      "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz",
+      "integrity": "sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/resolve-from": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+      "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/reusify": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz",
+      "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "iojs": ">=1.0.0",
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/rollup": {
+      "version": "4.40.0",
+      "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.40.0.tgz",
+      "integrity": "sha512-Noe455xmA96nnqH5piFtLobsGbCij7Tu+tb3c1vYjNbTkfzGqXqQXG3wJaYXkRZuQ0vEYN4bhwg7QnIrqB5B+w==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@types/estree": "1.0.7"
+      },
+      "bin": {
+        "rollup": "dist/bin/rollup"
+      },
+      "engines": {
+        "node": ">=18.0.0",
+        "npm": ">=8.0.0"
+      },
+      "optionalDependencies": {
+        "@rollup/rollup-android-arm-eabi": "4.40.0",
+        "@rollup/rollup-android-arm64": "4.40.0",
+        "@rollup/rollup-darwin-arm64": "4.40.0",
+        "@rollup/rollup-darwin-x64": "4.40.0",
+        "@rollup/rollup-freebsd-arm64": "4.40.0",
+        "@rollup/rollup-freebsd-x64": "4.40.0",
+        "@rollup/rollup-linux-arm-gnueabihf": "4.40.0",
+        "@rollup/rollup-linux-arm-musleabihf": "4.40.0",
+        "@rollup/rollup-linux-arm64-gnu": "4.40.0",
+        "@rollup/rollup-linux-arm64-musl": "4.40.0",
+        "@rollup/rollup-linux-loongarch64-gnu": "4.40.0",
+        "@rollup/rollup-linux-powerpc64le-gnu": "4.40.0",
+        "@rollup/rollup-linux-riscv64-gnu": "4.40.0",
+        "@rollup/rollup-linux-riscv64-musl": "4.40.0",
+        "@rollup/rollup-linux-s390x-gnu": "4.40.0",
+        "@rollup/rollup-linux-x64-gnu": "4.40.0",
+        "@rollup/rollup-linux-x64-musl": "4.40.0",
+        "@rollup/rollup-win32-arm64-msvc": "4.40.0",
+        "@rollup/rollup-win32-ia32-msvc": "4.40.0",
+        "@rollup/rollup-win32-x64-msvc": "4.40.0",
+        "fsevents": "~2.3.2"
+      }
+    },
+    "node_modules/run-parallel": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+      "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/feross"
+        },
+        {
+          "type": "patreon",
+          "url": "https://www.patreon.com/feross"
+        },
+        {
+          "type": "consulting",
+          "url": "https://feross.org/support"
+        }
+      ],
+      "license": "MIT",
+      "dependencies": {
+        "queue-microtask": "^1.2.2"
+      }
+    },
+    "node_modules/scheduler": {
+      "version": "0.26.0",
+      "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz",
+      "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==",
+      "license": "MIT"
+    },
+    "node_modules/semver": {
+      "version": "6.3.1",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+      "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+      "dev": true,
+      "license": "ISC",
+      "bin": {
+        "semver": "bin/semver.js"
+      }
+    },
+    "node_modules/shebang-command": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+      "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "shebang-regex": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/shebang-regex": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+      "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/source-map-js": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
+      "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
+      "dev": true,
+      "license": "BSD-3-Clause",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/strip-json-comments": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+      "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/supports-color": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+      "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "has-flag": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/tinyglobby": {
+      "version": "0.2.12",
+      "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.12.tgz",
+      "integrity": "sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "fdir": "^6.4.3",
+        "picomatch": "^4.0.2"
+      },
+      "engines": {
+        "node": ">=12.0.0"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/SuperchupuDev"
+      }
+    },
+    "node_modules/tinyglobby/node_modules/fdir": {
+      "version": "6.4.3",
+      "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.3.tgz",
+      "integrity": "sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==",
+      "dev": true,
+      "license": "MIT",
+      "peerDependencies": {
+        "picomatch": "^3 || ^4"
+      },
+      "peerDependenciesMeta": {
+        "picomatch": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/tinyglobby/node_modules/picomatch": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
+      "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/jonschlinkert"
+      }
+    },
+    "node_modules/to-regex-range": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+      "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "is-number": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=8.0"
+      }
+    },
+    "node_modules/ts-api-utils": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz",
+      "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=18.12"
+      },
+      "peerDependencies": {
+        "typescript": ">=4.8.4"
+      }
+    },
+    "node_modules/type-check": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
+      "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "prelude-ls": "^1.2.1"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/typescript": {
+      "version": "5.7.3",
+      "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz",
+      "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==",
+      "dev": true,
+      "license": "Apache-2.0",
+      "bin": {
+        "tsc": "bin/tsc",
+        "tsserver": "bin/tsserver"
+      },
+      "engines": {
+        "node": ">=14.17"
+      }
+    },
+    "node_modules/typescript-eslint": {
+      "version": "8.30.1",
+      "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.30.1.tgz",
+      "integrity": "sha512-D7lC0kcehVH7Mb26MRQi64LMyRJsj3dToJxM1+JVTl53DQSV5/7oUGWQLcKl1C1KnoVHxMMU2FNQMffr7F3Row==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@typescript-eslint/eslint-plugin": "8.30.1",
+        "@typescript-eslint/parser": "8.30.1",
+        "@typescript-eslint/utils": "8.30.1"
+      },
+      "engines": {
+        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/typescript-eslint"
+      },
+      "peerDependencies": {
+        "eslint": "^8.57.0 || ^9.0.0",
+        "typescript": ">=4.8.4 <5.9.0"
+      }
+    },
+    "node_modules/update-browserslist-db": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz",
+      "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/browserslist"
+        },
+        {
+          "type": "tidelift",
+          "url": "https://tidelift.com/funding/github/npm/browserslist"
+        },
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/ai"
+        }
+      ],
+      "license": "MIT",
+      "dependencies": {
+        "escalade": "^3.2.0",
+        "picocolors": "^1.1.1"
+      },
+      "bin": {
+        "update-browserslist-db": "cli.js"
+      },
+      "peerDependencies": {
+        "browserslist": ">= 4.21.0"
+      }
+    },
+    "node_modules/uri-js": {
+      "version": "4.4.1",
+      "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
+      "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+      "dev": true,
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "punycode": "^2.1.0"
+      }
+    },
+    "node_modules/vite": {
+      "version": "6.3.0",
+      "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.0.tgz",
+      "integrity": "sha512-9aC0n4pr6hIbvi1YOpFjwQ+QOTGssvbJKoeYkuHHGWwlXfdxQlI8L2qNMo9awEEcCPSiS+5mJZk5jH1PAqoDeQ==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "esbuild": "^0.25.0",
+        "fdir": "^6.4.3",
+        "picomatch": "^4.0.2",
+        "postcss": "^8.5.3",
+        "rollup": "^4.34.9",
+        "tinyglobby": "^0.2.12"
+      },
+      "bin": {
+        "vite": "bin/vite.js"
+      },
+      "engines": {
+        "node": "^18.0.0 || ^20.0.0 || >=22.0.0"
+      },
+      "funding": {
+        "url": "https://github.com/vitejs/vite?sponsor=1"
+      },
+      "optionalDependencies": {
+        "fsevents": "~2.3.3"
+      },
+      "peerDependencies": {
+        "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0",
+        "jiti": ">=1.21.0",
+        "less": "*",
+        "lightningcss": "^1.21.0",
+        "sass": "*",
+        "sass-embedded": "*",
+        "stylus": "*",
+        "sugarss": "*",
+        "terser": "^5.16.0",
+        "tsx": "^4.8.1",
+        "yaml": "^2.4.2"
+      },
+      "peerDependenciesMeta": {
+        "@types/node": {
+          "optional": true
+        },
+        "jiti": {
+          "optional": true
+        },
+        "less": {
+          "optional": true
+        },
+        "lightningcss": {
+          "optional": true
+        },
+        "sass": {
+          "optional": true
+        },
+        "sass-embedded": {
+          "optional": true
+        },
+        "stylus": {
+          "optional": true
+        },
+        "sugarss": {
+          "optional": true
+        },
+        "terser": {
+          "optional": true
+        },
+        "tsx": {
+          "optional": true
+        },
+        "yaml": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/vite/node_modules/fdir": {
+      "version": "6.4.3",
+      "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.3.tgz",
+      "integrity": "sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==",
+      "dev": true,
+      "license": "MIT",
+      "peerDependencies": {
+        "picomatch": "^3 || ^4"
+      },
+      "peerDependenciesMeta": {
+        "picomatch": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/vite/node_modules/picomatch": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
+      "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/jonschlinkert"
+      }
+    },
+    "node_modules/which": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+      "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "isexe": "^2.0.0"
+      },
+      "bin": {
+        "node-which": "bin/node-which"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/word-wrap": {
+      "version": "1.2.5",
+      "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
+      "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/yallist": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+      "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
+      "dev": true,
+      "license": "ISC"
+    },
+    "node_modules/yocto-queue": {
+      "version": "0.1.0",
+      "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
+      "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    }
+  }
 }
Index: frontend/package.json
===================================================================
--- frontend/package.json	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ frontend/package.json	(revision 516baa4eda127c8c3a0f761c69f90c8c5ff421e3)
@@ -9,17 +9,9 @@
 		"lint": "eslint .",
 		"preview": "vite preview",
-		"start": "vite --host 0.0.0.0 --port 3000",
-		"build:css": "npx tailwindcss -i ./src/index.css -o ./src/output.css --minify",
-		"watch:css": "npx tailwindcss -i ./src/index.css -o ./src/output.css --watch"
+		"start": "vite --host 0.0.0.0 --port 3000"
 	},
 	"dependencies": {
-		"@react-oauth/google": "^0.12.2",
-		"axios": "^1.9.0",
-		"jwt-decode": "^4.0.0",
-		"lucide-react": "^0.513.0",
 		"react": "^19.0.0",
-		"react-dom": "^19.0.0",
-		"react-router-dom": "^7.6.0",
-		"react-toastify": "^11.0.5"
+		"react-dom": "^19.0.0"
 	},
 	"devDependencies": {
@@ -28,14 +20,11 @@
 		"@types/react-dom": "^19.0.4",
 		"@vitejs/plugin-react": "^4.3.4",
-		"autoprefixer": "^10.4.21",
 		"eslint": "^9.22.0",
 		"eslint-plugin-react-hooks": "^5.2.0",
 		"eslint-plugin-react-refresh": "^0.4.19",
 		"globals": "^16.0.0",
-		"postcss": "^8.5.3",
-		"tailwindcss": "^3.4.17",
 		"typescript": "~5.7.2",
 		"typescript-eslint": "^8.26.1",
-		"vite": "^6.3.5"
+		"vite": "^6.3.0"
 	}
 }
Index: ontend/postcss.config.cjs
===================================================================
--- frontend/postcss.config.cjs	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,6 +1,0 @@
-module.exports = {
-	plugins: {
-		tailwindcss: {},
-		autoprefixer: {},
-	},
-};
Index: frontend/public/vite.svg
===================================================================
--- frontend/public/vite.svg	(revision 516baa4eda127c8c3a0f761c69f90c8c5ff421e3)
+++ frontend/public/vite.svg	(revision 516baa4eda127c8c3a0f761c69f90c8c5ff421e3)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="31.88" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 257"><defs><linearGradient id="IconifyId1813088fe1fbc01fb466" x1="-.828%" x2="57.636%" y1="7.652%" y2="78.411%"><stop offset="0%" stop-color="#41D1FF"></stop><stop offset="100%" stop-color="#BD34FE"></stop></linearGradient><linearGradient id="IconifyId1813088fe1fbc01fb467" x1="43.376%" x2="50.316%" y1="2.242%" y2="89.03%"><stop offset="0%" stop-color="#FFEA83"></stop><stop offset="8.333%" stop-color="#FFDD35"></stop><stop offset="100%" stop-color="#FFA800"></stop></linearGradient></defs><path fill="url(#IconifyId1813088fe1fbc01fb466)" d="M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z"></path><path fill="url(#IconifyId1813088fe1fbc01fb467)" d="M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z"></path></svg>
Index: frontend/src/App.tsx
===================================================================
--- frontend/src/App.tsx	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ frontend/src/App.tsx	(revision 516baa4eda127c8c3a0f761c69f90c8c5ff421e3)
@@ -1,113 +1,17 @@
-import { createBrowserRouter, Outlet, RouterProvider } from "react-router-dom";
-import { ToastContainer } from "react-toastify";
-import "react-toastify/dist/ReactToastify.css";
-import Footer from "./components/Footer";
-import Navbar from "./components/Navbar";
-import PrivateRoute from "./components/PrivateRoute";
-import ScrollToTop from "./components/ScrollToTop";
-import CourseCatalog from "./components/SubjectCatalog/SubjectCatalog";
-import { AuthProvider } from "./context/AuthProvider";
-import "./index.css";
-import Account from "./pages/Account";
-import Home from "./pages/Home";
-import Login from "./pages/Login";
-import NotFound from "./pages/NotFound";
-import Recommendations from "./pages/Recommendations";
-import Register from "./pages/Register";
-import ReviewForm from "./pages/ReviewForm";
-import Reviews from "./pages/Reviews";
-import SubjectPreferences from "./pages/SubjectPreferences";
-import SubjectView from "./pages/SubjectView";
-
-const Layout = () => (
-	<div className="flex flex-col min-h-screen">
-		<ScrollToTop />
-		<Navbar />
-		<ToastContainer
-			className="custom-toast-container"
-			position="top-right"
-			autoClose={2000}
-			hideProgressBar={false}
-			newestOnTop={false}
-			closeOnClick
-			rtl={false}
-			pauseOnFocusLoss
-			draggable
-			pauseOnHover
-			theme="light"
-		/>
-		<main className="flex-grow">
-			<Outlet />
-		</main>
-		<Footer />
-	</div>
-);
-const router = createBrowserRouter([
-	{
-		path: "/",
-		element: <Layout />,
-		children: [
-			{ path: "", element: <Home /> },
-			{ path: "subjects", element: <CourseCatalog /> },
-			{ path: "login", element: <Login /> },
-			{ path: "register", element: <Register /> },
-			{
-				path: "recommendations",
-				element: (
-					<PrivateRoute allowedUserTypes={["student"]}>
-						<Recommendations />
-					</PrivateRoute>
-				),
-			},
-			{
-				path: "account",
-				element: (
-					<PrivateRoute allowedUserTypes={["student"]}>
-						<Account />
-					</PrivateRoute>
-				),
-			},
-			{
-				path: "subject-preferences",
-				element: (
-					<PrivateRoute allowedUserTypes={["student"]}>
-						<SubjectPreferences />
-					</PrivateRoute>
-				),
-			},
-			{
-				path: "subjects/:code",
-				element: <SubjectView />,
-			},
-			{
-				path: "review-form/:code",
-				element: (
-					<PrivateRoute allowedUserTypes={["student"]}>
-						<ReviewForm />
-					</PrivateRoute>
-				),
-			},
-			{
-				path: "reviews",
-				element: (
-					<PrivateRoute allowedUserTypes={["student", "admin"]}>
-						<Reviews />
-					</PrivateRoute>
-				),
-			},
-			{
-				path: "*",
-				element: <NotFound />,
-			},
-		],
-	},
-]);
+import { useEffect, useState } from "react";
 
 function App() {
-	return (
-		<AuthProvider>
-			<RouterProvider router={router} />
-		</AuthProvider>
-	);
+	const [data, setData] = useState("");
+	useEffect(() => {
+		const fetchData = async () => {
+			const response = await fetch("http://localhost:8000/api");
+			const data = await response.json();
+			console.log(data);
+			setData(data.message);
+		};
+		fetchData();
+	}, []);
+
+	return <>{data == "" ? <p>Loading....</p> : <p>{data}</p>}</>;
 }
 
Index: ontend/src/api/axiosInstance.ts
===================================================================
--- frontend/src/api/axiosInstance.ts	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,10 +1,0 @@
-import axios from 'axios';
-
-const axiosInstance = axios.create({
-    baseURL: 'http://localhost:8000',
-    headers: {
-        "Content-Type": "application/json",
-      },
-});
-
-export default axiosInstance;
Index: ontend/src/api/formdata.ts
===================================================================
--- frontend/src/api/formdata.ts	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,20 +1,0 @@
-import { toast } from "react-toastify";
-import { StudentData } from "../components/types";
-import axiosInstance from "./axiosInstance";
-
-export const fetchFormData = async (
-	token: string,
-	setFormData: (data: StudentData | null) => void
-) => {
-	try {
-		const response = await axiosInstance.get<StudentData>("/auth/form/", {
-			headers: { Authorization: `Bearer ${token}` },
-		});
-		setFormData(response.data);
-	} catch (error) {
-		console.error("Could not fetch user form data", error);
-		if ((error as any).response?.status !== 401) {
-			toast.error("Настана грешка при барањето.");
-		}
-	}
-};
Index: ontend/src/api/preferences.ts
===================================================================
--- frontend/src/api/preferences.ts	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,44 +1,0 @@
-import { Dispatch, SetStateAction } from "react";
-import axiosInstance from "../api/axiosInstance";
-
-interface FetchPreferencesProps {
-	setIsLoaded?: Dispatch<SetStateAction<boolean>>;
-	setIsLoading?: Dispatch<SetStateAction<boolean>>;
-	setDislikedIds: Dispatch<SetStateAction<Set<number> | undefined>>;
-	setFavoriteIds: Dispatch<SetStateAction<Set<number> | undefined>>;
-	setLikedIds: Dispatch<SetStateAction<Set<number> | undefined>>;
-}
-
-export const fetchPreferences = async ({
-	setIsLoading,
-	setDislikedIds,
-	setFavoriteIds,
-	setLikedIds,
-	setIsLoaded,
-}: FetchPreferencesProps) => {
-	const accessToken = localStorage.getItem("access");
-	if (accessToken) {
-		axiosInstance
-			.get<{
-				favorite_ids: number[];
-				liked_ids: number[];
-				disliked_ids: number[];
-			}>("/subjects/preferences/")
-			.then((response) => {
-				setFavoriteIds(new Set(response.data.favorite_ids || []));
-				setLikedIds(new Set(response.data.liked_ids || []));
-				setDislikedIds(new Set(response.data.disliked_ids || []));
-			})
-			.catch((error) => console.error("Failed to fetch preferences:", error))
-			.finally(() => {
-				setIsLoaded && setIsLoaded(true);
-				setIsLoading && setIsLoading(false);
-			});
-	} else {
-		setFavoriteIds(new Set());
-		setLikedIds(new Set());
-		setDislikedIds(new Set());
-		setIsLoaded && setIsLoaded(true);
-		setIsLoading && setIsLoading(false);
-	}
-};
Index: ontend/src/api/subjects.ts
===================================================================
--- frontend/src/api/subjects.ts	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,16 +1,0 @@
-import { Dispatch, SetStateAction } from "react";
-import { Subject } from "../components/types";
-
-export const fetchSubjects = async (
-	setSubjects: Dispatch<SetStateAction<Subject[]>>
-) => {
-	try {
-		const resSubjects = await fetch("http://localhost:8000/subjects/all/");
-		if (resSubjects.ok) {
-			const subJson: Subject[] = await resSubjects.json();
-			setSubjects(subJson || []);
-		}
-	} catch (error) {
-		console.error("Error fetching subjects:", error);
-	}
-};
Index: ontend/src/api/user.ts
===================================================================
--- frontend/src/api/user.ts	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,17 +1,0 @@
-import { Dispatch, SetStateAction } from "react";
-import { User } from "../components/types";
-import axiosInstance from "./axiosInstance";
-
-export const fetchUser = async (
-	token: string,
-	setUser: Dispatch<SetStateAction<User | null>>
-) => {
-	try {
-		const response = await axiosInstance.get<User>("/auth/user/", {
-			headers: { Authorization: `Bearer ${token}` },
-		});
-		setUser(response.data);
-	} catch (error) {
-		console.error("Could not fetch user data on load", error);
-	}
-};
Index: ontend/src/assets/eye-off.svg
===================================================================
--- frontend/src/assets/eye-off.svg	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,6 +1,0 @@
-<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
-<svg width="800px" height="800px" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
-<path d="M2 2L22 22" stroke="#000000" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
-<path d="M6.71277 6.7226C3.66479 8.79527 2 12 2 12C2 12 5.63636 19 12 19C14.0503 19 15.8174 18.2734 17.2711 17.2884M11 5.05822C11.3254 5.02013 11.6588 5 12 5C18.3636 5 22 12 22 12C22 12 21.3082 13.3317 20 14.8335" stroke="#000000" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
-<path d="M14 14.2362C13.4692 14.7112 12.7684 15.0001 12 15.0001C10.3431 15.0001 9 13.657 9 12.0001C9 11.1764 9.33193 10.4303 9.86932 9.88818" stroke="#000000" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
-</svg>
Index: ontend/src/assets/eye.svg
===================================================================
--- frontend/src/assets/eye.svg	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,6 +1,0 @@
-<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
-<svg width="800px" height="800px" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
-<path d="M1 12C1 12 5 4 12 4C19 4 23 12 23 12" stroke="#000000" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
-<path d="M1 12C1 12 5 20 12 20C19 20 23 12 23 12" stroke="#000000" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
-<circle cx="12" cy="12" r="3" stroke="#000000" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
-</svg>
Index: ontend/src/assets/open.svg
===================================================================
--- frontend/src/assets/open.svg	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,14 +1,0 @@
-<svg
-  xmlns="http://www.w3.org/2000/svg"
-  class="w-4 h-4 mr-1"
-  fill="none"
-  stroke="#ffffff"
-  viewBox="0 0 24 24"
->
-  <path
-    stroke-linecap="round"
-    stroke-linejoin="round"
-    stroke-width="2"
-    d="M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14"
-  />
-</svg>
Index: frontend/src/assets/react.svg
===================================================================
--- frontend/src/assets/react.svg	(revision 516baa4eda127c8c3a0f761c69f90c8c5ff421e3)
+++ frontend/src/assets/react.svg	(revision 516baa4eda127c8c3a0f761c69f90c8c5ff421e3)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="35.93" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 228"><path fill="#00D8FF" d="M210.483 73.824a171.49 171.49 0 0 0-8.24-2.597c.465-1.9.893-3.777 1.273-5.621c6.238-30.281 2.16-54.676-11.769-62.708c-13.355-7.7-35.196.329-57.254 19.526a171.23 171.23 0 0 0-6.375 5.848a155.866 155.866 0 0 0-4.241-3.917C100.759 3.829 77.587-4.822 63.673 3.233C50.33 10.957 46.379 33.89 51.995 62.588a170.974 170.974 0 0 0 1.892 8.48c-3.28.932-6.445 1.924-9.474 2.98C17.309 83.498 0 98.307 0 113.668c0 15.865 18.582 31.778 46.812 41.427a145.52 145.52 0 0 0 6.921 2.165a167.467 167.467 0 0 0-2.01 9.138c-5.354 28.2-1.173 50.591 12.134 58.266c13.744 7.926 36.812-.22 59.273-19.855a145.567 145.567 0 0 0 5.342-4.923a168.064 168.064 0 0 0 6.92 6.314c21.758 18.722 43.246 26.282 56.54 18.586c13.731-7.949 18.194-32.003 12.4-61.268a145.016 145.016 0 0 0-1.535-6.842c1.62-.48 3.21-.974 4.76-1.488c29.348-9.723 48.443-25.443 48.443-41.52c0-15.417-17.868-30.326-45.517-39.844Zm-6.365 70.984c-1.4.463-2.836.91-4.3 1.345c-3.24-10.257-7.612-21.163-12.963-32.432c5.106-11 9.31-21.767 12.459-31.957c2.619.758 5.16 1.557 7.61 2.4c23.69 8.156 38.14 20.213 38.14 29.504c0 9.896-15.606 22.743-40.946 31.14Zm-10.514 20.834c2.562 12.94 2.927 24.64 1.23 33.787c-1.524 8.219-4.59 13.698-8.382 15.893c-8.067 4.67-25.32-1.4-43.927-17.412a156.726 156.726 0 0 1-6.437-5.87c7.214-7.889 14.423-17.06 21.459-27.246c12.376-1.098 24.068-2.894 34.671-5.345a134.17 134.17 0 0 1 1.386 6.193ZM87.276 214.515c-7.882 2.783-14.16 2.863-17.955.675c-8.075-4.657-11.432-22.636-6.853-46.752a156.923 156.923 0 0 1 1.869-8.499c10.486 2.32 22.093 3.988 34.498 4.994c7.084 9.967 14.501 19.128 21.976 27.15a134.668 134.668 0 0 1-4.877 4.492c-9.933 8.682-19.886 14.842-28.658 17.94ZM50.35 144.747c-12.483-4.267-22.792-9.812-29.858-15.863c-6.35-5.437-9.555-10.836-9.555-15.216c0-9.322 13.897-21.212 37.076-29.293c2.813-.98 5.757-1.905 8.812-2.773c3.204 10.42 7.406 21.315 12.477 32.332c-5.137 11.18-9.399 22.249-12.634 32.792a134.718 134.718 0 0 1-6.318-1.979Zm12.378-84.26c-4.811-24.587-1.616-43.134 6.425-47.789c8.564-4.958 27.502 2.111 47.463 19.835a144.318 144.318 0 0 1 3.841 3.545c-7.438 7.987-14.787 17.08-21.808 26.988c-12.04 1.116-23.565 2.908-34.161 5.309a160.342 160.342 0 0 1-1.76-7.887Zm110.427 27.268a347.8 347.8 0 0 0-7.785-12.803c8.168 1.033 15.994 2.404 23.343 4.08c-2.206 7.072-4.956 14.465-8.193 22.045a381.151 381.151 0 0 0-7.365-13.322Zm-45.032-43.861c5.044 5.465 10.096 11.566 15.065 18.186a322.04 322.04 0 0 0-30.257-.006c4.974-6.559 10.069-12.652 15.192-18.18ZM82.802 87.83a323.167 323.167 0 0 0-7.227 13.238c-3.184-7.553-5.909-14.98-8.134-22.152c7.304-1.634 15.093-2.97 23.209-3.984a321.524 321.524 0 0 0-7.848 12.897Zm8.081 65.352c-8.385-.936-16.291-2.203-23.593-3.793c2.26-7.3 5.045-14.885 8.298-22.6a321.187 321.187 0 0 0 7.257 13.246c2.594 4.48 5.28 8.868 8.038 13.147Zm37.542 31.03c-5.184-5.592-10.354-11.779-15.403-18.433c4.902.192 9.899.29 14.978.29c5.218 0 10.376-.117 15.453-.343c-4.985 6.774-10.018 12.97-15.028 18.486Zm52.198-57.817c3.422 7.8 6.306 15.345 8.596 22.52c-7.422 1.694-15.436 3.058-23.88 4.071a382.417 382.417 0 0 0 7.859-13.026a347.403 347.403 0 0 0 7.425-13.565Zm-16.898 8.101a358.557 358.557 0 0 1-12.281 19.815a329.4 329.4 0 0 1-23.444.823c-7.967 0-15.716-.248-23.178-.732a310.202 310.202 0 0 1-12.513-19.846h.001a307.41 307.41 0 0 1-10.923-20.627a310.278 310.278 0 0 1 10.89-20.637l-.001.001a307.318 307.318 0 0 1 12.413-19.761c7.613-.576 15.42-.876 23.31-.876H128c7.926 0 15.743.303 23.354.883a329.357 329.357 0 0 1 12.335 19.695a358.489 358.489 0 0 1 11.036 20.54a329.472 329.472 0 0 1-11 20.722Zm22.56-122.124c8.572 4.944 11.906 24.881 6.52 51.026c-.344 1.668-.73 3.367-1.15 5.09c-10.622-2.452-22.155-4.275-34.23-5.408c-7.034-10.017-14.323-19.124-21.64-27.008a160.789 160.789 0 0 1 5.888-5.4c18.9-16.447 36.564-22.941 44.612-18.3ZM128 90.808c12.625 0 22.86 10.235 22.86 22.86s-10.235 22.86-22.86 22.86s-22.86-10.235-22.86-22.86s10.235-22.86 22.86-22.86Z"></path></svg>
Index: ontend/src/assets/search.svg
===================================================================
--- frontend/src/assets/search.svg	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,14 +1,0 @@
-<svg
-  xmlns="http://www.w3.org/2000/svg"
-  width="64" height="64"
-  fill="none"
-  stroke="#9ca3af"
-  viewBox="0 0 24 24"
->
-  <path
-    stroke-linecap="round"
-    stroke-linejoin="round"
-    stroke-width="1"
-    d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"
-  />
-</svg>
Index: ontend/src/assets/tick.svg
===================================================================
--- frontend/src/assets/tick.svg	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,14 +1,0 @@
-<svg
-  xmlns="http://www.w3.org/2000/svg"
-  class="w-4 h-4"
-  fill="none"
-  stroke="white"
-  viewBox="0 0 24 24"
->
-  <path
-    stroke-linecap="round"
-    stroke-linejoin="round"
-    stroke-width="2"
-    d="M5 13l4 4L19 7"
-  />
-</svg>
Index: ontend/src/components/Footer.tsx
===================================================================
--- frontend/src/components/Footer.tsx	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,10 +1,0 @@
-import React from "react";
-
-const Footer: React.FC = () => {
-  return (
-    <footer className="bg-blue-600 text-center text-white py-4 mt-auto">
-      <p className="text-sm">&copy; {new Date().getFullYear()} ИзбериИзборен.</p>
-    </footer>
-  );
-};
-export default Footer;
Index: ontend/src/components/Navbar.tsx
===================================================================
--- frontend/src/components/Navbar.tsx	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,274 +1,0 @@
-import { useEffect, useRef, useState } from "react";
-import { Link, useNavigate } from "react-router-dom";
-import { toast } from "react-toastify";
-import IOimage from "../assets/IOLogo.png";
-import { usePreferences } from "../context/PreferencesContext";
-import { useRecommendations } from "../context/RecommendationsContext";
-import { useAuth } from "../hooks/useAuth";
-
-const Navbar: React.FC = () => {
-	const [menuOpen, setMenuOpen] = useState(false);
-	const [profileMenuOpen, setProfileMenuOpen] = useState(false);
-	const [, setRecommendations] = useRecommendations();
-	const { isAuthenticated, logout, user } = useAuth();
-	const { setFavoriteIds, setLikedIds, setDislikedIds } = usePreferences();
-	const navigate = useNavigate();
-	const profileMenuRef = useRef<HTMLDivElement>(null);
-	const userInitial = user?.full_name?.charAt(0).toUpperCase() || "";
-	// Close dropdown when clicking outside
-	useEffect(() => {
-		const handleClickOutside = (event: MouseEvent) => {
-			if (
-				profileMenuRef.current &&
-				!profileMenuRef.current.contains(event.target as Node)
-			) {
-				setProfileMenuOpen(false);
-			}
-		};
-		document.addEventListener("mousedown", handleClickOutside);
-		return () => {
-			document.removeEventListener("mousedown", handleClickOutside);
-		};
-	}, []);
-
-	const handleLogout = () => {
-		logout();
-		setRecommendations([]);
-		setFavoriteIds(new Set());
-		setLikedIds(new Set());
-		setDislikedIds(new Set());
-		navigate("/");
-		toast.success("Успешно сте одјавени!");
-	};
-
-	// const testAccountLogin = async () => {
-	// 	if (isAuthenticated) return;
-	// 	try {
-	// 		const response = await axios.post("http://localhost:8000/auth/login/", {
-	// 			email: "fffff@finki.ukim.mk",
-	// 			password: "testTestTEST123",
-	// 		});
-	// 		const { access, refresh, full_name, user_type } = response.data;
-	// 		login(access, refresh, {
-	// 			full_name,
-	// 			user_type,
-	// 		});
-	// 		navigate("/");
-	// 	} catch (err: unknown) {
-	// 		console.log(err);
-	// 	}
-	// };
-
-	return (
-		<nav className="bg-blue-600 text-white p-4">
-			<div className="flex justify-between items-center">
-				<div className="flex items-center space-x-4">
-					<Link to="/">
-						<img
-							src={IOimage}
-							alt="Дома"
-							className="w-10 h-10 object-cover hover:scale-110 transition duration-300"
-						/>
-					</Link>
-				</div>
-				<button
-					onClick={() => setMenuOpen(!menuOpen)}
-					className="sm:hidden focus:outline-none"
-				>
-					<svg
-						className="w-6 h-6"
-						fill="none"
-						stroke="currentColor"
-						viewBox="0 0 24 24"
-					>
-						{menuOpen ? (
-							<path
-								strokeLinecap="round"
-								strokeLinejoin="round"
-								strokeWidth="2"
-								d="M6 18L18 6M6 6l12 12"
-							/>
-						) : (
-							<path
-								strokeLinecap="round"
-								strokeLinejoin="round"
-								strokeWidth="2"
-								d="M4 6h16M4 12h16M4 18h16"
-							/>
-						)}
-					</svg>
-				</button>
-
-				{/* Desktop Menu */}
-				<div className="hidden sm:flex space-x-4 items-center text-sm sm:text-base">
-					{/* <button onClick={testAccountLogin}>quick login</button> */}
-					<Link to="/subjects" className="hover:underline">
-						Сите предмети
-					</Link>
-					{isAuthenticated && user?.user_type === "student" && (
-						<Link to="/reviews" className="hover:underline">
-							Информации од студенти
-						</Link>
-					)}
-					{isAuthenticated && user?.user_type === "admin" && (
-						<Link to="/reviews" className="hover:underline">
-							Админ панел
-						</Link>
-					)}
-					{isAuthenticated && user?.user_type === "student" && (
-						<Link
-							to="/recommendations"
-							className="hover:underline"
-							onClick={() => setProfileMenuOpen(false)}
-						>
-							Препораки
-						</Link>
-					)}
-					{isAuthenticated ? (
-						<div className="relative" ref={profileMenuRef}>
-							<button
-								onClick={() => setProfileMenuOpen(!profileMenuOpen)}
-								className="w-10 h-10 rounded-full bg-blue-800 flex items-center justify-center font-bold text-xl hover:bg-blue-700 transition"
-							>
-								{userInitial}
-							</button>
-							{profileMenuOpen && (
-								<div className="absolute right-0 mt-1 w-48 bg-white rounded-md shadow-lg py-1 text-black z-20">
-									{user?.user_type === "admin" ? (
-										<>
-											<button
-												onClick={() => {
-													handleLogout();
-													setProfileMenuOpen(false);
-												}}
-												className="w-full text-left block px-4 py-2 text-sm text-red-600 hover:bg-gray-100 hover:underline"
-											>
-												Одјави се
-											</button>
-										</>
-									) : (
-										<>
-											<Link
-												to="/account"
-												className="block px-4 py-2 text-sm hover:bg-gray-100 hover:underline"
-												onClick={() => setProfileMenuOpen(false)}
-											>
-												Профил
-											</Link>
-
-											<Link
-												to="/subject-preferences"
-												className="block px-4 py-2 text-sm hover:bg-gray-100 hover:underline"
-												onClick={() => setMenuOpen(false)}
-											>
-												Мои предмети
-											</Link>
-
-											<button
-												onClick={() => {
-													handleLogout();
-													setProfileMenuOpen(false);
-												}}
-												className="w-full text-left block px-4 py-2 text-sm text-red-600 hover:bg-gray-100 hover:underline"
-											>
-												Одјави се
-											</button>
-										</>
-									)}
-								</div>
-							)}
-						</div>
-					) : (
-						<Link to="/login" className="hover:underline">
-							Најави се
-						</Link>
-					)}
-				</div>
-			</div>
-
-			{/* Mobile Menu */}
-			{menuOpen && (
-				<div className="sm:hidden mt-3 flex flex-col space-y-2 text-sm">
-					<Link
-						to="/subjects"
-						className="hover:underline"
-						onClick={() => setMenuOpen(false)}
-					>
-						Предмети
-					</Link>
-					{isAuthenticated && (
-						<>
-							{user?.user_type === "admin" ? (
-								<>
-									<Link
-										to="/reviews"
-										className="hover:underline"
-										onClick={() => setMenuOpen(false)}
-									>
-										Админ панел
-									</Link>
-									<button
-										onClick={() => {
-											handleLogout();
-											setMenuOpen(false);
-										}}
-										className="text-left text-red-400 hover:underline"
-									>
-										Одјави се
-									</button>
-								</>
-							) : (
-								<>
-									<Link
-										to="/reviews"
-										className="hover:underline"
-										onClick={() => setMenuOpen(false)}
-									>
-										Информации од студенти
-									</Link>
-									<Link
-										to="/recommendations"
-										className="hover:underline"
-										onClick={() => setMenuOpen(false)}
-									>
-										Препораки
-									</Link>
-									<Link
-										to="/account"
-										className="hover:underline"
-										onClick={() => setMenuOpen(false)}
-									>
-										Профил
-									</Link>
-									<Link
-										to="/subject-preferences"
-										className="hover:underline"
-										onClick={() => setMenuOpen(false)}
-									>
-										Омилени предмети
-									</Link>
-									<button
-										onClick={() => {
-											handleLogout();
-											setMenuOpen(false);
-										}}
-										className="text-left text-red-400 hover:underline"
-									>
-										Одјави се
-									</button>
-								</>
-							)}
-						</>
-					)}
-					{!isAuthenticated && (
-						<Link to="/login" onClick={() => setMenuOpen(false)}>
-							Најави се
-						</Link>
-					)}
-				</div>
-			)}
-		</nav>
-	);
-};
-
-export default Navbar;
Index: ontend/src/components/PasswordInput.tsx
===================================================================
--- frontend/src/components/PasswordInput.tsx	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,56 +1,0 @@
-import { useState } from "react";
-import eyeOffIcon from "../assets/eye-off.svg";
-import eyeIcon from "../assets/eye.svg";
-
-interface PasswordInputProps {
-	name: string;
-	value: string;
-	placeholder: string;
-	onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;
-	disabled: boolean;
-	error?: string;
-}
-
-const PasswordInput: React.FC<PasswordInputProps> = ({
-	name,
-	value,
-	placeholder,
-	onChange,
-	disabled,
-	error,
-}) => {
-	const [showPassword, setShowPassword] = useState(false);
-
-	const togglePasswordVisibility = () => {
-		setShowPassword(!showPassword);
-	};
-
-	return (
-		<div className="relative">
-			<input
-				type={showPassword ? "text" : "password"}
-				name={name}
-				value={value}
-				onChange={onChange}
-				className="w-full mb-3 p-2 border rounded"
-				disabled={disabled}
-				placeholder={placeholder}
-				required
-			/>
-			<button
-				type="button"
-				onClick={togglePasswordVisibility}
-				className="absolute right-2 top-1/2 transform -translate-y-1/2 flex items-center justify-center pb-2"
-			>
-				<img
-					src={showPassword ? eyeOffIcon : eyeIcon}
-					alt={showPassword ? "Hide password" : "Show password"}
-					className="w-5 h-5"
-				/>
-			</button>
-			{error && <p className="text-red-500 text-sm mb-2">{error}</p>}
-		</div>
-	);
-};
-
-export default PasswordInput;
Index: ontend/src/components/PrivateRoute.tsx
===================================================================
--- frontend/src/components/PrivateRoute.tsx	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,30 +1,0 @@
-import React from "react";
-import { Navigate } from "react-router-dom";
-import { useAuth } from "../hooks/useAuth";
-import { UserType } from "./types";
-
-interface PrivateRouteProps {
-	allowedUserTypes?: UserType[];
-	children: React.ReactNode;
-}
-
-const PrivateRoute: React.FC<PrivateRouteProps> = ({
-	allowedUserTypes,
-	children,
-}) => {
-	const { isAuthenticated, loading, user } = useAuth();
-	if (loading) {
-		// TODO: add loading screen or skeleton, or dont
-		return null;
-	}
-	if (!isAuthenticated && !loading) {
-		return <Navigate to="/login" replace />;
-	}
-
-	if (allowedUserTypes && user && !allowedUserTypes.includes(user.user_type))
-		return <Navigate to="/" replace />;
-
-	return <>{children}</>;
-};
-
-export default PrivateRoute;
Index: ontend/src/components/Recommendations/DislikeButton.tsx
===================================================================
--- frontend/src/components/Recommendations/DislikeButton.tsx	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,23 +1,0 @@
-import { ThumbsDown } from "lucide-react";
-import { usePreferences } from "../../context/PreferencesContext";
-import { SubjectID } from "../types";
-
-interface DislikeButtonProps {
-	id: SubjectID;
-}
-
-const DislikeButton = ({ id }: DislikeButtonProps) => {
-	const { dislikedIds, toggleDislike } = usePreferences();
-	return (
-		<button
-			onClick={() => toggleDislike(id)}
-			className={`p-1 hover:bg-green-100 rounded transition-colors group ${
-				dislikedIds.has(id) ? "text-red-600 bg-red-100" : "text-gray-400"
-			}`}
-		>
-			<ThumbsDown className="group-hover:text-red-600 transition-colors" />
-		</button>
-	);
-};
-
-export default DislikeButton;
Index: ontend/src/components/Recommendations/LikeButton.tsx
===================================================================
--- frontend/src/components/Recommendations/LikeButton.tsx	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,23 +1,0 @@
-import { ThumbsUp } from "lucide-react";
-import { usePreferences } from "../../context/PreferencesContext";
-import { SubjectID } from "../types";
-
-interface LikeButtonProps {
-	id: SubjectID;
-}
-
-const LikeButton = ({ id }: LikeButtonProps) => {
-	const { likedIds, toggleLike } = usePreferences();
-	return (
-		<button
-			onClick={() => toggleLike(id)}
-			className={`p-1 hover:bg-green-100 rounded transition-colors group ${
-				likedIds.has(id) ? "text-green-600 bg-green-100" : "text-gray-400"
-			}`}
-		>
-			<ThumbsUp className="group-hover:text-green-600 transition-colors" />
-		</button>
-	);
-};
-
-export default LikeButton;
Index: ontend/src/components/Reviews/Votes.tsx
===================================================================
--- frontend/src/components/Reviews/Votes.tsx	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,71 +1,0 @@
-import { ArrowDown, ArrowUp } from "lucide-react";
-import { useState } from "react";
-import axiosInstance from "../../api/axiosInstance";
-import { useAuth } from "../../hooks/useAuth";
-import { Review } from "../types";
-
-interface VotesProps {
-	review: Review;
-}
-
-const Votes = ({ review }: VotesProps) => {
-	const [localCount, setLocalCount] = useState<number>(review.votes_score ?? 0);
-	const { isAuthenticated } = useAuth();
-	const [userVote, setUserVote] = useState<"up" | "down" | "none">(
-		review.user_has_voted ?? "none"
-	);
-
-	const handleClick = async (vote_type: "up" | "down") => {
-		const review_id = review.id;
-		try {
-			const response = await axiosInstance.post<{
-				message: string;
-				vote_score: number;
-			}>("subjects/subject-review/toggle-vote/", {
-				review_id: review_id,
-				vote_type: vote_type,
-			});
-			setUserVote(userVote === vote_type ? "none" : vote_type);
-
-			// in the case that someone has voted on a review since we opened the page and we vote on the same review
-			// an upvote or downvote might change the counter by more than one which might look confusing
-			setLocalCount(response.data.vote_score);
-		} catch (err) {
-			console.error("Error occured: ", err);
-		}
-	};
-
-	return (
-		<div className="flex items-center space-x-1">
-			<button
-				className={`flex items-center justify-center w-6 h-6 rounded transition-colors${
-					!isAuthenticated
-						? "cursor-not-allowed"
-						: "cursor-pointer hover:text-green-600 hover:bg-green-50 "
-				}
-					${userVote == "up" ? "text-green-600" : "text-gray-400"}`}
-				onClick={() => handleClick("up")}
-				disabled={!isAuthenticated}
-			>
-				<ArrowUp className="w-4 h-4" />
-			</button>
-			<span className="text-sm font-medium text-gray-700 min-w-[20px] text-center">
-				{localCount}
-			</span>
-			<button
-				className={`flex items-center justify-center w-6 h-6 rounded transition-colors${
-					!isAuthenticated
-						? "cursor-not-allowed"
-						: "cursor-pointer hover:text-red-600 hover:bg-green-50 "
-				}
-					${userVote == "down" ? "text-red-600" : "text-gray-400"}`}
-				onClick={() => handleClick("down")}
-				disabled={!isAuthenticated}
-			>
-				<ArrowDown className="w-4 h-4" />
-			</button>
-		</div>
-	);
-};
-
-export default Votes;
Index: ontend/src/components/ScrollToTop.tsx
===================================================================
--- frontend/src/components/ScrollToTop.tsx	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,12 +1,0 @@
-import { useEffect } from 'react';
-import { useLocation } from 'react-router-dom';
-
-export default function ScrollToTop() {
-  const { pathname } = useLocation();
-
-  useEffect(() => {
-    window.scrollTo(0, 0);
-  }, [pathname]);
-
-  return null;
-}
Index: ontend/src/components/StudentForm/FieldButton.tsx
===================================================================
--- frontend/src/components/StudentForm/FieldButton.tsx	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,66 +1,0 @@
-import { Dispatch, SetStateAction } from "react";
-import { toggleSelection } from "./utils";
-
-const FieldButton: React.FC<{
-	keyProp: string | number;
-	state: string[];
-	stateSetter: Dispatch<SetStateAction<any[]>>;
-	field: "prof" | "tech" | "eval" | "domains" | "ass";
-	isSelected: boolean;
-	isDisabled: boolean;
-	setIsNemamSelected: Dispatch<
-		SetStateAction<{
-			domains: boolean;
-			tech: boolean;
-			eval: boolean;
-			prof: boolean;
-			ass: boolean;
-		}>
-	>;
-	searchSetter?: Dispatch<SetStateAction<string>>;
-}> = ({
-	keyProp,
-	state,
-	stateSetter,
-	field,
-	isSelected,
-	isDisabled,
-	setIsNemamSelected,
-	searchSetter,
-}) => {
-	const handleClick = () => {
-		if (searchSetter) searchSetter("");
-		if (keyProp === "Немам") {
-			if (state.includes("None")) {
-				stateSetter([]);
-			} else {
-				stateSetter(["None"]);
-			}
-			setIsNemamSelected((prev) => ({
-				...prev,
-				[field]: !prev[field],
-			}));
-		} else {
-			const new_ = state.filter((t) => t !== "Немам");
-			toggleSelection(keyProp, stateSetter, new_);
-		}
-	};
-
-	return (
-		<button
-			type="button"
-			key={keyProp}
-			onClick={handleClick}
-			disabled={isDisabled}
-			className={`px-3 py-2 border rounded-md transition-colors ${
-				isSelected
-					? "bg-green-100 border-green-300 text-green-800"
-					: "bg-white hover:bg-gray-50 border-gray-300"
-			} ${isDisabled ? "opacity-50 cursor-not-allowed" : ""}`}
-		>
-			{keyProp}
-		</button>
-	);
-};
-
-export default FieldButton;
Index: ontend/src/components/StudentForm/SkeletonForm.tsx
===================================================================
--- frontend/src/components/StudentForm/SkeletonForm.tsx	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,123 +1,0 @@
-const SkeletonForm = () => {
-	return (
-		<div className="space-y-6 max-w-4xl mx-auto animate-pulse">
-			{/* Header */}
-			<div className="h-8 bg-gray-200 rounded-md w-64 mx-auto mb-4" />
-
-			{/* Index and Study Track */}
-			<div className="grid grid-cols-1 md:grid-cols-2 gap-6">
-				<div>
-					<div className="h-6 bg-gray-200 rounded-md w-32 mb-2" />
-					<div className="h-10 bg-gray-200 rounded-md w-full" />
-				</div>
-				<div>
-					<div className="h-6 bg-gray-200 rounded-md w-32 mb-2" />
-					<div className="h-10 bg-gray-200 rounded-md w-full" />
-				</div>
-			</div>
-
-			{/* Year */}
-			<div>
-				<div className="h-6 bg-gray-200 rounded-md w-40 mb-2" />
-				<div className="h-10 bg-gray-200 rounded-md w-full" />
-			</div>
-
-			{/* Subjects Selector (Semesters grid) */}
-			<div>
-				<div className="h-6 bg-gray-200 rounded-md w-56 mb-4" />
-				<div className="grid grid-cols-1 gap-4">
-					{Array.from({ length: 4 }).map((_, i) => (
-						<div
-							key={i}
-							className="border border-gray-200 rounded-lg p-4 bg-gray-50 space-y-3"
-						>
-							<div className="h-5 bg-gray-200 rounded-md w-32 mb-2" />
-							<div>
-								<div className="h-4 bg-gray-200 rounded-md w-28 mb-2" />
-								<div className="flex flex-wrap gap-2 mb-2">
-									{Array.from({ length: 2 }).map((_, j) => (
-										<div key={j} className="h-8 bg-gray-200 rounded-md w-28" />
-									))}
-								</div>
-							</div>
-							<div>
-								<div className="h-4 bg-gray-200 rounded-md w-32 mb-2" />
-								<div className="h-8 bg-gray-200 rounded-md w-full mb-2" />{" "}
-								{/* search input */}
-								<div className="flex flex-wrap gap-2 mb-2">
-									{Array.from({ length: 3 }).map((_, k) => (
-										<div key={k} className="h-8 bg-gray-200 rounded-md w-28" />
-									))}
-								</div>
-							</div>
-						</div>
-					))}
-				</div>
-			</div>
-
-			{/* Extracurricular checkbox */}
-			<div>
-				<div className="h-5 bg-gray-200 rounded-md w-80 mb-2" />
-			</div>
-
-			{/* Study Effort */}
-			<div>
-				<div className="h-6 bg-gray-200 rounded-md w-40 mb-4" />
-				<div className="flex gap-2">
-					{[1, 2, 3, 4, 5].map((i) => (
-						<div key={i} className="h-10 bg-gray-200 rounded-md w-16" />
-					))}
-				</div>
-			</div>
-
-			{/* Interest Fields */}
-			<div>
-				<div className="h-6 bg-gray-200 rounded-md w-40 mb-4" />
-				<div className="flex flex-wrap gap-2">
-					{[1, 2, 3, 4, 5, 6].map((i) => (
-						<div key={i} className="h-10 bg-gray-200 rounded-md w-32" />
-					))}
-				</div>
-			</div>
-
-			{/* Technologies */}
-			<div>
-				<div className="h-6 bg-gray-200 rounded-md w-44 mb-4" />
-				<div className="flex flex-wrap gap-2">
-					{[1, 2, 3, 4].map((i) => (
-						<div key={i} className="h-10 bg-gray-200 rounded-md w-32" />
-					))}
-				</div>
-			</div>
-
-			{/* Evaluation */}
-			<div>
-				<div className="h-6 bg-gray-200 rounded-md w-52 mb-4" />
-				<div className="flex flex-wrap gap-2">
-					{[1, 2, 3].map((i) => (
-						<div key={i} className="h-10 bg-gray-200 rounded-md w-36" />
-					))}
-				</div>
-			</div>
-
-			{/* Favorite Professors */}
-			<div>
-				<div className="h-6 bg-gray-200 rounded-md w-56 mb-4" />
-				<div className="h-10 bg-gray-200 rounded-md w-60 mb-2" />{" "}
-				{/* search input */}
-				<div className="flex flex-wrap gap-2">
-					{[1, 2, 3, 4, 5].map((i) => (
-						<div key={i} className="h-10 bg-gray-200 rounded-md w-32" />
-					))}
-				</div>
-			</div>
-
-			{/* Submit Button */}
-			<div className="pt-4">
-				<div className="h-12 bg-gray-200 rounded-md w-32" />
-			</div>
-		</div>
-	);
-};
-
-export default SkeletonForm;
Index: ontend/src/components/StudentForm/StudentForm.tsx
===================================================================
--- frontend/src/components/StudentForm/StudentForm.tsx	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,792 +1,0 @@
-import { isAxiosError } from "axios";
-import { useCallback, useEffect, useState } from "react";
-import axiosInstance from "../../api/axiosInstance";
-import { fetchFormData } from "../../api/formdata";
-import { fetchSubjects } from "../../api/subjects";
-import {
-	EVALUATIONS,
-	EVALUATIONS_MAP,
-	STUDY_EFFORT,
-	STUDY_TRACKS,
-	YEARS,
-} from "../../constants/subjects";
-import { useRecommendations } from "../../context/RecommendationsContext";
-import { useSubjects } from "../../context/SubjectsContext";
-import { useAuth } from "../../hooks/useAuth";
-import { StudentData, StudyTrack, Subject } from "../types";
-import FieldButton from "./FieldButton";
-import SkeletonForm from "./SkeletonForm";
-import SubjectsSelector from "./SubjectsSelector";
-import {
-	getPassedSubjectsByID,
-	LatinToCyrillic,
-	mapToID,
-	mapToSubjects,
-	validateForm,
-} from "./utils";
-
-interface StudentFormProps {
-	formData: StudentData | null;
-	isLoading: boolean;
-}
-
-interface DistinctSubjectData {
-	tags: string[];
-	professors: string[];
-	assistants: string[];
-	technologies: string[];
-}
-
-const parseBackendError = (error: unknown): string => {
-	if (isAxiosError(error) && error.response) {
-		const data = error.response.data;
-
-		if (data && data.detail) {
-			return data.detail;
-		}
-
-		if (data && data.message) {
-			return data.message;
-		}
-
-		if (data && typeof data === "object" && Object.keys(data).length > 0) {
-			const firstErrorField = Object.keys(data)[0];
-			const errorMessages = data[firstErrorField];
-
-			if (Array.isArray(errorMessages) && errorMessages.length > 0) {
-				return errorMessages[0];
-			}
-		}
-	}
-
-	if (error instanceof Error) {
-		return error.message;
-	}
-
-	return "An unknown error occurred. Please try again.";
-};
-
-const StudentForm = ({ formData, isLoading }: StudentFormProps) => {
-	const [subjects] = useSubjects();
-	const [hasSubmitted, setHasSubmitted] = useState(false);
-	const [validationErrors, setValidationErrors] = useState<{
-		[key: string]: string;
-	}>({});
-	const [index, setIndex] = useState(formData?.index || "");
-	const [studyTrack, setStudyTrack] = useState<StudyTrack | "">(
-		(formData?.study_track as StudyTrack) || ""
-	);
-	const [year, setYear] = useState(formData?.current_year || 1);
-	const [passedSubjectsPerSemester, setPassedSubjectsPerSemester] = useState<
-		Record<number, Subject[]>
-	>(
-		(formData?.passed_subjects_per_semester &&
-			mapToSubjects(formData.passed_subjects_per_semester, subjects || [])) ||
-			Object.fromEntries(Array.from({ length: 8 }, (_, i) => [[i + 1], []]))
-	);
-	const [studyEffort, setStudyEffort] = useState(formData?.study_effort || "");
-	const [, setRecommendations] = useRecommendations();
-	const [domains, setDomains] = useState<string[]>(formData?.tags || []);
-	const [semesterSearchTerms, setSemesterSearchTerms] = useState<
-		Record<number, string>
-	>({});
-	const [professorsSearchTerm, setProfessorSearchTerm] = useState("");
-	const [assistantsSearchTerm, setAssistantsSearchTerm] = useState("");
-	const [technologies, setTechnologies] = useState<string[]>(
-		formData?.technologies || []
-	);
-	const [evaluation, setEvaluation] = useState(formData?.evaluation || []);
-	const [favoriteProfs, setFavoriteProfs] = useState<string[]>(
-		formData?.professors || []
-	);
-	const [favoriteAssistants, setFavoriteAssistants] = useState<string[]>(
-		formData?.assistants || []
-	);
-	const [isNemamSelected, setIsNemamSelected] = useState({
-		domains: false,
-		tech: false,
-		eval: false,
-		prof: false,
-		ass: false,
-	});
-	const [formStatus, setFormStatus] = useState<{
-		isSubmitting: boolean;
-		message: string;
-		isError: boolean;
-	}>({
-		isSubmitting: false,
-		message: "",
-		isError: false,
-	});
-	const [showProfessors, setShowProfessors] = useState(false);
-	const [showAssistants, setShowAssistants] = useState(false);
-	const [, setSubjects] = useSubjects();
-	const [distinctSubjectData, setDistinctSubjectData] =
-		useState<DistinctSubjectData>({
-			tags: [],
-			professors: [],
-			assistants: [],
-			technologies: [],
-		});
-	const [hasExtracurricular, setHasExtracurricular] = useState(
-		formData?.has_extracurricular || false
-	);
-	const [invalidSubjects, setInvalidSubjects] = useState<Subject[]>([]);
-	const { setFormData } = useAuth();
-
-	// Update form when formData changes (e.g., after fetching user data)
-	useEffect(() => {
-		if (!subjects || subjects.length === 0) {
-			fetchSubjects(setSubjects);
-		}
-		const token = localStorage.getItem("access");
-		if (token && !formData) {
-			fetchFormData(token, setFormData);
-		}
-	}, []);
-	useEffect(() => {
-		if (formData) {
-			setIndex(formData.index || "");
-			setStudyTrack((formData.study_track as StudyTrack) || "");
-			setYear(formData.current_year || 1);
-			setStudyEffort(formData.study_effort || "");
-
-			const domains_ = (formData.tags || []).includes("None")
-				? []
-				: formData.tags || [];
-			setDomains(domains_);
-
-			const technologies_ = (formData.technologies || []).includes("None")
-				? []
-				: formData.technologies || [];
-			setTechnologies(technologies_);
-
-			const eval_ = (formData.evaluation || []).map(
-				(val: string) =>
-					Object.keys(EVALUATIONS_MAP).find(
-						(key) =>
-							EVALUATIONS_MAP[key as keyof typeof EVALUATIONS_MAP] === val
-					) || val
-			);
-			setEvaluation(
-				eval_.includes("Немам") || eval_.includes("None") ? [] : eval_
-			);
-
-			const favoriteProfs_ = (formData.professors || []).includes("None")
-				? []
-				: formData.professors || [];
-			setFavoriteProfs(favoriteProfs_);
-
-			const favoriteAssistants_ = (formData.assistants || []).includes("None")
-				? []
-				: formData.assistants || [];
-			setFavoriteAssistants(favoriteAssistants_);
-
-			if (
-				formData.passed_subjects_per_semester &&
-				subjects &&
-				subjects.length > 0
-			) {
-				const mappedSubjects = mapToSubjects(
-					formData.passed_subjects_per_semester,
-					subjects
-				);
-				setPassedSubjectsPerSemester(mappedSubjects);
-			} else {
-				setPassedSubjectsPerSemester(
-					Object.fromEntries(Array.from({ length: 8 }, (_, i) => [[i + 1], []]))
-				);
-			}
-			setHasExtracurricular(formData.has_extracurricular || false);
-		}
-	}, [formData]);
-
-	const setUniqueValues = useCallback((subjects: Subject[]) => {
-		const allProfessors: string[] = subjects
-			.flatMap((subject: Subject) => subject.subject_info.professors)
-			.filter((p): p is string => typeof p === "string");
-		const uniqueProfessors = Array.from(new Set(allProfessors));
-		const allProfessors_ = uniqueProfessors
-			.filter((prof) => prof.trim().toLowerCase() !== "сите професори")
-			.sort((a, b) => a.localeCompare(b));
-
-		const allAssistants: string[] = subjects
-			.flatMap((subject: Subject) => subject.subject_info.assistants)
-			.filter((p): p is string => typeof p === "string");
-		const uniqueAssistants = Array.from(new Set(allAssistants));
-		const allAssistants_ = uniqueAssistants
-			.filter((ass) => ass.trim().toLowerCase() !== "сите асистенти")
-			.sort((a, b) => a.localeCompare(b));
-		setDistinctSubjectData(() => ({
-			tags: Array.from(
-				new Set(subjects.flatMap((subject) => subject.subject_info.tags))
-			).sort((a, b) => a.localeCompare(b)),
-			technologies: Array.from(
-				new Set(
-					subjects
-						.flatMap((subject) => subject.subject_info.technologies)
-						.filter((tech) => tech != "any" && tech != "")
-				)
-			).sort((a, b) => a.localeCompare(b)),
-			professors: allProfessors_,
-			assistants: allAssistants_,
-		}));
-	}, []);
-
-	useEffect(() => {
-		if (subjects && subjects.length > 0) {
-			setUniqueValues(subjects);
-		}
-	}, [subjects, setUniqueValues]);
-
-	const toggleSubject = (subject: Subject, semester: number) => {
-		const exists = (passedSubjectsPerSemester[semester] || []).some(
-			(s) => s.id === subject.id
-		);
-		const totalPassed = Object.values(passedSubjectsPerSemester).reduce(
-			(acc, subjects) => acc + subjects.length,
-			0
-		);
-		if (totalPassed >= 40) {
-			console.log("olabavi");
-			return;
-		}
-		if (exists) {
-			setPassedSubjectsPerSemester({
-				...passedSubjectsPerSemester,
-				[semester]: passedSubjectsPerSemester[semester].filter(
-					(s) => s.id != subject.id
-				),
-			});
-		} else {
-			setPassedSubjectsPerSemester({
-				...passedSubjectsPerSemester,
-				[semester]: [...(passedSubjectsPerSemester[semester] || []), subject],
-			});
-		}
-	};
-
-	const handleSubmit = async (e: React.FormEvent) => {
-		e.preventDefault();
-		setRecommendations([]);
-		const totalCredits = { value: -1 };
-		const creditsByLevel = { value: [0, 0, 0] };
-		const errors = validateForm({
-			index,
-			studyTrack,
-			year,
-			studyEffort,
-			passedSubjectsPerSemester,
-			hasExtracurricular,
-			setInvalidSubjects,
-			totalCredits,
-			creditsByLevel,
-		});
-		if (Object.keys(errors).length > 0) {
-			setValidationErrors(errors);
-			window.scrollTo({ top: 0, behavior: "smooth" });
-			if (errors.invalidSubjects)
-				setFormStatus({
-					isSubmitting: false,
-					message: errors.invalidSubjects,
-					isError: true,
-				});
-			else
-				setFormStatus({
-					isSubmitting: false,
-					message: `Пополни ги сите задолжителни полиња`,
-					isError: true,
-				});
-			return;
-		}
-		setValidationErrors({});
-		setFormStatus({
-			isSubmitting: true,
-			message: "",
-			isError: false,
-		});
-
-		const payload = {
-			index,
-			study_track: studyTrack,
-			current_year: year,
-			passed_subjects: getPassedSubjectsByID(passedSubjectsPerSemester),
-			study_effort: studyEffort,
-			tags: domains,
-			technologies: technologies,
-			evaluation: evaluation.map(
-				(ev) => EVALUATIONS_MAP[ev as keyof typeof EVALUATIONS_MAP] ?? ev
-			),
-			professors: favoriteProfs,
-			assistants: favoriteAssistants,
-			passed_subjects_per_semester: mapToID(passedSubjectsPerSemester),
-			has_extracurricular: hasExtracurricular,
-			total_credits: totalCredits.value,
-			level_credits: creditsByLevel.value,
-		};
-		try {
-			// For updating existing form data use PATCH instead of PUT for partial updates
-			const method = formData?.has_filled_form ? "PATCH" : "POST";
-			const response = await axiosInstance({
-				url: "/auth/form/",
-				method,
-				data: payload,
-			});
-			setFormData(response.data);
-			setHasSubmitted(true);
-			setFormStatus({
-				isSubmitting: false,
-				message: "Формата е успешно зачувана!",
-				isError: false,
-			});
-			setTimeout(() => {
-				setFormStatus((prev) => ({ ...prev, message: "" }));
-			}, 5000);
-			window.scrollTo({ top: 0, behavior: "smooth" });
-		} catch (error) {
-			const errorMessage = parseBackendError(error);
-			setFormStatus({
-				isSubmitting: false,
-				message: `Грешка при зачувување: ${errorMessage}`,
-				isError: true,
-			});
-			window.scrollTo({ top: 0, behavior: "smooth" });
-		}
-	};
-
-	const filteredMandatorySubjects = studyTrack
-		? subjects
-				.filter(
-					(subj) =>
-						subj.subject_info.mandatory_for.includes(studyTrack) &&
-						subj.subject_info.semester <= year * 2
-				)
-				.sort((a, b) => a.subject_info.semester - b.subject_info.semester)
-		: [];
-	const filteredElectiveSubjects = studyTrack
-		? subjects.filter((subj) =>
-				subj.subject_info.elective_for.includes(studyTrack)
-		  )
-		: [];
-
-	const filteredProfessors = [
-		...favoriteProfs.filter(
-			(prof) =>
-				professorsSearchTerm === "" ||
-				prof
-					.toLowerCase()
-					.includes(LatinToCyrillic(professorsSearchTerm).toLowerCase())
-		),
-		...distinctSubjectData.professors
-			.filter(
-				(prof) =>
-					!favoriteProfs.includes(prof) &&
-					(professorsSearchTerm === "" ||
-						prof
-							.toLowerCase()
-							.includes(LatinToCyrillic(professorsSearchTerm).toLowerCase()))
-			)
-			.sort((a, b) => a.localeCompare(b)),
-	];
-
-	const filteredAssistants = [
-		...favoriteAssistants.filter(
-			(ass) =>
-				assistantsSearchTerm === "" ||
-				ass
-					.toLowerCase()
-					.includes(LatinToCyrillic(assistantsSearchTerm).toLowerCase())
-		),
-		...distinctSubjectData.assistants
-			.filter(
-				(ass) =>
-					!favoriteAssistants.includes(ass) &&
-					(assistantsSearchTerm === "" ||
-						ass
-							.toLowerCase()
-							.includes(LatinToCyrillic(assistantsSearchTerm).toLowerCase()))
-			)
-			.sort((a, b) => a.localeCompare(b)),
-	];
-
-	if (isLoading) {
-		return <SkeletonForm />;
-	}
-
-	return (
-		<form onSubmit={handleSubmit} className="space-y-6 max-w-4xl mx-auto">
-			<h2 className="text-2xl font-bold mb-4 text-center">
-				{formData?.has_filled_form || hasSubmitted
-					? "Ажурирај ги податоците"
-					: "Внеси податоци"}
-			</h2>
-			{formStatus.message && (
-				<div
-					className={`px-4 py-3 rounded mb-4 font-bold ${
-						formStatus.isError
-							? "bg-red-100 border border-red-400 text-red-700"
-							: "bg-green-100 border border-green-400 text-green-700"
-					}`}
-				>
-					{formStatus.message}
-				</div>
-			)}
-			<div className="grid grid-cols-1 md:grid-cols-2 gap-6">
-				<div>
-					<h3 className="text-lg font-medium text-gray-900 mb-2">Индекс</h3>
-					<input
-						type="text"
-						placeholder="Внеси индекс"
-						value={index}
-						onChange={(e) => setIndex(e.target.value)}
-						className="w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-blue-500 focus:border-blue-500"
-					/>
-					{validationErrors.index && (
-						<p className="mt-1 text-sm text-red-600 font-bold">
-							{validationErrors.index}
-						</p>
-					)}
-				</div>
-
-				<div>
-					<h3 className="text-lg font-medium text-gray-900 mb-2">Смер</h3>
-					<select
-						value={studyTrack}
-						onChange={(e) => {
-							const newTrack = e.target.value as StudyTrack;
-							const filteredPassedSubjectsPerSemester = Object.fromEntries(
-								Object.entries(passedSubjectsPerSemester).map(
-									([semester, subjects]) => {
-										const filteredSubjects = subjects.filter(
-											(subj) =>
-												subj.subject_info.mandatory_for.includes(newTrack) ||
-												subj.subject_info.elective_for.includes(newTrack)
-										);
-										return [
-											semester,
-											filteredSubjects.length > 0 ? filteredSubjects : [],
-										];
-									}
-								)
-							);
-							setPassedSubjectsPerSemester(filteredPassedSubjectsPerSemester);
-							setStudyTrack(newTrack);
-						}}
-						className="w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-blue-500 focus:border-blue-500 custom-select"
-					>
-						<option value="">Избери смер</option>
-						{STUDY_TRACKS.map((track) => (
-							<option key={track} value={track}>
-								{track}
-							</option>
-						))}
-					</select>
-					{validationErrors.studyTrack && (
-						<p className="mt-1 text-sm text-red-600 font-bold">
-							{validationErrors.studyTrack}
-						</p>
-					)}
-				</div>
-			</div>
-			<div>
-				<h3 className="text-lg font-medium text-gray-900 mb-2 flex items-center gap-2">
-					Година за која сакаш препораки
-				</h3>
-				<select
-					value={year}
-					onChange={(e) => setYear(Number(e.target.value))}
-					className="w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-blue-500 focus:border-blue-500 custom-select"
-				>
-					{YEARS.map((y) => (
-						<option key={y} value={y}>
-							{y}. година
-						</option>
-					))}
-				</select>
-				{validationErrors.year && (
-					<p className="mt-1 text-sm text-red-600 font-bold">
-						{validationErrors.year}
-					</p>
-				)}
-			</div>
-			<SubjectsSelector
-				studyTrack={studyTrack}
-				year={year}
-				filteredMandatorySubjects={filteredMandatorySubjects}
-				filteredElectiveSubjects={filteredElectiveSubjects}
-				toggleSubject={toggleSubject}
-				semesterSearchTerms={semesterSearchTerms}
-				setSemesterSearchTerms={setSemesterSearchTerms}
-				validationErrors={validationErrors}
-				passedSubjectsPerSemester={passedSubjectsPerSemester}
-				setPassedSubjectsPerSemester={setPassedSubjectsPerSemester}
-				invalidSubjects={invalidSubjects}
-			/>
-			<div>
-				<label className="flex items-center gap-2 text-lg font-medium text-gray-900 mb-2">
-					<input
-						type="checkbox"
-						checked={hasExtracurricular}
-						onChange={() => setHasExtracurricular(!hasExtracurricular)}
-						className="form-checkbox h-4 w-5 mr-2 accent-green-600"
-					/>
-					Имам завршено HPC курсеви, или некои други екстракурикуларни
-					активности кои носат вкупно 6 кредити.
-				</label>
-			</div>
-			<div>
-				<h3 className="text-lg font-medium text-gray-900 mb-2">
-					Вложен труд при учење
-				</h3>
-				<div className="flex flex-wrap gap-3">
-					{STUDY_EFFORT.map((effort) => (
-						<label
-							key={effort}
-							className={`flex items-center px-3 py-2 rounded-md cursor-pointer transition-colors ${
-								studyEffort == effort && "font-bold"
-							}`}
-						>
-							<input
-								type="radio"
-								checked={studyEffort == effort}
-								onChange={() =>
-									setStudyEffort(studyEffort == effort ? "" : effort)
-								}
-								className="h-4 w-5 mr-2 accent-green-600"
-							/>
-							<span>{effort}</span>
-						</label>
-					))}
-				</div>
-				{validationErrors.studyEffort && (
-					<p className="mt-1 text-sm text-red-600 font-bold">
-						{validationErrors.studyEffort}
-					</p>
-				)}
-			</div>
-			<div>
-				<h3 className="text-lg font-medium text-gray-900 mb-2">
-					Полиња на интерес
-				</h3>
-				<div className="flex flex-wrap gap-2">
-					{["Немам", ...distinctSubjectData.tags].map((item) => {
-						const isSelected =
-							domains.includes(item) ||
-							(item === "Немам" && isNemamSelected["domains"]);
-						const shouldBeDisabled =
-							isNemamSelected["domains"] && item !== "Немам";
-						return (
-							<FieldButton
-								key={item}
-								keyProp={item}
-								state={domains}
-								stateSetter={setDomains}
-								field="domains"
-								isSelected={isSelected}
-								isDisabled={shouldBeDisabled}
-								setIsNemamSelected={setIsNemamSelected}
-							/>
-						);
-					})}
-				</div>
-				{validationErrors.domains && (
-					<p className="mt-1 text-sm text-red-600 font-bold">
-						{validationErrors.domains}
-					</p>
-				)}
-			</div>
-			<div>
-				<h3 className="text-lg font-medium text-gray-900 mb-2">
-					Преферирани технологии
-				</h3>
-				<div className="flex flex-wrap gap-2">
-					{["Немам", ...distinctSubjectData.technologies].map((item) => {
-						const isSelected =
-							technologies.includes(item) ||
-							(item === "Немам" && isNemamSelected["tech"]);
-						const shouldBeDisabled =
-							isNemamSelected["tech"] && item !== "Немам";
-						return (
-							<FieldButton
-								key={item}
-								keyProp={item}
-								state={technologies}
-								stateSetter={setTechnologies}
-								field="tech"
-								isSelected={isSelected}
-								isDisabled={shouldBeDisabled}
-								setIsNemamSelected={setIsNemamSelected}
-							/>
-						);
-					})}
-				</div>
-				{validationErrors.technologies && (
-					<p className="mt-1 text-sm text-red-600 font-bold">
-						{validationErrors.technologies}
-					</p>
-				)}
-			</div>
-			<div>
-				<h3 className="text-lg font-medium text-gray-900 mb-2">
-					Преферирани начини на оценување
-				</h3>
-				<div className="flex flex-wrap gap-2">
-					{["Немам", ...EVALUATIONS].map((item) => {
-						const isSelected =
-							evaluation.includes(item) ||
-							(item === "Немам" && isNemamSelected["eval"]);
-						const shouldBeDisabled =
-							isNemamSelected["eval"] && item !== "Немам";
-						return (
-							<FieldButton
-								key={item}
-								keyProp={item}
-								state={evaluation}
-								stateSetter={setEvaluation}
-								field="eval"
-								isSelected={isSelected}
-								isDisabled={shouldBeDisabled}
-								setIsNemamSelected={setIsNemamSelected}
-							/>
-						);
-					})}
-				</div>
-				{validationErrors.evaluation && (
-					<p className="mt-1 text-sm text-red-600 font-bold">
-						{validationErrors.evaluation}
-					</p>
-				)}
-			</div>
-			<div>
-				<div className="flex items-center mb-2 gap-7">
-					<h3 className="text-lg font-medium text-gray-900 mb-2">
-						Омилени професори
-					</h3>
-					{
-						<input
-							onChange={(e) => setProfessorSearchTerm(e.target.value)}
-							value={professorsSearchTerm}
-							disabled={isNemamSelected["prof"]}
-							type="text"
-							className="w-60 px-3 py-2.5 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-blue-500 focus:border-blue-500 text-gray-900 text-sm"
-							placeholder="Пребарај професор"
-						/>
-					}
-				</div>
-				<div className="flex flex-wrap gap-2">
-					{["Немам", ...filteredProfessors]
-						.slice(0, showProfessors ? undefined : 10)
-						.map((item) => {
-							if (item === "None") return;
-							// hides "Nemam" when searching
-							if (item == "Немам" && professorsSearchTerm !== "") return;
-							const isSelected =
-								favoriteProfs.includes(item) ||
-								(item === "Немам" && isNemamSelected["prof"]);
-							const shouldBeDisabled =
-								isNemamSelected["prof"] && item !== "Немам";
-							return (
-								<FieldButton
-									key={item}
-									keyProp={item}
-									state={favoriteProfs}
-									stateSetter={setFavoriteProfs}
-									field="prof"
-									isSelected={isSelected}
-									isDisabled={shouldBeDisabled}
-									setIsNemamSelected={setIsNemamSelected}
-									searchSetter={setProfessorSearchTerm}
-								/>
-							);
-						})}
-					{filteredProfessors.length == 0 && (
-						<p className="text-gray-500 italic">Нема таков професор</p>
-					)}
-					{filteredProfessors.length > 10 && (
-						<button
-							type="button"
-							onClick={() => setShowProfessors(!showProfessors)}
-							className="px-3 py-2 rounded-md transition-colors duration-200 bg-blue text-blue-500"
-						>
-							{showProfessors ? "Прикажи помалку" : "Прикажи повеќе"}
-						</button>
-					)}
-				</div>
-			</div>
-
-			<div>
-				<div className="flex items-center mb-2 gap-7">
-					<h3 className="text-lg font-medium text-gray-900 mb-2">
-						Омилени асистенти
-					</h3>
-					{
-						<input
-							onChange={(e) => setAssistantsSearchTerm(e.target.value)}
-							value={assistantsSearchTerm}
-							disabled={isNemamSelected["ass"]}
-							type="text"
-							className="w-60 px-3 py-2.5 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-blue-500 focus:border-blue-500 text-gray-900 text-sm"
-							placeholder="Пребарај асистент"
-						/>
-					}
-				</div>
-				<div className="flex flex-wrap gap-2">
-					{["Немам", ...filteredAssistants]
-						.slice(0, showAssistants ? undefined : 10)
-						.map((item) => {
-							if (item === "None") return;
-							// hides "Nemam" when searching
-							if (item == "Немам" && assistantsSearchTerm !== "") return;
-							const isSelected =
-								favoriteAssistants.includes(item) ||
-								(item === "Немам" && isNemamSelected["ass"]);
-							const shouldBeDisabled =
-								isNemamSelected["ass"] && item !== "Немам";
-							return (
-								<FieldButton
-									key={item}
-									keyProp={item}
-									state={favoriteAssistants}
-									stateSetter={setFavoriteAssistants}
-									field="ass"
-									isSelected={isSelected}
-									isDisabled={shouldBeDisabled}
-									setIsNemamSelected={setIsNemamSelected}
-									searchSetter={setAssistantsSearchTerm}
-								/>
-							);
-						})}
-					{filteredAssistants.length == 0 && (
-						<p className="text-gray-500 italic">Нема таков асистент</p>
-					)}
-					{filteredAssistants.length > 10 && (
-						<button
-							type="button"
-							onClick={() => setShowAssistants(!showAssistants)}
-							className="px-3 py-2 rounded-md transition-colors duration-200 bg-blue text-blue-500"
-						>
-							{showAssistants ? "Прикажи помалку" : "Прикажи повеќе"}
-						</button>
-					)}
-				</div>
-			</div>
-			<div className="pt-4">
-				<button
-					type="submit"
-					disabled={formStatus.isSubmitting}
-					className={`w-full md:w-auto px-6 py-3 bg-blue-600 hover:bg-blue-700 text-white font-medium rounded-md shadow focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 transition-colors ${
-						formStatus.isSubmitting ? "opacity-70 cursor-not-allowed" : ""
-					}`}
-				>
-					{formStatus.isSubmitting
-						? "Се зачувува..."
-						: formData?.has_filled_form || hasSubmitted
-						? "Ажурирај"
-						: "Зачувај"}
-				</button>
-			</div>
-		</form>
-	);
-};
-
-export default StudentForm;
Index: ontend/src/components/StudentForm/SubjectsSelector.tsx
===================================================================
--- frontend/src/components/StudentForm/SubjectsSelector.tsx	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,344 +1,0 @@
-import { Dispatch, SetStateAction } from "react";
-import { StudyTrack, Subject } from "../types";
-import { LatinToCyrillic } from "./utils";
-
-interface SubjectsSelectorProps {
-	studyTrack: StudyTrack | "";
-	year: number;
-	filteredMandatorySubjects: Subject[];
-	filteredElectiveSubjects: Subject[];
-	toggleSubject: (id: Subject, semester: number) => void;
-	semesterSearchTerms: Record<number, string>;
-	setSemesterSearchTerms: (term: any) => void;
-	validationErrors: { [key: string]: string };
-	passedSubjectsPerSemester: Record<number, Subject[]>;
-	setPassedSubjectsPerSemester: Dispatch<
-		SetStateAction<Record<number, Subject[]>>
-	>;
-	invalidSubjects: Subject[];
-}
-
-function SubjectsSelector({
-	studyTrack,
-	year,
-	filteredMandatorySubjects,
-	filteredElectiveSubjects,
-	toggleSubject,
-	semesterSearchTerms,
-	setSemesterSearchTerms,
-	validationErrors,
-	passedSubjectsPerSemester,
-	setPassedSubjectsPerSemester,
-	invalidSubjects,
-}: SubjectsSelectorProps) {
-	return (
-		<div>
-			<h3 className="text-lg font-medium text-gray-900 mb-4">
-				Положени предмети по семестри
-			</h3>
-			{studyTrack ? (
-				<div className="grid gap-6">
-					{/* uncomment for displaying 2 semesters side by side on large screens, for now this is good*/}
-					{/* <div className="grid grid-cols-1 lg:grid-cols-2 gap-6"> */}
-					{(() => {
-						const semestersToShow = Array.from(
-							{ length: year * 2 },
-							(_, i) => i + 1
-						);
-
-						return semestersToShow.map((semester) => {
-							const semesterMandatory = filteredMandatorySubjects.filter(
-								(subject) => subject.subject_info.semester === semester
-							);
-
-							const semesterElectives = filteredElectiveSubjects.filter(
-								(subject) => subject.subject_info.semester === semester
-							);
-
-							const seasonElectives = filteredElectiveSubjects.filter(
-								(subject) => subject.subject_info.semester % 2 === semester % 2
-							);
-
-							const totalSlots = semester === 1 ? 5 : 6;
-							const electiveSlots = totalSlots - semesterMandatory.length;
-
-							const electivesSource =
-								(semesterSearchTerms[semester] || "") === ""
-									? semesterElectives
-									: seasonElectives;
-
-							const selectedElectivesForSemester = (
-								passedSubjectsPerSemester[semester] || []
-							).filter((subject) =>
-								subject.subject_info.elective_for.includes(studyTrack)
-							);
-
-							const semesterInvalid = invalidSubjects.filter(
-								(subject: Subject) =>
-									(passedSubjectsPerSemester[semester] || []).some(
-										(s) => s.id === subject.id
-									)
-							);
-							return (
-								<div
-									key={semester}
-									className="border border-gray-200 rounded-lg p-4 bg-gray-50"
-								>
-									<h4 className="text-md font-medium text-gray-800 mb-3">
-										Семестар {semester}
-									</h4>
-
-									<div className="space-y-4">
-										{semesterMandatory.length > 0 && (
-											<div>
-												<div className="flex items-center gap-4">
-													<h5 className="text-sm font-medium text-gray-700 mb-2">
-														Задолжителни предмети
-													</h5>
-													<button
-														className="mb-2 px-3 py-2 border rounded-md transition-colors duration-200 text-sm text-white bg-blue-500 hover:bg-blue-800"
-														disabled={filteredMandatorySubjects.length === 0}
-														type="button"
-														onClick={() => {
-															const semesterMandatory =
-																filteredMandatorySubjects.filter(
-																	(subject) =>
-																		subject.subject_info.semester === semester
-																);
-
-															const allSelected = semesterMandatory.every(
-																(subject) =>
-																	(
-																		passedSubjectsPerSemester[semester] || []
-																	).some((s) => s.id === subject.id)
-															);
-
-															if (allSelected) {
-																setPassedSubjectsPerSemester((prev) => ({
-																	...prev,
-																	[semester]: (prev[semester] || []).filter(
-																		(subject) =>
-																			!semesterMandatory.some(
-																				(mandatory) =>
-																					mandatory.id === subject.id
-																			)
-																	),
-																}));
-															} else {
-																setPassedSubjectsPerSemester((prev) => {
-																	const existing = prev[semester] || [];
-																	const newSubjects = semesterMandatory.filter(
-																		(mandatory) =>
-																			!existing.some(
-																				(s) => s.id === mandatory.id
-																			)
-																	);
-																	return {
-																		...prev,
-																		[semester]: [...existing, ...newSubjects],
-																	};
-																});
-															}
-														}}
-													>
-														Одбери ги сите
-													</button>
-												</div>
-												<div className="flex flex-wrap gap-2">
-													{semesterMandatory.map((subject) => {
-														const isSelected = (
-															passedSubjectsPerSemester[semester] || []
-														).some((s) => s.id === subject.id);
-														const isInvalid = semesterInvalid.some(
-															(s) => s.id === subject.id
-														);
-														return (
-															<button
-																type="button"
-																key={subject.id}
-																onClick={() => toggleSubject(subject, semester)}
-																className={`flex items-center gap-2 px-3 py-2 border rounded-md transition-all duration-200 text-sm
-                                  									// TODO
-																	//prettier-ignore
-																	${
-																		isInvalid
-																			? "bg-red-300 border-red-400 text-red-700"
-																			: isSelected
-																			? "bg-green-500 border-green-600 text-green-50"
-																			: "bg-white hover:bg-gray-50 border-gray-300"
-																	}`}
-																aria-pressed={isSelected}
-															>
-																{isSelected && !isInvalid && (
-																	<img
-																		src="src/assets/tick.svg"
-																		className="w-4 h-4 mr-1"
-																	/>
-																)}
-																<span>{subject.name}</span>
-															</button>
-														);
-													})}
-												</div>
-											</div>
-										)}
-
-										{electiveSlots > 0 && (
-											<div>
-												<h5 className="text-sm font-medium text-gray-700 mb-2">
-													Изборни предмети (
-													{selectedElectivesForSemester.length}/{electiveSlots})
-												</h5>
-
-												<input
-													type="text"
-													placeholder={`Пребарај ${
-														semester % 2 === 0 ? "летни" : "зимски"
-													} изборни предмети`}
-													value={semesterSearchTerms[semester] || ""}
-													disabled={
-														selectedElectivesForSemester.length >= electiveSlots
-													}
-													className="w-full px-3 py-2 mb-2 text-sm border border-gray-300 rounded-md shadow-sm focus:outline-none 
-														focus:ring-blue-500 focus:border-blue-500  disabled:opacity-50 disabled:cursor-not-allowed"
-													onChange={(e) => {
-														setSemesterSearchTerms((prev: any) => ({
-															...prev,
-															[semester]: e.target.value,
-														}));
-													}}
-												/>
-
-												{selectedElectivesForSemester.length > 0 && (
-													<div className="mb-3">
-														<div className="flex flex-wrap gap-2">
-															{selectedElectivesForSemester.map((subject) => {
-																const isInvalid = semesterInvalid.some(
-																	(s) => s.id === subject.id
-																);
-																return (
-																	<button
-																		type="button"
-																		key={subject.id}
-																		onClick={() =>
-																			toggleSubject(subject, semester)
-																		}
-																		className={`flex items-center gap-2 px-3 py-2 border rounded-md transition-all duration-200 text-sm  shadow-md
-       																 	${
-																					isInvalid
-																						? "bg-red-300 border-red-400 text-red-700"
-																						: "bg-green-500 text-white border-green-600"
-																				}`}
-																		aria-pressed={true}
-																	>
-																		{!isInvalid && (
-																			<img
-																				src="src/assets/tick.svg"
-																				className="w-4 h-4 mr-1"
-																			/>
-																		)}
-																		<span>{subject.name}</span>
-																	</button>
-																);
-															})}
-														</div>
-													</div>
-												)}
-
-												{selectedElectivesForSemester.length <
-													electiveSlots && (
-													<div>
-														<p className="text-xs text-gray-600 mb-2">
-															Избери од достапните:
-														</p>
-														<div className="flex flex-wrap gap-2 h-max">
-															{electivesSource
-																.filter(
-																	(subject) =>
-																		!Object.values(
-																			passedSubjectsPerSemester
-																		).some((arr) =>
-																			arr.some((s) => s.id === subject.id)
-																		) &&
-																		!semesterMandatory.includes(subject) &&
-																		((semesterSearchTerms[semester] || "") ===
-																			"" ||
-																			subject.name
-																				.toLowerCase()
-																				.includes(
-																					(
-																						LatinToCyrillic(
-																							semesterSearchTerms[semester]
-																						) || ""
-																					).toLowerCase()
-																				))
-																)
-																.sort(
-																	(a, b) =>
-																		b.subject_info.participants[0] -
-																		a.subject_info.participants[0]
-																)
-																.slice(0, 8)
-																.map((subject) => {
-																	const isInvalid = semesterInvalid.some(
-																		(s) => s.id === subject.id
-																	);
-																	return (
-																		<button
-																			type="button"
-																			key={subject.id}
-																			onClick={() => {
-																				if (
-																					selectedElectivesForSemester.length <
-																					electiveSlots
-																				) {
-																					setSemesterSearchTerms(
-																						(prev: any) => ({
-																							...prev,
-																							[semester]: "",
-																						})
-																					);
-																					toggleSubject(subject, semester);
-																				}
-																			}}
-																			disabled={
-																				selectedElectivesForSemester.length >=
-																				electiveSlots
-																			}
-																			className={`flex items-center gap-2 px-3 py-2 border rounded-md transition-all duration-200 text-sm bg-white text-gray-800 border-gray-300 hover:bg-gray-100 disabled:opacity-50 disabled:cursor-not-allowed
-          																		${isInvalid ? "bg-red-300 border-red-400 text-red-700" : ""}`}
-																		>
-																			<span>{subject.name}</span>
-																		</button>
-																	);
-																})}
-														</div>
-														<p className="mt-3 text-xs text-gray-500 px-2 py-1">
-															Не можеш да го најдеш твојот предмет? Пребарај го.
-														</p>
-													</div>
-												)}
-											</div>
-										)}
-									</div>
-									{semester == 1 &&
-										validationErrors.passedSubjectsPerSemester && (
-											<p className="mt-5 ml-1 text-sm text-red-600 font-bold">
-												{validationErrors.passedSubjectsPerSemester}
-											</p>
-										)}
-								</div>
-							);
-						});
-					})()}
-				</div>
-			) : (
-				<p className="text-gray-500 italic">
-					Избери смер и година за да се прикажат предметите.
-				</p>
-			)}
-		</div>
-	);
-}
-
-export default SubjectsSelector;
Index: ontend/src/components/StudentForm/utils.ts
===================================================================
--- frontend/src/components/StudentForm/utils.ts	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,238 +1,0 @@
-import { Dispatch, SetStateAction } from "react";
-import { L1_LIMIT, L2_LIMIT } from "../../constants/subjects";
-import { StudyTrack, Subject, SubjectID } from "../types";
-
-// NOTE: there is not a single match for the letter 'ѕ' (ѕ како ѕвонче) in the entire db, so both dz and dj are mapped to 'џ'
-// this way you can search for "Menadzment", instead of having to write "Menadjment"
-// if there is ever a term anywhere in the db that contains the letter 'ѕ' by design that term will be unsearchable :)
-
-const latinToCyrillicMap: [RegExp, string][] = [
-	[/(sh)/gi, "ш"],
-	[/(ch)/gi, "ч"],
-	[/(zh)/gi, "ж"],
-	[/(gj)/gi, "ѓ"],
-	[/(kj)/gi, "ќ"],
-	[/(lj)/gi, "љ"],
-	[/(nj)/gi, "њ"],
-	[/(dj)/gi, "џ"],
-	[/(dz)/gi, "џ"],
-	[/(a)/gi, "а"],
-	[/(b)/gi, "б"],
-	[/(v)/gi, "в"],
-	[/(g)/gi, "г"],
-	[/(d)/gi, "д"],
-	[/(e)/gi, "е"],
-	[/(z)/gi, "з"],
-	[/(i)/gi, "и"],
-	[/(j)/gi, "ј"],
-	[/(k)/gi, "к"],
-	[/(l)/gi, "л"],
-	[/(m)/gi, "м"],
-	[/(n)/gi, "н"],
-	[/(o)/gi, "о"],
-	[/(p)/gi, "п"],
-	[/(r)/gi, "р"],
-	[/(s)/gi, "с"],
-	[/(t)/gi, "т"],
-	[/(u)/gi, "у"],
-	[/(f)/gi, "ф"],
-	[/(h)/gi, "х"],
-	[/(c)/gi, "ц"],
-];
-
-export function LatinToCyrillic(text: string): string {
-	let result = text;
-	latinToCyrillicMap.forEach(([pattern, replacement]) => {
-		result = result.replace(pattern, replacement);
-	});
-	return result;
-}
-
-export const toggleSelection = (
-	value: string | number,
-	setter: React.Dispatch<React.SetStateAction<any[]>>,
-	current: any[]
-) => {
-	if (current.includes(value)) {
-		setter(current.filter((v) => v !== value));
-	} else {
-		setter([...current, value]);
-	}
-};
-
-export const validateForm = ({
-	index,
-	studyTrack,
-	year,
-	studyEffort,
-	passedSubjectsPerSemester,
-	hasExtracurricular,
-	setInvalidSubjects,
-	totalCredits,
-	creditsByLevel,
-}: {
-	index: string;
-	studyTrack: StudyTrack | "";
-	year: number;
-	studyEffort: number | string;
-	passedSubjectsPerSemester: Record<number, Subject[]>;
-	hasExtracurricular: boolean;
-	setInvalidSubjects: Dispatch<SetStateAction<Subject[]>>;
-	totalCredits: Record<string, number>;
-	creditsByLevel: Record<string, number[]>;
-}) => {
-	const errors: { [key: string]: string } = {};
-
-	if (!index.trim()) {
-		errors.index = "Индексот e задолжителен.";
-	} else if (!/^\d{6}$/.test(index)) {
-		errors.index = "Индексот треба да има точно 6 цифри.";
-	}
-	if (!studyTrack) errors.studyTrack = "Избери насока.";
-	if (!year) errors.year = "Избери година.";
-	if (!studyEffort) errors.studyEffort = "Избери пожелен вложен труд.";
-	// passedSubjectsPerSemester is a map, not an array, that's why index 1 is needed, not 0
-	if (passedSubjectsPerSemester[1].length === 0)
-		errors.passedSubjectsPerSemester =
-			"Избери барем еден предмет од прв семестар.";
-
-	const passedSubjects = getPassedSubjects(passedSubjectsPerSemester);
-	const invalid = checkPrerequisites(
-		passedSubjects,
-		hasExtracurricular,
-		totalCredits,
-		studyTrack,
-		creditsByLevel
-	);
-	if (invalid.length != 0) {
-		setInvalidSubjects(invalid);
-		errors.invalidSubjects =
-			"За еден или повеќе предмети не се исполнети условите";
-	} else {
-		setInvalidSubjects([]);
-	}
-
-	return errors;
-};
-
-export const mapToID = (passedSubjects: Record<number, Subject[]>) => {
-	return Object.fromEntries(
-		Object.entries(passedSubjects).map(([semester, subjects]) => [
-			semester,
-			subjects.map((subject) => subject.id),
-		])
-	);
-};
-
-export const mapToSubjects = (
-	passedSubjects: Record<string, number[]> | Record<number, Subject[]>,
-	subjects: Subject[]
-) => {
-	const mapped = Object.fromEntries(
-		Object.entries(passedSubjects).map(([semester, subjectIDs]) => [
-			semester,
-			subjectIDs
-				.map((id: SubjectID) => subjects.find((s) => s.id === id))
-				.filter(Boolean),
-		])
-	);
-	const normalized: Record<number, Subject[]> = Object.fromEntries(
-		Object.entries(mapped).map(([k, arr]) => [
-			Number(k),
-			(arr as (Subject | undefined)[]).filter((s): s is Subject => !!s),
-		])
-	);
-	return normalized || {};
-};
-
-export const getPassedSubjects = (
-	passedSubjects: Record<number, Subject[]>
-) => {
-	return Object.values(passedSubjects).flatMap(
-		(subjects: Subject[]) => subjects
-	);
-};
-export const getPassedSubjectsByID = (
-	passedSubjects: Record<number, Subject[]>
-) => {
-	return getPassedSubjects(passedSubjects).map((sub) => sub.id);
-};
-
-export const checkPrerequisites = (
-	passedSubjects: Subject[],
-	hasExtracurricular: boolean,
-	totalCredits: Record<string, number>,
-	studyTrack: StudyTrack | "",
-	creditsByLevel: Record<string, number[]>
-) => {
-	passedSubjects.sort(
-		(a, b) => a.subject_info.semester - b.subject_info.semester
-	);
-	const passedSubjectIds = new Set(passedSubjects.map((s) => s.id));
-	const invalidSubjects: Subject[] = [];
-
-	for (const subject of passedSubjects) {
-		const prereqs = subject.subject_info.prerequisite;
-		const prereqIDs = (prereqs["subjects"] as SubjectID[]) || [];
-
-		if (prereqIDs.length > 0) {
-			const hasAnyPrereq = prereqIDs.some((id) => passedSubjectIds.has(id));
-			if (!hasAnyPrereq) {
-				passedSubjectIds.delete(subject.id);
-				invalidSubjects.push(subject);
-			}
-		}
-	}
-
-	totalCredits.value = (passedSubjectIds.size + Number(hasExtracurricular)) * 6;
-	if (
-		passedSubjects.some((s) => s.name === "Професионални вештини") &&
-		passedSubjects.some((s) => s.name === "Спорт и здравје")
-	) {
-		totalCredits.value -= 6;
-	}
-
-	for (const subject of passedSubjects) {
-		if (!passedSubjectIds.has(subject.id)) continue;
-		const prereqs = subject.subject_info.prerequisite;
-		// subtracting 6 because the current subject is counted in the total as well
-		if (prereqs["credits"] && prereqs["credits"] > totalCredits.value - 6) {
-			passedSubjectIds.delete(subject.id);
-			totalCredits.value -= 6;
-			invalidSubjects.push(subject);
-		}
-	}
-
-	if (invalidSubjects.length == 0) {
-		const newPassedSubjects = passedSubjects.filter((subject) =>
-			passedSubjectIds.has(subject.id)
-		);
-		creditsByLevel.value = getCreditsByLevel(newPassedSubjects, studyTrack);
-	}
-
-	return invalidSubjects;
-};
-
-const getCreditsByLevel = (
-	passedSubjects: Subject[],
-	studyTrack: StudyTrack | ""
-) => {
-	return passedSubjects
-		.reduce(
-			(acc, subject) => {
-				const level = subject.subject_info.level;
-				if (
-					studyTrack &&
-					!subject.subject_info.mandatory_for.includes(studyTrack) &&
-					((level == 1 && acc[0] < L1_LIMIT) ||
-						(level == 2 && acc[1] < L2_LIMIT) ||
-						level == 3)
-				) {
-					acc[level - 1]++;
-				}
-				return acc;
-			},
-			[0, 0, 0]
-		)
-		.map((i) => i * 6);
-};
Index: ontend/src/components/SubjectCatalog/FavoriteButton.tsx
===================================================================
--- frontend/src/components/SubjectCatalog/FavoriteButton.tsx	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,46 +1,0 @@
-import { usePreferences } from "../../context/PreferencesContext";
-import { useAuth } from "../../hooks/useAuth";
-
-const HeartIcon = ({ filled }: { filled: boolean }) => (
-	<svg
-		xmlns="http://www.w3.org/2000/svg"
-		className="h-7 w-7"
-		fill={filled ? "currentColor" : "none"}
-		viewBox="0 0 24 24"
-		stroke="currentColor"
-		strokeWidth={2}
-	>
-		<path
-			strokeLinecap="round"
-			strokeLinejoin="round"
-			d="M4.318 6.318a4.5 4.5 0 016.364 0L12 7.636l1.318-1.318a4.5 4.5 0 116.364 6.364L12 20.364l-7.682-7.682a4.5 4.5 0 010-6.364z"
-		/>
-	</svg>
-);
-
-interface FavoriteButtonProps {
-	subjectId: number;
-	isLoading?: boolean;
-}
-
-const FavoriteButton = ({ subjectId, isLoading }: FavoriteButtonProps) => {
-	const { favoriteIds, toggleFavorite } = usePreferences();
-	const { isAuthenticated } = useAuth();
-	const isFavorite = favoriteIds?.has(subjectId) || false;
-	const isFilled = isAuthenticated && isFavorite;
-	return (
-		<button
-			onClick={() => toggleFavorite(subjectId)}
-			disabled={isLoading || !isAuthenticated}
-			className={`relative flex items-center justify-center transition-all duration-200 p-2 rounded-full 
-				${!isAuthenticated ? "cursor-not-allowed" : ""}
-				${isFavorite ? "text-red-500" : "text-gray-400"}
-				${isLoading ? "cursor-not-allowed animate-pulse" : ""}`}
-			aria-label={isFavorite ? "Unfavorite" : "Favorite"}
-		>
-			<HeartIcon filled={isFilled} />
-		</button>
-	);
-};
-
-export default FavoriteButton;
Index: ontend/src/components/SubjectCatalog/FilterSidebar.tsx
===================================================================
--- frontend/src/components/SubjectCatalog/FilterSidebar.tsx	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,452 +1,0 @@
-import { ChevronDown } from "lucide-react";
-import { useState } from "react";
-import { EVALUATIONS, STUDY_TRACKS } from "../../constants/subjects";
-import { Filters } from "../types";
-import { resetFilters } from "./utils";
-interface FilterSidebarProps {
-	setSearchTerm: (term: string) => void;
-	setProfessorSearchTerm: (term: string) => void;
-	setAssistantSearchTerm: (term: string) => void;
-	setFilters: (filters: (prev: Filters) => Filters) => void;
-	filters: Filters;
-	tags: string[];
-}
-
-const FilterHeader = ({
-	label,
-	filterKey,
-	openFilters,
-	toggleFilter,
-	children,
-}: {
-	label: string;
-	filterKey: string;
-	openFilters: { [key: string]: boolean };
-	toggleFilter: (key: string) => void;
-	children: React.ReactNode;
-}) => (
-	<div className="mb-2">
-		<button
-			type="button"
-			className="w-full flex justify-between items-center py-2"
-			onClick={() => toggleFilter(filterKey)}
-		>
-			<span className="font-medium">{label}</span>
-			<ChevronDown
-				className="h-4 w-4 text-gray-500"
-				style={{
-					transform: openFilters[filterKey] ? "rotate(180deg)" : "rotate(0deg)",
-					transition: "transform 0.2s ease-in-out",
-				}}
-			/>
-		</button>
-		{openFilters[filterKey] && children}
-	</div>
-);
-
-const FilterSidebar = ({
-	setSearchTerm,
-	setProfessorSearchTerm,
-	setAssistantSearchTerm,
-	setFilters,
-	filters,
-	tags,
-}: FilterSidebarProps) => {
-	const [showTags, setShowTags] = useState(false);
-	const [openFilters, setOpenFilters] = useState<{ [key: string]: boolean }>(
-		{}
-	);
-	const [isFiltersVisible, setIsFiltersVisible] = useState(false);
-
-	const toggleFilter = (key: string) => {
-		setOpenFilters((prev) => ({ ...prev, [key]: !prev[key] }));
-	};
-
-	const handleResetFilters = () => {
-		resetFilters(
-			setSearchTerm,
-			setProfessorSearchTerm,
-			setAssistantSearchTerm,
-			setFilters
-		);
-		setOpenFilters({});
-	};
-
-	return (
-		<div className="w-full">
-			<div className="flex justify-between items-center mb-4">
-				<button
-					className="flex items-center space-x-2 text-left md:hidden"
-					onClick={() => setIsFiltersVisible(!isFiltersVisible)}
-				>
-					<h2 className="text-lg font-semibold">Филтри</h2>
-					<ChevronDown
-						className="h-4 w-4 text-gray-500"
-						style={{
-							transform: isFiltersVisible ? "rotate(180deg)" : "rotate(0deg)",
-							transition: "transform 0.2s ease-in-out",
-						}}
-					/>
-				</button>
-
-				<h2 className="hidden md:block text-lg font-semibold">Филтри</h2>
-				<button
-					onClick={handleResetFilters}
-					className="text-sm text-gray-600 hover:text-gray-900"
-				>
-					Избриши
-				</button>
-			</div>
-
-			<div className={`mb-4 md:block ${isFiltersVisible ? "block" : "hidden"}`}>
-				<FilterHeader
-					label="Сезона"
-					filterKey="season"
-					openFilters={openFilters}
-					toggleFilter={toggleFilter}
-				>
-					<div className="grid grid-cols-2 mb-2 mt-1">
-						{["Летен", "Зимски"].map((season) => {
-							const seasonValue = season === "Летен" ? "S" : "W";
-							return (
-								<div key={season} className="flex items-center space-x-2">
-									<input
-										type="checkbox"
-										name="season"
-										id={seasonValue}
-										onChange={() =>
-											setFilters((prev) => ({
-												...prev,
-												season: prev.season === seasonValue ? "" : seasonValue,
-											}))
-										}
-										checked={filters.season === seasonValue}
-										className="h-4 w-4 rounded border-gray-300 text-blue-600"
-									/>
-									<label
-										htmlFor={seasonValue}
-										className="ml-2 text-sm text-gray-700"
-									>
-										{season}
-									</label>
-								</div>
-							);
-						})}
-					</div>
-				</FilterHeader>
-
-				<FilterHeader
-					label="Семестар"
-					filterKey="semester"
-					openFilters={openFilters}
-					toggleFilter={toggleFilter}
-				>
-					<div className="grid grid-cols-4 gap-2 mb-2 mt-1">
-						{Array.from(Array(8)).map((_, index) => {
-							const i = index + 1;
-							return (
-								<div key={i} className="flex items-center space-x-2">
-									<input
-										type="checkbox"
-										name="semester"
-										id={`s${i}`}
-										onChange={() =>
-											setFilters((prev) => ({
-												...prev,
-												semester: prev.semester.includes(i)
-													? prev.semester.filter((item) => item !== i)
-													: [...prev.semester, i],
-											}))
-										}
-										checked={filters.semester.includes(i)}
-										className="h-4 w-4 rounded border-gray-300 text-blue-600"
-									/>
-									<label htmlFor={`s${i}`} className="text-sm text-gray-700">
-										{i}
-									</label>
-								</div>
-							);
-						})}
-					</div>
-				</FilterHeader>
-
-				<FilterHeader
-					label="Ниво"
-					filterKey="level"
-					openFilters={openFilters}
-					toggleFilter={toggleFilter}
-				>
-					<div className="flex gap-4 sm:grid sm:grid-cols-3 mb-2 mt-1">
-						{Array.from(Array(3)).map((_, index) => {
-							const i = index + 1;
-							const level = `L${i}`;
-							return (
-								<div key={i} className="flex items-center space-x-2">
-									<input
-										type="checkbox"
-										name="level"
-										id={level}
-										onChange={() =>
-											setFilters((prev) => ({
-												...prev,
-												level: prev.level.includes(i)
-													? prev.level.filter((item) => item !== i)
-													: [...prev.level, i],
-											}))
-										}
-										checked={filters.level.includes(i)}
-										className="h-4 w-4 rounded border-gray-300 text-blue-600"
-									/>
-									<label
-										htmlFor={`s${level}`}
-										className="text-sm text-gray-700 whitespace-nowrap"
-									>
-										{level}
-									</label>
-								</div>
-							);
-						})}
-					</div>
-				</FilterHeader>
-
-				<FilterHeader
-					label="Активирани"
-					filterKey="activated"
-					openFilters={openFilters}
-					toggleFilter={toggleFilter}
-				>
-					<div className="grid grid-cols-2 mb-2 mt-1">
-						{["Активирани", "Неактивирани"].map((value) => {
-							const activeValue =
-								value === "Активирани" ? "activated" : "not_activated";
-							return (
-								<div key={activeValue} className="flex items-center space-x-2">
-									<input
-										type="checkbox"
-										name="activated"
-										id={activeValue}
-										onChange={() =>
-											setFilters((prev) => ({
-												...prev,
-												activated:
-													prev.activated === activeValue ? "" : activeValue,
-											}))
-										}
-										checked={filters.activated === activeValue}
-										className="h-4 w-4 rounded border-gray-300 text-blue-600"
-									/>
-									<label
-										htmlFor={activeValue}
-										className="ml-2 text-sm text-gray-700"
-									>
-										{value}
-									</label>
-								</div>
-							);
-						})}
-					</div>
-				</FilterHeader>
-
-				<FilterHeader
-					label="Задолжителен за:"
-					filterKey="mandatoryFor"
-					openFilters={openFilters}
-					toggleFilter={toggleFilter}
-				>
-					<div className="grid grid-cols-3 gap-2 mb-2 mt-1">
-						{STUDY_TRACKS.map((track) => {
-							const studyTrack = track.replace(/\d+$/, "");
-							return (
-								<div key={track} className="flex items-center space-x-2">
-									<input
-										type="checkbox"
-										name="mandatoryFor"
-										id={track}
-										onChange={() =>
-											setFilters((prev) => ({
-												...prev,
-												mandatoryFor: prev.mandatoryFor.includes(track)
-													? prev.mandatoryFor.filter((item) => item !== track)
-													: [...prev.mandatoryFor, track],
-											}))
-										}
-										checked={filters.mandatoryFor.includes(track)}
-										className="h-4 w-4 rounded border-gray-300 text-blue-600"
-									/>
-									<label
-										htmlFor={`s${track}`}
-										className="text-sm text-gray-700"
-									>
-										{studyTrack}
-									</label>
-								</div>
-							);
-						})}
-					</div>
-				</FilterHeader>
-
-				<FilterHeader
-					label="Изборен за:"
-					filterKey="electiveFor"
-					openFilters={openFilters}
-					toggleFilter={toggleFilter}
-				>
-					<div className="grid grid-cols-3 gap-2 mb-2 mt-1">
-						{STUDY_TRACKS.map((track) => {
-							const studyTrack = track.replace(/\d+$/, "");
-							return (
-								<div key={track} className="flex items-center space-x-2">
-									<input
-										type="checkbox"
-										name="electiveFor"
-										id={track}
-										onChange={() =>
-											setFilters((prev) => ({
-												...prev,
-												electiveFor: prev.electiveFor.includes(track)
-													? prev.electiveFor.filter((item) => item !== track)
-													: [...prev.electiveFor, track],
-											}))
-										}
-										checked={filters.electiveFor.includes(track)}
-										className="h-4 w-4 rounded border-gray-300 text-blue-600"
-									/>
-									<label
-										htmlFor={`s${track}`}
-										className="text-sm text-gray-700"
-									>
-										{studyTrack}
-									</label>
-								</div>
-							);
-						})}
-					</div>
-				</FilterHeader>
-
-				<FilterHeader
-					label="Предуслови"
-					filterKey="prereq"
-					openFilters={openFilters}
-					toggleFilter={toggleFilter}
-				>
-					<div className="flex flex-col gap-2 mb-2 mt-1">
-						<label className="flex items-center space-x-2">
-							<input
-								type="checkbox"
-								name="prereqsNo"
-								id="prereqsNo"
-								onChange={() =>
-									setFilters((prev) => ({
-										...prev,
-										hasPrerequisites:
-											prev.hasPrerequisites === false ? "" : false,
-									}))
-								}
-								checked={filters.hasPrerequisites === false}
-								className="h-4 w-4 text-blue-600"
-							/>
-							<span className="text-sm text-gray-700">
-								Предметот нема предуслови
-							</span>
-						</label>
-						<label className="flex items-center space-x-2">
-							<input
-								type="checkbox"
-								name="prereqYes"
-								id="prereqsYes"
-								onChange={() =>
-									setFilters((prev) => ({
-										...prev,
-										hasPrerequisites:
-											prev.hasPrerequisites === true ? "" : true,
-									}))
-								}
-								checked={filters.hasPrerequisites === true}
-								className="h-4 w-4 text-blue-600"
-							/>
-							<span className="text-sm text-gray-700">
-								Предметот има предуслови
-							</span>
-						</label>
-					</div>
-				</FilterHeader>
-
-				<FilterHeader
-					label="Тагови"
-					filterKey="tags"
-					openFilters={openFilters}
-					toggleFilter={toggleFilter}
-				>
-					<div className="grid grid-cols-1 gap-2 mb-2">
-						{tags.slice(0, showTags ? undefined : 4).map((tag) => {
-							return (
-								<div key={tag} className="flex items-center space-x-2">
-									<input
-										type="checkbox"
-										name="tags"
-										id={tag}
-										onChange={() =>
-											setFilters((prev) => ({
-												...prev,
-												tags: prev.tags.includes(tag)
-													? prev.tags.filter((item) => item !== tag)
-													: [...prev.tags, tag],
-											}))
-										}
-										checked={filters.tags.includes(tag)}
-										className="h-4 w-4 rounded border-gray-300 text-blue-600"
-									/>
-									<label htmlFor={`${tag}`} className="text-sm text-gray-700">
-										{tag}
-									</label>
-								</div>
-							);
-						})}
-						{tags.length > 4 && (
-							<button
-								onClick={() => setShowTags(!showTags)}
-								className="text-sm text-blue-600 hover:text-blue-800"
-							>
-								{showTags ? "Прикажи помалку" : "Прикажи повеќе"}
-							</button>
-						)}
-					</div>
-				</FilterHeader>
-
-				<FilterHeader
-					label="Евалуација"
-					filterKey="evaluation"
-					openFilters={openFilters}
-					toggleFilter={toggleFilter}
-				>
-					<div className="grid grid-cols-2 gap-2 mb-2 mt-1">
-						{EVALUATIONS.map((evalType) => (
-							<div key={evalType} className="flex items-center space-x-2">
-								<input
-									type="checkbox"
-									name="evaluation"
-									id={evalType}
-									onChange={() =>
-										setFilters((prev) => ({
-											...prev,
-											evaluation: prev.evaluation.includes(evalType)
-												? prev.evaluation.filter((item) => item !== evalType)
-												: [...prev.evaluation, evalType],
-										}))
-									}
-									checked={filters.evaluation.includes(evalType)}
-									className="h-4 w-4 rounded border-gray-300 text-blue-600"
-								/>
-								<label htmlFor={evalType} className="text-sm text-gray-700">
-									{evalType}
-								</label>
-							</div>
-						))}
-					</div>
-				</FilterHeader>
-			</div>
-		</div>
-	);
-};
-
-export default FilterSidebar;
Index: ontend/src/components/SubjectCatalog/SkeletonCard.tsx
===================================================================
--- frontend/src/components/SubjectCatalog/SkeletonCard.tsx	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,14 +1,0 @@
-const SkeletonCard = () => {
-	return (
-		<div className="w-full px-4 py-8 border rounded-md shadow animate-pulse bg-white">
-			<div className="h-4 w-3/4 bg-gray-300 rounded mb-2.5"></div>
-			<div className="h-4 w-1/2 bg-gray-200 rounded mb-16"></div>
-
-			<div className="flex justify-between items-center">
-				<div className="h-6 w-20 bg-gray-300 rounded-lg"></div>
-				<div className="h-6 w-20 bg-gray-300 rounded-full"></div>
-			</div>
-		</div>
-	);
-};
-export default SkeletonCard;
Index: ontend/src/components/SubjectCatalog/StaffSearch.tsx
===================================================================
--- frontend/src/components/SubjectCatalog/StaffSearch.tsx	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,48 +1,0 @@
-interface StaffSearchProps {
-	randomStaff: string[];
-	professorSearchTerm: string;
-	setProfessorSearchTerm: (val: string) => void;
-	assistantSearchTerm: string;
-	setAssistantSearchTerm: (val: string) => void;
-}
-
-function StaffSearch({
-	randomStaff,
-	professorSearchTerm,
-	setProfessorSearchTerm,
-	assistantSearchTerm,
-	setAssistantSearchTerm,
-}: StaffSearchProps) {
-	return (
-		<>
-			<div className="mb-6 relative">
-				<h3 className="mb-2 font-medium">Пребарај по професор: </h3>
-				<input
-					type="text"
-					placeholder={randomStaff[0]}
-					value={professorSearchTerm}
-					onChange={(e) => {
-						return setProfessorSearchTerm(e.target.value);
-					}}
-					className="w-full py-3 px-2 border border-gray-300 rounded-lg
-								focus:ring-2 focus:ring-blue-500 focus:border-blue-500"
-				/>
-			</div>
-			<div className="mb-6 relative">
-				<h3 className="mb-2 font-medium">Пребарај по асистент: </h3>
-				<input
-					type="text"
-					placeholder={randomStaff[1]}
-					value={assistantSearchTerm}
-					onChange={(e) => {
-						return setAssistantSearchTerm(e.target.value);
-					}}
-					className="w-full py-3 px-2 border border-gray-300 rounded-lg
-								focus:ring-2 focus:ring-blue-500 focus:border-blue-500"
-				/>
-			</div>
-		</>
-	);
-}
-
-export default StaffSearch;
Index: ontend/src/components/SubjectCatalog/SubjectCard.tsx
===================================================================
--- frontend/src/components/SubjectCatalog/SubjectCard.tsx	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,140 +1,0 @@
-import DislikeButton from "../Recommendations/DislikeButton";
-import LikeButton from "../Recommendations/LikeButton";
-import { Subject } from "../types";
-import FavoriteButton from "./FavoriteButton";
-
-interface SubjectCardProps {
-	subject: Subject;
-	openSubjectView: (subject: Subject) => void;
-	openSubjectDetails: (subject: Subject) => void;
-	canReview?: boolean;
-	isFirst?: boolean;
-	isRecommended?: boolean;
-	isLoading?: boolean;
-	recommendationDetails?: {
-		match_percentage: number;
-		primary_reason: string;
-		explanations: string[];
-		matching_tags: string[];
-		detailed_scores: Record<string, number>;
-	};
-}
-
-const SubjectCard = ({
-	subject,
-	openSubjectView,
-	openSubjectDetails,
-	canReview = false,
-	isFirst = false,
-	isRecommended = false,
-	isLoading = false,
-	recommendationDetails,
-}: SubjectCardProps) => {
-	return (
-		<div
-			key={subject.id}
-			className="border border-gray-200 bg-white rounded-lg overflow-hidden shadow-sm hover:shadow-md transition-shadow duration-200 h-full"
-		>
-			<div className="p-4 h-full flex flex-col relative">
-				<div className="flex justify-between items-start mb-4">
-					<div className="flex-1">
-						<h3 className="text-lg font-semibold line-clamp-2 leading-tight">
-							{subject.name}
-						</h3>
-						<p className="text-gray-600 text-sm mt-1">{subject.code}</p>
-					</div>
-				</div>
-
-				{isRecommended && subject.subject_info.activated === false && (
-					<div className="absolute top-16 left-1/2 transform -translate-x-1/2 z-10">
-						<span className="bg-red-500 text-white font-bold px-3 py-1 rounded-full shadow-lg text-xs whitespace-nowrap">
-							Никогаш не бил активиран!
-						</span>
-					</div>
-				)}
-
-				<div className="flex-1 mb-4">
-					{recommendationDetails && (
-						<div
-							className={`rounded-md px-3 py-2 text-sm border ${
-								recommendationDetails.match_percentage === 100 && isFirst
-									? "bg-green-50 text-green-800 border-green-200"
-									: recommendationDetails.match_percentage > 25
-									? "bg-blue-50 text-blue-800 border-blue-200"
-									: "bg-red-50 text-red-800 border-red-200"
-							}`}
-						>
-							{isFirst ? (
-								<div className="flex justify-center mb-2">
-									<span className="bg-green-50 text-green-800 border-green-200 font-bold px-3 py-1 rounded-full text-sm">
-										Најсоодветен!
-									</span>
-								</div>
-							) : (
-								<p className="font-semibold">
-									{recommendationDetails.match_percentage >= 90
-										? "Супер за тебе"
-										: recommendationDetails.match_percentage >= 75
-										? "Многу добар избор"
-										: recommendationDetails.match_percentage >= 25
-										? "Добар избор"
-										: "Не е најдобриот избор"}
-								</p>
-							)}
-							<ul className="space-y-1">
-								{recommendationDetails.explanations.map(
-									(explanation, index) => (
-										<li
-											key={index}
-											className="text-xs leading-relaxed relative pl-2 before:content-['–'] before:absolute before:left-0"
-										>
-											{explanation}
-										</li>
-									)
-								)}
-							</ul>
-						</div>
-					)}
-				</div>
-
-				<div className="flex justify-between items-center gap-3 pt-2 border-t border-gray-100 mt-auto">
-					<div className="flex items-center gap-2">
-						<button
-							onClick={() => openSubjectDetails(subject)}
-							className="p-1 hover:bg-gray-100 rounded transition-colors"
-							title="Погледни детали"
-						>
-							<img
-								src="src/assets/eye.svg"
-								className="w-5 h-5"
-								alt="View details"
-							/>
-						</button>
-						<FavoriteButton subjectId={subject.id} isLoading={isLoading} />
-						{canReview && (
-							<>
-								<LikeButton id={subject.id} />
-								<DislikeButton id={subject.id} />
-							</>
-						)}
-					</div>
-					<div className="flex-shrink-0">
-						<button
-							onClick={() => openSubjectView(subject)}
-							className="flex items-center px-3 py-2 bg-blue-600 hover:bg-blue-900 text-white text-sm font-medium rounded-md transition-colors"
-						>
-							<img
-								src="src/assets/open.svg"
-								className="w-4 h-4 sm:mr-1"
-								alt="Open"
-							/>
-							<span className="hidden sm:inline">Отвори предмет</span>
-						</button>
-					</div>
-				</div>
-			</div>
-		</div>
-	);
-};
-
-export default SubjectCard;
Index: ontend/src/components/SubjectCatalog/SubjectCatalog.tsx
===================================================================
--- frontend/src/components/SubjectCatalog/SubjectCatalog.tsx	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,200 +1,0 @@
-import { useEffect, useMemo, useState } from "react";
-import { fetchPreferences } from "../../api/preferences";
-import { fetchSubjects } from "../../api/subjects";
-import { usePreferences } from "../../context/PreferencesContext";
-import { useSubjects } from "../../context/SubjectsContext";
-import { useAuth } from "../../hooks/useAuth";
-import { Filters, Subject } from "../types";
-import FilterSidebar from "./FilterSidebar";
-import SkeletonCard from "./SkeletonCard";
-import StaffSearch from "./StaffSearch";
-import SubjectList from "./SubjectList";
-import SubjectModal from "./SubjectModal";
-import {
-	filterSubjects,
-	getRandomStaff,
-	getSubjectPrerequisites,
-	resetFilters,
-} from "./utils";
-const SubjectCatalog = () => {
-	const { accessToken } = useAuth();
-	const [subjects, setSubjects] = useSubjects();
-	const [visibleCourses, setVisibleCourses] = useState<number>(12);
-	const [searchTerm, setSearchTerm] = useState<string>("");
-	const [professorSearchTerm, setProfessorSearchTerm] = useState<string>("");
-	const [assistantSearchTerm, setAssistantSearchTerm] = useState<string>("");
-	const [selectedSubject, setSelectedSubject] = useState<Subject | null>(null);
-	const [isLoaded, setIsLoaded] = useState(false);
-	const [randomStaff, setRandomStaff] = useState(["", ""]);
-	const [showModal, setShowModal] = useState(false);
-	const [tags, setTags] = useState<string[]>([]);
-	const [filters, setFilters] = useState<Filters>({
-		season: "",
-		semester: [],
-		level: [],
-		activated: "",
-		mandatoryFor: [],
-		electiveFor: [],
-		professors: [],
-		assistants: [],
-		tags: [],
-		hasPrerequisites: "",
-		evaluation: [],
-	});
-	const filteredSubjects: Subject[] = filterSubjects({
-		searchTerm,
-		professorSearchTerm,
-		assistantSearchTerm,
-		filters,
-		subjects,
-	});
-	const { setDislikedIds, setLikedIds, setFavoriteIds } = usePreferences();
-
-	useEffect(() => {
-		if (!accessToken) return;
-		fetchPreferences({
-			setDislikedIds,
-			setFavoriteIds,
-			setLikedIds,
-		});
-	}, [accessToken]);
-
-	useEffect(() => {
-		if (subjects && subjects.length > 0) {
-			setIsLoaded(true);
-		}
-	}, [subjects]);
-
-	useEffect(() => {
-		getRandomStaff(subjects, setRandomStaff);
-		setTags(
-			Array.from(
-				new Set(filteredSubjects.flatMap((sub) => sub.subject_info.tags))
-			).sort((a, b) => a.localeCompare(b))
-		);
-	}, [subjects]);
-
-	const subjectIdToNameMap = useMemo(() => {
-		const map = new Map<number, string>();
-		subjects.forEach((subject) => {
-			map.set(subject.id, subject.name);
-		});
-		return map;
-	}, [subjects]);
-
-	const loadMore = () => {
-		setVisibleCourses((prev) => prev + 12);
-	};
-
-	const openSubjectDetails = (subject: Subject) => {
-		setSelectedSubject(subjects.find((item) => item.id == subject.id) ?? null);
-		setShowModal(true);
-	};
-
-	useEffect(() => {
-		if (!subjects || subjects.length === 0) {
-			fetchSubjects(setSubjects);
-		}
-	}, []);
-
-	const closeModal = () => {
-		setShowModal(false);
-	};
-
-	return (
-		<div className="mx-auto p-4 bg-white min-h-screen">
-			<h1 className="text-3xl font-bold mb-6">Преглед на сите предмети</h1>
-			<div className="flex flex-col md:flex-row gap-6">
-				<div className="w-full md:w-64 bg-gray-50 p-4 rounded-xl shadow-md border border-gray-200 h-max">
-					<FilterSidebar
-						setSearchTerm={setSearchTerm}
-						setProfessorSearchTerm={setProfessorSearchTerm}
-						setAssistantSearchTerm={setAssistantSearchTerm}
-						setFilters={setFilters}
-						filters={filters}
-						tags={tags}
-					/>
-					<StaffSearch
-						randomStaff={randomStaff}
-						professorSearchTerm={professorSearchTerm}
-						assistantSearchTerm={assistantSearchTerm}
-						setProfessorSearchTerm={setProfessorSearchTerm}
-						setAssistantSearchTerm={setAssistantSearchTerm}
-					/>
-				</div>
-
-				<div className="flex-1 bg-gray-50 rounded-xl shadow-md border border-gray-200 p-6">
-					<div className="mb-6 relative">
-						<input
-							type="text"
-							placeholder="Пребарувај предмети по име, код, опис"
-							value={searchTerm}
-							onChange={(e) => setSearchTerm(e.target.value)}
-							className="w-full p-3 pl-4 pr-12 border border-gray-300 rounded-lg 
-							focus:ring-2 focus:ring-blue-500 focus:border-blue-500"
-						/>
-					</div>
-
-					{!isLoaded ? (
-						<div className="grid grid-cols-1 md:grid-cols-2 xl:grid-cols-3 gap-6">
-							{[...Array(9)].map((_, index) => (
-								<SkeletonCard key={index} />
-							))}
-						</div>
-					) : (
-						<SubjectList
-							filteredSubjects={filteredSubjects}
-							visibleCourses={visibleCourses}
-							openSubjectDetails={openSubjectDetails}
-							from="subjects"
-						/>
-					)}
-
-					{isLoaded && filteredSubjects.length > visibleCourses && (
-						<div className="mt-5 text-center">
-							<button
-								onClick={loadMore}
-								className="bg-blue-600 hover:bg-blue-700 text-white px-6 py-2 rounded-lg font-medium transition-colors duration-200"
-							>
-								Погледни повеќе
-							</button>
-						</div>
-					)}
-
-					{isLoaded && filteredSubjects.length === 0 && (
-						<div className="text-center py-12">
-							<p className="text-gray-500 text-lg">
-								Не постојат такви предмети
-							</p>
-							<button
-								onClick={() =>
-									resetFilters(
-										setSearchTerm,
-										setProfessorSearchTerm,
-										setAssistantSearchTerm,
-										setFilters
-									)
-								}
-								className="mt-2 text-blue-600 hover:text-blue-800"
-							>
-								Ресетирај филтри
-							</button>
-						</div>
-					)}
-				</div>
-			</div>
-			{showModal && selectedSubject && (
-				<SubjectModal
-					selectedSubject={selectedSubject}
-					closeModal={closeModal}
-					subjectPrerequisites={getSubjectPrerequisites(
-						selectedSubject,
-						subjectIdToNameMap
-					)}
-				/>
-			)}
-		</div>
-	);
-};
-
-export default SubjectCatalog;
Index: ontend/src/components/SubjectCatalog/SubjectList.tsx
===================================================================
--- frontend/src/components/SubjectCatalog/SubjectList.tsx	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,41 +1,0 @@
-import { useNavigate } from "react-router-dom";
-import { Subject } from "../types";
-import SubjectCard from "./SubjectCard";
-
-interface SubjectListProps {
-	filteredSubjects: Subject[];
-	visibleCourses: number;
-	openSubjectDetails: (subject: Subject) => void;
-	from: string;
-	canReview?: boolean;
-}
-
-const SubjectList = ({
-	filteredSubjects,
-	visibleCourses,
-	openSubjectDetails,
-	from,
-	canReview = false,
-}: SubjectListProps) => {
-	const navigate = useNavigate();
-	const openSubjectView = (subject: Subject) => {
-		navigate(`/subjects/${subject.code}`, {
-			state: { from: `/${from}` },
-		});
-	};
-	return (
-		<div className="grid grid-cols-1 md:grid-cols-2 xl:grid-cols-3 gap-6">
-			{filteredSubjects.slice(0, visibleCourses).map((subject) => (
-				<SubjectCard
-					key={subject.id}
-					subject={subject}
-					openSubjectDetails={openSubjectDetails}
-					openSubjectView={openSubjectView}
-					canReview={canReview}
-				/>
-			))}
-		</div>
-	);
-};
-
-export default SubjectList;
Index: ontend/src/components/SubjectCatalog/SubjectModal.tsx
===================================================================
--- frontend/src/components/SubjectCatalog/SubjectModal.tsx	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,174 +1,0 @@
-import { useNavigate } from "react-router-dom";
-import { Subject } from "../types";
-
-interface SubjectModalProps {
-	selectedSubject: Subject;
-	subjectPrerequisites: string | number | "Нема предуслов";
-	closeModal: () => void;
-	from?: string;
-}
-
-function SubjectModal({
-	selectedSubject,
-	closeModal,
-	subjectPrerequisites,
-	from,
-}: SubjectModalProps) {
-	const navigate = useNavigate();
-
-	const openSubject = () => {
-		navigate(`/subjects/${selectedSubject.code}`, {
-			state: { from: `/${from ? from : "subjects"}` },
-		});
-	};
-	return (
-		<>
-			<div className="fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center p-4 z-50">
-				<div className="bg-white rounded-lg shadow-xl max-w-2xl w-full max-h-[93vh] overflow-y-auto">
-					<div className="p-6">
-						<div className="flex justify-between items-start mb-4">
-							<div>
-								<h2 className="text-2xl font-bold">{selectedSubject.name}</h2>
-							</div>
-							<button
-								onClick={closeModal}
-								className="text-gray-400 hover:text-gray-600"
-							>
-								<svg
-									className="w-6 h-6"
-									fill="none"
-									stroke="currentColor"
-									viewBox="0 0 24 24"
-									xmlns="http://www.w3.org/2000/svg"
-								>
-									<path
-										strokeLinecap="round"
-										strokeLinejoin="round"
-										strokeWidth={2}
-										d="M6 18L18 6M6 6l12 12"
-									/>
-								</svg>
-							</button>
-						</div>
-
-						<div className="mb-2">
-							<h3 className="text-lg font-medium">Професори:</h3>
-							<p>
-								{selectedSubject.subject_info.professors.length == 0
-									? "Нема одредени професори"
-									: selectedSubject.subject_info.professors.join(", ")}
-							</p>
-						</div>
-						<div className="mb-4">
-							<h3 className="text-lg font-medium">Асистенти:</h3>
-							<p>
-								{selectedSubject.subject_info.assistants.length == 0
-									? "Нема одредени асистенти"
-									: selectedSubject.subject_info.assistants.join(", ")}
-							</p>
-						</div>
-
-						<div className="bg-gray-50 rounded-lg p-4 mb-3">
-							<h3 className="text-lg font-medium mb-4">
-								Информации за предметот
-							</h3>
-
-							<div className="grid grid-cols-1 md:grid-cols-2 gap-4">
-								<div>
-									<div className="flex items-center mb-3">
-										<div>
-											<p className="text-sm text-gray-500">
-												Препорачан семестар
-											</p>
-											<p className="font-medium">
-												{selectedSubject.subject_info.semester}
-											</p>
-										</div>
-									</div>
-									<div className="flex items-center mb-3">
-										<div>
-											<p className="text-sm text-gray-500">Зимски / Летен</p>
-											<p className="font-medium">
-												{selectedSubject.subject_info.season == "S"
-													? "Летен"
-													: "Зимски"}
-											</p>
-										</div>
-									</div>
-									<div className="flex items-center mb-3">
-										<div>
-											<p className="text-sm text-gray-500">Ниво</p>
-											<p className="font-medium">
-												L{selectedSubject.subject_info.level}
-											</p>
-										</div>
-									</div>
-								</div>
-								<div>
-									<div className="flex items-center mb-3">
-										<div>
-											<p className="text-sm text-gray-500">Задолжителен за:</p>
-											<p className="font-medium">
-												{selectedSubject.subject_info.mandatory_for.length == 0
-													? "Не е задолжителен предмет"
-													: selectedSubject.subject_info.mandatory_for
-															.map((s) => s.replace(/\d+$/, ""))
-															.join(", ")}
-											</p>
-										</div>
-									</div>
-									<div className="flex items-center mb-3">
-										<div>
-											<p className="text-sm text-gray-500">Изборен за:</p>
-											<p className="font-medium">
-												{selectedSubject.subject_info.elective_for.length == 0
-													? "Не е изборен предмет"
-													: selectedSubject.subject_info.elective_for
-															.map((s) => s.replace(/\d+$/, ""))
-															.join(", ")}
-											</p>
-										</div>
-									</div>
-									<div className="flex items-center mb-3">
-										<div>
-											<p className="text-sm text-gray-500">Предуслови:</p>
-											<p className="font-medium">
-												{typeof subjectPrerequisites === "string"
-													? subjectPrerequisites
-													: typeof subjectPrerequisites === "number"
-													? `${subjectPrerequisites} кредити`
-													: "Нема предуслов"}
-											</p>
-										</div>
-									</div>
-								</div>
-							</div>
-						</div>
-
-						<div className="mt-4 bg-blue-50 border-l-4 border-blue-400 p-4 rounded">
-							<p className="text-blue-800">
-								Отвори го предметот за да ги видиш сите информации
-							</p>
-						</div>
-
-						<div className="mt-4 flex justify-between space-x-3">
-							<button
-								onClick={closeModal}
-								className="md:w-auto px-4 py-2 bg-blue-600 hover:bg-blue-700 text-white font-normal rounded-md shadow focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 transition-colors"
-							>
-								Затвори
-							</button>
-							<button
-								onClick={openSubject}
-								className="px-4 py-2 bg-blue-600 text-white rounded-lg hover:bg-blue-700"
-							>
-								Отвори предмет
-							</button>
-						</div>
-					</div>
-				</div>
-			</div>
-		</>
-	);
-}
-export default SubjectModal;
Index: ontend/src/components/SubjectCatalog/utils.ts
===================================================================
--- frontend/src/components/SubjectCatalog/utils.ts	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,205 +1,0 @@
-import { EVALUATION_MAP_TO_MK } from "../../constants/subjects";
-import { LatinToCyrillic } from "../StudentForm/utils";
-import { Filters, OtherReview, StudyTrack, Subject } from "../types";
-
-interface filteredSubjectsParams {
-	searchTerm: string;
-	professorSearchTerm: string;
-	assistantSearchTerm: string;
-	filters: {
-		season: "W" | "S" | "";
-		semester: number[];
-		level: number[];
-		activated: "activated" | "not_activated" | "";
-		mandatoryFor: StudyTrack[];
-		electiveFor: StudyTrack[];
-		professors: string[];
-		assistants: string[];
-		hasPrerequisites: boolean | "";
-		tags: string[];
-		evaluation: string[];
-	};
-	subjects: Subject[];
-}
-
-export const filterSubjects = ({
-	searchTerm,
-	professorSearchTerm,
-	assistantSearchTerm,
-	filters,
-	subjects,
-}: filteredSubjectsParams) =>
-	subjects?.filter((subject) => {
-		let cyrilicSearchTerm = "";
-		if (searchTerm !== "") {
-			cyrilicSearchTerm = LatinToCyrillic(searchTerm).toLowerCase();
-			searchTerm = searchTerm.toLowerCase();
-		}
-		const searchMatches =
-			searchTerm === "" ||
-			subject.name.toLowerCase().includes(cyrilicSearchTerm) ||
-			subject.code.toLowerCase().includes(searchTerm) ||
-			subject.abstract?.toLowerCase().includes(cyrilicSearchTerm);
-
-		const seasonMatches =
-			filters.season === "" || filters.season === subject.subject_info.season;
-
-		const semesterMatches =
-			filters.semester.length === 0 ||
-			filters.semester.includes(subject.subject_info.semester);
-
-		const levelMatches =
-			filters.level.length === 0 ||
-			filters.level.includes(subject.subject_info.level);
-
-		const activatedMatches =
-			filters.activated == "" ||
-			(filters.activated == "activated" && subject.subject_info.activated) ||
-			(filters.activated == "not_activated" && !subject.subject_info.activated);
-
-		const mandatoryMatches =
-			filters.mandatoryFor.length === 0 ||
-			subject.subject_info.mandatory_for.some((item) =>
-				filters.mandatoryFor.includes(item)
-			);
-
-		const electiveMatches =
-			filters.electiveFor.length === 0 ||
-			subject.subject_info.elective_for.some((item) =>
-				filters.electiveFor.includes(item)
-			);
-
-		const professorsMatches =
-			professorSearchTerm == "" ||
-			subject.subject_info.professors.some((item) =>
-				item
-					.toLowerCase()
-					.includes(LatinToCyrillic(professorSearchTerm).toLowerCase())
-			);
-
-		const assistantsMatches =
-			assistantSearchTerm == "" ||
-			subject.subject_info.assistants.some((item) =>
-				item
-					.toLowerCase()
-					.includes(LatinToCyrillic(assistantSearchTerm).toLowerCase())
-			);
-
-		const prerequisitesMatch =
-			filters.hasPrerequisites === "" ||
-			(!filters.hasPrerequisites &&
-				subject.subject_info.prerequisite &&
-				Object.keys(subject.subject_info.prerequisite).length == 0) ||
-			(filters.hasPrerequisites &&
-				subject.subject_info.prerequisite &&
-				Object.keys(subject.subject_info.prerequisite).length > 0);
-
-		const tagsMatch =
-			filters.tags.length == 0 ||
-			subject.subject_info.tags.some((item) => filters.tags.includes(item));
-
-		const evaluationMatch =
-			filters.evaluation.length == 0 ||
-			subject.subject_info.evaluation.some((item) =>
-				filters.evaluation.includes(
-					EVALUATION_MAP_TO_MK[item as keyof typeof EVALUATION_MAP_TO_MK]
-				)
-			);
-
-		return (
-			searchMatches &&
-			seasonMatches &&
-			semesterMatches &&
-			levelMatches &&
-			activatedMatches &&
-			mandatoryMatches &&
-			electiveMatches &&
-			professorsMatches &&
-			assistantsMatches &&
-			prerequisitesMatch &&
-			tagsMatch &&
-			evaluationMatch
-		);
-	});
-
-export const resetFilters = (
-	setSearchTerm: (val: string) => void,
-	setProfessorSearchTerm: (val: string) => void,
-	setAssistantSearchTerm: (val: string) => void,
-	setFilters: (val: (prev: Filters) => Filters) => void
-) => {
-	setSearchTerm("");
-	setProfessorSearchTerm("");
-	setAssistantSearchTerm("");
-	setFilters(() => ({
-		season: "",
-		semester: [],
-		level: [],
-		activated: "",
-		mandatoryFor: [],
-		electiveFor: [],
-		professors: [],
-		assistants: [],
-		hasPrerequisites: "",
-		tags: [],
-		evaluation: [],
-	}));
-};
-
-export const getRandomStaff = (
-	subjectData: Subject[],
-	setRandomStaff: ([]: string[]) => void
-) => {
-	if (subjectData.length == 0) return;
-	const getRandomProfessor = () => {
-		const randomSubject1 =
-			subjectData[Math.floor(Math.random() * subjectData.length)];
-		return randomSubject1?.subject_info.professors[
-			Math.floor(Math.random() * randomSubject1.subject_info.professors.length)
-		];
-	};
-	const getRandomAssistant = () => {
-		const randomSubject2 =
-			subjectData[Math.floor(Math.random() * subjectData.length)];
-		return randomSubject2?.subject_info.assistants[
-			Math.floor(Math.random() * randomSubject2.subject_info.assistants.length)
-		];
-	};
-	let randomProfessor = "";
-	let randomAssistant = "";
-
-	while (!randomProfessor) randomProfessor = getRandomProfessor();
-	while (!randomAssistant) randomAssistant = getRandomAssistant();
-
-	setRandomStaff([randomProfessor, randomAssistant]);
-};
-
-export const getSubjectPrerequisites = (
-	subject: Subject,
-	subjectMap: Map<number, string> | undefined
-): "Нема предуслов" | number | string => {
-	const prerequisite = subject?.subject_info?.prerequisite;
-	if (!prerequisite) return "Нема предуслов";
-
-	if ("subjects" in prerequisite && Array.isArray(prerequisite.subjects)) {
-		const names = prerequisite.subjects.map(
-			(id) => subjectMap?.get(id) || "Непознат предмет"
-		);
-		return names.length > 0 ? names.join(" или ") : "Нема предуслов";
-	}
-
-	if ("credits" in prerequisite && typeof prerequisite.credits === "number") {
-		return prerequisite.credits;
-	}
-
-	return "Нема предуслов";
-};
-
-export const MAP_REVIEW_CATEGORY_TO_MK: Record<
-	OtherReview["category"],
-	string
-> = {
-	material: "Материјал",
-	staff: "Кадар",
-	other: "Друго",
-};
Index: ontend/src/components/SubjectView/SkeletonSubjectView.tsx
===================================================================
--- frontend/src/components/SubjectView/SkeletonSubjectView.tsx	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,85 +1,0 @@
-function SkeletonSubjectView() {
-	return (
-		<div className="min-h-screen bg-gray-50">
-			<div className="bg-white shadow-s mb-5 py-4">
-				<div className="max-w-6xl mx-auto px-4 py-1.5 skeleton-pulse mb-4">
-					<div className="flex items-center text-gray-300 mb-4">
-						<div className="w-5 h-5 bg-gray-200 rounded mr-2" />
-						<div className="h-4 w-32 bg-gray-200 rounded" />
-					</div>
-					<div className="flex flex-col sm:flex-row sm:items-center sm:justify-between">
-						<div>
-							<div className="h-8 w-80 bg-gray-200 rounded mb-2" />
-							<div className="h-5 w-24 bg-gray-200 rounded" />
-						</div>
-					</div>
-				</div>
-			</div>
-			<div className="max-w-6xl mx-auto px-4 py-8 bg-gray-50">
-				<div className="grid grid-cols-1 lg:grid-cols-3 gap-8">
-					<div className="lg:col-span-2 space-y-8">
-						<div className="bg-white rounded-lg shadow-sm p-6 skeleton-pulse">
-							<div className="h-6 w-40 bg-gray-200 rounded mb-4" />
-							<div className="space-y-2">
-								<div className="h-4 w-full bg-gray-200 rounded" />
-								<div className="h-4 w-5/6 bg-gray-200 rounded" />
-								<div className="h-4 w-2/3 bg-gray-200 rounded" />
-							</div>
-						</div>
-						<div className="bg-white rounded-lg shadow-sm p-6 skeleton-pulse">
-							<div className="h-6 w-40 bg-gray-200 rounded mb-6" />
-							<div className="grid grid-cols-1 md:grid-cols-2 gap-6">
-								<div className="space-y-2">
-									<div className="h-4 w-32 bg-gray-200 rounded" />
-									<div className="h-4 w-24 bg-gray-200 rounded" />
-								</div>
-								<div className="space-y-2">
-									<div className="h-4 w-32 bg-gray-200 rounded" />
-									<div className="h-4 w-24 bg-gray-200 rounded" />
-								</div>
-							</div>
-						</div>
-						<div className="bg-white rounded-lg shadow-sm p-6 skeleton-pulse">
-							<div className="h-6 w-40 bg-gray-200 rounded mb-4" />
-							<div className="grid grid-cols-1 md:grid-cols-2 gap-6">
-								<div className="space-y-2">
-									<div className="h-4 w-32 bg-gray-200 rounded" />
-									<div className="h-4 w-24 bg-gray-200 rounded" />
-								</div>
-								<div className="space-y-2">
-									<div className="h-4 w-32 bg-gray-200 rounded" />
-									<div className="h-4 w-24 bg-gray-200 rounded" />
-								</div>
-							</div>
-						</div>
-						<div className="bg-white rounded-lg shadow-sm p-6 skeleton-pulse">
-							<div className="h-6 w-32 bg-gray-200 rounded mb-4" />
-							<div className="flex flex-wrap gap-3">
-								<div className="h-6 w-16 bg-gray-200 rounded-full" />
-								<div className="h-6 w-20 bg-gray-200 rounded-full" />
-								<div className="h-6 w-12 bg-gray-200 rounded-full" />
-							</div>
-						</div>
-					</div>
-
-					<div className="space-y-6">
-						<div className="bg-white rounded-lg shadow-sm p-6 space-y-4">
-							<div className="h-6 w-32 bg-gray-200 rounded mb-6" />
-							<div className="h-4 w-24 bg-gray-200 rounded" />
-							<div className="h-4 w-16 bg-gray-200 rounded" />
-							<div className="h-4 w-20 bg-gray-200 rounded" />
-							<div className="h-4 w-28 bg-gray-200 rounded" />
-							<div className="h-4 w-24 bg-gray-200 rounded" />
-						</div>
-						<div className="bg-white rounded-lg shadow-sm p-6">
-							<div className="h-6 w-32 bg-gray-200 rounded mb-4" />
-							<div className="h-4 w-40 bg-gray-200 rounded" />
-						</div>
-					</div>
-				</div>
-			</div>
-		</div>
-	);
-}
-
-export default SkeletonSubjectView;
Index: ontend/src/components/types.ts
===================================================================
--- frontend/src/components/types.ts	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,131 +1,0 @@
-import { STUDY_TRACKS } from "../constants/subjects";
-
-export type UserType = "admin" | "student";
-
-export interface User {
-	full_name: string;
-	user_type: UserType;
-	student_index?: string;
-}
-
-export interface Subject {
-	id: number;
-	code: string;
-	name: string;
-	abstract: string;
-	subject_info: SubjectInfo;
-	recommendation_details?: {
-		match_percentage: number;
-		primary_reason: string;
-		explanations: string[];
-		matching_tags: string[];
-		detailed_scores: Record<string, number>;
-	};
-}
-
-export type SubjectID = Subject["id"];
-
-export interface StudentData {
-	// id: number;
-	index: string;
-	study_track: StudyTrack;
-	current_year: number;
-	// passed_subjects: Subject[];
-	study_effort: number;
-	tags: string[];
-	technologies: string[];
-	evaluation: string[];
-	professors: string[];
-	assistants: string[];
-	has_filled_form: boolean;
-	has_extracurricular: boolean;
-	passed_subjects_per_semester: Record<string, number[]> | [];
-}
-
-export type Prerequisite = {
-	subjects?: number[];
-	credits?: number;
-	none?: true;
-};
-
-export interface SubjectInfo {
-	level: number;
-	prerequisite: Prerequisite;
-	activated: boolean;
-	participants: number[];
-	mandatory: boolean;
-	mandatory_for: StudyTrack[];
-	semester: number;
-	season: string;
-	elective_for: StudyTrack[];
-	professors: string[];
-	assistants: string[];
-	tags: string[];
-	technologies: string[];
-	evaluation: string[];
-	is_easy: boolean;
-}
-
-export type Filters = {
-	season: "W" | "S" | "";
-	semester: number[];
-	level: number[];
-	activated: "activated" | "not_activated" | "";
-	mandatoryFor: StudyTrack[];
-	electiveFor: StudyTrack[];
-	professors: string[];
-	assistants: string[];
-	hasPrerequisites: boolean | "";
-	tags: string[];
-	evaluation: string[];
-};
-
-export type StudyTrack = (typeof STUDY_TRACKS)[number];
-
-export interface EvaluationComponent {
-	category:
-		| "project"
-		| "theory"
-		| "practical"
-		| "homework"
-		| "attendance"
-		| "presentation";
-	percentage: number;
-}
-
-export interface EvaluationMethod {
-	note?: string;
-	components: EvaluationComponent[];
-}
-
-export interface EvaluationReview {
-	review: Review;
-	methods: EvaluationMethod[];
-	signature_condition: string;
-}
-
-export interface OtherReview {
-	review: Review;
-	category: "material" | "staff" | "other";
-	content: string;
-}
-
-export interface ReviewSubject {
-	name: string;
-	code: string;
-}
-
-export interface Review {
-	id?: number;
-	student?: string;
-	is_confirmed?: boolean;
-	votes_score?: number;
-	subject: ReviewSubject;
-	user_has_voted?: "none" | "up" | "down";
-	date_posted: string;
-}
-
-export interface Reviews {
-	evaluation: EvaluationReview[];
-	other: OtherReview[];
-}
Index: ontend/src/constants/subjects.ts
===================================================================
--- frontend/src/constants/subjects.ts	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,36 +1,0 @@
-export const STUDY_TRACKS = [
-	"SIIS23",
-	"IMB23",
-	"PIT23",
-	"IE23",
-	"KI23",
-	"KN23",
-] as const;
-
-export const L1_LIMIT = 1;
-export const L2_LIMIT = 6;
-
-export const STUDY_EFFORT = [1, 2, 3, 4, 5] as const;
-export const YEARS = [1, 2, 3, 4] as const;
-export const EVALUATIONS = ["Теорија", "Практично", "Код", "Проект"];
-
-export const EVALUATIONS_MAP = {
-	Немам: "None",
-	None: "None",
-	Теорија: "Theory",
-	Практично: "Practical",
-	Код: "Code",
-	Проект: "Project",
-};
-
-export const EVALUATION_MAP_TO_MK = {
-	None: "Нема",
-	Theory: "Теорија",
-	Practical: "Практично",
-	Code: "Код",
-	Project: "Проект",
-	Homework: "Домашни",
-	Labs: "Лабораториски",
-	Attendance: "Присуство",
-	Presentation: "Презентација",
-};
Index: ontend/src/context/AuthContext.tsx
===================================================================
--- frontend/src/context/AuthContext.tsx	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,24 +1,0 @@
-import { OverridableTokenClientConfig } from "@react-oauth/google";
-import { createContext, Dispatch, SetStateAction } from "react";
-import { StudentData, User } from "../components/types";
-
-export interface AuthContextType {
-	accessToken: string | null;
-	formData: StudentData | null;
-	setFormData: (data: StudentData | null) => void;
-	user: User | null;
-	login: (accessToken: string, refreshToken: string, userData: User) => void;
-	logout: () => void;
-	isAuthenticated: boolean;
-	loading: boolean;
-	sessionInitialized: boolean;
-	setUser: Dispatch<SetStateAction<User | null>>;
-	customGoogleLogin?: (
-		overrideConfig?: OverridableTokenClientConfig | undefined
-	) => void;
-	googleLoginLoading: boolean;
-	useOAuth: boolean;
-}
-
-const AuthContext = createContext<AuthContextType | undefined>(undefined);
-export default AuthContext;
Index: ontend/src/context/AuthProvider.tsx
===================================================================
--- frontend/src/context/AuthProvider.tsx	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,281 +1,0 @@
-import { useGoogleLogin } from "@react-oauth/google";
-import axios, { AxiosError, AxiosRequestConfig } from "axios";
-import { jwtDecode } from "jwt-decode";
-import React, {
-	ReactNode,
-	useCallback,
-	useEffect,
-	useRef,
-	useState,
-} from "react";
-import { toast } from "react-toastify";
-import axiosInstance from "../api/axiosInstance";
-import { fetchUser } from "../api/user";
-import { StudentData, User, UserType } from "../components/types";
-import AuthContext, { AuthContextType } from "../context/AuthContext";
-const useOAuth = import.meta.env.VITE_USE_OAUTH === "true";
-
-interface DecodedToken {
-	exp: number;
-	iat: number;
-	jti: string;
-	token_type: string;
-	user_id: number;
-}
-
-interface CustomAxiosRequestConfig extends AxiosRequestConfig {
-	_retry?: boolean;
-	_skipAuthRefresh?: boolean;
-}
-
-let isRefreshing = false;
-let failedQueue: Array<{
-	resolve: (value: string | null) => void;
-	reject: (reason: unknown) => void;
-}> = [];
-
-const processQueue = (error: unknown, token: string | null = null) => {
-	failedQueue.forEach((prom) => {
-		if (error) {
-			prom.reject(error);
-		} else {
-			prom.resolve(token);
-		}
-	});
-	failedQueue = [];
-};
-
-export const AuthProvider: React.FC<{ children: ReactNode }> = ({
-	children,
-}) => {
-	const [user, setUser] = useState<User | null>(null);
-	const [accessToken, setAccessToken] = useState<string | null>(null);
-	const [formData, setFormData] = useState<StudentData | null>(null);
-	const [loading, setLoading] = useState(true);
-	const [sessionInitialized, setSessionInitialized] = useState(false);
-	const [googleLoginLoading, setGoogleLoginLoading] = useState(false);
-
-	const proactiveRefreshTimeoutId = useRef<number | null>(null);
-
-	const logout = useCallback(() => {
-		if (proactiveRefreshTimeoutId.current) {
-			clearTimeout(proactiveRefreshTimeoutId.current);
-		}
-		const currentRefreshToken = localStorage.getItem("refresh");
-		if (currentRefreshToken) {
-			axiosInstance
-				.post("/auth/logout/", { refresh: currentRefreshToken })
-				.catch((err) =>
-					console.error(
-						"Server logout failed, proceeding with client-side cleanup",
-						err
-					)
-				);
-		}
-		localStorage.removeItem("access");
-		localStorage.removeItem("refresh");
-		setAccessToken(null);
-		setFormData(null);
-		setUser(null);
-		setSessionInitialized(false); // Reset session on logout
-	}, []);
-
-	const scheduleProactiveRefresh = useCallback(
-		(token: string) => {
-			if (proactiveRefreshTimeoutId.current) {
-				clearTimeout(proactiveRefreshTimeoutId.current);
-			}
-			try {
-				const decodedToken = jwtDecode<DecodedToken>(token);
-				const expirationTime = decodedToken.exp * 1000;
-				const currentTime = Date.now();
-				const refreshOffset = 15 * 1000;
-				const timeoutDuration = expirationTime - currentTime - refreshOffset;
-				if (timeoutDuration > 0) {
-					proactiveRefreshTimeoutId.current = window.setTimeout(async () => {
-						if (isRefreshing) return;
-						const currentRefreshToken = localStorage.getItem("refresh");
-						if (currentRefreshToken) {
-							isRefreshing = true;
-							try {
-								const res = await axiosInstance.post<{
-									access: string;
-									refresh?: string;
-								}>("/auth/refresh/", { refresh: currentRefreshToken }, {
-									_skipAuthRefresh: true,
-								} as CustomAxiosRequestConfig);
-								localStorage.setItem("access", res.data.access);
-								setAccessToken(res.data.access);
-								if (res.data.refresh) {
-									localStorage.setItem("refresh", res.data.refresh);
-								}
-								scheduleProactiveRefresh(res.data.access);
-							} catch (err) {
-								console.error("Proactive token refresh failed:", err);
-								logout();
-							} finally {
-								isRefreshing = false;
-							}
-						}
-					}, timeoutDuration);
-				}
-			} catch (error) {
-				console.error("Failed to decode token for proactive refresh:", error);
-			}
-		},
-		[logout]
-	);
-
-	useEffect(() => {
-		const requestIntercept = axiosInstance.interceptors.request.use(
-			(config) => {
-				const token = localStorage.getItem("access");
-				if (token && !config.headers["Authorization"]) {
-					config.headers["Authorization"] = `Bearer ${token}`;
-				}
-				return config;
-			},
-			(error: AxiosError) => Promise.reject(error)
-		);
-		const responseIntercept = axiosInstance.interceptors.response.use(
-			(response) => response,
-			async (error) => {
-				const originalRequest = error.config as CustomAxiosRequestConfig;
-				if (
-					error.response?.status === 401 &&
-					!originalRequest._retry &&
-					!originalRequest._skipAuthRefresh
-				) {
-					originalRequest._retry = true;
-					if (isRefreshing) {
-						return new Promise((resolve, reject) => {
-							failedQueue.push({ resolve, reject });
-						}).then((token) => {
-							if (originalRequest.headers) {
-								originalRequest.headers["Authorization"] = "Bearer " + token;
-							}
-							return axiosInstance(originalRequest);
-						});
-					}
-					isRefreshing = true;
-					const currentRefreshToken = localStorage.getItem("refresh");
-					if (!currentRefreshToken) {
-						isRefreshing = false;
-						logout();
-						return Promise.reject(error);
-					}
-					try {
-						const response = await axiosInstance.post<{
-							access: string;
-							refresh?: string;
-						}>("/auth/refresh/", { refresh: currentRefreshToken }, {
-							_skipAuthRefresh: true,
-						} as CustomAxiosRequestConfig);
-						const newAccessToken = response.data.access;
-						localStorage.setItem("access", newAccessToken);
-						setAccessToken(newAccessToken);
-						if (response.data.refresh) {
-							localStorage.setItem("refresh", response.data.refresh);
-						}
-						scheduleProactiveRefresh(newAccessToken);
-						if (originalRequest.headers) {
-							originalRequest.headers[
-								"Authorization"
-							] = `Bearer ${newAccessToken}`;
-						}
-						processQueue(null, newAccessToken);
-						return axiosInstance(originalRequest);
-					} catch (refreshError) {
-						processQueue(refreshError, null);
-						logout();
-						toast.error("Твојата сесија истече. Најави се повторно.");
-						return Promise.reject(refreshError);
-					} finally {
-						isRefreshing = false;
-					}
-				}
-				return Promise.reject(error);
-			}
-		);
-		return () => {
-			axiosInstance.interceptors.request.eject(requestIntercept);
-			axiosInstance.interceptors.response.eject(responseIntercept);
-		};
-	}, [logout, scheduleProactiveRefresh]);
-
-	const login = useCallback(
-		async (newAccessToken: string, newRefreshToken: string, userData: User) => {
-			localStorage.setItem("access", newAccessToken);
-			localStorage.setItem("refresh", newRefreshToken);
-			setAccessToken(newAccessToken);
-			setUser(userData);
-			scheduleProactiveRefresh(newAccessToken);
-		},
-		[scheduleProactiveRefresh]
-	);
-
-	const customGoogleLogin = useOAuth
-		? useGoogleLogin({
-				onSuccess: async (tokenResponse) => {
-					setGoogleLoginLoading(true);
-					const accessToken = tokenResponse.access_token;
-					try {
-						const response = await axios.post<{
-							access: string;
-							refresh: string;
-							full_name: string;
-							user_type: UserType;
-						}>("http://localhost:8000/auth/google/login/", {
-							access_token: accessToken,
-						});
-						const { access, refresh, full_name, user_type } = response.data;
-						await login(access, refresh, { full_name, user_type });
-						toast.success("Успешно сте најавени!");
-						window.dispatchEvent(new CustomEvent("googleLoginSuccess"));
-					} catch (err: any) {
-						console.error("Login failed:", err.response?.data || err.message);
-						toast.error("Грешка при најавување со Google");
-					} finally {
-						setGoogleLoginLoading(false);
-					}
-				},
-				onError: () => {
-					console.error("Login Failed");
-					setGoogleLoginLoading(false);
-					toast.error("Грешка при најавување со Google");
-				},
-				flow: "implicit",
-		  })
-		: undefined;
-
-	useEffect(() => {
-		(async () => {
-			const token = localStorage.getItem("access");
-			if (token) {
-				setAccessToken(token);
-				await fetchUser(token, setUser);
-			}
-			setLoading(false);
-		})();
-	}, []);
-
-	const contextValue: AuthContextType = {
-		user,
-		accessToken,
-		formData,
-		setFormData,
-		login,
-		logout,
-		isAuthenticated: !!accessToken,
-		loading,
-		sessionInitialized,
-		setUser,
-		customGoogleLogin,
-		googleLoginLoading,
-		useOAuth,
-	};
-
-	return (
-		<AuthContext.Provider value={contextValue}>{children}</AuthContext.Provider>
-	);
-};
Index: ontend/src/context/PreferencesContext.tsx
===================================================================
--- frontend/src/context/PreferencesContext.tsx	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,165 +1,0 @@
-import {
-	createContext,
-	ReactNode,
-	useCallback,
-	useContext,
-	useState,
-} from "react";
-import { toast } from "react-toastify";
-import axiosInstance from "../api/axiosInstance";
-interface PreferencesContextType {
-	favoriteIds: Set<number> | undefined;
-	setFavoriteIds: React.Dispatch<React.SetStateAction<Set<number> | undefined>>;
-	likedIds: Set<number> | undefined;
-	setLikedIds: React.Dispatch<React.SetStateAction<Set<number> | undefined>>;
-	dislikedIds: Set<number> | undefined;
-	setDislikedIds: React.Dispatch<React.SetStateAction<Set<number> | undefined>>;
-	toggleFavorite: (subjectId: number) => Promise<void>;
-	toggleLike: (subjectId: number) => Promise<void>;
-	toggleDislike: (subjectId: number) => Promise<void>;
-}
-
-const PreferencesContext = createContext<PreferencesContextType | undefined>(
-	undefined
-);
-
-export const PreferencesProvider = ({ children }: { children: ReactNode }) => {
-	const [favoriteIds, setFavoriteIds] = useState<Set<number> | undefined>(
-		undefined
-	);
-	const [likedIds, setLikedIds] = useState<Set<number> | undefined>(undefined);
-	const [dislikedIds, setDislikedIds] = useState<Set<number> | undefined>(
-		undefined
-	);
-
-	const toggleFavorite = useCallback(
-		async (subjectId: number) => {
-			const originalFavorites = new Set(favoriteIds);
-			setFavoriteIds((prevIds) => {
-				const newIds = new Set(prevIds);
-				if (newIds.has(subjectId)) {
-					newIds.delete(subjectId);
-				} else {
-					newIds.add(subjectId);
-				}
-				return newIds;
-			});
-
-			try {
-				await axiosInstance.post("/subjects/toggle-subject-pref/", {
-					subject_id: subjectId,
-					action_type: "favorite",
-				});
-			} catch (error) {
-				console.error("Failed to toggle favorite, reverting.", error);
-				setFavoriteIds(originalFavorites);
-				toast.error("Мора да си најавен за да додадеш предмет во омилени.");
-			}
-		},
-		[favoriteIds]
-	);
-
-	const toggleLike = useCallback(
-		async (subjectId: number) => {
-			const wasDisliked = dislikedIds?.has(subjectId);
-			if (wasDisliked) {
-				const newDisliked = new Set(dislikedIds);
-				newDisliked.delete(subjectId);
-				setDislikedIds(newDisliked);
-			}
-			const originalLiked = new Set(likedIds);
-			setLikedIds((prevIds) => {
-				const newIds = new Set(prevIds);
-				if (newIds.has(subjectId)) {
-					newIds.delete(subjectId);
-				} else {
-					newIds.add(subjectId);
-				}
-				return newIds;
-			});
-
-			try {
-				await axiosInstance.post("/subjects/toggle-subject-pref/", {
-					subject_id: subjectId,
-					action_type: "liked",
-				});
-				if (wasDisliked) {
-					await axiosInstance.post("/subjects/toggle-subject-pref/", {
-						subject_id: subjectId,
-						action_type: "disliked",
-					});
-				}
-			} catch (error) {
-				console.error("Failed to toggle liked, reverting.", error);
-				setLikedIds(originalLiked);
-				toast.error("Мора да си најавен за да додадеш оценка на препорака.");
-			}
-		},
-		[likedIds]
-	);
-
-	const toggleDislike = useCallback(
-		async (subjectId: number) => {
-			const wasLiked = likedIds?.has(subjectId);
-			if (wasLiked) {
-				const newLiked = new Set(likedIds);
-				newLiked.delete(subjectId);
-				setLikedIds(newLiked);
-			}
-			const originalDisliked = new Set(likedIds);
-			setDislikedIds((prevIds) => {
-				const newIds = new Set(prevIds);
-				if (newIds.has(subjectId)) {
-					newIds.delete(subjectId);
-				} else {
-					newIds.add(subjectId);
-				}
-				return newIds;
-			});
-
-			try {
-				await axiosInstance.post("/subjects/toggle-subject-pref/", {
-					subject_id: subjectId,
-					action_type: "disliked",
-				});
-				if (wasLiked) {
-					await axiosInstance.post("/subjects/toggle-subject-pref/", {
-						subject_id: subjectId,
-						action_type: "liked",
-					});
-				}
-			} catch (error) {
-				console.error("Failed to toggle liked, reverting.", error);
-				setDislikedIds(originalDisliked);
-				toast.error("Мора да си најавен за да додадеш лајк на предмет.");
-			}
-		},
-		[likedIds]
-	);
-
-	const value = {
-		favoriteIds,
-		setFavoriteIds,
-		likedIds,
-		setLikedIds,
-		dislikedIds,
-		setDislikedIds,
-		toggleFavorite,
-		toggleLike,
-		toggleDislike,
-	};
-
-	return (
-		<PreferencesContext.Provider value={value}>
-			{children}
-		</PreferencesContext.Provider>
-	);
-};
-
-export const usePreferences = () => {
-	const context = useContext(PreferencesContext);
-	if (context === undefined) {
-		throw new Error("usePreferences must be used within a PreferencesProvider");
-	}
-	return context;
-};
Index: ontend/src/context/RecommendationsContext.tsx
===================================================================
--- frontend/src/context/RecommendationsContext.tsx	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,39 +1,0 @@
-import {
-	createContext,
-	Dispatch,
-	ReactNode,
-	SetStateAction,
-	useContext,
-	useState,
-} from "react";
-import { Subject } from "../components/types";
-
-type RecommendationsContextType = [
-	Subject[],
-	Dispatch<SetStateAction<Subject[]>>
-];
-
-const RecommendationsContext = createContext<RecommendationsContextType>([
-	[],
-	() => {},
-]);
-
-interface RecommendationsProviderProps {
-	children: ReactNode;
-}
-
-export const RecommendationsProvider = ({
-	children,
-}: RecommendationsProviderProps) => {
-	const [recommendations, setRecommendations] = useState<Subject[]>([]);
-
-	return (
-		<RecommendationsContext.Provider
-			value={[recommendations, setRecommendations]}
-		>
-			{children}
-		</RecommendationsContext.Provider>
-	);
-};
-
-export const useRecommendations = () => useContext(RecommendationsContext);
Index: ontend/src/context/SubjectsContext.tsx
===================================================================
--- frontend/src/context/SubjectsContext.tsx	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,29 +1,0 @@
-import {
-	createContext,
-	Dispatch,
-	ReactNode,
-	SetStateAction,
-	useContext,
-	useState,
-} from "react";
-import { Subject } from "../components/types";
-
-type SubjectsContextType = [Subject[], Dispatch<SetStateAction<Subject[]>>];
-
-const SubjectsContext = createContext<SubjectsContextType>([[], () => {}]);
-
-interface SubjectsProviderProps {
-	children: ReactNode;
-}
-
-export const SubjectsProvider = ({ children }: SubjectsProviderProps) => {
-	const [subjects, setSubjects] = useState<Subject[]>([]);
-
-	return (
-		<SubjectsContext.Provider value={[subjects, setSubjects]}>
-			{children}
-		</SubjectsContext.Provider>
-	);
-};
-
-export const useSubjects = () => useContext(SubjectsContext);
Index: ontend/src/hooks/useAuth.ts
===================================================================
--- frontend/src/hooks/useAuth.ts	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,10 +1,0 @@
-import { useContext } from "react";
-import AuthContext, { AuthContextType } from "../context/AuthContext";
-
-export const useAuth = (): AuthContextType => {
-	const context = useContext(AuthContext);
-	if (context === undefined) {
-		throw new Error("useAuth must be used within an AuthProvider");
-	}
-	return context;
-};
Index: ontend/src/index.css
===================================================================
--- frontend/src/index.css	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,67 +1,0 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
-
-@layer utilities {
-	.custom-select {
-		-webkit-appearance: none;
-		-moz-appearance: none;
-		appearance: none;
-		background-image: url("data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D'http%3A//www.w3.org/2000/svg'%20viewBox%3D'0%200%2020%2020'%3E%3Cpath%20fill%3D'none'%20stroke%3D'%23000'%20stroke-width%3D'1.5'%20d%3D'M6%208l4%204%204-4'/%3E%3C/svg%3E");
-		background-repeat: no-repeat;
-		background-position: right 0.75rem center;
-		background-size: 1rem;
-		padding-right: 2rem;
-		cursor: pointer;
-	}
-}
-
-@keyframes fadeInUp {
-	from {
-		opacity: 0;
-		transform: translateY(20px);
-	}
-	to {
-		opacity: 1;
-		transform: translateY(0);
-	}
-}
-
-@keyframes skeleton-pulse {
-	0%,
-	100% {
-		background-color: #ffffff; /* white */
-	}
-	50% {
-		background-color: #f9fafb; /* gray-50 */
-	}
-}
-
-.skeleton-pulse {
-	animation: skeleton-pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
-}
-
-.Toastify__toast-container.custom-toast-container {
-	/* This moves the toast container down by 8em from the top */
-	top: 8em !important;
-}
-
-@media screen and (max-width: 480px) {
-	.Toastify__toast-container.custom-toast-container {
-		top: 5em !important;
-		width: auto !important;
-		max-width: 90vw !important;
-		left: auto !important;
-		right: 1em !important;
-		transform: none !important;
-	}
-}
-
-.hide-scrollbar::-webkit-scrollbar {
-	display: none; /* For Chrome, Safari, and Opera */
-}
-
-.hide-scrollbar {
-	-ms-overflow-style: none; /* For Internet Explorer and Edge */
-	scrollbar-width: none; /* For Firefox */
-}
Index: frontend/src/main.tsx
===================================================================
--- frontend/src/main.tsx	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ frontend/src/main.tsx	(revision 516baa4eda127c8c3a0f761c69f90c8c5ff421e3)
@@ -1,40 +1,9 @@
-import { GoogleOAuthProvider } from "@react-oauth/google";
 import { StrictMode } from "react";
 import { createRoot } from "react-dom/client";
 import App from "./App.tsx";
-import { AuthProvider } from "./context/AuthProvider";
-import { PreferencesProvider } from "./context/PreferencesContext.tsx";
-import { RecommendationsProvider } from "./context/RecommendationsContext.tsx";
-import { SubjectsProvider } from "./context/SubjectsContext.tsx";
-import "./index.css";
-
-const useOAuth = import.meta.env.VITE_USE_OAUTH === "true";
-
-const OAuthWrapper: React.FC<{ children: React.ReactNode }> = ({
-	children,
-}) => {
-	if (useOAuth) {
-		return (
-			<GoogleOAuthProvider clientId={import.meta.env.VITE_GOOGLE_CLIENT_ID}>
-				{children}
-			</GoogleOAuthProvider>
-		);
-	}
-	return <>{children}</>;
-};
 
 createRoot(document.getElementById("root")!).render(
 	<StrictMode>
-		<OAuthWrapper>
-			<AuthProvider>
-				<SubjectsProvider>
-					<RecommendationsProvider>
-						<PreferencesProvider>
-							<App />
-						</PreferencesProvider>
-					</RecommendationsProvider>
-				</SubjectsProvider>
-			</AuthProvider>
-		</OAuthWrapper>
+		<App />
 	</StrictMode>
 );
Index: ontend/src/pages/Account.tsx
===================================================================
--- frontend/src/pages/Account.tsx	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,17 +1,0 @@
-import StudentForm from "../components/StudentForm/StudentForm";
-import { useAuth } from "../hooks/useAuth";
-
-const Account = () => {
-	const { formData } = useAuth();
-	const isLoading = formData === null;
-	return (
-		<div className="p-4 bg-white">
-			<StudentForm
-				formData={formData}
-				isLoading={isLoading}
-			/>
-		</div>
-	);
-};
-
-export default Account;
Index: ontend/src/pages/Home.tsx
===================================================================
--- frontend/src/pages/Home.tsx	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,142 +1,0 @@
-import { ArrowRight, BookOpen, Lightbulb, Users } from "lucide-react";
-import { Link } from "react-router-dom";
-import { useAuth } from "../hooks/useAuth";
-
-export default function Homepage() {
-	const { isAuthenticated } = useAuth();
-	return (
-		<div className="min-h-screen bg-white">
-			<main className="max-w-4xl mx-auto px-4 sm:px-6 lg:px-8 py-16">
-				<div className="text-center mb-16 bg-gray-50 rounded-xl border border-gray-200 shadow-md py-10 px-6">
-					<h2 className="text-4xl font-bold text-gray-900 mb-4 drop-shadow-sm">
-						Најди го изборниот предмет за тебе
-					</h2>
-					<p className="text-xl text-gray-600 max-w-2xl mx-auto">
-						ИзбериИзборен е веб апликација која помага на студентите на ФИНКИ да
-						се запознаат со изборните предмети кои ги нуди факултетот и да им
-						помогне да го изберат најдобриот.
-					</p>
-				</div>
-
-				<section className="p-8 shadow-md mb-8 bg-gray-50 rounded-xl border border-gray-200 ">
-					<div className="flex items-start space-x-4">
-						<div className="flex-shrink-0">
-							<div className="w-12 h-12 bg-red-100 rounded-xl flex items-center justify-center">
-								<Users className="h-6 w-6 text-red-600" />
-							</div>
-						</div>
-						<div>
-							<h3 className="text-xl font-semibold text-gray-900 mb-3">
-								Зошто ИзбериИзборен?
-							</h3>
-							<p className="text-gray-600 leading-relaxed">
-								Студентите на ФИНКИ се соочуваат со огромен избор при
-								селекцијата на изборни предмети. Со многу достапни опции,
-								ограничени описи на предметите и минимален увид во тоа што
-								всушност се изучува, донесувањето информирана одлука е речиси
-								невозможно. Многу студенти избираат на случаен избор или врз
-								основа на нецелосни информации, што често доведува до
-								разочарување и избирање нешто несоодветно за нив. Ова е
-								проблемот којшто ние го решаваме.
-							</p>
-						</div>
-					</div>
-				</section>
-
-				<section className="p-8 shadow-md mb-8 bg-gray-50 rounded-xl border border-gray-200 ">
-					<div className="flex items-start space-x-4">
-						<div className="flex-shrink-0">
-							<div className="w-12 h-12 bg-green-100 rounded-xl flex items-center justify-center">
-								<Lightbulb className="h-6 w-6 text-green-600" />
-							</div>
-						</div>
-						<div className="flex-1">
-							<h3 className="text-xl font-semibold text-gray-900 mb-3">
-								Како работи нашиот алгоритам?
-							</h3>
-							<p className="text-gray-600 leading-relaxed mb-4">
-								Нашиот систем ги анализира вашите положени предмети, интереси и
-								преференци и ги споредува со деталните информации за сите
-								достапни предмети што може да ги запишете. Секој релевантен
-								фактор добива соодветна тежина при анализата. На крај, системот
-								ги прикажува шесте најсоодветни предмети, подредени според
-								нивната усогласеност со вашите параметри, почнувајќи од
-								најпрепорачаниот.
-							</p>
-
-							{isAuthenticated ? (
-								<Link
-									to="/recommendations"
-									onClick={() => window.scrollTo({ top: 0, behavior: "auto" })}
-									className="inline-flex items-center space-x-2 px-6 py-3 bg-blue-600 text-white rounded-lg hover:bg-blue-900 transition-colors font-medium"
-								>
-									Види препораки
-									<ArrowRight className="h-4 w-4" />
-								</Link>
-							) : (
-								<div className="bg-gray-100 rounded-lg p-4">
-									<p className="text-gray-600 font-medium">
-										<Link
-											to="/login"
-											onClick={() =>
-												window.scrollTo({ top: 0, behavior: "auto" })
-											}
-											className="text-blue-600 hover:underline font-semibold"
-										>
-											Најавете се
-										</Link>{" "}
-										за да добиете персонализирани препораки и да го најдете
-										најсоодветниот предмет за вас.
-									</p>
-								</div>
-							)}
-						</div>
-					</div>
-				</section>
-
-				<section className=" p-8 shadow-md bg-gray-50 rounded-xl border border-gray-200">
-					<div className="flex items-start space-x-4">
-						<div className="flex-shrink-0">
-							<div className="w-12 h-12 bg-blue-100 rounded-xl flex items-center justify-center">
-								<BookOpen className="h-6 w-6 text-blue-600" />
-							</div>
-						</div>
-						<div className="flex-1">
-							<h3 className="text-xl font-semibold text-gray-900 mb-3">
-								База на сите предмети на ФИНКИ
-							</h3>
-							<p className="text-gray-600 leading-relaxed mb-4">
-								Прелистајте ги сите предмети што факултетот моментално ги нуди.
-								За секој предмет нудиме информации како што се начинот на
-								полагање, изучуваните технологии, професорите и асистентите,
-								предусловите и слично. Достапни се опции за пребарување и
-								филтрирање за полесна и поефикасна навигација низ базата.
-							</p>
-
-							<Link
-								to="/subjects"
-								onClick={() => window.scrollTo({ top: 0, behavior: "auto" })}
-								className="inline-flex items-center space-x-2 px-6 py-3 bg-blue-600 text-white rounded-lg hover:bg-blue-900 transition-colors font-medium"
-							>
-								<span>Види предмети</span>
-								<ArrowRight className="h-4 w-4" />
-							</Link>
-						</div>
-					</div>
-				</section>
-			</main>
-
-			{/* Footer
-			<footer className="bg-white border-t border-gray-200 mt-16">
-				<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-8">
-					<div className="text-center text-gray-600">
-						<p>
-							&copy; 2025 IzberiIzboren. Made for FINKI students, by FINKI
-							students.
-						</p>
-					</div>
-				</div>
-			</footer> */}
-		</div>
-	);
-}
Index: ontend/src/pages/Login.tsx
===================================================================
--- frontend/src/pages/Login.tsx	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,175 +1,0 @@
-import axios, { AxiosError } from "axios";
-import React, { useEffect, useState } from "react";
-import { Link, useNavigate } from "react-router-dom";
-import { toast } from "react-toastify";
-import googleLogo from "../assets/google-logo.png";
-import PasswordInput from "../components/PasswordInput";
-import { UserType } from "../components/types";
-import { useAuth } from "../hooks/useAuth";
-
-interface LoginForm {
-	email: string;
-	password: string;
-}
-
-const Login: React.FC = () => {
-	const [formData, setFormData] = useState<LoginForm>({
-		email: "",
-		password: "",
-	});
-	const [errors, setErrors] = useState<
-		Partial<LoginForm> & { detail?: string[] }
-	>({});
-	const navigate = useNavigate();
-	const { login, customGoogleLogin, googleLoginLoading, useOAuth } = useAuth();
-	const [isLoading, setIsLoading] = useState(false);
-
-	useEffect(() => {
-		const handleGoogleLoginSuccess = () => {
-			navigate("/");
-		};
-
-		window.addEventListener("googleLoginSuccess", handleGoogleLoginSuccess);
-
-		return () => {
-			window.removeEventListener(
-				"googleLoginSuccess",
-				handleGoogleLoginSuccess
-			);
-		};
-	}, [navigate]);
-
-	const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {
-		setFormData({
-			...formData,
-			[e.target.name]: e.target.value,
-		});
-	};
-
-	const handleLogin = async (e: React.FormEvent) => {
-		e.preventDefault();
-		setErrors({});
-		setIsLoading(true);
-		try {
-			const response = await axios.post<{
-				access: string;
-				refresh: string;
-				full_name: string;
-				user_type: UserType;
-				student_index?: string;
-			}>("http://localhost:8000/auth/login/", {
-				email: formData.email,
-				password: formData.password,
-			});
-			const { access, refresh, full_name, user_type, student_index } =
-				response.data;
-			login(access, refresh, { full_name, user_type, student_index });
-			navigate("/");
-			toast.success(
-				`Успешно сте најавени${user_type ? " како администратор" : ""}!`
-			);
-		} catch (err: unknown) {
-			const axiosError = err as AxiosError<{
-				[key: string]: string[] | string;
-			}>;
-			console.error("Error response data:", axiosError.response?.data);
-
-			if (axiosError.response && axiosError.response.data) {
-				const errorData = axiosError.response.data;
-				const normalizedErrors: { [key: string]: string[] } = {};
-				Object.entries(errorData).forEach(([field, message]) => {
-					normalizedErrors[field] = Array.isArray(message)
-						? message
-						: [message];
-				});
-				setErrors(normalizedErrors);
-			} else {
-				setErrors({ detail: ["An unknown error occurred."] });
-			}
-		}
-		setIsLoading(false);
-	};
-	return (
-		<div className="flex flex-col items-center justify-center min-h-[83vh] py-4 px-4 bg-white">
-			<form
-				onSubmit={handleLogin}
-				className="bg-white p-4 sm:p-6 rounded-lg shadow-md w-full max-w-sm"
-			>
-				<h2 className="text-xl font-semibold mb-3 sm:mb-4 text-center">
-					Најава
-				</h2>
-				{errors.detail && (
-					<div className="text-red-500 mb-2 sm:mb-3 text-sm">
-						{errors.detail[0]}.
-					</div>
-				)}
-				<input
-					type="email"
-					name="email"
-					required
-					value={formData.email}
-					disabled={isLoading || googleLoginLoading}
-					onChange={handleChange}
-					placeholder="Email"
-					className="w-full mb-2 sm:mb-3 p-2 border rounded"
-				/>
-				{errors.email && (
-					<p className="text-red-500 text-sm mb-1 sm:mb-2">{errors.email[0]}</p>
-				)}
-				<PasswordInput
-					name="password"
-					value={formData.password}
-					disabled={isLoading || googleLoginLoading}
-					onChange={handleChange}
-					placeholder="Лозинка"
-					error={errors.password ? errors.password[0] : undefined}
-				/>
-				<p className="mb-3 sm:mb-4 text-sm text-center">
-					Немаш профил?{" "}
-					<Link to="/register" className="text-blue-500 hover:underline">
-						Регистрирај се
-					</Link>
-				</p>
-				<button
-					type="submit"
-					disabled={isLoading || googleLoginLoading}
-					className={`w-full bg-blue-600 text-white p-2 rounded hover:bg-blue-700 
-						${isLoading || googleLoginLoading ? "opacity-70 cursor-not-allowed" : ""}`}
-				>
-					{isLoading ? "Се најавува..." : "Најави се"}
-				</button>
-
-				{useOAuth && (
-					<>
-						<div className="mt-3 sm:mt-4 text-center">
-							<div className="relative">
-								<div className="absolute inset-0 flex items-center">
-									<div className="w-full border-t border-gray-300" />
-								</div>
-								<div className="relative flex justify-center text-sm">
-									<span className="px-2 bg-white text-gray-500">или</span>
-								</div>
-							</div>
-						</div>
-
-						<button
-							type="button"
-							onClick={() => customGoogleLogin?.()}
-							disabled={isLoading || googleLoginLoading}
-							className={`w-full mt-3 sm:mt-4 bg-white border border-gray-300 text-gray-700 p-2 rounded hover:bg-gray-50 flex items-center justify-center gap-2 ${
-								googleLoginLoading || isLoading
-									? "opacity-70 cursor-not-allowed"
-									: ""
-							}`}
-						>
-							<img src={googleLogo} alt="Google logo" className="w-5 h-5" />
-							{googleLoginLoading ? "Се најавува..." : "Продолжи со Google"}
-						</button>
-					</>
-				)}
-			</form>
-		</div>
-	);
-};
-
-export default Login;
Index: ontend/src/pages/NotFound.tsx
===================================================================
--- frontend/src/pages/NotFound.tsx	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,21 +1,0 @@
-import { Link } from "react-router-dom";
-
-const NotFound = () => {
-	return (
-		<div className="flex flex-col items-center justify-center min-h-[83vh] bg-white text-gray-800">
-			<h1 className="text-6xl font-bold mb-4">404</h1>
-			<h2 className="text-2xl font-semibold mb-2">Страната не постои</h2>
-			<p className="mb-6 text-center max-w-md">
-				Страната која ја бараш не постои или била преместена.
-			</p>
-			<Link
-				to="/"
-				className="px-6 py-2 bg-blue-600 text-white rounded hover:bg-blue-700 transition"
-			>
-				Домашна страна
-			</Link>
-		</div>
-	);
-};
-
-export default NotFound;
Index: ontend/src/pages/Recommendations.tsx
===================================================================
--- frontend/src/pages/Recommendations.tsx	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,272 +1,0 @@
-import { useEffect, useMemo, useState } from "react";
-import { useNavigate } from "react-router-dom";
-import axiosInstance from "../api/axiosInstance";
-import { fetchPreferences } from "../api/preferences";
-import { fetchSubjects } from "../api/subjects";
-import SubjectCard from "../components/SubjectCatalog/SubjectCard";
-import SubjectModal from "../components/SubjectCatalog/SubjectModal";
-import { getSubjectPrerequisites } from "../components/SubjectCatalog/utils";
-import { Subject } from "../components/types";
-import { usePreferences } from "../context/PreferencesContext";
-import { useRecommendations } from "../context/RecommendationsContext";
-import { useSubjects } from "../context/SubjectsContext";
-import { useAuth } from "../hooks/useAuth";
-
-const Recommendations = () => {
-	const navigate = useNavigate();
-	const { setDislikedIds, setFavoriteIds, setLikedIds } = usePreferences();
-	const [isLoading, setIsLoading] = useState(false);
-	const { formData } = useAuth();
-	const { accessToken } = useAuth();
-	const [subjects, setSubjects] = useSubjects();
-	const [recommendations, setRecommendations] = useRecommendations();
-	const [recommendationsLoaded, setRecommendationsLoaded] = useState(true);
-	const [season_, setSeason] = useState<"winter" | "summer" | "all">("all");
-	const [includeNotActivated, setIncludeNotActivated] = useState(false);
-	const [showModal, setShowModal] = useState(false);
-	const [hasSearched, setHasSearched] = useState(false);
-
-	const mapToSeasonInt = (season: "winter" | "summer" | "all") => {
-		if (season == "summer") return 0;
-		if (season == "winter") return 1;
-		return 2;
-	};
-
-	useEffect(() => {
-		if (!subjects || subjects.length === 0) {
-			fetchSubjects(setSubjects);
-		}
-	}, [subjects, setSubjects]);
-
-	const fetchRecommendations = async () => {
-		setRecommendationsLoaded(false);
-		try {
-			const season = mapToSeasonInt(season_);
-			const notActivated = includeNotActivated ? 1 : 0;
-			const response = await axiosInstance.get("subjects/recommendations/", {
-				params: { season, not_activated: notActivated },
-			});
-			setRecommendations(response.data.data);
-		} catch (error) {
-			console.error("Error fetching recommendations:", error);
-		} finally {
-			setRecommendationsLoaded(true);
-			setHasSearched(true);
-			const container = document.querySelector(".hide-scrollbar");
-			if (container) {
-				container.scrollTo({ top: 0, behavior: "smooth" });
-			}
-		}
-	};
-
-	const subjectIdToNameMap = useMemo(() => {
-		const map = new Map<number, string>();
-		subjects.forEach((subject) => {
-			map.set(subject.id, subject.name);
-		});
-		return map;
-	}, [subjects]);
-
-	const cycleSeason = () => {
-		if (season_ === "all") setSeason("winter");
-		else if (season_ === "winter") setSeason("summer");
-		else setSeason("all");
-	};
-
-	const openSubjectView = (subject: Subject) => {
-		navigate(`/subjects/${subject.code}`, {
-			state: { from: "/recommendations" },
-		});
-	};
-
-	const [selectedSubject, setSelectedSubject] = useState<Subject | null>(null);
-
-	const openSubjectDetails = (subject: Subject) => {
-		setSelectedSubject(subject);
-		setShowModal(true);
-	};
-
-	const closeModal = () => {
-		setSelectedSubject(null);
-		setShowModal(false);
-	};
-
-	const getSeasonText = () => {
-		switch (season_) {
-			case "winter":
-				return "Зимски";
-			case "summer":
-				return "Летен";
-			case "all":
-				return "Зимски + Летен";
-		}
-	};
-
-	useEffect(() => {
-		if (!accessToken) return;
-		fetchPreferences({
-			setIsLoading,
-			setDislikedIds,
-			setFavoriteIds,
-			setLikedIds,
-		});
-	}, [accessToken, setDislikedIds, setFavoriteIds, setLikedIds]);
-
-	return (
-		<>
-			{formData?.has_filled_form === false ? (
-				<div className="flex min-h-[90vh] bg-white p-4">
-					<div className="text-red-500 font-bold text-xl md:text-2xl text-center flex-1 flex items-center justify-center">
-						Пополни информации за твојот профил за да добиеш препораки!
-					</div>
-				</div>
-			) : (
-				<div className="flex flex-col lg:flex-row lg:h-[90vh] bg-gray-50">
-					<div className="w-full lg:w-1/3 bg-white shadow-lg p-6 lg:p-8 flex flex-col justify-center items-center space-y-6 lg:space-y-8">
-						<div className="text-center">
-							<h1 className="text-3xl lg:text-4xl font-bold text-gray-800 mb-2">
-								Препораки
-							</h1>
-							<p className="text-gray-600 text-base lg:text-lg">
-								Предметите што ќе ги добиеш од алгоритамот се базирани на тоа
-								што си го пополнил во формата.
-								<br />
-								Тие се подредени според тоа колку твоите интереси се совпаѓаат
-								со тоа што го нудат предметите.
-							</p>
-						</div>
-						<button onClick={cycleSeason}>
-							<div className="bg-blue-500 border border-blue-200 rounded-lg p-4 md:p-6 font-semibold text-white text-center hover:bg-blue-800 transition-colors duration-200">
-								<p className="text-white mb-2 md:mb-3">
-									{season_ === "all" ? "Избрани семестри:" : "Избран семестар:"}
-								</p>
-								<p className="text-xl md:text-2xl">{getSeasonText()}</p>
-							</div>
-						</button>
-						<button
-							onClick={fetchRecommendations}
-							disabled={!recommendationsLoaded}
-							className={`${
-								!recommendationsLoaded
-									? "bg-gray-400 cursor-not-allowed"
-									: "bg-green-500 hover:bg-green-600 hover:scale-105 shadow-md hover:shadow-lg"
-							} text-white px-6 py-3 lg:px-8 lg:py-4 rounded-lg text-lg lg:text-xl font-bold transition-all duration-200 flex items-center space-x-2`}
-						>
-							{!recommendationsLoaded ? (
-								<>
-									<div className="animate-spin rounded-full h-5 w-5 border-b-2 border-white"></div>
-									<span>Се вчитува...</span>
-								</>
-							) : (
-								<span>Вчитај препораки!</span>
-							)}
-						</button>
-						<div className="flex flex-col items-center space-y-2 pt-4">
-							<label className="flex items-center space-x-2 cursor-pointer">
-								<input
-									type="checkbox"
-									checked={includeNotActivated}
-									onChange={() => setIncludeNotActivated(!includeNotActivated)}
-									className="form-checkbox h-5 w-5 text-blue-600"
-								/>
-								<span className="text-gray-700 text-center">
-									Сакам да добивам и неактивирани предмети
-								</span>
-							</label>
-						</div>
-					</div>
-
-					<div className="flex-1 relative">
-						<div className="h-full p-4 lg:p-8 overflow-y-auto hide-scrollbar">
-							{recommendations.length > 0 ? (
-								<div className="space-y-6">
-									<div className="text-center mb-4 md:mb-8">
-										<h2 className="text-2xl lg:text-3xl font-bold text-gray-800 mb-2">
-											Вашите препораки за {getSeasonText().toLowerCase()}{" "}
-											{getSeasonText().toLowerCase() === "зимски + летен"
-												? "семестри"
-												: "семестар"}
-										</h2>
-										<p className="text-gray-500">
-											Помогни ни да ги подобриме алгоритамот со тоа што ќе ги
-											оцениш препораките
-										</p>
-									</div>
-									<div className="grid grid-cols-1 md:grid-cols-2 gap-4 md:gap-6">
-										{recommendations.map((subject, index) => (
-											<div
-												key={subject.id}
-												className={`border border-gray-200 rounded-lg overflow-hidden shadow-sm hover:shadow-md transition-shadow duration-200 ${
-													index % 2 === 0 ? "md:mt-0" : "md:mt-8"
-												}`}
-												style={{
-													animationName: "fadeInUp",
-													animationDuration: "0.6s",
-													animationTimingFunction: "ease-out",
-													animationFillMode: "forwards",
-													animationDelay: `${index * 100}ms`,
-												}}
-											>
-												<SubjectCard
-													subject={subject}
-													openSubjectDetails={openSubjectDetails}
-													openSubjectView={openSubjectView}
-													canReview={true}
-													isFirst={index === 0}
-													isRecommended={true}
-													isLoading={isLoading}
-													recommendationDetails={subject.recommendation_details}
-												/>
-											</div>
-										))}
-									</div>
-								</div>
-							) : !hasSearched ? (
-								<div className="flex flex-col items-center justify-center h-full text-center">
-									<div className="mb-6 text-gray-400">
-										<img
-											src="src/assets/search.svg"
-											alt="Search icon"
-											className="w-16 h-16 mx-auto"
-										/>
-									</div>
-									<h3 className="text-xl md:text-2xl font-bold text-gray-600 mb-4">
-										Започнете со пребарување!
-									</h3>
-									<p className="text-gray-500 text-base lg:text-lg max-w-md">
-										Изберете ја саканата сезона и кликнете на "Вчитај препораки"
-										за да ги откриете вашите идеални предмети!
-									</p>
-								</div>
-							) : (
-								<div className="flex flex-col items-center justify-center h-full text-center">
-									<h3 className="text-xl md:text-2xl font-bold text-gray-600 mb-4">
-										Моментално немаме препораки за тебе :(
-									</h3>
-									<p className="text-gray-500 text-base lg:text-lg max-w-md">
-										Направи промени во профилот и обиди се повторно.
-									</p>
-								</div>
-							)}
-						</div>
-						<div className="hidden lg:block absolute bottom-0 right-0 h-24 w-full pointer-events-none bg-gradient-to-t from-gray-50 to-transparent" />
-					</div>
-
-					{showModal && selectedSubject && (
-						<SubjectModal
-							selectedSubject={selectedSubject}
-							closeModal={closeModal}
-							subjectPrerequisites={getSubjectPrerequisites(
-								selectedSubject,
-								subjectIdToNameMap
-							)}
-							from="recommendations"
-						/>
-					)}
-				</div>
-			)}
-		</>
-	);
-};
-
-export default Recommendations;
Index: ontend/src/pages/Register.tsx
===================================================================
--- frontend/src/pages/Register.tsx	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,205 +1,0 @@
-import axios, { AxiosError } from "axios";
-import React, { useEffect, useState } from "react";
-import { Link, useNavigate } from "react-router-dom";
-import { toast } from "react-toastify";
-import googleLogo from "../assets/google-logo.png";
-import PasswordInput from "../components/PasswordInput";
-import { User } from "../components/types";
-import { useAuth } from "../hooks/useAuth";
-
-interface RegisterForm {
-	email: string;
-	password: string;
-	confirmPassword: string;
-	fullName: string;
-}
-
-const Register: React.FC = () => {
-	const [formData, setFormData] = useState<RegisterForm>({
-		email: "",
-		password: "",
-		confirmPassword: "",
-		fullName: "",
-	});
-	const [isLoading, setIsLoading] = useState(false);
-	const [errors, setErrors] = useState<
-		Partial<Record<keyof RegisterForm, string[]>> & {
-			non_field_errors?: string[];
-		}
-	>({});
-	const navigate = useNavigate();
-	const { login, customGoogleLogin, googleLoginLoading, useOAuth } = useAuth();
-	const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {
-		setFormData({
-			...formData,
-			[e.target.name]: e.target.value,
-		});
-	};
-	useEffect(() => {
-		const handleGoogleLoginSuccess = () => {
-			navigate("/");
-		};
-
-		window.addEventListener("googleLoginSuccess", handleGoogleLoginSuccess);
-
-		return () => {
-			window.removeEventListener(
-				"googleLoginSuccess",
-				handleGoogleLoginSuccess
-			);
-		};
-	}, [navigate]);
-
-	const handleRegister = async (e: React.FormEvent) => {
-		e.preventDefault();
-		setErrors({});
-		if (formData.password !== formData.confirmPassword) {
-			setErrors({ confirmPassword: ["Password do not match. "] });
-			return;
-		}
-		setIsLoading(true);
-
-		try {
-			const response = await axios.post<{
-				access: string;
-				refresh: string;
-				user: User;
-			}>("http://localhost:8000/auth/register/", {
-				email: formData.email,
-				password: formData.password,
-				confirm_password: formData.confirmPassword,
-				full_name: formData.fullName,
-			});
-			const { access, refresh, user } = response.data;
-			login(access, refresh, user);
-			toast.success("Успешна регистрација!");
-			if (user.user_type === "student") navigate("/account");
-			else navigate("/");
-		} catch (err: unknown) {
-			const axiosError = err as AxiosError<{
-				[key: string]: string[] | string;
-			}>;
-			if (axiosError.response && axiosError.response.data) {
-				const errorData = axiosError.response.data;
-				const normalizedErrors: { [key: string]: string[] } = {};
-				Object.entries(errorData).forEach(([field, message]) => {
-					normalizedErrors[field] = Array.isArray(message)
-						? message
-						: [message];
-				});
-				setErrors(normalizedErrors);
-			} else {
-				setErrors({ non_field_errors: ["An unexpected error occurred."] });
-			}
-		} finally {
-			setIsLoading(false);
-		}
-	};
-	return (
-		<div className="flex flex-col items-center justify-center min-h-[83vh] py-4 px-4 bg-white">
-			<form
-				onSubmit={handleRegister}
-				className="bg-white p-4 sm:p-6 rounded-lg shadow-md w-full max-w-sm h-auto"
-			>
-				<h2 className="text-xl font-semibold mb-3 sm:mb-4 text-center">
-					Регистрација
-				</h2>
-				{errors.non_field_errors && (
-					<div className="text-red-500 mb-2 sm:mb-3 text-sm">
-						{errors.non_field_errors[0]}
-					</div>
-				)}
-				<input
-					type="email"
-					name="email"
-					required
-					value={formData.email}
-					disabled={isLoading || googleLoginLoading}
-					onChange={handleChange}
-					placeholder="Email"
-					className="w-full mb-2 sm:mb-3 p-2 border rounded"
-				/>
-				{errors.email && (
-					<p className="text-red-500 text-sm mb-1 sm:mb-2">
-						Постои корисник со оваа адреса.
-					</p>
-				)}
-				<PasswordInput
-					name="password"
-					value={formData.password}
-					onChange={handleChange}
-					placeholder="Лозинка"
-					disabled={isLoading || googleLoginLoading}
-					error={
-						errors.password
-							? "Лозинката е едноставна. Треба да содржи барем 8 карактери и еден специјален знак."
-							: undefined
-					}
-				/>
-				<PasswordInput
-					name="confirmPassword"
-					value={formData.confirmPassword}
-					placeholder="Потврди ја лозинката"
-					onChange={handleChange}
-					disabled={isLoading || googleLoginLoading}
-				/>
-				{errors.confirmPassword && (
-					<p className="text-red-500 text-sm mb-1 sm:mb-2">
-						Лозинките не се совпаѓаат
-					</p>
-				)}
-				<input
-					type="text"
-					name="fullName"
-					required
-					value={formData.fullName}
-					onChange={handleChange}
-					disabled={isLoading || googleLoginLoading}
-					placeholder="Име презиме"
-					className="w-full mb-2 sm:mb-3 p-2 border rounded"
-				/>
-				<p className="text-sm text-center mb-3 sm:mb-4">
-					Имаш профил?{" "}
-					<Link to="/login" className="text-blue-600 hover:underline">
-						Најави се
-					</Link>
-				</p>
-				<button
-					type="submit"
-					disabled={isLoading}
-					className={`w-full bg-blue-600 text-white py-2 rounded hover:bg-blue-700 transition ${
-						isLoading ? "opacity-50 cursor-not-allowed" : ""
-					}`}
-				>
-					{isLoading ? "Се регистрира..." : "Регистрирај се"}
-				</button>
-				{useOAuth && (
-					<>
-						<div className="mt-3 sm:mt-4 text-center">
-							<div className="relative">
-								<div className="absolute inset-0 flex items-center">
-									<div className="w-full border-t border-gray-300" />
-								</div>
-								<div className="relative flex justify-center text-sm">
-									<span className="px-2 bg-white text-gray-500">или</span>
-								</div>
-							</div>
-						</div>
-						<button
-							type="button"
-							onClick={() => customGoogleLogin && customGoogleLogin()}
-							disabled={googleLoginLoading}
-							className={`w-full mt-3 sm:mt-4 bg-white border border-gray-300 text-gray-700 p-2 rounded hover:bg-gray-50 flex items-center justify-center gap-2 ${
-								googleLoginLoading ? "opacity-70 cursor-not-allowed" : ""
-							}`}
-						>
-							<img src={googleLogo} alt="Google logo" className="w-5 h-5" />
-							{googleLoginLoading ? "Се најавува..." : "Продолжи со Google"}
-						</button>
-					</>
-				)}
-			</form>
-		</div>
-	);
-};
-export default Register;
Index: ontend/src/pages/ReviewForm.tsx
===================================================================
--- frontend/src/pages/ReviewForm.tsx	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,614 +1,0 @@
-import { AlertCircle, ArrowLeft, Plus, Trash2 } from "lucide-react";
-import { useState } from "react";
-import { useLocation, useNavigate, useParams } from "react-router-dom";
-import { toast } from "react-toastify";
-import axiosInstance from "../api/axiosInstance";
-import { EvaluationComponent, EvaluationMethod } from "../components/types";
-
-const COMPONENT_CATEGORIES = [
-	{ value: "project", label: "Проект" },
-	{ value: "theory", label: "Теорија" },
-	{ value: "practical", label: "Практично" },
-	{ value: "homework", label: "Домашни задачи" },
-	{ value: "labs", label: "Лабораториски" },
-	{ value: "presentation", label: "Презентација" },
-	{ value: "attendance", label: "Присуство" },
-];
-
-const OTHER_REVIEW_CATEGORIES = [
-	{ value: "material", label: "Материјали" },
-	{ value: "staff", label: "Наставен кадар" },
-	{ value: "other", label: "Останато" },
-];
-
-const ReviewForm = () => {
-	const [reviewType, setReviewType] = useState<"evaluation" | "other" | "">("");
-	const [error, setError] = useState<string>("");
-	const [methods, setMethods] = useState<EvaluationMethod[]>([
-		{
-			note: "",
-			components: [{ category: "project", percentage: 100 }],
-		},
-	]);
-	const [signatureCondition, setSignatureCondition] = useState("");
-	const [signatureType, setSignatureType] = useState<
-		"none" | "points" | "attendance"
-	>("none");
-	const [signatureRequiredAmount, setSignatureRequiredAmount] = useState("");
-	const [signatureMaxAmount, setSignatureMaxAmount] = useState("");
-	const [otherCategory, setOtherCategory] = useState<
-		"material" | "staff" | "other"
-	>("material");
-	const [otherContent, setOtherContent] = useState("");
-	const navigate = useNavigate();
-	const location = useLocation();
-	const subjectName: string = location?.state?.subject_name;
-	const subjectId: number = location?.state?.subject_id;
-	// const from: string = location.state?.from || "/";
-	const { code } = useParams();
-	const from = `/subjects/${code}`;
-
-	const addMethod = () => {
-		if (methods.length < 3) {
-			setMethods([
-				...methods,
-				{
-					note: "",
-					components: [{ category: "project", percentage: 100 }],
-				},
-			]);
-		}
-	};
-
-	const removeMethod = (methodIndex: number) => {
-		if (methods.length > 1) {
-			setMethods(methods.filter((_, index) => index !== methodIndex));
-		}
-	};
-
-	const updateMethodNote = (methodIndex: number, note: string) => {
-		const updatedMethods = [...methods];
-		updatedMethods[methodIndex].note = note;
-		setMethods(updatedMethods);
-	};
-
-	const addComponent = (methodIndex: number) => {
-		const updatedMethods = [...methods];
-		if (updatedMethods[methodIndex].components.length >= 7) {
-			setError("Не можете да додавате повеќе од 7 компоненти по метод");
-			return;
-		}
-		updatedMethods[methodIndex].components.push({
-			category: "project",
-			percentage: 0,
-		});
-		setMethods(updatedMethods);
-	};
-
-	const removeComponent = (methodIndex: number, componentIndex: number) => {
-		const updatedMethods = [...methods];
-		if (updatedMethods[methodIndex].components.length > 1) {
-			updatedMethods[methodIndex].components.splice(componentIndex, 1);
-			setMethods(updatedMethods);
-		}
-	};
-
-	const updateComponent = (
-		methodIndex: number,
-		componentIndex: number,
-		field: keyof EvaluationComponent,
-		value: string | number
-	) => {
-		const updatedMethods = [...methods];
-		updatedMethods[methodIndex].components[componentIndex] = {
-			...updatedMethods[methodIndex].components[componentIndex],
-			[field]: value,
-		};
-		setMethods(updatedMethods);
-	};
-
-	const getMethodPercentageTotal = (method: EvaluationMethod): number => {
-		return method.components.reduce(
-			(sum, component) => sum + (component.percentage || 0),
-			0
-		);
-	};
-
-	const isMethodValid = (method: EvaluationMethod): boolean => {
-		const categories = method.components.map((c) => c.category);
-		const uniqueCategories = new Set(categories);
-		return (
-			getMethodPercentageTotal(method) === 100 &&
-			uniqueCategories.size === categories.length
-		);
-	};
-
-	const areAllMethodsValid = (): boolean => {
-		return methods.every(isMethodValid);
-	};
-
-	const handleSubmit = async (e: React.FormEvent) => {
-		e.preventDefault();
-		setError("");
-
-		if (Number(signatureMaxAmount) < Number(signatureRequiredAmount)) {
-			setError("Провери услов за потпис");
-			return;
-		}
-
-		if (reviewType === "evaluation" && !areAllMethodsValid()) {
-			setError("Сумата на сите проценти за секој метод мора да биде 100%");
-			return;
-		}
-
-		if (reviewType === "evaluation" && signatureType !== "none") {
-			if (!signatureRequiredAmount || !signatureMaxAmount) {
-				setError(
-					"Ве молиме внесете ги сите потребни вредности за условот за потпис"
-				);
-				return;
-			}
-
-			if (signatureType === "points" && Number(signatureMaxAmount) > 500) {
-				setError(
-					"Максималните поени за лабораториски не можат да бидат повеќе од 500"
-				);
-				return;
-			}
-
-			if (signatureType === "attendance" && Number(signatureMaxAmount) > 12) {
-				setError(
-					"Максималниот број на лабораториски вежби не може да биде повеќе од 12"
-				);
-				return;
-			}
-		}
-
-		// post other
-		if (reviewType === "other") {
-			if (!otherCategory) {
-				setError("Мора да изберете категорија");
-				return;
-			}
-			if (!otherContent.trim()) {
-				setError("Содржината не може да биде празна");
-				return;
-			}
-
-			if (otherContent.trim().length > 700) {
-				setError("Содржината не може да биде подолга од 700 карактери");
-				return;
-			}
-
-			try {
-				await axiosInstance.post("/subjects/subject-review/", {
-					subject_id: subjectId,
-					type: "other",
-					category: otherCategory,
-					content: otherContent.trim(),
-				});
-				toast.success("Вашата објава е зачувана!");
-				navigate(-1);
-			} catch (err) {
-				console.error(err);
-				setError("Грешка при зачувување");
-			}
-			return;
-		}
-
-		// post evaluation
-		try {
-			await axiosInstance.post("/subjects/subject-review/", {
-				subject_id: subjectId,
-				type: "evaluation",
-				methods: methods,
-				signature_condition: signatureCondition,
-			});
-			toast.success("Вашата објава е зачувана!");
-			navigate(-1);
-		} catch (err) {
-			console.error(err);
-		}
-	};
-
-	return (
-		<div className="max-w-4xl mx-auto my-4 md:my-6 p-4 md:p-6 rounded-lg shadow-md">
-			<button
-				onClick={() => navigate(from)}
-				className="flex items-center text-gray-600 hover:text-gray-900 mb-4"
-			>
-				<ArrowLeft className="w-5 h-5 mr-2" />
-				<span className="text-sm md:text-base">
-					Назад кон преглед на предметот
-				</span>
-				{/* {from.startsWith("/subjects")
-					? ` преглед на предметот`
-					: " домашната страна"} */}
-			</button>
-
-			<h2 className="text-xl md:text-2xl font-bold mb-4 md:mb-6">
-				Сподели информација
-			</h2>
-
-			{(subjectName || code) && (
-				<div className="mb-4 md:mb-6 p-3 md:p-4 bg-blue-50 rounded-lg">
-					<p className="text-blue-800 text-sm md:text-base">
-						Додавате информација за предмет:{" "}
-						<span className="font-semibold break-words">
-							{subjectName || code}
-						</span>
-					</p>
-				</div>
-			)}
-
-			<form onSubmit={handleSubmit} className="space-y-4 md:space-y-6">
-				<div>
-					<label className="block text-sm font-medium text-gray-700 mb-2 md:mb-3">
-						Тип
-					</label>
-					<div className="flex flex-col sm:flex-row space-y-2 sm:space-y-0 sm:space-x-4">
-						<label className="flex items-center">
-							<input
-								type="radio"
-								name="reviewType"
-								value="evaluation"
-								checked={reviewType === "evaluation"}
-								onChange={(e) => setReviewType(e.target.value as "evaluation")}
-								className="mr-2"
-							/>
-							Информации за полагање
-						</label>
-						<label className="flex items-center">
-							<input
-								type="radio"
-								name="reviewType"
-								value="other"
-								checked={reviewType === "other"}
-								onChange={(e) => setReviewType(e.target.value as "other")}
-								className="mr-2"
-							/>
-							Други информации
-						</label>
-					</div>
-				</div>
-
-				{/* evaluation */}
-				{reviewType === "evaluation" && (
-					<div className="space-y-4 md:space-y-6">
-						<div>
-							<label className="block text-sm font-medium text-gray-700 mb-2">
-								Услов за потпис
-							</label>
-							<select
-								value={signatureType}
-								onChange={(e) => {
-									const newType = e.target.value as
-										| "none"
-										| "points"
-										| "attendance";
-									setSignatureType(newType);
-									if (newType === "none") {
-										setSignatureCondition("Нема");
-									} else {
-										setSignatureCondition("");
-									}
-									setSignatureRequiredAmount("");
-									setSignatureMaxAmount("");
-								}}
-								className="w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-blue-500 focus:border-blue-500 custom-select mb-3"
-							>
-								<option value="none">Нема услов за потпис</option>
-								<option value="points">Поени на лабораториски вежби</option>
-								<option value="attendance">
-									Присуство на лабораториски вежби
-								</option>
-							</select>
-
-							{signatureType === "points" && (
-								<div className="flex flex-col sm:flex-row items-center space-y-2 sm:space-y-0 sm:space-x-2">
-									<input
-										type="number"
-										value={signatureRequiredAmount}
-										onChange={(e) => {
-											setSignatureRequiredAmount(e.target.value);
-											if (e.target.value && signatureMaxAmount) {
-												setSignatureCondition(
-													`${e.target.value}/${signatureMaxAmount} поени на лабораториски`
-												);
-											}
-										}}
-										placeholder="Потребни поени"
-										className="flex-1 w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500"
-										required
-									/>
-									<span className="text-gray-500 self-center">/</span>
-									<input
-										type="number"
-										value={signatureMaxAmount}
-										onChange={(e) => {
-											setSignatureMaxAmount(e.target.value);
-											if (signatureRequiredAmount && e.target.value) {
-												setSignatureCondition(
-													`${signatureRequiredAmount}/${e.target.value} поени на лабораториски`
-												);
-											}
-										}}
-										placeholder="Максимални поени"
-										max="500"
-										className="flex-1 w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500"
-										required
-									/>
-									{/* <span className="text-sm text-gray-500">поени</span> */}
-								</div>
-							)}
-
-							{signatureType === "attendance" && (
-								<div className="flex flex-col sm:flex-row items-center space-y-2 sm:space-y-0 sm:space-x-2">
-									<input
-										type="number"
-										value={signatureRequiredAmount}
-										onChange={(e) => {
-											setSignatureRequiredAmount(e.target.value);
-											if (e.target.value && signatureMaxAmount) {
-												setSignatureCondition(
-													`${e.target.value}/${signatureMaxAmount} присуство на лабораториски`
-												);
-											}
-										}}
-										placeholder="Потребно присуство"
-										className="flex-1 w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500"
-										required
-									/>
-									<span className="text-gray-500 self-center">/</span>
-									<input
-										type="number"
-										value={signatureMaxAmount}
-										onChange={(e) => {
-											setSignatureMaxAmount(e.target.value);
-											if (signatureRequiredAmount && e.target.value) {
-												setSignatureCondition(
-													`${signatureRequiredAmount}/${e.target.value} присуство на лабораториски`
-												);
-											}
-										}}
-										placeholder="Вкупно лабораториски вежби"
-										max="12"
-										className="flex-1 w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500"
-										required
-									/>
-								</div>
-							)}
-						</div>
-
-						<div>
-							<div className="flex flex-col sm:flex-row sm:items-center justify-between mb-4 space-y-2 sm:space-y-0">
-								<h3 className="text-lg font-medium text-gray-900">
-									Методи на оценување ({methods.length}/3)
-								</h3>
-								{methods.length < 3 && (
-									<button
-										type="button"
-										onClick={addMethod}
-										className="flex items-center justify-center px-3 py-2 text-sm bg-blue-600 text-white rounded-md hover:bg-blue-700 w-full sm:w-auto"
-									>
-										<Plus className="w-4 h-4 mr-1" />
-										Додај метод
-									</button>
-								)}
-							</div>
-
-							{methods.map((method, methodIndex) => (
-								<div
-									key={methodIndex}
-									className="border border-gray-200 rounded-lg p-3 md:p-4 mb-4 bg-gray-50"
-								>
-									<div className="flex flex-col sm:flex-row sm:items-center justify-between mb-4 space-y-2 sm:space-y-0">
-										<h4 className="font-medium text-gray-900">
-											Метод {methodIndex + 1}
-										</h4>
-										{methods.length > 1 && (
-											<button
-												type="button"
-												onClick={() => removeMethod(methodIndex)}
-												className="text-red-600 hover:text-red-800 self-start sm:self-center"
-											>
-												<Trash2 className="w-4 h-4" />
-											</button>
-										)}
-									</div>
-
-									<div className="mb-4">
-										<label className="block text-sm font-medium text-gray-700 mb-2">
-											Дополнителна информација (опционално)
-										</label>
-										<input
-											type="text"
-											value={method.note || ""}
-											onChange={(e) =>
-												updateMethodNote(methodIndex, e.target.value)
-											}
-											placeholder="Дополнителни информации за овој метод"
-											className="w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500"
-										/>
-									</div>
-
-									<div>
-										<div className="flex flex-col sm:flex-row sm:items-center justify-between mb-3 space-y-2 sm:space-y-0">
-											<label className="block text-sm font-medium text-gray-700">
-												Компоненти на оценување
-											</label>
-											<button
-												type="button"
-												onClick={() => addComponent(methodIndex)}
-												className="flex items-center justify-center px-2 py-1 text-xs bg-green-600 text-white rounded hover:bg-green-700 disabled:bg-gray-400 disabled:cursor-not-allowed w-full sm:w-auto"
-												disabled={method.components.length >= 7}
-											>
-												<Plus className="w-3 h-3 mr-1" />
-												Додај компонента
-											</button>
-										</div>
-
-										{method.components.map((component, componentIndex) => (
-											<div
-												key={componentIndex}
-												className="flex flex-col sm:flex-row items-start sm:items-center space-y-2 sm:space-y-0 sm:space-x-3 mb-3"
-											>
-												<select
-													value={component.category}
-													onChange={(e) =>
-														updateComponent(
-															methodIndex,
-															componentIndex,
-															"category",
-															e.target.value
-														)
-													}
-													className="flex-1 w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-blue-500 focus:border-blue-500 custom-select"
-												>
-													{COMPONENT_CATEGORIES.map((cat) => (
-														<option key={cat.value} value={cat.value}>
-															{cat.label}
-														</option>
-													))}
-												</select>
-
-												<div className="flex items-center space-x-2 w-full sm:w-auto">
-													<input
-														type="number"
-														min="0"
-														max="100"
-														value={component.percentage || ""}
-														onChange={(e) =>
-															updateComponent(
-																methodIndex,
-																componentIndex,
-																"percentage",
-																parseInt(e.target.value) || 0
-															)
-														}
-														className="w-20 px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500"
-													/>
-													<span className="text-sm text-gray-500">%</span>
-													{method.components.length > 1 && (
-														<button
-															type="button"
-															onClick={() =>
-																removeComponent(methodIndex, componentIndex)
-															}
-															className="text-red-600 hover:text-red-800 ml-2"
-														>
-															<Trash2 className="w-4 h-4" />
-														</button>
-													)}
-												</div>
-											</div>
-										))}
-
-										<div className="flex flex-col sm:flex-row sm:items-center justify-between mt-3 pt-3 border-t border-gray-200 space-y-2 sm:space-y-0">
-											<div className="flex flex-col sm:flex-row sm:items-center space-y-1 sm:space-y-0 sm:space-x-2">
-												<span className="text-sm text-gray-600">
-													Вкупно: {getMethodPercentageTotal(method)}%
-												</span>
-												{!isMethodValid(method) && (
-													<div className="flex items-start sm:items-center text-red-600">
-														<AlertCircle className="w-4 h-4 mr-1 mt-0.5 sm:mt-0 shrink-0" />
-														<span className="text-sm">
-															Мора да биде 100% и сите компоненти да се
-															различни.
-														</span>
-													</div>
-												)}
-											</div>
-										</div>
-									</div>
-								</div>
-							))}
-						</div>
-					</div>
-				)}
-
-				{reviewType === "other" && (
-					<div className="space-y-4 md:space-y-6">
-						<div>
-							<label className="block text-sm font-medium text-gray-700 mb-2">
-								Тема
-							</label>
-							<select
-								value={otherCategory}
-								onChange={(e) =>
-									setOtherCategory(
-										e.target.value as "material" | "staff" | "other"
-									)
-								}
-								className="w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-blue-500 focus:border-blue-500 custom-select"
-							>
-								{OTHER_REVIEW_CATEGORIES.map((category) => (
-									<option key={category.value} value={category.value}>
-										{category.label}
-									</option>
-								))}
-							</select>
-						</div>
-
-						<div>
-							<label className="block text-sm font-medium text-gray-700 mb-2">
-								Содржина
-							</label>
-							<textarea
-								value={otherContent}
-								onChange={(e) => setOtherContent(e.target.value)}
-								placeholder="Опишете го вашето искуство или мислење за предметот..."
-								rows={6}
-								className="w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 resize-vertical"
-								required
-							/>
-							<div className="flex flex-col sm:flex-row justify-between items-start sm:items-center mt-1 space-y-1 sm:space-y-0">
-								<p className="text-sm text-gray-500">
-									Споделете корисни информации за други студенти
-								</p>
-								<p
-									className={`text-sm ${
-										otherContent.length > 700 ? "text-red-600" : "text-gray-500"
-									}`}
-								>
-									{otherContent.length}/700 карактери
-								</p>
-							</div>
-						</div>
-					</div>
-				)}
-
-				{/* error */}
-				{error && (
-					<div className="p-3 md:p-4 bg-red-50 border border-red-200 rounded-lg">
-						<div className="flex items-start">
-							<AlertCircle className="w-5 h-5 text-red-600 mr-2 mt-0.5 shrink-0" />
-							<p className="text-red-800 text-sm md:text-base break-words">
-								{error}
-							</p>
-						</div>
-					</div>
-				)}
-
-				{reviewType && (
-					<div className="flex flex-col sm:flex-row sm:items-center justify-end space-y-3 sm:space-y-0 sm:space-x-4 pt-4 md:pt-6 border-t border-gray-200">
-						<button
-							type="submit"
-							disabled={
-								(reviewType === "evaluation" && !areAllMethodsValid()) ||
-								(reviewType === "evaluation" &&
-									signatureType !== "none" &&
-									(!signatureRequiredAmount || !signatureMaxAmount))
-							}
-							className="w-full sm:w-auto px-6 py-2 bg-blue-600 text-white rounded-md hover:bg-blue-700 disabled:bg-gray-400 disabled:cursor-not-allowed"
-						>
-							Објави
-						</button>
-					</div>
-				)}
-			</form>
-		</div>
-	);
-};
-
-export default ReviewForm;
Index: ontend/src/pages/Reviews.tsx
===================================================================
--- frontend/src/pages/Reviews.tsx	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,597 +1,0 @@
-import { ArrowLeft, CheckCircle, Eye, Trash2, XCircle } from "lucide-react";
-import { useEffect, useRef, useState } from "react";
-import { useLocation, useNavigate } from "react-router-dom";
-import axiosInstance from "../api/axiosInstance";
-import { fetchSubjects } from "../api/subjects";
-import Votes from "../components/Reviews/Votes";
-import { LatinToCyrillic } from "../components/StudentForm/utils";
-import { MAP_REVIEW_CATEGORY_TO_MK } from "../components/SubjectCatalog/utils";
-import { EvaluationReview, OtherReview } from "../components/types";
-import { EVALUATION_MAP_TO_MK } from "../constants/subjects";
-import { useSubjects } from "../context/SubjectsContext";
-import { useAuth } from "../hooks/useAuth";
-
-type ReviewsList = (OtherReview | EvaluationReview)[];
-
-interface ApiResponse {
-	count: number;
-	next: string | null;
-	previous: string | null;
-	results: ReviewsList;
-}
-
-const Reviews = () => {
-	const [reviews, setReviews] = useState<ReviewsList>([]);
-	const [loading, setLoading] = useState(false);
-	const [nextUrl, setNextUrl] = useState<string | null>(null);
-	const [filters, setFilters] = useState({
-		type: "all", // all, evaluation, other
-		subject: "all", // all | <subject_code>
-		approved: "all", // all, approved, unapproved
-		sort_by: "date", // date, votes
-		sort_order: "desc", // asc, desc
-		my_reviews: false, // show only user's own reviews
-	});
-	const [subjects, setSubjects] = useSubjects();
-	const { user } = useAuth();
-	const location = useLocation();
-	const [subjectSearch, setSubjectSearch] = useState("");
-	const [showSubjectDropdown, setShowSubjectDropdown] = useState(false);
-	const [selectedSubject, setSelectedSubject] = useState<{
-		name: string;
-	} | null>(null);
-	const [collapsedReviews, setCollapsedReviews] = useState<Set<number>>(
-		new Set()
-	);
-	const [hasSearched, setHasSearched] = useState(false);
-	const dropdownRef = useRef<HTMLDivElement>(null);
-	const navigate = useNavigate();
-	const code = location.state?.code || "";
-	useEffect(() => {
-		const handleClickOutside = (event: MouseEvent) => {
-			if (
-				dropdownRef.current &&
-				!dropdownRef.current.contains(event.target as Node)
-			) {
-				setShowSubjectDropdown(false);
-			}
-		};
-		document.addEventListener("mousedown", handleClickOutside);
-		return () => {
-			document.removeEventListener("mousedown", handleClickOutside);
-		};
-	}, []);
-
-	useEffect(() => {
-		if (code) {
-			setFilters((prev) => ({ ...prev, subject: code }));
-			const subject = subjects.find((s) => s.code === code);
-			if (subject) {
-				setSelectedSubject({ name: subject.name });
-			}
-		}
-	}, [code, subjects]);
-
-	useEffect(() => {
-		fetchSubjects(setSubjects);
-	}, []);
-
-	const fetchReviews = async (url?: string, reset = false) => {
-		setLoading(true);
-		setHasSearched(true);
-		try {
-			const params = new URLSearchParams();
-			if (filters.type !== "all") params.append("type", filters.type);
-			if (filters.subject !== "all")
-				params.append("subject_code", filters.subject);
-			if (filters.approved !== "all") {
-				params.append(
-					"is_confirmed",
-					filters.approved === "approved" ? "true" : "false"
-				);
-			}
-			params.append("sort_by", filters.sort_by);
-			params.append("sort_order", filters.sort_order);
-			if (filters.my_reviews) {
-				params.append("my_reviews", "true");
-			}
-
-			const requestUrl =
-				url || `/subjects/subjects-reviews-list/?${params.toString()}`;
-			const response = await axiosInstance.get<ApiResponse>(requestUrl);
-			if (reset) {
-				setReviews(response.data.results);
-			} else {
-				setReviews((prev) => [...prev, ...response.data.results]);
-			}
-			setNextUrl(response.data.next);
-		} catch (error) {
-			console.error("Error fetching reviews:", error);
-		} finally {
-			setLoading(false);
-		}
-	};
-
-	const toggleApproval = async (reviewId: number, currentStatus: boolean) => {
-		try {
-			await axiosInstance.patch(`/subjects/admin-subject-review/${reviewId}/`, {
-				is_confirmed: !currentStatus,
-			});
-			setReviews((prev) =>
-				prev.map((review) =>
-					review.review.id === reviewId
-						? {
-								...review,
-								review: { ...review.review, is_confirmed: !currentStatus },
-						  }
-						: review
-				)
-			);
-		} catch (error) {
-			console.error("Error updating review approval:", error);
-		}
-	};
-
-	const deleteReview = async (reviewId: number) => {
-		if (!confirm("Дали сте сигурни дека сакате да избришете?")) {
-			return;
-		}
-
-		try {
-			await axiosInstance.delete(`/subjects/admin-subject-review/${reviewId}/`);
-			setReviews((prev) =>
-				prev.filter((review) => review.review.id !== reviewId)
-			);
-		} catch (error) {
-			console.error("Error deleting review:", error);
-		}
-	};
-
-	const handleSearch = () => {
-		fetchReviews(undefined, true);
-	};
-
-	const loadMore = () => {
-		if (nextUrl && !loading) {
-			fetchReviews(nextUrl);
-		}
-	};
-
-	const isAdmin = user?.user_type === "admin";
-
-	return (
-		<div className="max-w-7xl mx-auto p-4 md:p-6 bg-white min-h-screen">
-			<button
-				onClick={() => navigate(code ? `/subjects/${code}` : "/")}
-				className="flex items-center text-gray-600 hover:text-gray-900 mb-4"
-			>
-				<ArrowLeft className="w-5 h-5 mr-2" />
-				<span className="text-sm md:text-base">
-					Назад кон
-					{code ? " преглед на предметот" : " домашната страна"}
-				</span>
-			</button>
-			<h1 className="text-2xl md:text-3xl font-bold mb-6 md:mb-8">
-				{isAdmin ? "Администраторски панел" : "Информации од студенти"}
-			</h1>
-
-			{/* filters */}
-			<div className="bg-gray-50 rounded-lg p-3 md:p-4 mb-4 md:mb-6">
-				<div className="flex items-center space-x-4">
-					<div className="flex flex-col items-start space-x-0 space-y-2 w-full">
-						<div className="flex flex-col space-y-4 md:space-y-0 md:flex-row md:space-x-8 w-full">
-							<div className="relative w-full md:w-auto" ref={dropdownRef}>
-								<label className="block text-sm font-medium text-gray-700 mb-1">
-									Предмет
-								</label>
-								<div className="relative">
-									{selectedSubject === null && (
-										<input
-											type="text"
-											value={subjectSearch}
-											onChange={(e) => {
-												setSubjectSearch(e.target.value);
-												setShowSubjectDropdown(true);
-											}}
-											onFocus={() => setShowSubjectDropdown(true)}
-											placeholder={`${
-												selectedSubject === null ? "Пребарај предмет..." : ""
-											}`}
-											disabled={selectedSubject !== null}
-											className={`w-full md:w-64 px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 ${
-												selectedSubject ? "bg-gray-100 cursor-not-allowed" : ""
-											}`}
-										/>
-									)}
-									{showSubjectDropdown && !selectedSubject && (
-										<div className="absolute top-full left-0 right-0 mt-1 bg-white border border-gray-300 rounded-md shadow-lg max-h-60 overflow-y-auto z-10">
-											{subjects
-												.filter(
-													(subject) =>
-														subject.name
-															.toLowerCase()
-															.includes(subjectSearch.toLowerCase()) ||
-														subject.name
-															.toLowerCase()
-															.includes(
-																LatinToCyrillic(
-																	subjectSearch.toLowerCase()
-																).toLowerCase()
-															)
-												)
-												.map((subject) => (
-													<div
-														key={subject.code}
-														className="px-3 py-2 hover:bg-gray-100 cursor-pointer"
-														onClick={() => {
-															setSelectedSubject({
-																name: subject.name,
-															});
-															setFilters((prev) => ({
-																...prev,
-																subject: subject.code,
-															}));
-															setSubjectSearch("");
-															setShowSubjectDropdown(false);
-														}}
-													>
-														{subject.name}
-													</div>
-												))}
-										</div>
-									)}
-								</div>
-
-								{selectedSubject && (
-									<div className="mt-2">
-										<span
-											onClick={() => {
-												setSelectedSubject(null);
-												setFilters((prev) => ({ ...prev, subject: "all" }));
-												setSubjectSearch("");
-											}}
-											className="inline-flex items-center px-3 py-2 bg-blue-100 text-blue-800 rounded-full text-sm cursor-pointer hover:bg-blue-200 transition-colors"
-										>
-											{selectedSubject.name}
-											<span className="ml-2 text-blue-600 hover:text-blue-800">
-												×
-											</span>
-										</span>
-									</div>
-								)}
-							</div>
-							<div className="w-full md:w-auto">
-								<label className="block text-sm font-medium text-gray-700 mb-1">
-									Тип
-								</label>
-								<select
-									value={filters.type}
-									onChange={(e) =>
-										setFilters((prev) => ({ ...prev, type: e.target.value }))
-									}
-									className="w-full md:w-auto px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 custom-select"
-								>
-									<option value="all">Сите типови</option>
-									<option value="evaluation">Информации за полагање</option>
-									<option value="other">Други информации</option>
-								</select>
-							</div>
-							<div className="w-full md:w-auto">
-								<label className="block text-sm font-medium text-gray-700 mb-1">
-									Статус на одобрување
-								</label>
-								<select
-									value={filters.approved}
-									onChange={(e) =>
-										setFilters((prev) => ({
-											...prev,
-											approved: e.target.value,
-										}))
-									}
-									className="w-full md:w-auto px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 custom-select"
-								>
-									<option value="all">Сите</option>
-									<option value="approved">Одобрени</option>
-									<option value="unapproved">Неодобрени</option>
-								</select>
-							</div>
-							<div className="w-full md:w-auto">
-								<label className="block text-sm font-medium text-gray-700 mb-1">
-									Сортирај по
-								</label>
-								<div className="flex space-x-2">
-									<select
-										value={filters.sort_by}
-										onChange={(e) =>
-											setFilters((prev) => ({
-												...prev,
-												sort_by: e.target.value,
-											}))
-										}
-										className="flex-1 md:flex-none px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 custom-select"
-									>
-										<option value="date">Датум</option>
-										<option value="votes">Гласови</option>
-									</select>
-									<button
-										onClick={() =>
-											setFilters((prev) => ({
-												...prev,
-												sort_order: prev.sort_order === "desc" ? "asc" : "desc",
-											}))
-										}
-										className="px-3 py-2 border border-gray-300 rounded-md hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-blue-500 transition-colors"
-										title={`Сортирај ${
-											filters.sort_order === "desc" ? "растечки" : "опаѓачки"
-										}`}
-									>
-										{filters.sort_order === "desc" ? "↓" : "↑"}
-									</button>
-								</div>
-							</div>
-						</div>
-						<div className="flex flex-col sm:flex-row pt-4 space-y-2 sm:space-y-0 sm:space-x-2 w-full">
-							<button
-								onClick={handleSearch}
-								disabled={loading}
-								className={`w-full sm:w-auto px-4 py-2 bg-blue-600 text-white rounded-md hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-blue-500 transition-colors ${
-									loading ? "bg-gray-400 cursor-not-allowed" : ""
-								}`}
-							>
-								{loading ? "Се вчитува..." : "Пребарај"}
-							</button>
-							{user?.user_type === "student" && (
-								<label className="flex items-center space-x-2 cursor-pointer select-none px-2 py-1 rounded-md transition-colors w-full sm:w-auto justify-center sm:justify-start">
-									<input
-										type="checkbox"
-										checked={filters.my_reviews}
-										onChange={(e) => {
-											const newMyReviews = e.target.checked;
-											setFilters((prev) => ({
-												...prev,
-												my_reviews: newMyReviews,
-											}));
-										}}
-										className="form-checkbox h-5 w-5 text-blue-600"
-									/>
-									<span className="text-gray-700 text-base">
-										Прикажи само мои објави
-									</span>
-								</label>
-							)}
-						</div>
-					</div>
-				</div>
-			</div>
-
-			<div className="space-y-4">
-				{hasSearched && reviews.length === 0 && !loading ? (
-					<p className="text-gray-500 text-center py-8">
-						Нема резултати за избраните филтри.
-					</p>
-				) : (
-					reviews.map((review) => {
-						const isUsersPost =
-							!isAdmin && review.review.student == user?.student_index;
-						return (
-							<div
-								key={review.review.id}
-								className="border border-gray-200 rounded-lg p-4 md:p-6"
-							>
-								<div className="flex flex-col sm:flex-row sm:items-start justify-between mb-4 space-y-3 sm:space-y-0">
-									<div className="flex-1">
-										<div className="flex flex-wrap items-center gap-2 mb-2">
-											{isUsersPost && (
-												<span className="px-2 py-1 rounded text-xs font-medium bg-gray-100">
-													Мој оглас
-												</span>
-											)}
-											<span className="font-semibold text-base md:text-lg break-words">
-												{review.review.subject.name} (
-												{review.review.subject.code})
-											</span>
-											<span className="px-2 py-1 rounded text-xs font-medium bg-blue-100 text-blue-800">
-												{"methods" in review ? "Полагање" : "Други"}
-											</span>
-											{"category" in review && review.category && (
-												<span className="bg-gray-100 text-gray-800 px-2 py-1 rounded text-xs">
-													{
-														MAP_REVIEW_CATEGORY_TO_MK[
-															review.category as keyof typeof MAP_REVIEW_CATEGORY_TO_MK
-														]
-													}
-												</span>
-											)}
-										</div>
-										<div className="flex flex-wrap items-center gap-x-4 gap-y-1 text-sm text-gray-600">
-											<span>{review.review.date_posted}</span>
-											<span className="break-all">
-												Студент: {review.review.student}{" "}
-											</span>
-											{isAdmin && (
-												<span>
-													Гласови:{" "}
-													{`${
-														review.review.votes_score ?? 0 > 0
-															? "+"
-															: review.review.votes_score ?? 0 < 0
-															? "-"
-															: ""
-													}${review.review.votes_score}`}
-												</span>
-											)}
-										</div>
-									</div>
-									<div className="flex items-center space-x-2 shrink-0 md:justify-end ">
-										{!isAdmin && <Votes review={review.review} />}
-										<button
-											onClick={() => {
-												const newCollapsed = new Set(collapsedReviews);
-												if (newCollapsed.has(review.review.id!)) {
-													newCollapsed.delete(review.review.id!);
-												} else {
-													newCollapsed.add(review.review.id!);
-												}
-												setCollapsedReviews(newCollapsed);
-											}}
-											className="p-2 text-gray-600 hover:text-gray-900 hover:bg-gray-100 rounded"
-											title="Прегледај детали"
-										>
-											<Eye className="w-4 h-4" />
-										</button>
-										{isUsersPost && (
-											<button
-												onClick={() => deleteReview(review.review.id!)}
-												className="p-2 text-red-600 hover:text-red-800 hover:bg-red-50 rounded"
-												title="Избриши"
-											>
-												<Trash2 className="w-4 h-4" />
-											</button>
-										)}
-										{isAdmin && (
-											<>
-												<button
-													onClick={() =>
-														toggleApproval(
-															review.review.id!,
-															review.review.is_confirmed!
-														)
-													}
-													className={`p-2 rounded ${
-														review.review.is_confirmed
-															? "text-red-600 hover:text-red-800 hover:bg-red-50"
-															: "text-green-600 hover:text-green-800 hover:bg-green-50"
-													}`}
-													title={
-														review.review.is_confirmed
-															? "Означи како неодобрено"
-															: "Означи како одобрено"
-													}
-												>
-													{review.review.is_confirmed ? (
-														<XCircle className="w-4 h-4" />
-													) : (
-														<CheckCircle className="w-4 h-4" />
-													)}
-												</button>
-												<button
-													onClick={() => deleteReview(review.review.id!)}
-													className="p-2 text-red-600 hover:text-red-800 hover:bg-red-50 rounded"
-													title="Избриши"
-												>
-													<Trash2 className="w-4 h-4" />
-												</button>
-											</>
-										)}
-									</div>
-								</div>
-
-								<div className="flex items-center space-x-2 mb-3">
-									<span
-										className={`text-sm font-medium ${
-											review.review.is_confirmed
-												? "text-green-600"
-												: "text-red-600"
-										}`}
-									>
-										{review.review.is_confirmed ? "✓ Одобрено" : "✗ Неодобрено"}
-									</span>
-								</div>
-
-								{!collapsedReviews.has(review.review.id!) && (
-									<div className="mt-4 pt-4 border-t border-gray-200">
-										{"methods" in review ? (
-											<div className="space-y-4">
-												<h4 className="font-medium">Начини на оценување:</h4>
-												{review.methods?.map((method, index) => (
-													<div key={index} className="bg-gray-50 rounded p-3">
-														<p className="font-medium mb-2">
-															Метод {index + 1}:
-														</p>
-														{method.note && (
-															<p className="text-sm text-gray-600 mb-2">
-																Забелешка: {method.note}
-															</p>
-														)}
-														<div className="overflow-x-auto">
-															<table className="min-w-full border border-gray-300 text-sm">
-																<thead className="bg-gray-100">
-																	<tr>
-																		<th className="px-2 md:px-3 py-2 text-left text-xs md:text-sm font-medium">
-																			Активност
-																		</th>
-																		<th className="px-2 md:px-3 py-2 text-left text-xs md:text-sm font-medium">
-																			Процент
-																		</th>
-																	</tr>
-																</thead>
-																<tbody>
-																	{method.components.map((component, idx) => (
-																		<tr key={idx}>
-																			<td className="px-2 md:px-3 py-2 text-xs md:text-sm border-b break-words">
-																				{
-																					EVALUATION_MAP_TO_MK[
-																						(component.category
-																							.charAt(0)
-																							.toUpperCase() +
-																							component.category.slice(
-																								1
-																							)) as keyof typeof EVALUATION_MAP_TO_MK
-																					]
-																				}
-																			</td>
-																			<td className="px-2 md:px-3 py-2 text-xs md:text-sm border-b">
-																				{component.percentage}%
-																			</td>
-																		</tr>
-																	))}
-																</tbody>
-															</table>
-														</div>
-													</div>
-												))}
-												<div>
-													<strong>Услов за потпис:</strong>{" "}
-													{review.signature_condition || "Нема"}
-												</div>
-											</div>
-										) : (
-											<div>
-												<h4 className="font-medium mb-2">Содржина:</h4>
-												<p className="text-gray-700 break-words">
-													{"content" in review
-														? review.content
-														: "Нема содржина"}
-												</p>
-											</div>
-										)}
-									</div>
-								)}
-							</div>
-						);
-					})
-				)}
-
-				{nextUrl && (
-					<div className="flex justify-center pt-6">
-						<button
-							onClick={loadMore}
-							disabled={loading}
-							className="px-6 py-2 bg-blue-600 text-white rounded-lg hover:bg-blue-700 disabled:bg-gray-400 disabled:cursor-not-allowed"
-						>
-							{loading ? "Се вчитува..." : "Вчитај уште"}
-						</button>
-					</div>
-				)}
-			</div>
-
-			{loading && reviews.length === 0 && (
-				<div className="flex justify-center py-8">
-					<div className="text-gray-500">Се вчитува...</div>
-				</div>
-			)}
-		</div>
-	);
-};
-
-export default Reviews;
Index: ontend/src/pages/SubjectPreferences.tsx
===================================================================
--- frontend/src/pages/SubjectPreferences.tsx	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,236 +1,0 @@
-import { useEffect, useState } from "react";
-import { fetchPreferences } from "../api/preferences";
-import { fetchSubjects } from "../api/subjects";
-import SkeletonCard from "../components/SubjectCatalog/SkeletonCard";
-import SubjectList from "../components/SubjectCatalog/SubjectList";
-import SubjectModal from "../components/SubjectCatalog/SubjectModal";
-import { getSubjectPrerequisites } from "../components/SubjectCatalog/utils";
-import { Subject } from "../components/types";
-import { usePreferences } from "../context/PreferencesContext";
-import { useSubjects } from "../context/SubjectsContext";
-import { useAuth } from "../hooks/useAuth";
-
-const SubjectPreferences = () => {
-	const [subjects, setSubjects] = useSubjects();
-	const { accessToken } = useAuth();
-	const {
-		favoriteIds,
-		setDislikedIds,
-		likedIds,
-		setLikedIds,
-		dislikedIds,
-		setFavoriteIds,
-	} = usePreferences();
-	const [visibleCourses, setVisibleCourses] = useState<number>(12);
-	const [selectedSubject, setSelectedSubject] = useState<Subject | null>(null);
-	const [isLoaded, setIsLoaded] = useState(false);
-	const [showModal, setShowModal] = useState(false);
-	const [selectedSubjects, setSelectedSubjects] = useState<Subject[]>([]);
-	const [idsToMap, setIdsToMap] = useState<Map<number, string>>();
-	const [activeFilter, setActiveFilter] = useState<
-		"favorite" | "liked" | "disliked"
-	>("favorite");
-
-	useEffect(() => {
-		if (!subjects || subjects.length === 0) {
-			fetchSubjects(setSubjects);
-		}
-	}, []);
-
-	const favoriteIDsToMap = () => {
-		if (!favoriteIds) return new Map<number, string>();
-		const map = new Map<number, string>();
-		subjects.forEach((subject) => {
-			if (favoriteIds.has(subject.id)) {
-				map.set(subject.id, subject.name);
-			}
-		});
-		return map;
-	};
-
-	const likedIDsToMap = () => {
-		if (!likedIds) return new Map<number, string>();
-		const map = new Map<number, string>();
-		subjects.forEach((subject) => {
-			if (likedIds?.has(subject.id)) {
-				map.set(subject.id, subject.name);
-			}
-		});
-		return map;
-	};
-
-	const dislikedIDsToMap = () => {
-		if (!dislikedIds) return new Map<number, string>();
-		const map = new Map<number, string>();
-		subjects.forEach((subject) => {
-			if (dislikedIds.has(subject.id)) {
-				map.set(subject.id, subject.name);
-			}
-		});
-		return map;
-	};
-
-	useEffect(() => {
-		if (!accessToken) return;
-		fetchPreferences({
-			setDislikedIds,
-			setFavoriteIds,
-			setLikedIds,
-		});
-	}, [accessToken]);
-
-	const favoriteSubjects = () => {
-		if (!favoriteIds) return [];
-		return subjects.filter((subject) => favoriteIds.has(subject.id));
-	};
-
-	const likedSubjects = () => {
-		if (!likedIds) return [];
-		return subjects.filter((subject) => likedIds.has(subject.id));
-	};
-
-	const dislikedSubjects = () => {
-		if (!dislikedIds) return [];
-		return subjects.filter((subject) => dislikedIds.has(subject.id));
-	};
-
-	useEffect(() => {
-		if (!subjects || subjects.length === 0 || favoriteIds === undefined) return;
-		let newSubjects: Subject[] = [];
-		let newMap: Map<number, string> = new Map();
-		switch (activeFilter) {
-			case "favorite":
-				newSubjects = favoriteSubjects();
-				newMap = favoriteIDsToMap();
-				break;
-			case "liked":
-				newSubjects = likedSubjects();
-				newMap = likedIDsToMap();
-				break;
-			case "disliked":
-				newSubjects = dislikedSubjects();
-				newMap = dislikedIDsToMap();
-				break;
-		}
-		setSelectedSubjects(newSubjects);
-		setIdsToMap(newMap);
-		setIsLoaded(true);
-	}, [favoriteIds, likedIds, dislikedIds, activeFilter, subjects]);
-
-	const loadMore = () => {
-		setVisibleCourses((prev) => prev + 12);
-	};
-
-	const openSubjectDetails = (subject: Subject) => {
-		setSelectedSubject(subjects.find((item) => item.id == subject.id) ?? null);
-		setShowModal(true);
-	};
-
-	const closeModal = () => {
-		setShowModal(false);
-	};
-
-	const handleFilterClick = (filterType: "favorite" | "liked" | "disliked") => {
-		setActiveFilter(filterType);
-		setVisibleCourses(12); // Reset visible courses when switching filters
-	};
-
-	return (
-		<div className="min-h-[83vh] bg-white p-4">
-			<h1 className="text-3xl font-bold">Мои предмети</h1>
-			<div className="py-6">
-				<div className="flex flex-col lg:flex-row gap-5">
-					<div className="lg:w-64 flex-shrink-0">
-						<div className="bg-gray-50 rounded-xl shadow-md border border-gray-200 p-4">
-							<h2 className="text-lg font-semibold text-gray-900 mb-6">
-								Филтри
-							</h2>
-							<div className="space-y-3">
-								<button
-									className={`w-full py-3 px-4 rounded-lg font-medium transition-all duration-200 ${
-										activeFilter === "favorite"
-											? "bg-blue-600 text-white shadow-md"
-											: "bg-gray-100 text-gray-700 hover:bg-gray-200"
-									}`}
-									onClick={() => handleFilterClick("favorite")}
-								>
-									Омилени предмети
-								</button>
-								<button
-									className={`w-full py-3 px-4 rounded-lg font-medium transition-all duration-200 ${
-										activeFilter === "liked"
-											? "bg-blue-600 text-white shadow-md"
-											: "bg-gray-100 text-gray-700 hover:bg-gray-200"
-									}`}
-									onClick={() => handleFilterClick("liked")}
-								>
-									Позитивни оценки
-								</button>
-								<button
-									className={`w-full py-3 px-4 rounded-lg font-medium transition-all duration-200 ${
-										activeFilter === "disliked"
-											? "bg-blue-600 text-white shadow-md"
-											: "bg-gray-100 text-gray-700 hover:bg-gray-200"
-									}`}
-									onClick={() => handleFilterClick("disliked")}
-								>
-									Негативни оценки
-								</button>
-							</div>
-						</div>
-					</div>
-
-					<div className="flex-1 mr-4">
-						<div className="bg-gray-50 rounded-xl shadow-md border border-gray-200 p-6">
-							{!isLoaded ? (
-								<div className="grid grid-cols-1 md:grid-cols-2 xl:grid-cols-3 gap-6">
-									{[...Array(9)].map((_, index) => (
-										<SkeletonCard key={index} />
-									))}
-								</div>
-							) : selectedSubjects.length === 0 ? (
-								<div className="text-center text-gray-500 py-44">
-									Нема предмети за прикажување со избраниот филтер.
-								</div>
-							) : (
-								<>
-									<SubjectList
-										filteredSubjects={selectedSubjects}
-										visibleCourses={visibleCourses}
-										openSubjectDetails={openSubjectDetails}
-										from="subject-preferences"
-										canReview={activeFilter !== "favorite"}
-									/>
-									{selectedSubjects.length > visibleCourses && (
-										<div className="mt-8 text-center">
-											<button
-												onClick={loadMore}
-												className="bg-blue-600 hover:bg-blue-700 text-white px-8 py-3 rounded-lg font-medium transition-all duration-200 hover:scale-105 hover:shadow-lg"
-											>
-												Погледни повеќе
-											</button>
-										</div>
-									)}
-								</>
-							)}
-						</div>
-					</div>
-				</div>
-			</div>
-
-			{showModal && selectedSubject && (
-				<SubjectModal
-					selectedSubject={selectedSubject}
-					closeModal={closeModal}
-					subjectPrerequisites={getSubjectPrerequisites(
-						selectedSubject,
-						idsToMap
-					)}
-					from="subject-preferences"
-				/>
-			)}
-		</div>
-	);
-};
-
-export default SubjectPreferences;
Index: ontend/src/pages/SubjectView.tsx
===================================================================
--- frontend/src/pages/SubjectView.tsx	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,395 +1,0 @@
-import { ArrowLeft, Tag, Users } from "lucide-react";
-import { useEffect, useMemo, useState } from "react";
-import { Link, useLocation, useNavigate, useParams } from "react-router-dom";
-import { fetchSubjects } from "../api/subjects";
-import { getSubjectPrerequisites } from "../components/SubjectCatalog/utils";
-import SkeletonSubjectView from "../components/SubjectView/SkeletonSubjectView";
-import { EVALUATION_MAP_TO_MK } from "../constants/subjects";
-import { useSubjects } from "../context/SubjectsContext";
-import { useAuth } from "../hooks/useAuth";
-
-function SubjectView() {
-	const [subjectPrerequisites, setSubjectPrerequisites] = useState<
-		"Нема предуслов" | number | string
-	>("Нема предуслов");
-	const [isExpanded, setIsExpanded] = useState(false);
-	const [filteredTechonologies, setFilteredTechnologies] = useState<string[]>(
-		[]
-	);
-	const { code } = useParams();
-	const navigate = useNavigate();
-	const location = useLocation();
-	const { user } = useAuth();
-	const [subjects, setSubjects] = useSubjects();
-
-	// useMemo makes this efficient, so it only re-calculates when subjects or code changes.
-	const selectedSubject = useMemo(() => {
-		return subjects.find((subject) => subject.code === code);
-	}, [subjects, code]);
-
-	useEffect(() => {
-		fetchSubjects(setSubjects);
-	}, []);
-
-	const WORD_LIMIT = 40;
-	const from = location.state?.from || "/";
-
-	const truncateText = (text: string) => {
-		if (!text) return "";
-		const words = text.split(/\s+/);
-		return words.length <= WORD_LIMIT
-			? text
-			: words.slice(0, WORD_LIMIT).join(" ") + "...";
-	};
-
-	const abstractText = isExpanded
-		? selectedSubject?.abstract
-		: truncateText(selectedSubject?.abstract ?? "");
-
-	const canToggle =
-		selectedSubject &&
-		selectedSubject.abstract.split(/\s+/).length > WORD_LIMIT;
-
-	useEffect(() => {
-		if (selectedSubject) {
-			const technologies = selectedSubject.subject_info.technologies.map(
-				(tech: string) => (tech === "any" ? "По избор" : tech)
-			);
-			const filtered = technologies.filter(
-				(tech: string) => tech !== "По избор"
-			);
-			if (technologies.includes("По избор")) {
-				filtered.push("По избор");
-			}
-			setFilteredTechnologies(filtered);
-			const subjectIdToNameMap = new Map(subjects.map((s) => [s.id, s.name]));
-			setSubjectPrerequisites(
-				getSubjectPrerequisites(selectedSubject, subjectIdToNameMap)
-			);
-		}
-	}, [selectedSubject, subjects]);
-
-	if (subjects.length === 0) {
-		return <SkeletonSubjectView />;
-	}
-
-	if (!selectedSubject) {
-		return (
-			<div className="flex flex-col items-center justify-center min-h-[83vh] bg-white text-center">
-				<p className="text-2xl font-semibold mb-6">
-					Предметот со код '{code}' не е пронајден.
-				</p>
-				<Link
-					to="/subjects"
-					className="px-6 py-2 bg-blue-600 text-white rounded hover:bg-blue-700 transition"
-				>
-					Кон предмети
-				</Link>
-			</div>
-		);
-	}
-
-	return (
-		<div className="min-h-screen bg-gray-50">
-			<div className="bg-white shadow-sm">
-				<div className="max-w-6xl mx-auto px-4 py-4">
-					<button
-						onClick={() => navigate(from)}
-						className="flex items-center text-gray-600 hover:text-gray-900 mb-4"
-					>
-						<ArrowLeft className="w-5 h-5 mr-2" />
-						Назад кон
-						{from == "/subjects"
-							? " сите предмети"
-							: from == "/recommendations"
-							? " препораките"
-							: from == "/subject-preferences"
-							? " омилените предмети"
-							: " домашната страна"}
-					</button>
-
-					<div className="flex flex-col sm:flex-row sm:items-center sm:justify-between">
-						<div>
-							<h1 className="text-3xl font-bold text-gray-900">
-								{selectedSubject.name}
-							</h1>
-							<p className="text-lg text-gray-600 mt-1">
-								{selectedSubject.code}
-							</p>
-						</div>
-
-						{/* Action buttons */}
-						<div className="mt-4 sm:mt-0 flex flex-col sm:flex-row gap-3">
-							{user?.user_type === "student" ? (
-								<>
-									<button
-										className="bg-blue-600 text-white px-4 py-2 rounded-lg hover:bg-blue-700 transition-colors text-sm"
-										onClick={() =>
-											navigate("/reviews", {
-												state: { code: `${selectedSubject.code}` },
-											})
-										}
-									>
-										Прегледај информации
-									</button>
-									<button
-										className="bg-green-600 text-white px-4 py-2 rounded-lg hover:bg-green-700 transition-colors text-sm"
-										onClick={() =>
-											navigate(`/review-form/${selectedSubject.code}`, {
-												state: {
-													subject_id: `${selectedSubject.id}`,
-													subject_name: `${selectedSubject.name}`,
-													from: `/subjects/${selectedSubject.code}`,
-												},
-											})
-										}
-									>
-										Сподели информација
-									</button>
-								</>
-							) : user?.user_type === "admin" ? (
-								<button
-									className="bg-purple-600 text-white px-4 py-2 rounded-lg hover:bg-purple-700 transition-colors text-sm"
-									onClick={() =>
-										navigate(`/reviews`, {
-											state: { code: `${selectedSubject.code}` },
-										})
-									}
-								>
-									Админ панел
-								</button>
-							) : null}
-						</div>
-					</div>
-				</div>
-			</div>
-
-			<div className="max-w-6xl mx-auto px-4 py-8">
-				<div className="grid grid-cols-1 lg:grid-cols-3 gap-8">
-					<div className="lg:col-span-2 space-y-8">
-						<div className="bg-white rounded-lg shadow-sm p-6">
-							<h2 className="text-xl font-semibold mb-4">Опис на предметот</h2>
-							<div className="text-gray-700 leading-relaxed">
-								<span>{abstractText}</span>
-								{canToggle && (
-									<button
-										className="text-blue-600 hover:text-blue-800 ml-2 font-medium"
-										onClick={() => setIsExpanded(!isExpanded)}
-									>
-										{isExpanded ? "Прочитај помалку" : "Прочитај повеќе"}
-									</button>
-								)}
-							</div>
-						</div>
-
-						<div className="bg-white rounded-lg shadow-sm p-6">
-							<h2 className="text-xl font-semibold mb-6">Наставен кадар</h2>
-
-							<div className="grid grid-cols-1 md:grid-cols-2 gap-6">
-								<div>
-									<h3 className="text-lg font-medium mb-3 text-gray-900">
-										Професори
-									</h3>
-									{selectedSubject.subject_info.professors.length === 0 ? (
-										<p className="text-gray-500">Нема одредени професори</p>
-									) : (
-										<ul className="space-y-2">
-											{selectedSubject.subject_info.professors.map(
-												(professor, index) => (
-													<li key={index} className="text-gray-700">
-														{professor}
-													</li>
-												)
-											)}
-										</ul>
-									)}
-								</div>
-
-								<div>
-									<h3 className="text-lg font-medium mb-3 text-gray-900">
-										Асистенти
-									</h3>
-									{selectedSubject.subject_info.assistants.length === 0 ? (
-										<p className="text-gray-500">Нема одредени асистенти</p>
-									) : (
-										<ul className="space-y-2">
-											{selectedSubject.subject_info.assistants.map(
-												(assistant, index) => (
-													<li key={index} className="text-gray-700">
-														{assistant}
-													</li>
-												)
-											)}
-										</ul>
-									)}
-								</div>
-							</div>
-						</div>
-
-						<div className="bg-white rounded-lg shadow-sm p-6">
-							<h2 className="text-xl font-semibold mb-4">
-								Информации за запишување
-							</h2>
-
-							<div className="grid grid-cols-1 md:grid-cols-2 gap-6">
-								<div>
-									<h3 className="text-lg font-medium mb-3 text-gray-900">
-										Задолжителен за:
-									</h3>
-									{selectedSubject.subject_info.mandatory_for.length === 0 ? (
-										<p className="text-gray-500">Не е задолжителен предмет</p>
-									) : (
-										<ul className="space-y-1">
-											{selectedSubject.subject_info.mandatory_for
-												.map((s) => s.replace(/\d+$/, ""))
-												.map((program, index) => (
-													<li key={index} className="text-gray-700">
-														{program}
-													</li>
-												))}
-										</ul>
-									)}
-								</div>
-
-								<div>
-									<h3 className="text-lg font-medium mb-3 text-gray-900">
-										Изборен за:
-									</h3>
-									{selectedSubject.subject_info.elective_for.length === 0 ? (
-										<p className="text-gray-500">Не е изборен предмет</p>
-									) : (
-										<ul className="space-y-1">
-											{selectedSubject.subject_info.elective_for
-												.map((s) => s.replace(/\d+$/, ""))
-												.map((program, index) => (
-													<li key={index} className="text-gray-700">
-														{program}
-													</li>
-												))}
-										</ul>
-									)}
-								</div>
-							</div>
-						</div>
-
-						<div className="bg-white rounded-lg shadow-sm p-6">
-							<h2 className="text-xl font-semibold mb-4 flex items-center">
-								<Tag className="w-5 h-5 mr-2" />
-								Домени
-							</h2>
-							<div className="flex flex-wrap gap-3">
-								{selectedSubject.subject_info.tags.map((tag, index) => (
-									<span
-										key={index}
-										className="bg-green-100 text-green-800 px-4 py-2 rounded-full text-sm font-medium"
-									>
-										{tag}
-									</span>
-								))}
-							</div>
-						</div>
-					</div>
-
-					<div className="space-y-6">
-						<div className="bg-white rounded-lg shadow-sm p-6">
-							<h2 className="text-xl font-semibold mb-6">
-								Информации за предметот
-							</h2>
-							<div className="space-y-4">
-								<div>
-									<p className="text-sm text-gray-500 mb-1">
-										Препорачан семестар
-									</p>
-									<p className="font-medium text-lg">
-										{selectedSubject.subject_info.semester}
-									</p>
-								</div>
-
-								<div>
-									<p className="text-sm text-gray-500 mb-1">Семестар</p>
-									<p className="font-medium">
-										{selectedSubject.subject_info.season === "S"
-											? "Летен"
-											: "Зимски"}
-									</p>
-								</div>
-
-								<div>
-									<p className="text-sm text-gray-500 mb-1">Ниво</p>
-									<p className="font-medium">
-										L{selectedSubject.subject_info.level}
-									</p>
-								</div>
-
-								<div>
-									<p className="text-sm text-gray-500 mb-1">Предуслови</p>
-									<p className="font-medium">
-										{typeof subjectPrerequisites === "string"
-											? subjectPrerequisites
-											: typeof subjectPrerequisites === "number"
-											? `${subjectPrerequisites} кредити`
-											: "Нема предуслов"}
-									</p>
-								</div>
-
-								<div>
-									<p className="text-sm text-gray-500 mb-1">Технологии</p>
-									<p className="font-medium">
-										{filteredTechonologies.length
-											? filteredTechonologies.join(", ")
-											: "Нема одредени технологии"}
-									</p>
-								</div>
-
-								<div>
-									<p className="text-sm text-gray-500 mb-1">
-										Начин на евалуација
-									</p>
-									<p className="font-medium">
-										{selectedSubject.subject_info.evaluation.length
-											? selectedSubject.subject_info.evaluation
-													.map(
-														(ev) =>
-															EVALUATION_MAP_TO_MK[
-																ev as keyof typeof EVALUATION_MAP_TO_MK
-															]
-													)
-													.join(", ")
-											: "Нема одредена евалуација"}
-									</p>
-								</div>
-							</div>
-						</div>
-
-						<div className="bg-white rounded-lg shadow-sm p-6">
-							<h3 className="text-lg font-semibold mb-4 flex items-center">
-								<Users className="w-5 h-5 mr-2" />
-								Статистики
-							</h3>
-
-							{selectedSubject.subject_info.participants[0] === 0 ? (
-								<div className="bg-red-50 border border-red-200 rounded-lg p-4">
-									<p className="text-red-800 font-medium">
-										Овој предмет не бил активиран минатиот семестар.
-									</p>
-								</div>
-							) : (
-								<div className="bg-blue-50 border border-blue-200 rounded-lg p-4">
-									<p className="text-blue-800">
-										Овој предмет минатиот семестар бил запишан од{" "}
-										<span className="font-bold">
-											{selectedSubject.subject_info.participants[0]}
-										</span>{" "}
-										студенти.
-									</p>
-								</div>
-							)}
-						</div>
-					</div>
-				</div>
-			</div>
-		</div>
-	);
-}
-
-export default SubjectView;
Index: ontend/src/pages/SubjectsView.tsx
===================================================================
--- frontend/src/pages/SubjectsView.tsx	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,7 +1,0 @@
-import SubjectCatalog from "../components/SubjectCatalog/SubjectCatalog";
-
-function SubjectsView() {
-	return <SubjectCatalog />;
-}
-
-export default SubjectsView;
Index: frontend/src/vite-env.d.ts
===================================================================
--- frontend/src/vite-env.d.ts	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ frontend/src/vite-env.d.ts	(revision 516baa4eda127c8c3a0f761c69f90c8c5ff421e3)
@@ -1,9 +1,1 @@
 /// <reference types="vite/client" />
-
-interface ImportMetaEnv {
-  readonly VITE_GOOGLE_CLIENT_ID: string
-}
-
-interface ImportMeta {
-  readonly env: ImportMetaEnv
-}
Index: ontend/tailwind.config.cjs
===================================================================
--- frontend/tailwind.config.cjs	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ 	(revision )
@@ -1,21 +1,0 @@
-/** @type {import('tailwindcss').Config} */
-module.exports = {
-	content: ["./src/**/*.{js,jsx,ts,tsx}"],
-	theme: {
-		extend: {
-			animation: {
-				"skeleton-pulse": "pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite",
-			},
-			keyframes: {
-				"skeleton-pulse": {
-					"0%, 100%": { backgroundColor: "#ffffff" }, // white
-					"50%": { backgroundColor: "#f9fafb" },
-				},
-			},
-			screens: {
-				xs: "480px",
-			},
-		},
-	},
-	plugins: [],
-};
Index: frontend/vite.config.ts
===================================================================
--- frontend/vite.config.ts	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
+++ frontend/vite.config.ts	(revision 516baa4eda127c8c3a0f761c69f90c8c5ff421e3)
@@ -5,6 +5,3 @@
 export default defineConfig({
   plugins: [react()],
-  css: {
-    postcss: './postcss.config.cjs',
-  },
 })
Index: req.txt
===================================================================
--- req.txt	(revision 516baa4eda127c8c3a0f761c69f90c8c5ff421e3)
+++ req.txt	(revision 516baa4eda127c8c3a0f761c69f90c8c5ff421e3)
@@ -0,0 +1,90 @@
+absl-py==2.1.0
+asgiref==3.8.1
+attrs==20.3.0
+beautifulsoup4==4.13.3
+blinker==1.9.0
+build==1.2.2.post1
+certifi==2024.12.14
+cffi==1.17.1
+charset-normalizer==3.4.1
+check50==3.3.11
+click==8.1.8
+contourpy==1.3.1
+cryptography==44.0.0
+cs50==9.4.0
+cycler==0.12.1
+distlib==0.3.9
+Django==5.1.7
+django-cors-headers==4.7.0
+django-debug-toolbar==5.0.1
+django-filter==25.1
+django-polls @ file:///Users/Filip/Desktop/django_polls/dist/django_polls-0.1.tar.gz#sha256=14185f898af174f21526eb7ea1769c4f08566beabc3cd7ba8d548dcd3d9d9fae
+django-vite==3.1.0
+djangorestframework==3.15.2
+docopt==0.6.2
+filelock==3.17.0
+Flask==3.1.0
+fonttools==4.57.0
+fsspec==2025.3.2
+h5py==3.12.1
+idna==3.10
+itsdangerous==2.2.0
+jellyfish==0.11.2
+Jinja2==3.1.5
+joblib==1.4.2
+Js2Py==0.74
+kiwisolver==1.4.8
+lib50==3.0.12
+Markdown==3.7
+markdown-it-py==3.0.0
+MarkupSafe==3.0.2
+matplotlib==3.10.1
+mdurl==0.1.2
+ml_dtypes==0.5.1
+mpmath==1.3.0
+namex==0.0.8
+networkx==3.4.2
+nltk==3.9.1
+numpy==2.2.2
+opencv-python==4.11.0.86
+optree==0.14.0
+packaging==24.2
+pandas==2.2.3
+pexpect==4.9.0
+pillow==11.1.0
+pipreqs==0.4.13
+platformdirs==4.3.6
+psycopg==3.2.6
+psycopg-binary==3.2.6
+psycopg2==2.9.10
+psycopg2-binary==2.9.10
+ptyprocess==0.7.0
+pycparser==2.22
+pygame==2.6.1
+Pygments==2.19.1
+pyjsparser==2.7.1
+pyparsing==3.2.3
+pyproject_hooks==1.2.0
+python-constraint==1.4.0
+python-dateutil==2.9.0.post0
+pytz==2024.2
+PyYAML==6.0.2
+regex==2024.11.6
+requests==2.32.3
+scikit-learn==1.6.1
+setuptools==75.8.0
+soupsieve==2.6
+SQLAlchemy==2.0.37
+sqlparse==0.5.3
+sympy==1.13.1
+threadpoolctl==3.5.0
+torch==2.6.0
+tqdm==4.67.1
+typing_extensions==4.12.2
+tzdata==2025.2
+tzlocal==5.3.1
+urllib3==2.3.0
+virtualenv==20.29.1
+Werkzeug==3.1.3
+wheel==0.45.1
+yarg==0.1.10
