From 8687cb25b2cb02d1dd3f9d004ae2bc6a919e843e Mon Sep 17 00:00:00 2001 From: AyanChoudhary Date: Thu, 8 Aug 2019 22:02:46 +0530 Subject: [PATCH 01/69] added url field to departmentApi --- rest_api/migrations/0002_department_url.py | 18 ++++++++++++++++++ rest_api/models.py | 1 + rest_api/serializers.py | 2 +- 3 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 rest_api/migrations/0002_department_url.py diff --git a/rest_api/migrations/0002_department_url.py b/rest_api/migrations/0002_department_url.py new file mode 100644 index 0000000..74d5ff9 --- /dev/null +++ b/rest_api/migrations/0002_department_url.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2 on 2019-08-08 16:30 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('rest_api', '0001_initial'), + ] + + operations = [ + migrations.AddField( + model_name='department', + name='url', + field=models.CharField(default='', max_length=100), + ), + ] diff --git a/rest_api/models.py b/rest_api/models.py index 4b965a4..ff161bd 100644 --- a/rest_api/models.py +++ b/rest_api/models.py @@ -3,6 +3,7 @@ class Department(models.Model): title = models.CharField(max_length=100) abbreviation = models.CharField(max_length=3) + url = models.CharField(max_length=100, default='') def __str__(self): return self.abbreviation diff --git a/rest_api/serializers.py b/rest_api/serializers.py index 9113c36..db5490a 100644 --- a/rest_api/serializers.py +++ b/rest_api/serializers.py @@ -4,4 +4,4 @@ class DepartmentSerializer(serializers.HyperlinkedModelSerializer): class Meta: model = Department - fields = ('title', 'abbreviation') \ No newline at end of file + fields = ('title', 'abbreviation', 'url') \ No newline at end of file From fa492dd24caa46fe8626e06ee17c9c0a61b4e66f Mon Sep 17 00:00:00 2001 From: AyanChoudhary Date: Sat, 31 Aug 2019 01:50:09 +0530 Subject: [PATCH 02/69] added url field to department and made courseApi --- rest_api/admin.py | 4 +++- rest_api/migrations/0003_course.py | 21 +++++++++++++++++++++ rest_api/models.py | 10 +++++++++- rest_api/serializers.py | 8 +++++++- rest_api/urls.py | 3 ++- rest_api/views.py | 14 +++++++++++++- studyportal/settings.py | 6 +++--- 7 files changed, 58 insertions(+), 8 deletions(-) create mode 100644 rest_api/migrations/0003_course.py diff --git a/rest_api/admin.py b/rest_api/admin.py index 1777d09..57ff562 100644 --- a/rest_api/admin.py +++ b/rest_api/admin.py @@ -1,5 +1,7 @@ from django.contrib import admin from .models import Department +from .models import Course -admin.site.register(Department) \ No newline at end of file +admin.site.register(Department) +admin.site.register(Course) \ No newline at end of file diff --git a/rest_api/migrations/0003_course.py b/rest_api/migrations/0003_course.py new file mode 100644 index 0000000..0bc37dd --- /dev/null +++ b/rest_api/migrations/0003_course.py @@ -0,0 +1,21 @@ +# Generated by Django 2.2.4 on 2019-08-30 20:05 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('rest_api', '0002_department_url'), + ] + + operations = [ + migrations.CreateModel( + name='Course', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('title', models.CharField(max_length=200)), + ('department', models.CharField(max_length=100)), + ], + ), + ] diff --git a/rest_api/models.py b/rest_api/models.py index ff161bd..26ea76d 100644 --- a/rest_api/models.py +++ b/rest_api/models.py @@ -1,4 +1,5 @@ from django.db import models +from django.contrib.postgres.fields import ArrayField class Department(models.Model): title = models.CharField(max_length=100) @@ -6,4 +7,11 @@ class Department(models.Model): url = models.CharField(max_length=100, default='') def __str__(self): - return self.abbreviation + return self.title + +class Course(models.Model): + title = models.CharField(max_length=200) + department = models.CharField(max_length=100) + + def __str__(self): + return self.title \ No newline at end of file diff --git a/rest_api/serializers.py b/rest_api/serializers.py index db5490a..f39553f 100644 --- a/rest_api/serializers.py +++ b/rest_api/serializers.py @@ -1,7 +1,13 @@ from rest_api.models import Department +from rest_api.models import Course from rest_framework import serializers class DepartmentSerializer(serializers.HyperlinkedModelSerializer): class Meta: model = Department - fields = ('title', 'abbreviation', 'url') \ No newline at end of file + fields = ('title', 'abbreviation', 'url') + +class CourseSerializer(serializers.HyperlinkedModelSerializer): + class Meta: + model = Course + fields = ('title','department') \ No newline at end of file diff --git a/rest_api/urls.py b/rest_api/urls.py index a7c139f..3f79b77 100644 --- a/rest_api/urls.py +++ b/rest_api/urls.py @@ -4,7 +4,8 @@ from rest_api import views router = routers.DefaultRouter() -router.register(r'departments', views.DepartmentViewSet) +router.register(r'departments', views.DepartmentViewSet, base_name='departments') +router.register(r'courses', views.CourseViewSet, base_name='courses') urlpatterns = [ path('test', views.sample, name='sample'), diff --git a/rest_api/views.py b/rest_api/views.py index d69a9a3..8a0b2c0 100644 --- a/rest_api/views.py +++ b/rest_api/views.py @@ -1,11 +1,23 @@ from django.http import HttpResponse from rest_api.models import Department +from rest_api.models import Course from rest_framework import viewsets from rest_api.serializers import DepartmentSerializer +from rest_api.serializers import CourseSerializer def sample(request): return HttpResponse("Test endpoint") class DepartmentViewSet(viewsets.ModelViewSet): queryset = Department.objects.all() - serializer_class = DepartmentSerializer \ No newline at end of file + serializer_class = DepartmentSerializer + +class CourseViewSet(viewsets.ModelViewSet): + serializer_class = CourseSerializer + + def get_queryset(self): + queryset = Course.objects.all() + department = self.request.query_params.get('department') + queryset = Course.objects.filter(department = department) + + return queryset \ No newline at end of file diff --git a/studyportal/settings.py b/studyportal/settings.py index 5bcae41..e116193 100644 --- a/studyportal/settings.py +++ b/studyportal/settings.py @@ -70,9 +70,9 @@ ROOT_URLCONF = 'studyportal.urls' -CORS_ORIGIN_WHITELIST = ( - 'studyportal.sdslabs.local', -) +# CORS_ORIGIN_WHITELIST = ( +# 'studyportal.sdslabs.local', +# ) TEMPLATES = [ { From 50daa4412672f57f3b98d493c17c613153a73f3b Mon Sep 17 00:00:00 2001 From: AyanChoudhary Date: Sat, 31 Aug 2019 09:44:54 +0530 Subject: [PATCH 03/69] completed models, serializers, views and made api endpoints for get requests --- rest_api/admin.py | 6 +-- .../migrations/0004_auto_20190830_2153.py | 34 +++++++++++++++ rest_api/migrations/0005_file.py | 27 ++++++++++++ rest_api/models.py | 18 +++++++- rest_api/serializers.py | 25 ++++++++--- rest_api/urls.py | 1 + rest_api/views.py | 42 ++++++++++++++++--- 7 files changed, 138 insertions(+), 15 deletions(-) create mode 100644 rest_api/migrations/0004_auto_20190830_2153.py create mode 100644 rest_api/migrations/0005_file.py diff --git a/rest_api/admin.py b/rest_api/admin.py index 57ff562..81b5af6 100644 --- a/rest_api/admin.py +++ b/rest_api/admin.py @@ -1,7 +1,7 @@ from django.contrib import admin -from .models import Department -from .models import Course +from .models import Department, Course, File admin.site.register(Department) -admin.site.register(Course) \ No newline at end of file +admin.site.register(Course) +admin.site.register(File) \ No newline at end of file diff --git a/rest_api/migrations/0004_auto_20190830_2153.py b/rest_api/migrations/0004_auto_20190830_2153.py new file mode 100644 index 0000000..fec8838 --- /dev/null +++ b/rest_api/migrations/0004_auto_20190830_2153.py @@ -0,0 +1,34 @@ +# Generated by Django 2.2.4 on 2019-08-30 21:53 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('rest_api', '0003_course'), + ] + + operations = [ + migrations.AddField( + model_name='course', + name='code', + field=models.CharField(default='', max_length=10), + ), + migrations.AlterField( + model_name='course', + name='department', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='rest_api.Department'), + ), + migrations.AlterField( + model_name='course', + name='id', + field=models.AutoField(editable=False, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='department', + name='id', + field=models.AutoField(editable=False, primary_key=True, serialize=False), + ), + ] diff --git a/rest_api/migrations/0005_file.py b/rest_api/migrations/0005_file.py new file mode 100644 index 0000000..cd4eb17 --- /dev/null +++ b/rest_api/migrations/0005_file.py @@ -0,0 +1,27 @@ +# Generated by Django 2.2.4 on 2019-08-30 23:03 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('rest_api', '0004_auto_20190830_2153'), + ] + + operations = [ + migrations.CreateModel( + name='File', + fields=[ + ('id', models.AutoField(editable=False, primary_key=True, serialize=False)), + ('path', models.FilePathField(path=None)), + ('title', models.CharField(max_length=100)), + ('downloads', models.IntegerField()), + ('size', models.CharField(max_length=10)), + ('date_modified', models.DateField(auto_now=True)), + ('filetype', models.CharField(max_length=4)), + ('course', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='rest_api.Course')), + ], + ), + ] diff --git a/rest_api/models.py b/rest_api/models.py index 26ea76d..ce6ad33 100644 --- a/rest_api/models.py +++ b/rest_api/models.py @@ -2,6 +2,7 @@ from django.contrib.postgres.fields import ArrayField class Department(models.Model): + id = models.AutoField(primary_key=True, editable=False) title = models.CharField(max_length=100) abbreviation = models.CharField(max_length=3) url = models.CharField(max_length=100, default='') @@ -10,8 +11,23 @@ def __str__(self): return self.title class Course(models.Model): + id = models.AutoField(primary_key=True, editable=False) title = models.CharField(max_length=200) - department = models.CharField(max_length=100) + department = models.ForeignKey(Department, on_delete=models.CASCADE) + code = models.CharField(max_length=10, default='') + + def __str__(self): + return self.title + +class File(models.Model): + id = models.AutoField(primary_key=True, editable=False) + path = models.FilePathField(path=None) + title = models.CharField(max_length=100) + downloads = models.IntegerField() + size = models.CharField(max_length = 10) + date_modified = models.DateField(auto_now=True) + filetype = models.CharField(max_length=4) + course = models.ForeignKey(Course, on_delete=models.CASCADE) def __str__(self): return self.title \ No newline at end of file diff --git a/rest_api/serializers.py b/rest_api/serializers.py index f39553f..292b92e 100644 --- a/rest_api/serializers.py +++ b/rest_api/serializers.py @@ -1,13 +1,26 @@ -from rest_api.models import Department -from rest_api.models import Course +from rest_api.models import Department, Course, File from rest_framework import serializers -class DepartmentSerializer(serializers.HyperlinkedModelSerializer): +class DepartmentSerializer(serializers.ModelSerializer): class Meta: model = Department - fields = ('title', 'abbreviation', 'url') + fields = ('id', 'title', 'abbreviation', 'url') + + def create(self, validated_data): + return Department.objects.create(**validated_data) + +class CourseSerializer(serializers.ModelSerializer): + department = DepartmentSerializer(read_only=True) -class CourseSerializer(serializers.HyperlinkedModelSerializer): class Meta: model = Course - fields = ('title','department') \ No newline at end of file + fields = ('id', 'title', 'department', 'code') + + def create(self, validated_data): + return Course.objects.create(**validated_data) + +class FileSerializer(serializers.ModelSerializer): + course = CourseSerializer() + class Meta: + model = File + fields = ('id', 'path', 'title', 'downloads', 'size', 'date_modified', 'filetype', 'course') \ No newline at end of file diff --git a/rest_api/urls.py b/rest_api/urls.py index 3f79b77..fc3d149 100644 --- a/rest_api/urls.py +++ b/rest_api/urls.py @@ -6,6 +6,7 @@ router = routers.DefaultRouter() router.register(r'departments', views.DepartmentViewSet, base_name='departments') router.register(r'courses', views.CourseViewSet, base_name='courses') +router.register(r'files', views.FileViewSet, base_name='files') urlpatterns = [ path('test', views.sample, name='sample'), diff --git a/rest_api/views.py b/rest_api/views.py index 8a0b2c0..d5d3df3 100644 --- a/rest_api/views.py +++ b/rest_api/views.py @@ -1,9 +1,8 @@ from django.http import HttpResponse -from rest_api.models import Department -from rest_api.models import Course +from rest_api.models import Department, Course, File from rest_framework import viewsets -from rest_api.serializers import DepartmentSerializer -from rest_api.serializers import CourseSerializer +from rest_framework.response import Response +from rest_api.serializers import DepartmentSerializer, CourseSerializer, FileSerializer def sample(request): return HttpResponse("Test endpoint") @@ -12,6 +11,13 @@ class DepartmentViewSet(viewsets.ModelViewSet): queryset = Department.objects.all() serializer_class = DepartmentSerializer + def post(self, request): + department = request.data.get('department') + serializer = DepartmentSerializer(data=department) + if serializer.is_valid(raise_exception=True): + department_saved = serializer.save() + return Response(department_saved) + class CourseViewSet(viewsets.ModelViewSet): serializer_class = CourseSerializer @@ -19,5 +25,31 @@ def get_queryset(self): queryset = Course.objects.all() department = self.request.query_params.get('department') queryset = Course.objects.filter(department = department) + return queryset + + def post(self, request): + course = request.data.get('course') + department = Department.objects.get(department = request.data.get('department')) + course.department = DepartmentSerializer(data=department) + serializer = CourseSerializer(data=course) + if serializer.is_valid(raise_exception=True): + course_saved = serializer.save(department=department) + return Response(course_saved) + +class FileViewSet(viewsets.ModelViewSet): + serializer_class = FileSerializer + + def get_queryset(self): + queryset = File.objects.all() + course = self.request.query_params.get('course') + queryset = File.objects.filter(course = course) + return queryset - return queryset \ No newline at end of file + def post(self, request): + files = request.data.get('file') + course = Course.objects.get(course = request.data.get('course')) + files.course = CourseSerializer(data=course) + serializer = FileSerializer(data=files) + if serializer.is_valid(raise_exception=True): + file_saved = serializer.save(file=files) + return Response(file_saved) \ No newline at end of file From f5e99ab15ef96603e75b1d621c5dceec003d9e7e Mon Sep 17 00:00:00 2001 From: AyanChoudhary Date: Sat, 31 Aug 2019 17:11:12 +0530 Subject: [PATCH 04/69] added delete api and cors whitelist --- rest_api/views.py | 32 ++++++++++++++++++++++++++------ studyportal/settings.py | 7 ++++--- 2 files changed, 30 insertions(+), 9 deletions(-) diff --git a/rest_api/views.py b/rest_api/views.py index d5d3df3..e35a5d1 100644 --- a/rest_api/views.py +++ b/rest_api/views.py @@ -24,26 +24,40 @@ class CourseViewSet(viewsets.ModelViewSet): def get_queryset(self): queryset = Course.objects.all() department = self.request.query_params.get('department') - queryset = Course.objects.filter(department = department) - return queryset + if department != None: + queryset = Course.objects.filter(department = department) + return queryset + else: + queryset = Course.objects.all() + return queryset def post(self, request): course = request.data.get('course') - department = Department.objects.get(department = request.data.get('department')) + department = Department.objects.get(department_id = request.data.get('department')) course.department = DepartmentSerializer(data=department) serializer = CourseSerializer(data=course) if serializer.is_valid(raise_exception=True): course_saved = serializer.save(department=department) return Response(course_saved) + def delete(self, request): + course = Course.objects.get(id = request.data.get('course')) + serializer = CourseSerializer(data=course) + serializer.delete() + return Response() + class FileViewSet(viewsets.ModelViewSet): serializer_class = FileSerializer def get_queryset(self): queryset = File.objects.all() course = self.request.query_params.get('course') - queryset = File.objects.filter(course = course) - return queryset + if course != None: + queryset = File.objects.filter(course = course) + return queryset + else: + queryset = File.objects.all() + return queryset def post(self, request): files = request.data.get('file') @@ -52,4 +66,10 @@ def post(self, request): serializer = FileSerializer(data=files) if serializer.is_valid(raise_exception=True): file_saved = serializer.save(file=files) - return Response(file_saved) \ No newline at end of file + return Response(file_saved) + + def delete(self, request): + file = File.objects.get(id = request.data.get('file')) + serializer = FileSerializer(data=file) + serializer.delete() + return Response() \ No newline at end of file diff --git a/studyportal/settings.py b/studyportal/settings.py index e116193..6fad2da 100644 --- a/studyportal/settings.py +++ b/studyportal/settings.py @@ -70,9 +70,10 @@ ROOT_URLCONF = 'studyportal.urls' -# CORS_ORIGIN_WHITELIST = ( -# 'studyportal.sdslabs.local', -# ) +CORS_ORIGIN_WHITELIST = ( + 'http://studyportal.sdslabs.local', + 'http://nexus.sdslabs.local' +) TEMPLATES = [ { From 3b1eaa6dca531bdebba4cf9123f82ecc70a54f21 Mon Sep 17 00:00:00 2001 From: AyanChoudhary Date: Mon, 2 Sep 2019 00:06:04 +0530 Subject: [PATCH 05/69] changes in delete request for courses --- rest_api/views.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/rest_api/views.py b/rest_api/views.py index e35a5d1..d97ce04 100644 --- a/rest_api/views.py +++ b/rest_api/views.py @@ -43,8 +43,12 @@ def post(self, request): def delete(self, request): course = Course.objects.get(id = request.data.get('course')) serializer = CourseSerializer(data=course) - serializer.delete() - return Response() + if serializer.is_valid(): + instance = serializer.save() + instance.delete() + return Response() + else: + return Response() class FileViewSet(viewsets.ModelViewSet): serializer_class = FileSerializer From 49520cb0d5e95d3c34e464a1cfa5a8e366d3c647 Mon Sep 17 00:00:00 2001 From: AyanChoudhary Date: Mon, 23 Sep 2019 13:42:24 +0530 Subject: [PATCH 06/69] made port changes --- manage.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/manage.py b/manage.py index d920906..b65475c 100755 --- a/manage.py +++ b/manage.py @@ -4,6 +4,13 @@ if __name__ == '__main__': os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'studyportal.settings') + + import django + django.setup() + + from django.core.management.commands.runserver import Command as runserver + runserver.default_port = "8005" + try: from django.core.management import execute_from_command_line except ImportError as exc: From 611dedadf97837aa7d195ba3aab407458c715916 Mon Sep 17 00:00:00 2001 From: AyanChoudhary Date: Wed, 25 Sep 2019 22:52:10 +0530 Subject: [PATCH 07/69] added query for department with abbr and course with code --- rest_api/views.py | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/rest_api/views.py b/rest_api/views.py index d97ce04..953a4d9 100644 --- a/rest_api/views.py +++ b/rest_api/views.py @@ -8,9 +8,17 @@ def sample(request): return HttpResponse("Test endpoint") class DepartmentViewSet(viewsets.ModelViewSet): - queryset = Department.objects.all() serializer_class = DepartmentSerializer + def get_queryset(self): + queryset = Department.objects.all() + department = self.request.query_params.get('department') + if department != None: + queryset = Department.objects.filter(abbreviation = department) + return queryset + else: + return queryset + def post(self, request): department = request.data.get('department') serializer = DepartmentSerializer(data=department) @@ -24,11 +32,14 @@ class CourseViewSet(viewsets.ModelViewSet): def get_queryset(self): queryset = Course.objects.all() department = self.request.query_params.get('department') - if department != None: + course = self.request.query_params.get('course') + if department != None and course == 'null': queryset = Course.objects.filter(department = department) return queryset + elif department != None and course != None: + queryset = Course.objects.filter(department = department).filter(code = course) + return queryset else: - queryset = Course.objects.all() return queryset def post(self, request): From 77e27e9c7278495980a38a43c79c3614ea21bf59 Mon Sep 17 00:00:00 2001 From: AyanChoudhary Date: Tue, 8 Oct 2019 04:04:46 +0530 Subject: [PATCH 08/69] made fileUpload changes to file model and made dynamic renderring functions from file data --- .gitignore | 3 +- .../migrations/0006_auto_20191003_1214.py | 36 ++++++++++++++++++ .../migrations/0007_auto_20191003_1215.py | 18 +++++++++ .../migrations/0008_auto_20191003_1224.py | 18 +++++++++ rest_api/migrations/0009_file_file.py | 18 +++++++++ .../migrations/0010_auto_20191007_1553.py | 18 +++++++++ .../migrations/0011_auto_20191007_1556.py | 18 +++++++++ .../migrations/0012_auto_20191007_1610.py | 19 ++++++++++ .../migrations/0013_auto_20191007_1710.py | 25 ++++++++++++ .../migrations/0014_auto_20191007_1749.py | 28 ++++++++++++++ .../migrations/0015_auto_20191007_2136.py | 25 ++++++++++++ rest_api/models.py | 38 +++++++++++++++++-- rest_api/serializers.py | 33 +++++++++++++++- rest_api/views.py | 16 ++++++-- 14 files changed, 304 insertions(+), 9 deletions(-) create mode 100644 rest_api/migrations/0006_auto_20191003_1214.py create mode 100644 rest_api/migrations/0007_auto_20191003_1215.py create mode 100644 rest_api/migrations/0008_auto_20191003_1224.py create mode 100644 rest_api/migrations/0009_file_file.py create mode 100644 rest_api/migrations/0010_auto_20191007_1553.py create mode 100644 rest_api/migrations/0011_auto_20191007_1556.py create mode 100644 rest_api/migrations/0012_auto_20191007_1610.py create mode 100644 rest_api/migrations/0013_auto_20191007_1710.py create mode 100644 rest_api/migrations/0014_auto_20191007_1749.py create mode 100644 rest_api/migrations/0015_auto_20191007_2136.py diff --git a/.gitignore b/.gitignore index ec19ebf..7da9e48 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ .idea .vscode studyportal/config/postgresql.yml -**/__pycache__ \ No newline at end of file +**/__pycache__ +/files/* \ No newline at end of file diff --git a/rest_api/migrations/0006_auto_20191003_1214.py b/rest_api/migrations/0006_auto_20191003_1214.py new file mode 100644 index 0000000..fe67602 --- /dev/null +++ b/rest_api/migrations/0006_auto_20191003_1214.py @@ -0,0 +1,36 @@ +# Generated by Django 2.2.4 on 2019-10-03 12:14 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('rest_api', '0005_file'), + ] + + operations = [ + migrations.AddField( + model_name='file', + name='fileext', + field=models.CharField(default=None, max_length=5), + preserve_default=False, + ), + migrations.AlterField( + model_name='file', + name='filetype', + field=models.CharField(max_length=10), + ), + migrations.CreateModel( + name='Request', + fields=[ + ('id', models.AutoField(editable=False, primary_key=True, serialize=False)), + ('user_id', models.IntegerField()), + ('filetype', models.CharField(max_length=4)), + ('status', models.IntegerField(choices=[(1, 1), (2, 2), (3, 3)])), + ('title', models.CharField(max_length=100)), + ('course', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='rest_api.Course')), + ], + ), + ] diff --git a/rest_api/migrations/0007_auto_20191003_1215.py b/rest_api/migrations/0007_auto_20191003_1215.py new file mode 100644 index 0000000..6c8f34f --- /dev/null +++ b/rest_api/migrations/0007_auto_20191003_1215.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.4 on 2019-10-03 12:15 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('rest_api', '0006_auto_20191003_1214'), + ] + + operations = [ + migrations.AlterField( + model_name='file', + name='fileext', + field=models.CharField(default='', max_length=5), + ), + ] diff --git a/rest_api/migrations/0008_auto_20191003_1224.py b/rest_api/migrations/0008_auto_20191003_1224.py new file mode 100644 index 0000000..f66420c --- /dev/null +++ b/rest_api/migrations/0008_auto_20191003_1224.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.4 on 2019-10-03 12:24 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('rest_api', '0007_auto_20191003_1215'), + ] + + operations = [ + migrations.AlterField( + model_name='file', + name='filetype', + field=models.CharField(choices=[('tutorials', 'Tutorial'), ('books', 'Books'), ('notes', 'Notes'), ('exampapers', 'Examination Papers')], max_length=20), + ), + ] diff --git a/rest_api/migrations/0009_file_file.py b/rest_api/migrations/0009_file_file.py new file mode 100644 index 0000000..2f70f68 --- /dev/null +++ b/rest_api/migrations/0009_file_file.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.4 on 2019-10-07 15:41 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('rest_api', '0008_auto_20191003_1224'), + ] + + operations = [ + migrations.AddField( + model_name='file', + name='file', + field=models.FileField(default='', upload_to=''), + ), + ] diff --git a/rest_api/migrations/0010_auto_20191007_1553.py b/rest_api/migrations/0010_auto_20191007_1553.py new file mode 100644 index 0000000..00471cf --- /dev/null +++ b/rest_api/migrations/0010_auto_20191007_1553.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.4 on 2019-10-07 15:53 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('rest_api', '0009_file_file'), + ] + + operations = [ + migrations.AlterField( + model_name='file', + name='file', + field=models.FileField(default='', upload_to='files'), + ), + ] diff --git a/rest_api/migrations/0011_auto_20191007_1556.py b/rest_api/migrations/0011_auto_20191007_1556.py new file mode 100644 index 0000000..1dae54e --- /dev/null +++ b/rest_api/migrations/0011_auto_20191007_1556.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.4 on 2019-10-07 15:56 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('rest_api', '0010_auto_20191007_1553'), + ] + + operations = [ + migrations.AlterField( + model_name='file', + name='file', + field=models.FileField(default='', upload_to='./files'), + ), + ] diff --git a/rest_api/migrations/0012_auto_20191007_1610.py b/rest_api/migrations/0012_auto_20191007_1610.py new file mode 100644 index 0000000..515a00f --- /dev/null +++ b/rest_api/migrations/0012_auto_20191007_1610.py @@ -0,0 +1,19 @@ +# Generated by Django 2.2.4 on 2019-10-07 16:10 + +from django.db import migrations, models +import rest_api.models + + +class Migration(migrations.Migration): + + dependencies = [ + ('rest_api', '0011_auto_20191007_1556'), + ] + + operations = [ + migrations.AlterField( + model_name='file', + name='file', + field=models.FileField(default='', upload_to=rest_api.models.fileLocation), + ), + ] diff --git a/rest_api/migrations/0013_auto_20191007_1710.py b/rest_api/migrations/0013_auto_20191007_1710.py new file mode 100644 index 0000000..daef551 --- /dev/null +++ b/rest_api/migrations/0013_auto_20191007_1710.py @@ -0,0 +1,25 @@ +# Generated by Django 2.2.4 on 2019-10-07 17:10 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('rest_api', '0012_auto_20191007_1610'), + ] + + operations = [ + migrations.RemoveField( + model_name='file', + name='fileext', + ), + migrations.RemoveField( + model_name='file', + name='size', + ), + migrations.RemoveField( + model_name='file', + name='title', + ), + ] diff --git a/rest_api/migrations/0014_auto_20191007_1749.py b/rest_api/migrations/0014_auto_20191007_1749.py new file mode 100644 index 0000000..0ef4796 --- /dev/null +++ b/rest_api/migrations/0014_auto_20191007_1749.py @@ -0,0 +1,28 @@ +# Generated by Django 2.2.4 on 2019-10-07 17:49 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('rest_api', '0013_auto_20191007_1710'), + ] + + operations = [ + migrations.AddField( + model_name='file', + name='fileext', + field=models.CharField(default='', max_length=5), + ), + migrations.AddField( + model_name='file', + name='size', + field=models.CharField(default='', max_length=10), + ), + migrations.AddField( + model_name='file', + name='title', + field=models.CharField(default='', max_length=100), + ), + ] diff --git a/rest_api/migrations/0015_auto_20191007_2136.py b/rest_api/migrations/0015_auto_20191007_2136.py new file mode 100644 index 0000000..6e69ac0 --- /dev/null +++ b/rest_api/migrations/0015_auto_20191007_2136.py @@ -0,0 +1,25 @@ +# Generated by Django 2.2.4 on 2019-10-07 21:36 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('rest_api', '0014_auto_20191007_1749'), + ] + + operations = [ + migrations.RemoveField( + model_name='file', + name='fileext', + ), + migrations.RemoveField( + model_name='file', + name='size', + ), + migrations.RemoveField( + model_name='file', + name='title', + ), + ] diff --git a/rest_api/models.py b/rest_api/models.py index ce6ad33..f9b73ab 100644 --- a/rest_api/models.py +++ b/rest_api/models.py @@ -19,15 +19,47 @@ class Course(models.Model): def __str__(self): return self.title +FILE_TYPE = [ + ('tutorials','Tutorial'), + ('books','Books'), + ('notes','Notes'), + ('exampapers','Examination Papers') +] + +def fileLocation(instance, filename): + return '/'.join(['./files', instance.filetype, filename]) + +def fileName(file): + filename = file.split('/')[-1] + return filename.split('.')[-2] + class File(models.Model): id = models.AutoField(primary_key=True, editable=False) + file = models.FileField(default='', upload_to=fileLocation) path = models.FilePathField(path=None) - title = models.CharField(max_length=100) downloads = models.IntegerField() - size = models.CharField(max_length = 10) date_modified = models.DateField(auto_now=True) + filetype = models.CharField(max_length=20, choices=FILE_TYPE) + course = models.ForeignKey(Course, on_delete=models.CASCADE) + + def __str__(self): + return fileName(self.file.name) + +REQUEST_STATUS = [ + (1,1), + (2,2), + (3,3) +] + +class Request(models.Model): + id = models.AutoField(primary_key=True, editable=False) + user_id = models.IntegerField() filetype = models.CharField(max_length=4) + status = models.IntegerField(choices=REQUEST_STATUS) + title = models.CharField(max_length=100) course = models.ForeignKey(Course, on_delete=models.CASCADE) def __str__(self): - return self.title \ No newline at end of file + return self.title + + \ No newline at end of file diff --git a/rest_api/serializers.py b/rest_api/serializers.py index 292b92e..37b445c 100644 --- a/rest_api/serializers.py +++ b/rest_api/serializers.py @@ -1,4 +1,4 @@ -from rest_api.models import Department, Course, File +from rest_api.models import Department, Course, File, Request from rest_framework import serializers class DepartmentSerializer(serializers.ModelSerializer): @@ -19,8 +19,37 @@ class Meta: def create(self, validated_data): return Course.objects.create(**validated_data) +def fileName(file): + filename = file.split('/')[-1] + return filename.split('.')[-2] + class FileSerializer(serializers.ModelSerializer): course = CourseSerializer() + size = serializers.SerializerMethodField() + title = serializers.SerializerMethodField() + fileext = serializers.SerializerMethodField() class Meta: model = File - fields = ('id', 'path', 'title', 'downloads', 'size', 'date_modified', 'filetype', 'course') \ No newline at end of file + fields = ('id', 'path', 'title', 'downloads', 'size', 'date_modified', 'fileext', 'filetype', 'course') + def get_size(self, obj): + file_size = '' + if obj.file and hasattr(obj.file, 'size'): + file_size = obj.file.size + if round(file_size/(1024*1024),2) == 0.00: + return str(round(file_size/(1024),2))+" KB" + else: + return str(round(file_size/(1024*1024),2))+" MB" + def get_title(self, obj): + file_title = '' + if obj.file and hasattr(obj.file, 'name'): + file_title = obj.file.name + return fileName(file_title) + def get_fileext(self, obj): + filename = obj.file.name + return filename.split('.')[-1] + +class RequestSerializer(serializers.ModelSerializer): + course = CourseSerializer() + class Meta: + model = Request + fields = ('id', 'user_id', 'filetype', 'status', 'title', 'course') \ No newline at end of file diff --git a/rest_api/views.py b/rest_api/views.py index 953a4d9..f53e7f2 100644 --- a/rest_api/views.py +++ b/rest_api/views.py @@ -67,11 +67,14 @@ class FileViewSet(viewsets.ModelViewSet): def get_queryset(self): queryset = File.objects.all() course = self.request.query_params.get('course') - if course != None: + filetype = self.request.query_params.get('filetype') + if course != None and filetype == 'null': queryset = File.objects.filter(course = course) return queryset + elif course != None and filetype != None: + queryset = File.objects.filter(course = course).filter(filetype = filetype) + return queryset else: - queryset = File.objects.all() return queryset def post(self, request): @@ -87,4 +90,11 @@ def delete(self, request): file = File.objects.get(id = request.data.get('file')) serializer = FileSerializer(data=file) serializer.delete() - return Response() \ No newline at end of file + return Response() + + def download(self, *args, **kwargs): + file_path = file_url + FilePointer = open(file_path,"r") + response = HttpResponse(FilePointer,content_type='application/msword') + response['Content-Disposition'] = 'attachment; filename=NameOfFile' + return response \ No newline at end of file From 3219bf1f2c9fbabd15c40eff25217e6de6244c85 Mon Sep 17 00:00:00 2001 From: AyanChoudhary Date: Wed, 9 Oct 2019 18:46:23 +0530 Subject: [PATCH 09/69] added file field to serializer --- rest_api/serializers.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rest_api/serializers.py b/rest_api/serializers.py index 37b445c..b32ac58 100644 --- a/rest_api/serializers.py +++ b/rest_api/serializers.py @@ -30,7 +30,7 @@ class FileSerializer(serializers.ModelSerializer): fileext = serializers.SerializerMethodField() class Meta: model = File - fields = ('id', 'path', 'title', 'downloads', 'size', 'date_modified', 'fileext', 'filetype', 'course') + fields = ('id', 'file', 'path', 'title', 'downloads', 'size', 'date_modified', 'fileext', 'filetype', 'course') def get_size(self, obj): file_size = '' if obj.file and hasattr(obj.file, 'size'): From beddc95c5aa958bb48a4784178ff5ad81e49fe8c Mon Sep 17 00:00:00 2001 From: AyanChoudhary Date: Tue, 15 Oct 2019 01:59:10 +0530 Subject: [PATCH 10/69] fixed delete request --- .../migrations/0016_auto_20191014_1632.py | 18 +++++++++++++ .../migrations/0017_auto_20191014_1711.py | 18 +++++++++++++ .../migrations/0018_auto_20191014_1712.py | 18 +++++++++++++ rest_api/models.py | 4 +-- rest_api/serializers.py | 10 ++++---- rest_api/views.py | 25 ++++++------------- 6 files changed, 68 insertions(+), 25 deletions(-) create mode 100644 rest_api/migrations/0016_auto_20191014_1632.py create mode 100644 rest_api/migrations/0017_auto_20191014_1711.py create mode 100644 rest_api/migrations/0018_auto_20191014_1712.py diff --git a/rest_api/migrations/0016_auto_20191014_1632.py b/rest_api/migrations/0016_auto_20191014_1632.py new file mode 100644 index 0000000..fb93686 --- /dev/null +++ b/rest_api/migrations/0016_auto_20191014_1632.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.6 on 2019-10-14 16:32 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('rest_api', '0015_auto_20191007_2136'), + ] + + operations = [ + migrations.RenameField( + model_name='department', + old_name='url', + new_name='imageurl', + ), + ] diff --git a/rest_api/migrations/0017_auto_20191014_1711.py b/rest_api/migrations/0017_auto_20191014_1711.py new file mode 100644 index 0000000..9ff7280 --- /dev/null +++ b/rest_api/migrations/0017_auto_20191014_1711.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.6 on 2019-10-14 17:11 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('rest_api', '0016_auto_20191014_1632'), + ] + + operations = [ + migrations.AlterField( + model_name='file', + name='downloads', + field=models.IntegerField(editable=False), + ), + ] diff --git a/rest_api/migrations/0018_auto_20191014_1712.py b/rest_api/migrations/0018_auto_20191014_1712.py new file mode 100644 index 0000000..bf2d781 --- /dev/null +++ b/rest_api/migrations/0018_auto_20191014_1712.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.6 on 2019-10-14 17:12 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('rest_api', '0017_auto_20191014_1711'), + ] + + operations = [ + migrations.AlterField( + model_name='file', + name='downloads', + field=models.IntegerField(default=0, editable=False), + ), + ] diff --git a/rest_api/models.py b/rest_api/models.py index f9b73ab..006335a 100644 --- a/rest_api/models.py +++ b/rest_api/models.py @@ -5,7 +5,7 @@ class Department(models.Model): id = models.AutoField(primary_key=True, editable=False) title = models.CharField(max_length=100) abbreviation = models.CharField(max_length=3) - url = models.CharField(max_length=100, default='') + imageurl = models.CharField(max_length=100, default='') def __str__(self): return self.title @@ -37,7 +37,7 @@ class File(models.Model): id = models.AutoField(primary_key=True, editable=False) file = models.FileField(default='', upload_to=fileLocation) path = models.FilePathField(path=None) - downloads = models.IntegerField() + downloads = models.IntegerField(editable=False, default=0) date_modified = models.DateField(auto_now=True) filetype = models.CharField(max_length=20, choices=FILE_TYPE) course = models.ForeignKey(Course, on_delete=models.CASCADE) diff --git a/rest_api/serializers.py b/rest_api/serializers.py index b32ac58..15b6a48 100644 --- a/rest_api/serializers.py +++ b/rest_api/serializers.py @@ -4,20 +4,20 @@ class DepartmentSerializer(serializers.ModelSerializer): class Meta: model = Department - fields = ('id', 'title', 'abbreviation', 'url') + fields = ('id', 'title', 'abbreviation', 'imageurl') def create(self, validated_data): return Department.objects.create(**validated_data) class CourseSerializer(serializers.ModelSerializer): - department = DepartmentSerializer(read_only=True) - + department = DepartmentSerializer() class Meta: model = Course fields = ('id', 'title', 'department', 'code') - def create(self, validated_data): - return Course.objects.create(**validated_data) + def create(self, validated_data): + department_data = validated_data.pop('department') + return Course.objects.create(department=department_data, **validated_data) def fileName(file): filename = file.split('/')[-1] diff --git a/rest_api/views.py b/rest_api/views.py index f53e7f2..1cc2563 100644 --- a/rest_api/views.py +++ b/rest_api/views.py @@ -43,23 +43,14 @@ def get_queryset(self): return queryset def post(self, request): - course = request.data.get('course') - department = Department.objects.get(department_id = request.data.get('department')) - course.department = DepartmentSerializer(data=department) - serializer = CourseSerializer(data=course) - if serializer.is_valid(raise_exception=True): - course_saved = serializer.save(department=department) + course = request.data + department = Department.objects.get(id = request.data.get('department')) + course_saved = CourseSerializer.create(title=course.get('title'),department=department,code=course.get('code')) return Response(course_saved) def delete(self, request): - course = Course.objects.get(id = request.data.get('course')) - serializer = CourseSerializer(data=course) - if serializer.is_valid(): - instance = serializer.save() - instance.delete() - return Response() - else: - return Response() + course = Course.objects.get(id = request.data.get('course')).delete() + return Response(course) class FileViewSet(viewsets.ModelViewSet): serializer_class = FileSerializer @@ -87,10 +78,8 @@ def post(self, request): return Response(file_saved) def delete(self, request): - file = File.objects.get(id = request.data.get('file')) - serializer = FileSerializer(data=file) - serializer.delete() - return Response() + file = File.objects.get(id = request.data.get('file')).delete() + return Response(file) def download(self, *args, **kwargs): file_path = file_url From 8b1dd1de359c7ba8d876438123fd4f52ad7da3b9 Mon Sep 17 00:00:00 2001 From: AyanChoudhary Date: Thu, 24 Oct 2019 18:37:00 +0530 Subject: [PATCH 11/69] changes in api --- .../migrations/0019_auto_20191022_1439.py | 19 +++++++++++++++++++ rest_api/models.py | 2 +- rest_api/serializers.py | 10 ++++++---- rest_api/urls.py | 2 +- rest_api/views.py | 17 ++++++++++++++--- 5 files changed, 41 insertions(+), 9 deletions(-) create mode 100644 rest_api/migrations/0019_auto_20191022_1439.py diff --git a/rest_api/migrations/0019_auto_20191022_1439.py b/rest_api/migrations/0019_auto_20191022_1439.py new file mode 100644 index 0000000..a6f218b --- /dev/null +++ b/rest_api/migrations/0019_auto_20191022_1439.py @@ -0,0 +1,19 @@ +# Generated by Django 2.2.6 on 2019-10-22 14:39 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('rest_api', '0018_auto_20191014_1712'), + ] + + operations = [ + migrations.AlterField( + model_name='course', + name='department', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='rest_api.Department'), + ), + ] diff --git a/rest_api/models.py b/rest_api/models.py index 006335a..6326c57 100644 --- a/rest_api/models.py +++ b/rest_api/models.py @@ -13,7 +13,7 @@ def __str__(self): class Course(models.Model): id = models.AutoField(primary_key=True, editable=False) title = models.CharField(max_length=200) - department = models.ForeignKey(Department, on_delete=models.CASCADE) + department = models.ForeignKey(Department, on_delete=models.CASCADE, blank=True, null=True) code = models.CharField(max_length=10, default='') def __str__(self): diff --git a/rest_api/serializers.py b/rest_api/serializers.py index 15b6a48..71c39b3 100644 --- a/rest_api/serializers.py +++ b/rest_api/serializers.py @@ -10,14 +10,16 @@ def create(self, validated_data): return Department.objects.create(**validated_data) class CourseSerializer(serializers.ModelSerializer): - department = DepartmentSerializer() + department = DepartmentSerializer(read_only=True) class Meta: + print("here 2") model = Course fields = ('id', 'title', 'department', 'code') + print("here 3") + print("here 4") - def create(self, validated_data): - department_data = validated_data.pop('department') - return Course.objects.create(department=department_data, **validated_data) + # def create(self, validated_data): + # return Course.objects.create(**validated_data) def fileName(file): filename = file.split('/')[-1] diff --git a/rest_api/urls.py b/rest_api/urls.py index fc3d149..9b9ceee 100644 --- a/rest_api/urls.py +++ b/rest_api/urls.py @@ -5,7 +5,7 @@ router = routers.DefaultRouter() router.register(r'departments', views.DepartmentViewSet, base_name='departments') -router.register(r'courses', views.CourseViewSet, base_name='courses') +router.register(r'courses', views.CourseViewTest, base_name='courses') router.register(r'files', views.FileViewSet, base_name='files') urlpatterns = [ diff --git a/rest_api/views.py b/rest_api/views.py index 1cc2563..73483f0 100644 --- a/rest_api/views.py +++ b/rest_api/views.py @@ -20,6 +20,7 @@ def get_queryset(self): return queryset def post(self, request): + print("here") department = request.data.get('department') serializer = DepartmentSerializer(data=department) if serializer.is_valid(raise_exception=True): @@ -44,14 +45,24 @@ def get_queryset(self): def post(self, request): course = request.data - department = Department.objects.get(id = request.data.get('department')) - course_saved = CourseSerializer.create(title=course.get('title'),department=department,code=course.get('code')) - return Response(course_saved) + print(course) def delete(self, request): course = Course.objects.get(id = request.data.get('course')).delete() return Response(course) +class CourseViewTest(viewsets.ModelViewSet): + print("here 1") + serializer_class = CourseSerializer + print("last") + + def post(self, request): + print(request.get) + if request.method == 'POST': + print(request.get) + print('hello') + + class FileViewSet(viewsets.ModelViewSet): serializer_class = FileSerializer From bad4b617abeae4aa277496f9caa9e29ebe12e7b0 Mon Sep 17 00:00:00 2001 From: AyanChoudhary Date: Thu, 31 Oct 2019 14:47:40 +0530 Subject: [PATCH 12/69] fix:merge cherry-pick commit --- rest_api/serializers.py | 5 ++-- rest_api/urls.py | 4 ++- rest_api/views.py | 60 ++++++++++++++++++++++------------------- 3 files changed, 39 insertions(+), 30 deletions(-) diff --git a/rest_api/serializers.py b/rest_api/serializers.py index 71c39b3..e0642a2 100644 --- a/rest_api/serializers.py +++ b/rest_api/serializers.py @@ -10,7 +10,7 @@ def create(self, validated_data): return Department.objects.create(**validated_data) class CourseSerializer(serializers.ModelSerializer): - department = DepartmentSerializer(read_only=True) + department = DepartmentSerializer(Department.objects.all()) class Meta: print("here 2") model = Course @@ -19,7 +19,8 @@ class Meta: print("here 4") # def create(self, validated_data): - # return Course.objects.create(**validated_data) + # department_data = validated_data.pop('department') + # return Course.objects.create(department=department_data, **validated_data) def fileName(file): filename = file.split('/')[-1] diff --git a/rest_api/urls.py b/rest_api/urls.py index 9b9ceee..fb12bb4 100644 --- a/rest_api/urls.py +++ b/rest_api/urls.py @@ -1,5 +1,6 @@ from django.urls import path, include from rest_framework import routers +from django.conf.urls import url from rest_api import views @@ -11,5 +12,6 @@ urlpatterns = [ path('test', views.sample, name='sample'), path('', include(router.urls)), - path('api-auth', include('rest_framework.urls', namespace='rest_framework')) + path('api-auth', include('rest_framework.urls', namespace='rest_framework')), + url(r'^courses', views.CourseViewSet.as_view()) ] diff --git a/rest_api/views.py b/rest_api/views.py index 73483f0..3e20682 100644 --- a/rest_api/views.py +++ b/rest_api/views.py @@ -1,6 +1,7 @@ from django.http import HttpResponse from rest_api.models import Department, Course, File -from rest_framework import viewsets +from rest_framework import viewsets, status +from rest_framework.views import APIView from rest_framework.response import Response from rest_api.serializers import DepartmentSerializer, CourseSerializer, FileSerializer @@ -27,41 +28,43 @@ def post(self, request): department_saved = serializer.save() return Response(department_saved) -class CourseViewSet(viewsets.ModelViewSet): - serializer_class = CourseSerializer +class CourseViewSet(APIView): - def get_queryset(self): + def get(self, request): queryset = Course.objects.all() department = self.request.query_params.get('department') course = self.request.query_params.get('course') if department != None and course == 'null': queryset = Course.objects.filter(department = department) - return queryset + serializer = CourseSerializer(queryset, many=True) + return Response(serializer.data) elif department != None and course != None: queryset = Course.objects.filter(department = department).filter(code = course) - return queryset + serializer = CourseSerializer(queryset, many=True) + return Response(serializer.data) else: - return queryset + serializer = CourseSerializer(queryset, many=True) + return Response(serializer.data) def post(self, request): - course = request.data - print(course) + data = request.data.copy() + queryset = Department.objects.get(id = request.data['department']) + query = Course.objects.filter(code = data['code']) + if not query: + course = Course(title = data['title'], department = queryset, code = data['code']) + course.save() + return Response(course.save(), status = status.HTTP_201_CREATED) + + else: + return Response("Course already exists") def delete(self, request): course = Course.objects.get(id = request.data.get('course')).delete() return Response(course) -class CourseViewTest(viewsets.ModelViewSet): - print("here 1") - serializer_class = CourseSerializer - print("last") - - def post(self, request): - print(request.get) - if request.method == 'POST': - print(request.get) - print('hello') - + @classmethod + def get_extra_actions(cls): + return [] class FileViewSet(viewsets.ModelViewSet): serializer_class = FileSerializer @@ -80,13 +83,16 @@ def get_queryset(self): return queryset def post(self, request): - files = request.data.get('file') - course = Course.objects.get(course = request.data.get('course')) - files.course = CourseSerializer(data=course) - serializer = FileSerializer(data=files) - if serializer.is_valid(raise_exception=True): - file_saved = serializer.save(file=files) - return Response(file_saved) + data = request.data.copy() + queryset = Course.objects.get(id = request.data['department']) + query = File.objects.filter(code = data['code']) + if not query: + course = Course(title = data['title'], department = queryset, code = data['code']) + course.save() + return Response(course.save(), status = status.HTTP_201_CREATED) + + else: + return Response("Course already exists") def delete(self, request): file = File.objects.get(id = request.data.get('file')).delete() From 1f257781b6afa080994323c2100bdf026b27b184 Mon Sep 17 00:00:00 2001 From: AyanChoudhary Date: Thu, 31 Oct 2019 16:47:31 +0530 Subject: [PATCH 13/69] changes in file model --- .../migrations/0019_auto_20191031_1024.py | 36 +++++++++++++++++++ rest_api/migrations/0020_file_size.py | 18 ++++++++++ rest_api/migrations/0021_file_fileext.py | 18 ++++++++++ rest_api/models.py | 10 +++--- rest_api/serializers.py | 2 +- rest_api/urls.py | 3 +- rest_api/views.py | 31 +++++++++------- 7 files changed, 99 insertions(+), 19 deletions(-) create mode 100644 rest_api/migrations/0019_auto_20191031_1024.py create mode 100644 rest_api/migrations/0020_file_size.py create mode 100644 rest_api/migrations/0021_file_fileext.py diff --git a/rest_api/migrations/0019_auto_20191031_1024.py b/rest_api/migrations/0019_auto_20191031_1024.py new file mode 100644 index 0000000..96774ee --- /dev/null +++ b/rest_api/migrations/0019_auto_20191031_1024.py @@ -0,0 +1,36 @@ +# Generated by Django 2.2.6 on 2019-10-31 10:24 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('rest_api', '0018_auto_20191014_1712'), + ] + + operations = [ + migrations.RemoveField( + model_name='file', + name='file', + ), + migrations.RemoveField( + model_name='file', + name='path', + ), + migrations.AddField( + model_name='file', + name='driveid', + field=models.URLField(default=''), + ), + migrations.AddField( + model_name='file', + name='title', + field=models.CharField(default='', max_length=100), + ), + migrations.AlterField( + model_name='file', + name='downloads', + field=models.IntegerField(default=0), + ), + ] diff --git a/rest_api/migrations/0020_file_size.py b/rest_api/migrations/0020_file_size.py new file mode 100644 index 0000000..fbe931e --- /dev/null +++ b/rest_api/migrations/0020_file_size.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.6 on 2019-10-31 10:46 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('rest_api', '0019_auto_20191031_1024'), + ] + + operations = [ + migrations.AddField( + model_name='file', + name='size', + field=models.CharField(default='', max_length=10), + ), + ] diff --git a/rest_api/migrations/0021_file_fileext.py b/rest_api/migrations/0021_file_fileext.py new file mode 100644 index 0000000..b4476b6 --- /dev/null +++ b/rest_api/migrations/0021_file_fileext.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.6 on 2019-10-31 11:10 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('rest_api', '0020_file_size'), + ] + + operations = [ + migrations.AddField( + model_name='file', + name='fileext', + field=models.CharField(default='', max_length=10), + ), + ] diff --git a/rest_api/models.py b/rest_api/models.py index 6326c57..515ff7b 100644 --- a/rest_api/models.py +++ b/rest_api/models.py @@ -35,15 +35,17 @@ def fileName(file): class File(models.Model): id = models.AutoField(primary_key=True, editable=False) - file = models.FileField(default='', upload_to=fileLocation) - path = models.FilePathField(path=None) - downloads = models.IntegerField(editable=False, default=0) + title = models.CharField(max_length=100, default='') + driveid = models.URLField(default='') + downloads = models.IntegerField(default=0) + size = models.CharField(max_length=10, default='') date_modified = models.DateField(auto_now=True) + fileext = models.CharField(max_length=10, default='') filetype = models.CharField(max_length=20, choices=FILE_TYPE) course = models.ForeignKey(Course, on_delete=models.CASCADE) def __str__(self): - return fileName(self.file.name) + return fileName(self.title) REQUEST_STATUS = [ (1,1), diff --git a/rest_api/serializers.py b/rest_api/serializers.py index e0642a2..a3dcb2b 100644 --- a/rest_api/serializers.py +++ b/rest_api/serializers.py @@ -33,7 +33,7 @@ class FileSerializer(serializers.ModelSerializer): fileext = serializers.SerializerMethodField() class Meta: model = File - fields = ('id', 'file', 'path', 'title', 'downloads', 'size', 'date_modified', 'fileext', 'filetype', 'course') + fields = ('id', 'title', 'driveid', 'downloads', 'size', 'date_modified', 'fileext', 'filetype', 'course') def get_size(self, obj): file_size = '' if obj.file and hasattr(obj.file, 'size'): diff --git a/rest_api/urls.py b/rest_api/urls.py index fb12bb4..a3acd96 100644 --- a/rest_api/urls.py +++ b/rest_api/urls.py @@ -13,5 +13,6 @@ path('test', views.sample, name='sample'), path('', include(router.urls)), path('api-auth', include('rest_framework.urls', namespace='rest_framework')), - url(r'^courses', views.CourseViewSet.as_view()) + url(r'^courses', views.CourseViewSet.as_view()), + url(r'^files', views.FileViewSet.as_view()) ] diff --git a/rest_api/views.py b/rest_api/views.py index 3e20682..de379b7 100644 --- a/rest_api/views.py +++ b/rest_api/views.py @@ -66,21 +66,22 @@ def delete(self, request): def get_extra_actions(cls): return [] -class FileViewSet(viewsets.ModelViewSet): - serializer_class = FileSerializer - - def get_queryset(self): +class FileViewSet(APIView): + def get(self): queryset = File.objects.all() course = self.request.query_params.get('course') filetype = self.request.query_params.get('filetype') if course != None and filetype == 'null': queryset = File.objects.filter(course = course) - return queryset + serializer = FileSerializer(queryset, many=True) + return Response(serializer.data) elif course != None and filetype != None: queryset = File.objects.filter(course = course).filter(filetype = filetype) - return queryset + serializer = FileSerializer(queryset, many=True) + return Response(serializer.data) else: - return queryset + serializer = FileSerializer(queryset, many=True) + return Response(serializer.data) def post(self, request): data = request.data.copy() @@ -98,9 +99,13 @@ def delete(self, request): file = File.objects.get(id = request.data.get('file')).delete() return Response(file) - def download(self, *args, **kwargs): - file_path = file_url - FilePointer = open(file_path,"r") - response = HttpResponse(FilePointer,content_type='application/msword') - response['Content-Disposition'] = 'attachment; filename=NameOfFile' - return response \ No newline at end of file + # def download(self, *args, **kwargs): + # file_path = file_url + # FilePointer = open(file_path,"r") + # response = HttpResponse(FilePointer,content_type='application/msword') + # response['Content-Disposition'] = 'attachment; filename=NameOfFile' + # return response + + @classmethod + def get_extra_actions(cls): + return [] \ No newline at end of file From 326a7a16db5066a5fdf37e5dbcf7a23d608fde31 Mon Sep 17 00:00:00 2001 From: AyanChoudhary Date: Thu, 31 Oct 2019 16:52:51 +0530 Subject: [PATCH 14/69] fix driveid field --- rest_api/migrations/0022_auto_20191031_1122.py | 18 ++++++++++++++++++ rest_api/models.py | 2 +- rest_api/views.py | 2 +- 3 files changed, 20 insertions(+), 2 deletions(-) create mode 100644 rest_api/migrations/0022_auto_20191031_1122.py diff --git a/rest_api/migrations/0022_auto_20191031_1122.py b/rest_api/migrations/0022_auto_20191031_1122.py new file mode 100644 index 0000000..20098c1 --- /dev/null +++ b/rest_api/migrations/0022_auto_20191031_1122.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.6 on 2019-10-31 11:22 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('rest_api', '0021_file_fileext'), + ] + + operations = [ + migrations.AlterField( + model_name='file', + name='driveid', + field=models.CharField(default='', max_length=50), + ), + ] diff --git a/rest_api/models.py b/rest_api/models.py index 515ff7b..6c7d803 100644 --- a/rest_api/models.py +++ b/rest_api/models.py @@ -36,7 +36,7 @@ def fileName(file): class File(models.Model): id = models.AutoField(primary_key=True, editable=False) title = models.CharField(max_length=100, default='') - driveid = models.URLField(default='') + driveid = models.CharField(max_length=50, default='') downloads = models.IntegerField(default=0) size = models.CharField(max_length=10, default='') date_modified = models.DateField(auto_now=True) diff --git a/rest_api/views.py b/rest_api/views.py index de379b7..a4f8e70 100644 --- a/rest_api/views.py +++ b/rest_api/views.py @@ -67,7 +67,7 @@ def get_extra_actions(cls): return [] class FileViewSet(APIView): - def get(self): + def get(self, request): queryset = File.objects.all() course = self.request.query_params.get('course') filetype = self.request.query_params.get('filetype') From a81c1d5df853c26faaef915a0ed4bd4bce9a0177 Mon Sep 17 00:00:00 2001 From: AyanChoudhary Date: Thu, 31 Oct 2019 16:58:36 +0530 Subject: [PATCH 15/69] removed unnecessary prints --- rest_api/serializers.py | 3 --- rest_api/urls.py | 2 +- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/rest_api/serializers.py b/rest_api/serializers.py index a3dcb2b..2b1e002 100644 --- a/rest_api/serializers.py +++ b/rest_api/serializers.py @@ -12,11 +12,8 @@ def create(self, validated_data): class CourseSerializer(serializers.ModelSerializer): department = DepartmentSerializer(Department.objects.all()) class Meta: - print("here 2") model = Course fields = ('id', 'title', 'department', 'code') - print("here 3") - print("here 4") # def create(self, validated_data): # department_data = validated_data.pop('department') diff --git a/rest_api/urls.py b/rest_api/urls.py index a3acd96..c02a579 100644 --- a/rest_api/urls.py +++ b/rest_api/urls.py @@ -6,7 +6,7 @@ router = routers.DefaultRouter() router.register(r'departments', views.DepartmentViewSet, base_name='departments') -router.register(r'courses', views.CourseViewTest, base_name='courses') +router.register(r'courses', views.CourseViewSet, base_name='courses') router.register(r'files', views.FileViewSet, base_name='files') urlpatterns = [ From bea9de7e6936eb4692fe17ba61955363d09a7650 Mon Sep 17 00:00:00 2001 From: AyanChoudhary Date: Thu, 31 Oct 2019 22:21:04 +0530 Subject: [PATCH 16/69] fixed post request for files --- rest_api/serializers.py | 25 +------------------------ rest_api/views.py | 33 +++++++++++++++++++++++++-------- 2 files changed, 26 insertions(+), 32 deletions(-) diff --git a/rest_api/serializers.py b/rest_api/serializers.py index 2b1e002..32d5ea5 100644 --- a/rest_api/serializers.py +++ b/rest_api/serializers.py @@ -15,38 +15,15 @@ class Meta: model = Course fields = ('id', 'title', 'department', 'code') - # def create(self, validated_data): - # department_data = validated_data.pop('department') - # return Course.objects.create(department=department_data, **validated_data) - def fileName(file): filename = file.split('/')[-1] return filename.split('.')[-2] class FileSerializer(serializers.ModelSerializer): - course = CourseSerializer() - size = serializers.SerializerMethodField() - title = serializers.SerializerMethodField() - fileext = serializers.SerializerMethodField() + course = CourseSerializer(Course.objects.all()) class Meta: model = File fields = ('id', 'title', 'driveid', 'downloads', 'size', 'date_modified', 'fileext', 'filetype', 'course') - def get_size(self, obj): - file_size = '' - if obj.file and hasattr(obj.file, 'size'): - file_size = obj.file.size - if round(file_size/(1024*1024),2) == 0.00: - return str(round(file_size/(1024),2))+" KB" - else: - return str(round(file_size/(1024*1024),2))+" MB" - def get_title(self, obj): - file_title = '' - if obj.file and hasattr(obj.file, 'name'): - file_title = obj.file.name - return fileName(file_title) - def get_fileext(self, obj): - filename = obj.file.name - return filename.split('.')[-1] class RequestSerializer(serializers.ModelSerializer): course = CourseSerializer() diff --git a/rest_api/views.py b/rest_api/views.py index a4f8e70..6b95123 100644 --- a/rest_api/views.py +++ b/rest_api/views.py @@ -54,7 +54,6 @@ def post(self, request): course = Course(title = data['title'], department = queryset, code = data['code']) course.save() return Response(course.save(), status = status.HTTP_201_CREATED) - else: return Response("Course already exists") @@ -66,6 +65,24 @@ def delete(self, request): def get_extra_actions(cls): return [] +def get_size(size): + file_size = size + if round(file_size/(1024*1024),2) == 0.00: + return str(round(file_size/(1024),2))+" KB" + else: + return str(round(file_size/(1024*1024),2))+" MB" + +def fileName(file): + return file.split('.')[-2] + +def get_title(name): + file_title = name + return fileName(file_title) + +def get_fileext(name): + filename = name + return filename.split('.')[-1] + class FileViewSet(APIView): def get(self, request): queryset = File.objects.all() @@ -85,15 +102,15 @@ def get(self, request): def post(self, request): data = request.data.copy() - queryset = Course.objects.get(id = request.data['department']) - query = File.objects.filter(code = data['code']) + course = Course.objects.get(code = data['code']) + query = File.objects.filter(title = data['title']) if not query: - course = Course(title = data['title'], department = queryset, code = data['code']) - course.save() - return Response(course.save(), status = status.HTTP_201_CREATED) - + file = File(title = get_title(data['title']), driveid = data['driveid'], downloads = 0, size = get_size(int(data['size'])), course = course, fileext = get_fileext(data['title']), filetype = data['filetype']) + file.save() + return Response(file.save(), status = status.HTTP_201_CREATED) else: - return Response("Course already exists") + return Response("File already exists") + return Response('') def delete(self, request): file = File.objects.get(id = request.data.get('file')).delete() From 26b73a131f561d3b236c3ed76206ab2279690cb5 Mon Sep 17 00:00:00 2001 From: AyanChoudhary Date: Sat, 2 Nov 2019 00:18:56 +0530 Subject: [PATCH 17/69] feat:added course fetch and get department detail through one request --- rest_api/urls.py | 1 + rest_api/views.py | 25 ++++++++++++++++--------- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/rest_api/urls.py b/rest_api/urls.py index c02a579..00caff8 100644 --- a/rest_api/urls.py +++ b/rest_api/urls.py @@ -13,6 +13,7 @@ path('test', views.sample, name='sample'), path('', include(router.urls)), path('api-auth', include('rest_framework.urls', namespace='rest_framework')), + url(r'^departments', views.DepartmentViewSet.as_view()), url(r'^courses', views.CourseViewSet.as_view()), url(r'^files', views.FileViewSet.as_view()) ] diff --git a/rest_api/views.py b/rest_api/views.py index 6b95123..8aa6d2c 100644 --- a/rest_api/views.py +++ b/rest_api/views.py @@ -8,28 +8,35 @@ def sample(request): return HttpResponse("Test endpoint") -class DepartmentViewSet(viewsets.ModelViewSet): - serializer_class = DepartmentSerializer - - def get_queryset(self): +class DepartmentViewSet(APIView): + def get(self,request): queryset = Department.objects.all() + serializer_department = DepartmentSerializer(queryset, many=True) department = self.request.query_params.get('department') if department != None: - queryset = Department.objects.filter(abbreviation = department) - return queryset + queryset = Department.objects.get(abbreviation = department) + serializer = DepartmentSerializer(queryset).data + course = Course.objects.filter(department = serializer['id']) + serializer_course = CourseSerializer(course, many=True).data + return Response({ + "department":serializer, + "courses":serializer_course + }) else: - return queryset + return Response(serializer_department.data) def post(self, request): - print("here") department = request.data.get('department') serializer = DepartmentSerializer(data=department) if serializer.is_valid(raise_exception=True): department_saved = serializer.save() return Response(department_saved) -class CourseViewSet(APIView): + @classmethod + def get_extra_actions(cls): + return [] +class CourseViewSet(APIView): def get(self, request): queryset = Course.objects.all() department = self.request.query_params.get('department') From 3c9c222fe5f2341f1ba4a6200fcf5b1e12188853 Mon Sep 17 00:00:00 2001 From: AyanChoudhary Date: Sun, 24 Nov 2019 18:16:32 +0530 Subject: [PATCH 18/69] refactor: department post requests --- .../migrations/0023_auto_20191103_1613.py | 19 ++++++++++++++++++ .../migrations/0024_auto_20191124_1223.py | 18 +++++++++++++++++ rest_api/models.py | 4 ++-- rest_api/views.py | 20 ++++++++++++------- 4 files changed, 52 insertions(+), 9 deletions(-) create mode 100644 rest_api/migrations/0023_auto_20191103_1613.py create mode 100644 rest_api/migrations/0024_auto_20191124_1223.py diff --git a/rest_api/migrations/0023_auto_20191103_1613.py b/rest_api/migrations/0023_auto_20191103_1613.py new file mode 100644 index 0000000..8dd2c3a --- /dev/null +++ b/rest_api/migrations/0023_auto_20191103_1613.py @@ -0,0 +1,19 @@ +# Generated by Django 2.2.6 on 2019-11-03 16:13 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('rest_api', '0022_auto_20191031_1122'), + ] + + operations = [ + migrations.AlterField( + model_name='course', + name='department', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='rest_api.Department'), + ), + ] diff --git a/rest_api/migrations/0024_auto_20191124_1223.py b/rest_api/migrations/0024_auto_20191124_1223.py new file mode 100644 index 0000000..b743c7b --- /dev/null +++ b/rest_api/migrations/0024_auto_20191124_1223.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.6 on 2019-11-24 12:23 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('rest_api', '0023_auto_20191103_1613'), + ] + + operations = [ + migrations.AlterField( + model_name='department', + name='abbreviation', + field=models.CharField(max_length=10), + ), + ] diff --git a/rest_api/models.py b/rest_api/models.py index 6c7d803..b7a9d33 100644 --- a/rest_api/models.py +++ b/rest_api/models.py @@ -4,7 +4,7 @@ class Department(models.Model): id = models.AutoField(primary_key=True, editable=False) title = models.CharField(max_length=100) - abbreviation = models.CharField(max_length=3) + abbreviation = models.CharField(max_length=10) imageurl = models.CharField(max_length=100, default='') def __str__(self): @@ -45,7 +45,7 @@ class File(models.Model): course = models.ForeignKey(Course, on_delete=models.CASCADE) def __str__(self): - return fileName(self.title) + return self.title REQUEST_STATUS = [ (1,1), diff --git a/rest_api/views.py b/rest_api/views.py index 8aa6d2c..fdb07f7 100644 --- a/rest_api/views.py +++ b/rest_api/views.py @@ -26,11 +26,14 @@ def get(self,request): return Response(serializer_department.data) def post(self, request): - department = request.data.get('department') - serializer = DepartmentSerializer(data=department) - if serializer.is_valid(raise_exception=True): - department_saved = serializer.save() - return Response(department_saved) + data = request.data + query = Department.objects.filter(abbreviation = data['abbreviation']) + if not query: + department = Department(title = data['title'], abbreviation = data['abbreviation'], imageurl = data['imageurl']) + department.save() + return Response(department.save(), status = status.HTTP_201_CREATED) + else: + return Response("Department already exists") @classmethod def get_extra_actions(cls): @@ -55,7 +58,10 @@ def get(self, request): def post(self, request): data = request.data.copy() - queryset = Department.objects.get(id = request.data['department']) + if request.data['department'].isdigit(): + queryset = Department.objects.get(id = request.data['department']) + else: + queryset = Department.objects.get(title = request.data['department']) query = Course.objects.filter(code = data['code']) if not query: course = Course(title = data['title'], department = queryset, code = data['code']) @@ -80,7 +86,7 @@ def get_size(size): return str(round(file_size/(1024*1024),2))+" MB" def fileName(file): - return file.split('.')[-2] + return file.rpartition('.')[0] def get_title(name): file_title = name From bebd864e5946ec7a7780c66c52e98eaf3d3a58a0 Mon Sep 17 00:00:00 2001 From: AyanChoudhary Date: Tue, 17 Dec 2019 03:03:51 +0530 Subject: [PATCH 19/69] feat:made user and upload models --- .../migrations/0025_auto_20191126_1724.py | 36 +++++++++++++++++++ .../migrations/0026_auto_20191126_1730.py | 18 ++++++++++ rest_api/migrations/0027_file_finalized.py | 18 ++++++++++ rest_api/models.py | 24 +++++++++++-- rest_api/serializers.py | 13 +++++-- rest_api/urls.py | 6 +++- rest_api/views.py | 28 ++++++++++++--- 7 files changed, 133 insertions(+), 10 deletions(-) create mode 100644 rest_api/migrations/0025_auto_20191126_1724.py create mode 100644 rest_api/migrations/0026_auto_20191126_1730.py create mode 100644 rest_api/migrations/0027_file_finalized.py diff --git a/rest_api/migrations/0025_auto_20191126_1724.py b/rest_api/migrations/0025_auto_20191126_1724.py new file mode 100644 index 0000000..f3de294 --- /dev/null +++ b/rest_api/migrations/0025_auto_20191126_1724.py @@ -0,0 +1,36 @@ +# Generated by Django 2.2.6 on 2019-11-26 17:24 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('rest_api', '0024_auto_20191124_1223'), + ] + + operations = [ + migrations.CreateModel( + name='User', + fields=[ + ('id', models.AutoField(editable=False, primary_key=True, serialize=False)), + ('falcon_id', models.IntegerField(default=0)), + ('username', models.CharField(default='', max_length=100)), + ('email', models.CharField(default='', max_length=100)), + ('profile_image', models.ImageField(height_field=41, upload_to='', width_field=41)), + ('role', models.CharField(choices=[('user', 'user'), ('moderator', 'moderator'), ('admin', 'admin')], max_length=20)), + ('departmennt', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='rest_api.Department')), + ], + ), + migrations.AlterField( + model_name='request', + name='filetype', + field=models.CharField(choices=[('tutorials', 'Tutorial'), ('books', 'Books'), ('notes', 'Notes'), ('exampapers', 'Examination Papers')], max_length=4), + ), + migrations.AlterField( + model_name='request', + name='user_id', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='rest_api.User'), + ), + ] diff --git a/rest_api/migrations/0026_auto_20191126_1730.py b/rest_api/migrations/0026_auto_20191126_1730.py new file mode 100644 index 0000000..a7396e2 --- /dev/null +++ b/rest_api/migrations/0026_auto_20191126_1730.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.6 on 2019-11-26 17:30 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('rest_api', '0025_auto_20191126_1724'), + ] + + operations = [ + migrations.RenameField( + model_name='request', + old_name='user_id', + new_name='user', + ), + ] diff --git a/rest_api/migrations/0027_file_finalized.py b/rest_api/migrations/0027_file_finalized.py new file mode 100644 index 0000000..ed4d3ca --- /dev/null +++ b/rest_api/migrations/0027_file_finalized.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.6 on 2019-11-26 18:14 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('rest_api', '0026_auto_20191126_1730'), + ] + + operations = [ + migrations.AddField( + model_name='file', + name='finalized', + field=models.BooleanField(default=False), + ), + ] diff --git a/rest_api/models.py b/rest_api/models.py index b7a9d33..5539718 100644 --- a/rest_api/models.py +++ b/rest_api/models.py @@ -42,11 +42,31 @@ class File(models.Model): date_modified = models.DateField(auto_now=True) fileext = models.CharField(max_length=10, default='') filetype = models.CharField(max_length=20, choices=FILE_TYPE) + finalized = models.BooleanField(default=False) course = models.ForeignKey(Course, on_delete=models.CASCADE) def __str__(self): return self.title +USER_ROLE = [ + ('user','user'), + ('moderator','moderator'), + ('admin','admin') +] + +class User(models.Model): + id = models.AutoField(primary_key=True, editable=False) + falcon_id = models.IntegerField(default=0) + username = models.CharField(max_length=100, default='') + email = models.CharField(max_length=100, default='') + profile_image = models.ImageField(height_field=41, width_field=41) + departmennt = models.ForeignKey(Department, on_delete=models.CASCADE) + role = models.CharField(max_length=20, choices=USER_ROLE) + + def __str__(self): + return self.username + + REQUEST_STATUS = [ (1,1), (2,2), @@ -55,8 +75,8 @@ def __str__(self): class Request(models.Model): id = models.AutoField(primary_key=True, editable=False) - user_id = models.IntegerField() - filetype = models.CharField(max_length=4) + user = models.ForeignKey(User, on_delete=models.CASCADE) + filetype = models.CharField(max_length=4, choices=FILE_TYPE) status = models.IntegerField(choices=REQUEST_STATUS) title = models.CharField(max_length=100) course = models.ForeignKey(Course, on_delete=models.CASCADE) diff --git a/rest_api/serializers.py b/rest_api/serializers.py index 32d5ea5..f947a53 100644 --- a/rest_api/serializers.py +++ b/rest_api/serializers.py @@ -1,4 +1,4 @@ -from rest_api.models import Department, Course, File, Request +from rest_api.models import Department, Course, File, User, Request from rest_framework import serializers class DepartmentSerializer(serializers.ModelSerializer): @@ -25,8 +25,15 @@ class Meta: model = File fields = ('id', 'title', 'driveid', 'downloads', 'size', 'date_modified', 'fileext', 'filetype', 'course') +class UserSerializer(serializers.ModelSerializer): + department = DepartmentSerializer(Department.objects.all()) + class Meta: + model = User + fields = ('id', 'falcon_id', 'username', 'email', 'profile_image', 'department', 'role') + class RequestSerializer(serializers.ModelSerializer): - course = CourseSerializer() + user = UserSerializer(User.objects.all()) + course = CourseSerializer(Course.objects.all()) class Meta: model = Request - fields = ('id', 'user_id', 'filetype', 'status', 'title', 'course') \ No newline at end of file + fields = ('id', 'user', 'filetype', 'status', 'title', 'course') \ No newline at end of file diff --git a/rest_api/urls.py b/rest_api/urls.py index 00caff8..3152e17 100644 --- a/rest_api/urls.py +++ b/rest_api/urls.py @@ -8,6 +8,8 @@ router.register(r'departments', views.DepartmentViewSet, base_name='departments') router.register(r'courses', views.CourseViewSet, base_name='courses') router.register(r'files', views.FileViewSet, base_name='files') +router.register(r'users', views.UserViewSet, base_name='users') +router.register(r'requests', views.RequestViewSet, base_name='requests') urlpatterns = [ path('test', views.sample, name='sample'), @@ -15,5 +17,7 @@ path('api-auth', include('rest_framework.urls', namespace='rest_framework')), url(r'^departments', views.DepartmentViewSet.as_view()), url(r'^courses', views.CourseViewSet.as_view()), - url(r'^files', views.FileViewSet.as_view()) + url(r'^files', views.FileViewSet.as_view()), + url(r'^users', views.UserViewSet.as_view()), + url(r'^requests', views.RequestViewSet.as_view()) ] diff --git a/rest_api/views.py b/rest_api/views.py index fdb07f7..12da52d 100644 --- a/rest_api/views.py +++ b/rest_api/views.py @@ -101,12 +101,16 @@ def get(self, request): queryset = File.objects.all() course = self.request.query_params.get('course') filetype = self.request.query_params.get('filetype') - if course != None and filetype == 'null': - queryset = File.objects.filter(course = course) + if course != None and filetype == 'null' : + queryset = File.objects.filter(course = course).filter(finalized = True) + serializer = FileSerializer(queryset, many=True) + return Response(serializer.data) + elif course != None and filetype == 'all' : + queryset = File.objects.filter(course = course).filter(finalized = True) serializer = FileSerializer(queryset, many=True) return Response(serializer.data) elif course != None and filetype != None: - queryset = File.objects.filter(course = course).filter(filetype = filetype) + queryset = File.objects.filter(course = course).filter(filetype = filetype).filter(finalized = True) serializer = FileSerializer(queryset, many=True) return Response(serializer.data) else: @@ -118,7 +122,7 @@ def post(self, request): course = Course.objects.get(code = data['code']) query = File.objects.filter(title = data['title']) if not query: - file = File(title = get_title(data['title']), driveid = data['driveid'], downloads = 0, size = get_size(int(data['size'])), course = course, fileext = get_fileext(data['title']), filetype = data['filetype']) + file = File(title = get_title(data['title']), driveid = data['driveid'], downloads = 0, size = get_size(int(data['size'])), course = course, fileext = get_fileext(data['title']), filetype = data['filetype'], finalized = data['finalized']) file.save() return Response(file.save(), status = status.HTTP_201_CREATED) else: @@ -136,6 +140,22 @@ def delete(self, request): # response['Content-Disposition'] = 'attachment; filename=NameOfFile' # return response + @classmethod + def get_extra_actions(cls): + return [] + +class UserViewSet(APIView): + def get(self, request): + return Response("") + + @classmethod + def get_extra_actions(cls): + return [] + +class RequestViewSet(APIView): + def get(self, request): + return Response("") + @classmethod def get_extra_actions(cls): return [] \ No newline at end of file From 858e7d871713fb5caebd8c1acc6b551e72b8a5b1 Mon Sep 17 00:00:00 2001 From: AyanChoudhary Date: Thu, 26 Dec 2019 12:29:54 +0530 Subject: [PATCH 20/69] lint fixes --- rest_api/models.py | 2 -- rest_api/serializers.py | 3 ++- rest_api/views.py | 3 ++- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/rest_api/models.py b/rest_api/models.py index 5539718..f8c3bf4 100644 --- a/rest_api/models.py +++ b/rest_api/models.py @@ -83,5 +83,3 @@ class Request(models.Model): def __str__(self): return self.title - - \ No newline at end of file diff --git a/rest_api/serializers.py b/rest_api/serializers.py index f947a53..f4941ea 100644 --- a/rest_api/serializers.py +++ b/rest_api/serializers.py @@ -36,4 +36,5 @@ class RequestSerializer(serializers.ModelSerializer): course = CourseSerializer(Course.objects.all()) class Meta: model = Request - fields = ('id', 'user', 'filetype', 'status', 'title', 'course') \ No newline at end of file + fields = ('id', 'user', 'filetype', 'status', 'title', 'course') + \ No newline at end of file diff --git a/rest_api/views.py b/rest_api/views.py index 12da52d..35ab895 100644 --- a/rest_api/views.py +++ b/rest_api/views.py @@ -158,4 +158,5 @@ def get(self, request): @classmethod def get_extra_actions(cls): - return [] \ No newline at end of file + return [] + \ No newline at end of file From dc26f7bf50d21b191e0aae0c473f1db58ea78acb Mon Sep 17 00:00:00 2001 From: AyanChoudhary Date: Thu, 26 Dec 2019 15:39:31 +0530 Subject: [PATCH 21/69] made uploads model --- .../migrations/0028_merge_20191226_0724.py | 14 ++++++++ .../migrations/0029_auto_20191226_0924.py | 34 +++++++++++++++++++ rest_api/migrations/0030_upload_title.py | 18 ++++++++++ rest_api/models.py | 19 ++++++++--- rest_api/serializers.py | 9 ++++- rest_api/urls.py | 4 ++- rest_api/views.py | 11 +++++- 7 files changed, 102 insertions(+), 7 deletions(-) create mode 100644 rest_api/migrations/0028_merge_20191226_0724.py create mode 100644 rest_api/migrations/0029_auto_20191226_0924.py create mode 100644 rest_api/migrations/0030_upload_title.py diff --git a/rest_api/migrations/0028_merge_20191226_0724.py b/rest_api/migrations/0028_merge_20191226_0724.py new file mode 100644 index 0000000..74ff3c4 --- /dev/null +++ b/rest_api/migrations/0028_merge_20191226_0724.py @@ -0,0 +1,14 @@ +# Generated by Django 2.2.6 on 2019-12-26 07:24 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('rest_api', '0027_file_finalized'), + ('rest_api', '0019_auto_20191022_1439'), + ] + + operations = [ + ] diff --git a/rest_api/migrations/0029_auto_20191226_0924.py b/rest_api/migrations/0029_auto_20191226_0924.py new file mode 100644 index 0000000..74ebaea --- /dev/null +++ b/rest_api/migrations/0029_auto_20191226_0924.py @@ -0,0 +1,34 @@ +# Generated by Django 2.2.6 on 2019-12-26 09:24 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('rest_api', '0028_merge_20191226_0724'), + ] + + operations = [ + migrations.AlterField( + model_name='file', + name='filetype', + field=models.CharField(choices=[('Tutorial', 'tutorials'), ('Book', 'books'), ('Notes', 'notes'), ('Examination Papers', 'exampapers')], max_length=20), + ), + migrations.AlterField( + model_name='request', + name='filetype', + field=models.CharField(choices=[('Tutorial', 'tutorials'), ('Book', 'books'), ('Notes', 'notes'), ('Examination Papers', 'exampapers')], max_length=4), + ), + migrations.CreateModel( + name='Upload', + fields=[ + ('id', models.AutoField(editable=False, primary_key=True, serialize=False)), + ('driveid', models.CharField(max_length=50)), + ('resolved', models.BooleanField(default=False)), + ('course', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='rest_api.Course')), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='rest_api.User')), + ], + ), + ] diff --git a/rest_api/migrations/0030_upload_title.py b/rest_api/migrations/0030_upload_title.py new file mode 100644 index 0000000..37336b3 --- /dev/null +++ b/rest_api/migrations/0030_upload_title.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.6 on 2019-12-26 10:08 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('rest_api', '0029_auto_20191226_0924'), + ] + + operations = [ + migrations.AddField( + model_name='upload', + name='title', + field=models.CharField(default='', max_length=100), + ), + ] diff --git a/rest_api/models.py b/rest_api/models.py index f8c3bf4..48297cb 100644 --- a/rest_api/models.py +++ b/rest_api/models.py @@ -20,10 +20,10 @@ def __str__(self): return self.title FILE_TYPE = [ - ('tutorials','Tutorial'), - ('books','Books'), - ('notes','Notes'), - ('exampapers','Examination Papers') + ('Tutorial','tutorials'), + ('Book','books'), + ('Notes','notes'), + ('Examination Papers','exampapers') ] def fileLocation(instance, filename): @@ -83,3 +83,14 @@ class Request(models.Model): def __str__(self): return self.title + +class Upload(models.Model): + id = models.AutoField(primary_key=True, editable=False) + user = models.ForeignKey(User, on_delete=models.CASCADE) + driveid = models.CharField(max_length=50) + resolved = models.BooleanField(default=False) + title = models.CharField(max_length=100, default='') + course = models.ForeignKey(Course, on_delete=models.CASCADE) + + def __str__(self): + return self.title diff --git a/rest_api/serializers.py b/rest_api/serializers.py index f4941ea..b6761df 100644 --- a/rest_api/serializers.py +++ b/rest_api/serializers.py @@ -1,4 +1,4 @@ -from rest_api.models import Department, Course, File, User, Request +from rest_api.models import Department, Course, File, User, Request, Upload from rest_framework import serializers class DepartmentSerializer(serializers.ModelSerializer): @@ -37,4 +37,11 @@ class RequestSerializer(serializers.ModelSerializer): class Meta: model = Request fields = ('id', 'user', 'filetype', 'status', 'title', 'course') + +class UploadSerializer(serializers.ModelSerializer): + user = UserSerializer(User.objects.all()) + course = CourseSerializer(Course.objects.all()) + class Meta: + model = Upload + fields = ('id', 'user', 'driveid', 'resolved', 'course') \ No newline at end of file diff --git a/rest_api/urls.py b/rest_api/urls.py index 3152e17..961abf8 100644 --- a/rest_api/urls.py +++ b/rest_api/urls.py @@ -10,6 +10,7 @@ router.register(r'files', views.FileViewSet, base_name='files') router.register(r'users', views.UserViewSet, base_name='users') router.register(r'requests', views.RequestViewSet, base_name='requests') +router.register(r'uploads', views.UploadViewSet, base_name='uploads') urlpatterns = [ path('test', views.sample, name='sample'), @@ -19,5 +20,6 @@ url(r'^courses', views.CourseViewSet.as_view()), url(r'^files', views.FileViewSet.as_view()), url(r'^users', views.UserViewSet.as_view()), - url(r'^requests', views.RequestViewSet.as_view()) + url(r'^requests', views.RequestViewSet.as_view()), + url(r'^uploads', views.UploadViewSet.as_view()) ] diff --git a/rest_api/views.py b/rest_api/views.py index 35ab895..a7795ac 100644 --- a/rest_api/views.py +++ b/rest_api/views.py @@ -159,4 +159,13 @@ def get(self, request): @classmethod def get_extra_actions(cls): return [] - \ No newline at end of file + +class UploadViewSet(APIView): + def post(self, request): + files = request.data + print(files) + return Response("") + + @classmethod + def get_extra_actions(cls): + return [] From a39418ecaea966036541e86a1c19bbfacd66dbe3 Mon Sep 17 00:00:00 2001 From: AyanChoudhary Date: Sat, 28 Dec 2019 15:49:19 +0530 Subject: [PATCH 22/69] feat:configured request get and creation post requests --- rest_api/admin.py | 7 ++++-- .../migrations/0031_auto_20191226_1027.py | 18 +++++++++++++ .../migrations/0032_auto_20191228_0928.py | 18 +++++++++++++ .../migrations/0033_auto_20191228_0958.py | 18 +++++++++++++ rest_api/models.py | 7 +++--- rest_api/views.py | 25 ++++++++++++++++--- 6 files changed, 84 insertions(+), 9 deletions(-) create mode 100644 rest_api/migrations/0031_auto_20191226_1027.py create mode 100644 rest_api/migrations/0032_auto_20191228_0928.py create mode 100644 rest_api/migrations/0033_auto_20191228_0958.py diff --git a/rest_api/admin.py b/rest_api/admin.py index 81b5af6..a6e2f84 100644 --- a/rest_api/admin.py +++ b/rest_api/admin.py @@ -1,7 +1,10 @@ from django.contrib import admin -from .models import Department, Course, File +from .models import Department, Course, File, User, Request, Upload admin.site.register(Department) admin.site.register(Course) -admin.site.register(File) \ No newline at end of file +admin.site.register(File) +admin.site.register(User) +admin.site.register(Request) +admin.site.register(Upload) \ No newline at end of file diff --git a/rest_api/migrations/0031_auto_20191226_1027.py b/rest_api/migrations/0031_auto_20191226_1027.py new file mode 100644 index 0000000..f373b51 --- /dev/null +++ b/rest_api/migrations/0031_auto_20191226_1027.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.6 on 2019-12-26 10:27 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('rest_api', '0030_upload_title'), + ] + + operations = [ + migrations.RenameField( + model_name='user', + old_name='departmennt', + new_name='department', + ), + ] diff --git a/rest_api/migrations/0032_auto_20191228_0928.py b/rest_api/migrations/0032_auto_20191228_0928.py new file mode 100644 index 0000000..5297051 --- /dev/null +++ b/rest_api/migrations/0032_auto_20191228_0928.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.6 on 2019-12-28 09:28 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('rest_api', '0031_auto_20191226_1027'), + ] + + operations = [ + migrations.AlterField( + model_name='user', + name='profile_image', + field=models.ImageField(blank=True, height_field=41, upload_to='', width_field=41), + ), + ] diff --git a/rest_api/migrations/0033_auto_20191228_0958.py b/rest_api/migrations/0033_auto_20191228_0958.py new file mode 100644 index 0000000..eacf789 --- /dev/null +++ b/rest_api/migrations/0033_auto_20191228_0958.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.6 on 2019-12-28 09:58 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('rest_api', '0032_auto_20191228_0928'), + ] + + operations = [ + migrations.AlterField( + model_name='request', + name='filetype', + field=models.CharField(choices=[('Tutorial', 'tutorials'), ('Book', 'books'), ('Notes', 'notes'), ('Examination Papers', 'exampapers')], max_length=20), + ), + ] diff --git a/rest_api/models.py b/rest_api/models.py index 48297cb..0e1c78c 100644 --- a/rest_api/models.py +++ b/rest_api/models.py @@ -59,8 +59,9 @@ class User(models.Model): falcon_id = models.IntegerField(default=0) username = models.CharField(max_length=100, default='') email = models.CharField(max_length=100, default='') - profile_image = models.ImageField(height_field=41, width_field=41) - departmennt = models.ForeignKey(Department, on_delete=models.CASCADE) + profile_image = models.ImageField(height_field=41, width_field=41, blank=True) + department = models.ForeignKey(Department, on_delete=models.CASCADE) + # courses = ArrayField(Course) role = models.CharField(max_length=20, choices=USER_ROLE) def __str__(self): @@ -76,7 +77,7 @@ def __str__(self): class Request(models.Model): id = models.AutoField(primary_key=True, editable=False) user = models.ForeignKey(User, on_delete=models.CASCADE) - filetype = models.CharField(max_length=4, choices=FILE_TYPE) + filetype = models.CharField(max_length=20, choices=FILE_TYPE) status = models.IntegerField(choices=REQUEST_STATUS) title = models.CharField(max_length=100) course = models.ForeignKey(Course, on_delete=models.CASCADE) diff --git a/rest_api/views.py b/rest_api/views.py index a7795ac..114c8bc 100644 --- a/rest_api/views.py +++ b/rest_api/views.py @@ -1,9 +1,9 @@ from django.http import HttpResponse -from rest_api.models import Department, Course, File +from rest_api.models import Department, Course, File, User, Request from rest_framework import viewsets, status from rest_framework.views import APIView from rest_framework.response import Response -from rest_api.serializers import DepartmentSerializer, CourseSerializer, FileSerializer +from rest_api.serializers import DepartmentSerializer, CourseSerializer, FileSerializer, UserSerializer, RequestSerializer def sample(request): return HttpResponse("Test endpoint") @@ -146,7 +146,9 @@ def get_extra_actions(cls): class UserViewSet(APIView): def get(self, request): - return Response("") + users = User.objects.filter() + serializer = UserSerializer(users, many=True) + return Response(serializer.data) @classmethod def get_extra_actions(cls): @@ -154,7 +156,22 @@ def get_extra_actions(cls): class RequestViewSet(APIView): def get(self, request): - return Response("") + requests = Request.objects.filter() + serializer = RequestSerializer(requests, many=True) + return Response(serializer.data) + + def post(self, request): + data = request.data + print(data) + user = User.objects.get(id = data['user']) + course = Course.objects.get(id = data['course']) + query = Request.objects.filter(title = data['title']) + if not query: + request = Request(user = user, filetype = data['filetype'], status = data['status'], title = data['title'], course = course) + request.save() + return Response(request.save(), status = status.HTTP_201_CREATED) + else: + return Response("Request already exists") @classmethod def get_extra_actions(cls): From 2873d930a50a65a74df32317f1a975e0864e172c Mon Sep 17 00:00:00 2001 From: AyanChoudhary Date: Sat, 28 Dec 2019 16:34:20 +0530 Subject: [PATCH 23/69] feat:configured update route on request --- rest_api/views.py | 43 +++++++++++++++++++++++++++++-------------- 1 file changed, 29 insertions(+), 14 deletions(-) diff --git a/rest_api/views.py b/rest_api/views.py index 114c8bc..3e0ec7e 100644 --- a/rest_api/views.py +++ b/rest_api/views.py @@ -133,22 +133,21 @@ def delete(self, request): file = File.objects.get(id = request.data.get('file')).delete() return Response(file) - # def download(self, *args, **kwargs): - # file_path = file_url - # FilePointer = open(file_path,"r") - # response = HttpResponse(FilePointer,content_type='application/msword') - # response['Content-Disposition'] = 'attachment; filename=NameOfFile' - # return response - @classmethod def get_extra_actions(cls): return [] class UserViewSet(APIView): def get(self, request): - users = User.objects.filter() - serializer = UserSerializer(users, many=True) - return Response(serializer.data) + queryset = User.objects.filter() + user = self.request.query_params.get('user') + if user is not None: + queryset = User.objects.filter(falcon_id = user) + serializer = UserSerializer(queryset, many=True) + return Response(serializer.data) + else: + serializer = UserSerializer(queryset, many=True) + return Response(serializer.data) @classmethod def get_extra_actions(cls): @@ -156,13 +155,18 @@ def get_extra_actions(cls): class RequestViewSet(APIView): def get(self, request): - requests = Request.objects.filter() - serializer = RequestSerializer(requests, many=True) - return Response(serializer.data) + queryset = Request.objects.filter() + user = self.request.query_params.get('user') + if user is not None: + queryset = Request.objects.filter(user = user) + serializer = RequestSerializer(queryset, many=True) + return Response(serializer.data) + else: + serializer = RequestSerializer(queryset, many=True) + return Response(serializer.data) def post(self, request): data = request.data - print(data) user = User.objects.get(id = data['user']) course = Course.objects.get(id = data['course']) query = Request.objects.filter(title = data['title']) @@ -173,6 +177,17 @@ def post(self, request): else: return Response("Request already exists") + def put(self, request): + data = request.data + query = Request.objects.filter(id = data['request']).update(status = data['status']) + return Response(query, status = status.HTTP_200_OK) + + + + def delete(self, request): + requests = Request.objects.get(id = request.data.get('request')).delete() + return Response(requests) + @classmethod def get_extra_actions(cls): return [] From 14d38bef91cfb62dc10e8fabbe8f36f9584cdb2b Mon Sep 17 00:00:00 2001 From: AyanChoudhary Date: Mon, 27 Jan 2020 21:37:17 +0530 Subject: [PATCH 24/69] feat:integrateg falcon client and completed user get and post functions --- rest_api/client.py | 44 +++++++++++++++++++++++++ rest_api/config.py | 10 ++++++ rest_api/models.py | 2 +- rest_api/views.py | 81 ++++++++++++++++++++++++++++------------------ 4 files changed, 104 insertions(+), 33 deletions(-) create mode 100644 rest_api/client.py create mode 100644 rest_api/config.py diff --git a/rest_api/client.py b/rest_api/client.py new file mode 100644 index 0000000..0edf4db --- /dev/null +++ b/rest_api/client.py @@ -0,0 +1,44 @@ +import requests +class DataResponse: + def __init__(self, AccessToken, TokenType, ExpiresIn): + self.AccessToken = AccessToken + self.TokenType = TokenType + self.ExpiresIn = ExpiresIn +class FalconClient: + def __init__(self, ClientId, ClientSecret, URLAccessToken, URLResourceOwner, AccountsURL): + self.ClientId = ClientId + self.ClientSecret = ClientSecret + self.URLAccessToken = URLAccessToken + self.URLResourceOwner = URLResourceOwner + self.AccountsURL = AccountsURL +COOKIE_NAME = "sdslabs" +def make_request(url, token): + headers = { 'Authorization': "Bearer {}".format(token), "Content-Type": "application/json" } + response = requests.get(url, headers=headers) + return response.json() +def get_token(config): + data = { "client_id": config.ClientId, "client_secret": config.ClientSecret, "grant_type": "client_credentials" } + headers = { "Content-Type": "application/x-www-form-urlencoded" } + response = requests.post(config.URLAccessToken, data=data, headers=headers) + return response.json()['access_token'] +def get_user_by_id(id, config): + token = get_token(config) + response = make_request(config.URLResourceOwner+"id/"+id, token) + return response +def get_user_by_username(username, config): + token = get_token(config) + response = make_request(config.URLResourceOwner+"username/"+username, token) + return response +def get_user_by_email(email, config): + token = get_token(config) + response = make_request(config.URLResourceOwner+"email/"+email, token) + return response +def get_logged_in_user(config, response): + cookie = response.cookies[COOKIE_NAME] + if cookie == "": + return "" + token = get_token(config) + user_data = make_request(config.URLResourceOwner+"logged_in_user/"+ cookie, token) + return user_data +def login(config, w, response): + user_data = get_logged_in_user(config, response) \ No newline at end of file diff --git a/rest_api/config.py b/rest_api/config.py new file mode 100644 index 0000000..1c82bcd --- /dev/null +++ b/rest_api/config.py @@ -0,0 +1,10 @@ +from rest_api import client + +client_id = "study-vT1gzcnoVml4Mcfq" +client_secret = "5e0c13777f4c6b7c1ea96ad6c42a26c9911e04edeae8cfdfad2d59f58dfd627e" +access_url = "http://falcon.sdslabs.local/access_token" +user_url = "http://falcon.sdslabs.local/users/" +accounts_rurl = "http://arceus.sdslabs.local/" + +config = client.FalconClient(client_id, client_secret, access_url,user_url, accounts_rurl) + diff --git a/rest_api/models.py b/rest_api/models.py index 0e1c78c..d4fd59c 100644 --- a/rest_api/models.py +++ b/rest_api/models.py @@ -59,7 +59,7 @@ class User(models.Model): falcon_id = models.IntegerField(default=0) username = models.CharField(max_length=100, default='') email = models.CharField(max_length=100, default='') - profile_image = models.ImageField(height_field=41, width_field=41, blank=True) + profile_image = models.URLField(max_length=500) department = models.ForeignKey(Department, on_delete=models.CASCADE) # courses = ArrayField(Course) role = models.CharField(max_length=20, choices=USER_ROLE) diff --git a/rest_api/views.py b/rest_api/views.py index 3e0ec7e..bef4a0e 100644 --- a/rest_api/views.py +++ b/rest_api/views.py @@ -1,9 +1,13 @@ from django.http import HttpResponse -from rest_api.models import Department, Course, File, User, Request +from rest_api.models import Department, Course, File, User, Request, Upload from rest_framework import viewsets, status from rest_framework.views import APIView from rest_framework.response import Response -from rest_api.serializers import DepartmentSerializer, CourseSerializer, FileSerializer, UserSerializer, RequestSerializer +from rest_api.serializers import DepartmentSerializer, CourseSerializer, FileSerializer, UserSerializer, RequestSerializer, UploadSerializer +from rest_api.config import config +from rest_api import client +import requests +import os def sample(request): return HttpResponse("Test endpoint") @@ -46,15 +50,10 @@ def get(self, request): course = self.request.query_params.get('course') if department != None and course == 'null': queryset = Course.objects.filter(department = department) - serializer = CourseSerializer(queryset, many=True) - return Response(serializer.data) elif department != None and course != None: queryset = Course.objects.filter(department = department).filter(code = course) - serializer = CourseSerializer(queryset, many=True) - return Response(serializer.data) - else: - serializer = CourseSerializer(queryset, many=True) - return Response(serializer.data) + serializer = CourseSerializer(queryset, many=True) + return Response(serializer.data) def post(self, request): data = request.data.copy() @@ -103,19 +102,12 @@ def get(self, request): filetype = self.request.query_params.get('filetype') if course != None and filetype == 'null' : queryset = File.objects.filter(course = course).filter(finalized = True) - serializer = FileSerializer(queryset, many=True) - return Response(serializer.data) elif course != None and filetype == 'all' : queryset = File.objects.filter(course = course).filter(finalized = True) - serializer = FileSerializer(queryset, many=True) - return Response(serializer.data) elif course != None and filetype != None: queryset = File.objects.filter(course = course).filter(filetype = filetype).filter(finalized = True) - serializer = FileSerializer(queryset, many=True) - return Response(serializer.data) - else: - serializer = FileSerializer(queryset, many=True) - return Response(serializer.data) + serializer = FileSerializer(queryset, many=True) + return Response(serializer.data) def post(self, request): data = request.data.copy() @@ -139,15 +131,33 @@ def get_extra_actions(cls): class UserViewSet(APIView): def get(self, request): - queryset = User.objects.filter() - user = self.request.query_params.get('user') + queryset = None + user = client.get_logged_in_user(config) if user is not None: - queryset = User.objects.filter(falcon_id = user) + queryset = User.objects.filter(falcon_id = user['id']) serializer = UserSerializer(queryset, many=True) - return Response(serializer.data) + if serializer.data == []: + data = { + 'falcon_id':user['id'], + 'username':user['username'], + 'email':user['email'], + 'profile_image':user['image_url'], + 'role':'user' + } + requests.post('/users',data=data) + queryset = User.objects.filter(falcon_id = user['id']) + serializer = UserSerializer(queryset, many=True) + return Response(serializer.data) + + def post(self, request): + data = request.data + query = User.objects.filter(falcon_id = data['falcon_id']) + if not query: + user = User(falcon_id = data['falcon_id'], username = data['username'], email = data['email'], profile_image = data['profile_image'], role = data['role']) + user.save() + return Response(user.save(), status = status.HTTP_201_CREATED) else: - serializer = UserSerializer(queryset, many=True) - return Response(serializer.data) + return Response("User already exists") @classmethod def get_extra_actions(cls): @@ -159,11 +169,8 @@ def get(self, request): user = self.request.query_params.get('user') if user is not None: queryset = Request.objects.filter(user = user) - serializer = RequestSerializer(queryset, many=True) - return Response(serializer.data) - else: - serializer = RequestSerializer(queryset, many=True) - return Response(serializer.data) + serializer = RequestSerializer(queryset, many=True) + return Response(serializer.data) def post(self, request): data = request.data @@ -193,10 +200,20 @@ def get_extra_actions(cls): return [] class UploadViewSet(APIView): + def get(self, request): + user = self.request.query_params.get('user') + queryset = Upload.objects.filter(resolved = False) + if user is not None: + queryset = Upload.objects.filter(user = user, resolved = False) + serializer = UploadSerializer(queryset, many=True) + return Response(serializer.data) + def post(self, request): - files = request.data - print(files) - return Response("") + files = request.data['files'] + file = open("a.pdf","w") + file.write(files) + os.remove("a.pdf") + return Response(files, status = status.HTTP_200_OK) @classmethod def get_extra_actions(cls): From 397de52b26f1cda33d2c5e19ea8b3017282afdd8 Mon Sep 17 00:00:00 2001 From: AyanChoudhary Date: Mon, 27 Jan 2020 21:39:31 +0530 Subject: [PATCH 25/69] fix: alter profile_image field to hold image url --- rest_api/migrations/0034_auto_20200127_1608.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 rest_api/migrations/0034_auto_20200127_1608.py diff --git a/rest_api/migrations/0034_auto_20200127_1608.py b/rest_api/migrations/0034_auto_20200127_1608.py new file mode 100644 index 0000000..6ea2921 --- /dev/null +++ b/rest_api/migrations/0034_auto_20200127_1608.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2 on 2020-01-27 16:08 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('rest_api', '0033_auto_20191228_0958'), + ] + + operations = [ + migrations.AlterField( + model_name='user', + name='profile_image', + field=models.URLField(max_length=500), + ), + ] From 30cc0c91ba3612ea0e6ab041e06c7b618ec7a5d7 Mon Sep 17 00:00:00 2001 From: AyanChoudhary Date: Tue, 28 Jan 2020 02:13:24 +0530 Subject: [PATCH 26/69] feat:retrieved file from frontend in backend --- rest_api/views.py | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/rest_api/views.py b/rest_api/views.py index bef4a0e..effb549 100644 --- a/rest_api/views.py +++ b/rest_api/views.py @@ -7,6 +7,7 @@ from rest_api.config import config from rest_api import client import requests +import base64 import os def sample(request): @@ -188,8 +189,6 @@ def put(self, request): data = request.data query = Request.objects.filter(id = data['request']).update(status = data['status']) return Response(query, status = status.HTTP_200_OK) - - def delete(self, request): requests = Request.objects.get(id = request.data.get('request')).delete() @@ -210,11 +209,18 @@ def get(self, request): def post(self, request): files = request.data['files'] - file = open("a.pdf","w") - file.write(files) - os.remove("a.pdf") - return Response(files, status = status.HTTP_200_OK) + # File manipulation starts here + type = files.split(",")[0] + ext = type.split("/")[1].split(";")[0] + base64String = files.split(",")[1] + temp = open("temp."+ext,"wb") + temp.write(base64.b64decode(base64String)) + print(type) + os.remove("temp."+ext) + # end of loop + return Response(ext, status = status.HTTP_200_OK) @classmethod def get_extra_actions(cls): return [] +# \ No newline at end of file From 0d7cc476a8c0248fb7065280b64529f0de3beaac Mon Sep 17 00:00:00 2001 From: AyanChoudhary Date: Tue, 28 Jan 2020 04:27:50 +0530 Subject: [PATCH 27/69] feat:integrated file upload route with drive api --- .gitignore | 4 +++- rest_api/drive.py | 39 +++++++++++++++++++++++++++++++++++++++ rest_api/views.py | 25 ++++++++++++++++++++++--- 3 files changed, 64 insertions(+), 4 deletions(-) create mode 100644 rest_api/drive.py diff --git a/.gitignore b/.gitignore index 7da9e48..69d1687 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,6 @@ .vscode studyportal/config/postgresql.yml **/__pycache__ -/files/* \ No newline at end of file +/files/* +credentials.json +token.pickle diff --git a/rest_api/drive.py b/rest_api/drive.py new file mode 100644 index 0000000..9e4f01d --- /dev/null +++ b/rest_api/drive.py @@ -0,0 +1,39 @@ +from __future__ import print_function +import pickle +import os.path +from googleapiclient.discovery import build +from google_auth_oauthlib.flow import InstalledAppFlow +from google.auth.transport.requests import Request + +def driveinit(): + creds = None + SCOPES = ['https://www.googleapis.com/auth/drive.readonly', + 'https://www.googleapis.com/auth/drive.file', + 'https://www.googleapis.com/auth/drive.appdata', + 'https://www.googleapis.com/auth/userinfo.profile', + 'openid', + 'https://www.googleapis.com/auth/userinfo.email'] + if os.path.exists('token.pickle'): + with open('token.pickle', 'rb') as token: + creds = pickle.load(token) + # If there are no (valid) credentials available, let the user log in. + if not creds or not creds.valid: + if creds and creds.expired and creds.refresh_token: + creds.refresh(Request()) + else: + flow = InstalledAppFlow.from_client_secrets_file( + 'credentials.json', SCOPES) + creds = flow.run_local_server(port=0) + # Save the credentials for the next run + with open('token.pickle', 'wb') as token: + pickle.dump(creds, token) + service = build('drive', 'v3', credentials=creds) + + user_service = build('oauth2', 'v2', credentials=creds) + info = user_service.userinfo().get().execute() + print("Accessing drive of user {} <{}>".format(((info['name'])), info['email'])) + + return service + +if __name__ == '__main__': + driveinit() \ No newline at end of file diff --git a/rest_api/views.py b/rest_api/views.py index effb549..2e21730 100644 --- a/rest_api/views.py +++ b/rest_api/views.py @@ -4,6 +4,8 @@ from rest_framework.views import APIView from rest_framework.response import Response from rest_api.serializers import DepartmentSerializer, CourseSerializer, FileSerializer, UserSerializer, RequestSerializer, UploadSerializer +from apiclient.http import MediaFileUpload +from rest_api.drive import driveinit from rest_api.config import config from rest_api import client import requests @@ -198,6 +200,12 @@ def delete(self, request): def get_extra_actions(cls): return [] +def uploadToDrive(service, folder_id, file_details): + file_metadata = {'name': file_details['name']} + media = MediaFileUpload(file_details['location'],mimetype=file_details['mime_type']) + file = service.files().create(body=file_metadata,media_body=media,fields='id').execute() + return file.get('id') + class UploadViewSet(APIView): def get(self, request): user = self.request.query_params.get('user') @@ -209,16 +217,27 @@ def get(self, request): def post(self, request): files = request.data['files'] + name = request.data['name'] # File manipulation starts here type = files.split(",")[0] + mime_type = type.split(":")[1].split(";")[0] ext = type.split("/")[1].split(";")[0] base64String = files.split(",")[1] temp = open("temp."+ext,"wb") temp.write(base64.b64decode(base64String)) - print(type) + file_details = { + 'name':name, + 'mime_type':mime_type, + 'location':"temp."+ext + } + driveid = uploadToDrive(driveinit(),'1Zd-uN6muFv8jvjUSM7faanEL0Zv6BTwZ',file_details) # Get folder id from config os.remove("temp."+ext) - # end of loop - return Response(ext, status = status.HTTP_200_OK) + # end of manipulation + user = User.objects.filter(id = request.data['user']) + course = Course.objects.filter(id = request.data['course']) + upload = Upload(user = user, driveid = driveid, resolved = False, title = name, course = course) + upload.save() + return Response(upload.save(), status = status.HTTP_200_OK) @classmethod def get_extra_actions(cls): From fae096cb9a26c43733be6676a5083ce89c8e02ce Mon Sep 17 00:00:00 2001 From: AyanChoudhary Date: Wed, 29 Jan 2020 05:49:32 +0530 Subject: [PATCH 28/69] feat:added filetype field to upload --- rest_api/migrations/0035_upload_filetype.py | 18 ++++++++++++++++++ rest_api/models.py | 1 + rest_api/views.py | 10 +++++----- 3 files changed, 24 insertions(+), 5 deletions(-) create mode 100644 rest_api/migrations/0035_upload_filetype.py diff --git a/rest_api/migrations/0035_upload_filetype.py b/rest_api/migrations/0035_upload_filetype.py new file mode 100644 index 0000000..0c40d01 --- /dev/null +++ b/rest_api/migrations/0035_upload_filetype.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2 on 2020-01-28 23:45 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('rest_api', '0034_auto_20200127_1608'), + ] + + operations = [ + migrations.AddField( + model_name='upload', + name='filetype', + field=models.CharField(choices=[('Tutorial', 'tutorials'), ('Book', 'books'), ('Notes', 'notes'), ('Examination Papers', 'exampapers')], default='', max_length=20), + ), + ] diff --git a/rest_api/models.py b/rest_api/models.py index d4fd59c..d8aad14 100644 --- a/rest_api/models.py +++ b/rest_api/models.py @@ -91,6 +91,7 @@ class Upload(models.Model): driveid = models.CharField(max_length=50) resolved = models.BooleanField(default=False) title = models.CharField(max_length=100, default='') + filetype = models.CharField(max_length=20, choices=FILE_TYPE, default='') course = models.ForeignKey(Course, on_delete=models.CASCADE) def __str__(self): diff --git a/rest_api/views.py b/rest_api/views.py index 2e21730..74cee4b 100644 --- a/rest_api/views.py +++ b/rest_api/views.py @@ -216,13 +216,13 @@ def get(self, request): return Response(serializer.data) def post(self, request): - files = request.data['files'] + file = request.data['file'] name = request.data['name'] # File manipulation starts here - type = files.split(",")[0] + type = file.split(",")[0] mime_type = type.split(":")[1].split(";")[0] ext = type.split("/")[1].split(";")[0] - base64String = files.split(",")[1] + base64String = file.split(",")[1] temp = open("temp."+ext,"wb") temp.write(base64.b64decode(base64String)) file_details = { @@ -235,11 +235,11 @@ def post(self, request): # end of manipulation user = User.objects.filter(id = request.data['user']) course = Course.objects.filter(id = request.data['course']) - upload = Upload(user = user, driveid = driveid, resolved = False, title = name, course = course) + upload = Upload(user = user, driveid = driveid, resolved = False, title = name, filetype = request.data['filetype'], course = course) upload.save() return Response(upload.save(), status = status.HTTP_200_OK) @classmethod def get_extra_actions(cls): return [] -# \ No newline at end of file + \ No newline at end of file From 5c05f0e68f55ab4ec01306b68bad71a7cab702e7 Mon Sep 17 00:00:00 2001 From: AyanChoudhary Date: Thu, 13 Feb 2020 14:43:53 +0530 Subject: [PATCH 29/69] feat:implemented JWT and added courses array field to user model --- rest_api/client.py | 17 +++++--- rest_api/config.py | 5 ++- .../migrations/0036_remove_user_department.py | 17 ++++++++ rest_api/migrations/0037_user_courses.py | 19 ++++++++ rest_api/models.py | 3 +- rest_api/serializers.py | 3 +- rest_api/urls.py | 3 +- rest_api/views.py | 43 +++++++++++++------ studyportal/settings.py | 2 - 9 files changed, 82 insertions(+), 30 deletions(-) create mode 100644 rest_api/migrations/0036_remove_user_department.py create mode 100644 rest_api/migrations/0037_user_courses.py diff --git a/rest_api/client.py b/rest_api/client.py index 0edf4db..79d9e37 100644 --- a/rest_api/client.py +++ b/rest_api/client.py @@ -1,23 +1,25 @@ import requests +from django.http import HttpResponseRedirect class DataResponse: def __init__(self, AccessToken, TokenType, ExpiresIn): self.AccessToken = AccessToken self.TokenType = TokenType self.ExpiresIn = ExpiresIn class FalconClient: - def __init__(self, ClientId, ClientSecret, URLAccessToken, URLResourceOwner, AccountsURL): + def __init__(self, ClientId, ClientSecret, URLAccessToken, URLResourceOwner, AccountsURL, RedirectURL): self.ClientId = ClientId self.ClientSecret = ClientSecret self.URLAccessToken = URLAccessToken self.URLResourceOwner = URLResourceOwner self.AccountsURL = AccountsURL + self.RedirectURL = RedirectURL COOKIE_NAME = "sdslabs" def make_request(url, token): headers = { 'Authorization': "Bearer {}".format(token), "Content-Type": "application/json" } response = requests.get(url, headers=headers) return response.json() def get_token(config): - data = { "client_id": config.ClientId, "client_secret": config.ClientSecret, "grant_type": "client_credentials" } + data = { "client_id": config.ClientId, "client_secret": config.ClientSecret, "grant_type": "client_credentials", "scope": "email image_url" } headers = { "Content-Type": "application/x-www-form-urlencoded" } response = requests.post(config.URLAccessToken, data=data, headers=headers) return response.json()['access_token'] @@ -33,12 +35,15 @@ def get_user_by_email(email, config): token = get_token(config) response = make_request(config.URLResourceOwner+"email/"+email, token) return response -def get_logged_in_user(config, response): - cookie = response.cookies[COOKIE_NAME] +def get_logged_in_user(config, cookies): + cookie = cookies[COOKIE_NAME] if cookie == "": return "" token = get_token(config) user_data = make_request(config.URLResourceOwner+"logged_in_user/"+ cookie, token) return user_data -def login(config, w, response): - user_data = get_logged_in_user(config, response) \ No newline at end of file +def login(config, cookies): + user_data = get_logged_in_user(config, cookies) + if user_data == None: + user_data = HttpResponseRedirect(config.AccountsURL+"/login?redirect=//"+config.RedirectURL) + return user_data \ No newline at end of file diff --git a/rest_api/config.py b/rest_api/config.py index 1c82bcd..e593bca 100644 --- a/rest_api/config.py +++ b/rest_api/config.py @@ -4,7 +4,8 @@ client_secret = "5e0c13777f4c6b7c1ea96ad6c42a26c9911e04edeae8cfdfad2d59f58dfd627e" access_url = "http://falcon.sdslabs.local/access_token" user_url = "http://falcon.sdslabs.local/users/" -accounts_rurl = "http://arceus.sdslabs.local/" +accounts_url = "http://arceus.sdslabs.local/" +redirect_url = "http://studyportal.sdslabs.local" -config = client.FalconClient(client_id, client_secret, access_url,user_url, accounts_rurl) +config = client.FalconClient(client_id, client_secret, access_url,user_url, accounts_url, redirect_url) diff --git a/rest_api/migrations/0036_remove_user_department.py b/rest_api/migrations/0036_remove_user_department.py new file mode 100644 index 0000000..bf0f40c --- /dev/null +++ b/rest_api/migrations/0036_remove_user_department.py @@ -0,0 +1,17 @@ +# Generated by Django 2.2 on 2020-02-12 18:43 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('rest_api', '0035_upload_filetype'), + ] + + operations = [ + migrations.RemoveField( + model_name='user', + name='department', + ), + ] diff --git a/rest_api/migrations/0037_user_courses.py b/rest_api/migrations/0037_user_courses.py new file mode 100644 index 0000000..4314a9a --- /dev/null +++ b/rest_api/migrations/0037_user_courses.py @@ -0,0 +1,19 @@ +# Generated by Django 2.2 on 2020-02-13 09:11 + +import django.contrib.postgres.fields +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('rest_api', '0036_remove_user_department'), + ] + + operations = [ + migrations.AddField( + model_name='user', + name='courses', + field=django.contrib.postgres.fields.ArrayField(base_field=models.IntegerField(), blank=True, default=list, size=None), + ), + ] diff --git a/rest_api/models.py b/rest_api/models.py index d8aad14..308a62c 100644 --- a/rest_api/models.py +++ b/rest_api/models.py @@ -60,8 +60,7 @@ class User(models.Model): username = models.CharField(max_length=100, default='') email = models.CharField(max_length=100, default='') profile_image = models.URLField(max_length=500) - department = models.ForeignKey(Department, on_delete=models.CASCADE) - # courses = ArrayField(Course) + courses = ArrayField(models.IntegerField(), blank=True, default=list) role = models.CharField(max_length=20, choices=USER_ROLE) def __str__(self): diff --git a/rest_api/serializers.py b/rest_api/serializers.py index b6761df..af7e1d2 100644 --- a/rest_api/serializers.py +++ b/rest_api/serializers.py @@ -26,10 +26,9 @@ class Meta: fields = ('id', 'title', 'driveid', 'downloads', 'size', 'date_modified', 'fileext', 'filetype', 'course') class UserSerializer(serializers.ModelSerializer): - department = DepartmentSerializer(Department.objects.all()) class Meta: model = User - fields = ('id', 'falcon_id', 'username', 'email', 'profile_image', 'department', 'role') + fields = ('id', 'falcon_id', 'username', 'email', 'profile_image', 'courses', 'role') class RequestSerializer(serializers.ModelSerializer): user = UserSerializer(User.objects.all()) diff --git a/rest_api/urls.py b/rest_api/urls.py index 961abf8..c4e3eb3 100644 --- a/rest_api/urls.py +++ b/rest_api/urls.py @@ -1,7 +1,6 @@ from django.urls import path, include from rest_framework import routers from django.conf.urls import url - from rest_api import views router = routers.DefaultRouter() @@ -21,5 +20,5 @@ url(r'^files', views.FileViewSet.as_view()), url(r'^users', views.UserViewSet.as_view()), url(r'^requests', views.RequestViewSet.as_view()), - url(r'^uploads', views.UploadViewSet.as_view()) + url(r'^uploads', views.UploadViewSet.as_view()), ] diff --git a/rest_api/views.py b/rest_api/views.py index 74cee4b..d7e3b1f 100644 --- a/rest_api/views.py +++ b/rest_api/views.py @@ -4,14 +4,18 @@ from rest_framework.views import APIView from rest_framework.response import Response from rest_api.serializers import DepartmentSerializer, CourseSerializer, FileSerializer, UserSerializer, RequestSerializer, UploadSerializer +from studyportal.settings import SECRET_KEY from apiclient.http import MediaFileUpload from rest_api.drive import driveinit from rest_api.config import config from rest_api import client import requests import base64 +import jwt import os +NEXUS_URL = "http://nexus.sdslabs.local/api/v1" + def sample(request): return HttpResponse("Test endpoint") @@ -135,22 +139,33 @@ def get_extra_actions(cls): class UserViewSet(APIView): def get(self, request): queryset = None - user = client.get_logged_in_user(config) - if user is not None: + token = request.headers['Authorization'].split(' ')[1] + if token == 'None': + # user = client.get_logged_in_user(config,{'sdslabs': ''}) + user = client.get_user_by_username('darkrider',config) + if user is not None: + queryset = User.objects.filter(falcon_id = user['id']) + serializer = UserSerializer(queryset, many=True) + if serializer.data == []: + data = { + 'falcon_id':user['id'], + 'username':user['username'], + 'email':user['email'], + 'profile_image':user['image_url'], + 'role':'user' + } + requests.post(NEXUS_URL+'/users',data=data) queryset = User.objects.filter(falcon_id = user['id']) serializer = UserSerializer(queryset, many=True) - if serializer.data == []: - data = { - 'falcon_id':user['id'], - 'username':user['username'], - 'email':user['email'], - 'profile_image':user['image_url'], - 'role':'user' - } - requests.post('/users',data=data) - queryset = User.objects.filter(falcon_id = user['id']) - serializer = UserSerializer(queryset, many=True) - return Response(serializer.data) + user = serializer.data[0] + encoded_jwt = jwt.encode({'username':user['username'], 'email':user['email']},SECRET_KEY,algorithm='HS256') + return Response({'token':encoded_jwt,'user':user}, status = status.HTTP_200_OK) + else: + decoded_jwt = jwt.decode(token,SECRET_KEY,algorithms=['HS256']) + queryset = User.objects.filter(username = decoded_jwt['username']) + serializer = UserSerializer(queryset, many=True) + user = serializer.data[0] + return Response(user) def post(self, request): data = request.data diff --git a/studyportal/settings.py b/studyportal/settings.py index 6fad2da..dd606a1 100644 --- a/studyportal/settings.py +++ b/studyportal/settings.py @@ -41,8 +41,6 @@ '127.0.0.1' ] - - # Application definition INSTALLED_APPS = [ From 9d1ca9c1b59cbb6f6f56f88daabb8c6b98b6cd78 Mon Sep 17 00:00:00 2001 From: AyanChoudhary Date: Mon, 17 Feb 2020 15:44:34 +0530 Subject: [PATCH 30/69] feat:made add course route --- rest_api/views.py | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/rest_api/views.py b/rest_api/views.py index d7e3b1f..6c46bd9 100644 --- a/rest_api/views.py +++ b/rest_api/views.py @@ -159,13 +159,20 @@ def get(self, request): serializer = UserSerializer(queryset, many=True) user = serializer.data[0] encoded_jwt = jwt.encode({'username':user['username'], 'email':user['email']},SECRET_KEY,algorithm='HS256') - return Response({'token':encoded_jwt,'user':user}, status = status.HTTP_200_OK) + return Response({'token':encoded_jwt,'user':user, 'courses':''}, status = status.HTTP_200_OK) else: decoded_jwt = jwt.decode(token,SECRET_KEY,algorithms=['HS256']) queryset = User.objects.filter(username = decoded_jwt['username']) serializer = UserSerializer(queryset, many=True) user = serializer.data[0] - return Response(user) + courselist = user['courses'] + courses = [] + for course in courselist: + course_object = Course.objects.filter(id = course) + if course_object: + coursedata = CourseSerializer(course_object,many=True).data + courses.append(coursedata) + return Response({'user':user,'courses':courses}) def post(self, request): data = request.data @@ -177,6 +184,18 @@ def post(self, request): else: return Response("User already exists") + def put(self,request): + data = request.data + new_course = data['course'] + query = User.objects.get(id = data['user']) + user = UserSerializer(query).data + if int(new_course) not in user['courses']: + query.courses.append(new_course) + query.save() + return Response('Course Added Successfully') + else: + return Response('Course already added') + @classmethod def get_extra_actions(cls): return [] @@ -221,6 +240,7 @@ def uploadToDrive(service, folder_id, file_details): file = service.files().create(body=file_metadata,media_body=media,fields='id').execute() return file.get('id') + class UploadViewSet(APIView): def get(self, request): user = self.request.query_params.get('user') From 37ab2a8890e071548930f30a65770e2dce605f2a Mon Sep 17 00:00:00 2001 From: AyanChoudhary Date: Tue, 18 Feb 2020 01:34:32 +0530 Subject: [PATCH 31/69] added date field to requests --- rest_api/migrations/0038_request_date.py | 20 ++++++++++++++++++++ rest_api/models.py | 1 + rest_api/serializers.py | 2 +- rest_api/views.py | 6 ++++-- 4 files changed, 26 insertions(+), 3 deletions(-) create mode 100644 rest_api/migrations/0038_request_date.py diff --git a/rest_api/migrations/0038_request_date.py b/rest_api/migrations/0038_request_date.py new file mode 100644 index 0000000..d31d3c4 --- /dev/null +++ b/rest_api/migrations/0038_request_date.py @@ -0,0 +1,20 @@ +# Generated by Django 2.2 on 2020-02-17 19:02 + +from django.db import migrations, models +import django.utils.timezone + + +class Migration(migrations.Migration): + + dependencies = [ + ('rest_api', '0037_user_courses'), + ] + + operations = [ + migrations.AddField( + model_name='request', + name='date', + field=models.DateField(auto_now_add=True, default=django.utils.timezone.now), + preserve_default=False, + ), + ] diff --git a/rest_api/models.py b/rest_api/models.py index 308a62c..21fae6a 100644 --- a/rest_api/models.py +++ b/rest_api/models.py @@ -79,6 +79,7 @@ class Request(models.Model): filetype = models.CharField(max_length=20, choices=FILE_TYPE) status = models.IntegerField(choices=REQUEST_STATUS) title = models.CharField(max_length=100) + date = models.DateField(auto_now_add=True) course = models.ForeignKey(Course, on_delete=models.CASCADE) def __str__(self): diff --git a/rest_api/serializers.py b/rest_api/serializers.py index af7e1d2..85cf9c7 100644 --- a/rest_api/serializers.py +++ b/rest_api/serializers.py @@ -35,7 +35,7 @@ class RequestSerializer(serializers.ModelSerializer): course = CourseSerializer(Course.objects.all()) class Meta: model = Request - fields = ('id', 'user', 'filetype', 'status', 'title', 'course') + fields = ('id', 'user', 'filetype', 'status', 'title', 'date', 'course') class UploadSerializer(serializers.ModelSerializer): user = UserSerializer(User.objects.all()) diff --git a/rest_api/views.py b/rest_api/views.py index 6c46bd9..0291744 100644 --- a/rest_api/views.py +++ b/rest_api/views.py @@ -170,7 +170,7 @@ def get(self, request): for course in courselist: course_object = Course.objects.filter(id = course) if course_object: - coursedata = CourseSerializer(course_object,many=True).data + coursedata = CourseSerializer(course_object,many=True).data[0] courses.append(coursedata) return Response({'user':user,'courses':courses}) @@ -187,7 +187,9 @@ def post(self, request): def put(self,request): data = request.data new_course = data['course'] - query = User.objects.get(id = data['user']) + token = request.headers['Authorization'].split(' ')[1] + decoded_jwt = jwt.decode(token,SECRET_KEY,algorithms=['HS256']) + query = User.objects.get(username = decoded_jwt['username']) user = UserSerializer(query).data if int(new_course) not in user['courses']: query.courses.append(new_course) From 6cfb86e55b2cb5a9e1c5fb2442c6d3805cb941e1 Mon Sep 17 00:00:00 2001 From: AyanChoudhary Date: Tue, 18 Feb 2020 18:33:42 +0530 Subject: [PATCH 32/69] refactor:abstaction of JWT decoding sequence and fix:filter bugs in upload POST request --- rest_api/urls.py | 2 ++ rest_api/views.py | 26 ++++++++++++++++++-------- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/rest_api/urls.py b/rest_api/urls.py index c4e3eb3..641e3bb 100644 --- a/rest_api/urls.py +++ b/rest_api/urls.py @@ -10,6 +10,7 @@ router.register(r'users', views.UserViewSet, base_name='users') router.register(r'requests', views.RequestViewSet, base_name='requests') router.register(r'uploads', views.UploadViewSet, base_name='uploads') +# router.register(r'test', views.TestViewSet, base_name='test') urlpatterns = [ path('test', views.sample, name='sample'), @@ -21,4 +22,5 @@ url(r'^users', views.UserViewSet.as_view()), url(r'^requests', views.RequestViewSet.as_view()), url(r'^uploads', views.UploadViewSet.as_view()), + # url(r'^test', views.TestViewSet.as_view()), ] diff --git a/rest_api/views.py b/rest_api/views.py index 0291744..bea1464 100644 --- a/rest_api/views.py +++ b/rest_api/views.py @@ -19,6 +19,11 @@ def sample(request): return HttpResponse("Test endpoint") +def getUserFromJWT(token): + decoded_jwt = jwt.decode(token,SECRET_KEY,algorithms=['HS256']) + user = User.objects.get(username = decoded_jwt['username']) + return UserSerializer(user).data + class DepartmentViewSet(APIView): def get(self,request): queryset = Department.objects.all() @@ -161,10 +166,7 @@ def get(self, request): encoded_jwt = jwt.encode({'username':user['username'], 'email':user['email']},SECRET_KEY,algorithm='HS256') return Response({'token':encoded_jwt,'user':user, 'courses':''}, status = status.HTTP_200_OK) else: - decoded_jwt = jwt.decode(token,SECRET_KEY,algorithms=['HS256']) - queryset = User.objects.filter(username = decoded_jwt['username']) - serializer = UserSerializer(queryset, many=True) - user = serializer.data[0] + user = getUserFromJWT(token) courselist = user['courses'] courses = [] for course in courselist: @@ -213,7 +215,9 @@ def get(self, request): def post(self, request): data = request.data - user = User.objects.get(id = data['user']) + token = request.headers['Authorization'].split(' ')[1] + decoded_jwt = jwt.decode(token,SECRET_KEY,algorithms=['HS256']) + user = User.objects.get(username = decoded_jwt['username']) course = Course.objects.get(id = data['course']) query = Request.objects.filter(title = data['title']) if not query: @@ -242,13 +246,17 @@ def uploadToDrive(service, folder_id, file_details): file = service.files().create(body=file_metadata,media_body=media,fields='id').execute() return file.get('id') - class UploadViewSet(APIView): def get(self, request): user = self.request.query_params.get('user') queryset = Upload.objects.filter(resolved = False) if user is not None: queryset = Upload.objects.filter(user = user, resolved = False) + else: + token = request.headers['Authorization'].split(' ')[1] + if token != 'None': + user = getUserFromJWT(token) + queryset = Upload.objects.filter(user = user['id']) serializer = UploadSerializer(queryset, many=True) return Response(serializer.data) @@ -270,8 +278,10 @@ def post(self, request): driveid = uploadToDrive(driveinit(),'1Zd-uN6muFv8jvjUSM7faanEL0Zv6BTwZ',file_details) # Get folder id from config os.remove("temp."+ext) # end of manipulation - user = User.objects.filter(id = request.data['user']) - course = Course.objects.filter(id = request.data['course']) + token = request.headers['Authorization'].split(' ')[1] + username = getUserFromJWT(token)['username'] + user = User.objects.get(username = username) + course = Course.objects.get(id = request.data['course']) upload = Upload(user = user, driveid = driveid, resolved = False, title = name, filetype = request.data['filetype'], course = course) upload.save() return Response(upload.save(), status = status.HTTP_200_OK) From 65e925ee2684268f66d6a8ec25cdaa551d17b5f5 Mon Sep 17 00:00:00 2001 From: AyanChoudhary Date: Tue, 18 Feb 2020 20:11:55 +0530 Subject: [PATCH 33/69] added date field to uploads and serialized upload title and filetype --- rest_api/migrations/0039_upload_date.py | 20 ++++++++++++++++++++ rest_api/models.py | 1 + rest_api/serializers.py | 2 +- rest_api/views.py | 5 +++++ 4 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 rest_api/migrations/0039_upload_date.py diff --git a/rest_api/migrations/0039_upload_date.py b/rest_api/migrations/0039_upload_date.py new file mode 100644 index 0000000..fa0c354 --- /dev/null +++ b/rest_api/migrations/0039_upload_date.py @@ -0,0 +1,20 @@ +# Generated by Django 2.2 on 2020-02-18 14:08 + +from django.db import migrations, models +import django.utils.timezone + + +class Migration(migrations.Migration): + + dependencies = [ + ('rest_api', '0038_request_date'), + ] + + operations = [ + migrations.AddField( + model_name='upload', + name='date', + field=models.DateField(auto_now_add=True, default=django.utils.timezone.now), + preserve_default=False, + ), + ] diff --git a/rest_api/models.py b/rest_api/models.py index 21fae6a..040039f 100644 --- a/rest_api/models.py +++ b/rest_api/models.py @@ -92,6 +92,7 @@ class Upload(models.Model): resolved = models.BooleanField(default=False) title = models.CharField(max_length=100, default='') filetype = models.CharField(max_length=20, choices=FILE_TYPE, default='') + date = models.DateField(auto_now_add=True) course = models.ForeignKey(Course, on_delete=models.CASCADE) def __str__(self): diff --git a/rest_api/serializers.py b/rest_api/serializers.py index 85cf9c7..1ce8447 100644 --- a/rest_api/serializers.py +++ b/rest_api/serializers.py @@ -42,5 +42,5 @@ class UploadSerializer(serializers.ModelSerializer): course = CourseSerializer(Course.objects.all()) class Meta: model = Upload - fields = ('id', 'user', 'driveid', 'resolved', 'course') + fields = ('id', 'user', 'driveid', 'resolved', 'title', 'filetype', 'date', 'course') \ No newline at end of file diff --git a/rest_api/views.py b/rest_api/views.py index bea1464..713bbfd 100644 --- a/rest_api/views.py +++ b/rest_api/views.py @@ -210,6 +210,11 @@ def get(self, request): user = self.request.query_params.get('user') if user is not None: queryset = Request.objects.filter(user = user) + else: + token = request.headers['Authorization'].split(' ')[1] + if token != 'None': + user = getUserFromJWT(token) + queryset = Request.objects.filter(user = user['id']) serializer = RequestSerializer(queryset, many=True) return Response(serializer.data) From 632cb7da8e164a9c6dd7de6e4c7ce52a2c1ec27f Mon Sep 17 00:00:00 2001 From: AyanChoudhary Date: Tue, 18 Feb 2020 21:28:48 +0530 Subject: [PATCH 34/69] feat:made course request model --- rest_api/admin.py | 5 +- .../migrations/0040_auto_20200218_1534.py | 17 ++++++ rest_api/migrations/0041_courserequest.py | 25 ++++++++ .../migrations/0042_courserequest_date.py | 20 ++++++ rest_api/models.py | 14 ++++- rest_api/serializers.py | 12 +++- rest_api/urls.py | 8 +-- rest_api/views.py | 61 +++++++++++++++---- 8 files changed, 141 insertions(+), 21 deletions(-) create mode 100644 rest_api/migrations/0040_auto_20200218_1534.py create mode 100644 rest_api/migrations/0041_courserequest.py create mode 100644 rest_api/migrations/0042_courserequest_date.py diff --git a/rest_api/admin.py b/rest_api/admin.py index a6e2f84..353bc91 100644 --- a/rest_api/admin.py +++ b/rest_api/admin.py @@ -1,10 +1,11 @@ from django.contrib import admin -from .models import Department, Course, File, User, Request, Upload +from .models import Department, Course, File, User, FileRequest, CourseRequest, Upload admin.site.register(Department) admin.site.register(Course) admin.site.register(File) admin.site.register(User) -admin.site.register(Request) +admin.site.register(FileRequest) +admin.site.register(CourseRequest) admin.site.register(Upload) \ No newline at end of file diff --git a/rest_api/migrations/0040_auto_20200218_1534.py b/rest_api/migrations/0040_auto_20200218_1534.py new file mode 100644 index 0000000..96f12d1 --- /dev/null +++ b/rest_api/migrations/0040_auto_20200218_1534.py @@ -0,0 +1,17 @@ +# Generated by Django 2.2 on 2020-02-18 15:34 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('rest_api', '0039_upload_date'), + ] + + operations = [ + migrations.RenameModel( + old_name='Request', + new_name='FileRequest', + ), + ] diff --git a/rest_api/migrations/0041_courserequest.py b/rest_api/migrations/0041_courserequest.py new file mode 100644 index 0000000..c7df8ac --- /dev/null +++ b/rest_api/migrations/0041_courserequest.py @@ -0,0 +1,25 @@ +# Generated by Django 2.2 on 2020-02-18 15:50 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('rest_api', '0040_auto_20200218_1534'), + ] + + operations = [ + migrations.CreateModel( + name='CourseRequest', + fields=[ + ('id', models.AutoField(editable=False, primary_key=True, serialize=False)), + ('status', models.IntegerField(choices=[(1, 1), (2, 2), (3, 3)])), + ('department', models.CharField(max_length=100)), + ('course', models.CharField(max_length=100)), + ('code', models.CharField(max_length=8)), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='rest_api.User')), + ], + ), + ] diff --git a/rest_api/migrations/0042_courserequest_date.py b/rest_api/migrations/0042_courserequest_date.py new file mode 100644 index 0000000..a77eaed --- /dev/null +++ b/rest_api/migrations/0042_courserequest_date.py @@ -0,0 +1,20 @@ +# Generated by Django 2.2 on 2020-02-18 15:58 + +from django.db import migrations, models +import django.utils.timezone + + +class Migration(migrations.Migration): + + dependencies = [ + ('rest_api', '0041_courserequest'), + ] + + operations = [ + migrations.AddField( + model_name='courserequest', + name='date', + field=models.DateField(auto_now_add=True, default=django.utils.timezone.now), + preserve_default=False, + ), + ] diff --git a/rest_api/models.py b/rest_api/models.py index 040039f..9b631d4 100644 --- a/rest_api/models.py +++ b/rest_api/models.py @@ -73,7 +73,7 @@ def __str__(self): (3,3) ] -class Request(models.Model): +class FileRequest(models.Model): id = models.AutoField(primary_key=True, editable=False) user = models.ForeignKey(User, on_delete=models.CASCADE) filetype = models.CharField(max_length=20, choices=FILE_TYPE) @@ -85,6 +85,18 @@ class Request(models.Model): def __str__(self): return self.title +class CourseRequest(models.Model): + id = models.AutoField(primary_key=True, editable=False) + user = models.ForeignKey(User, on_delete=models.CASCADE) + status = models.IntegerField(choices=REQUEST_STATUS) + department = models.CharField(max_length=100) + course = models.CharField(max_length=100) + code = models.CharField(max_length=8) + date = models.DateField(auto_now_add=True) + + def __str__(self): + return self.course + class Upload(models.Model): id = models.AutoField(primary_key=True, editable=False) user = models.ForeignKey(User, on_delete=models.CASCADE) diff --git a/rest_api/serializers.py b/rest_api/serializers.py index 1ce8447..ec4a725 100644 --- a/rest_api/serializers.py +++ b/rest_api/serializers.py @@ -1,4 +1,4 @@ -from rest_api.models import Department, Course, File, User, Request, Upload +from rest_api.models import Department, Course, File, User, FileRequest, CourseRequest, Upload from rest_framework import serializers class DepartmentSerializer(serializers.ModelSerializer): @@ -30,13 +30,19 @@ class Meta: model = User fields = ('id', 'falcon_id', 'username', 'email', 'profile_image', 'courses', 'role') -class RequestSerializer(serializers.ModelSerializer): +class FileRequestSerializer(serializers.ModelSerializer): user = UserSerializer(User.objects.all()) course = CourseSerializer(Course.objects.all()) class Meta: - model = Request + model = FileRequest fields = ('id', 'user', 'filetype', 'status', 'title', 'date', 'course') +class CourseRequestSerializer(serializers.ModelSerializer): + user = UserSerializer(User.objects.all()) + class Meta: + model = CourseRequest + fields = ('id', 'user', 'status', 'department', 'course', 'code') + class UploadSerializer(serializers.ModelSerializer): user = UserSerializer(User.objects.all()) course = CourseSerializer(Course.objects.all()) diff --git a/rest_api/urls.py b/rest_api/urls.py index 641e3bb..c4664fc 100644 --- a/rest_api/urls.py +++ b/rest_api/urls.py @@ -8,9 +8,9 @@ router.register(r'courses', views.CourseViewSet, base_name='courses') router.register(r'files', views.FileViewSet, base_name='files') router.register(r'users', views.UserViewSet, base_name='users') -router.register(r'requests', views.RequestViewSet, base_name='requests') +router.register(r'filerequests', views.FileRequestViewSet, base_name='filerequests') +router.register(r'^courserequests', views.CourseRequestViewSet, base_name='courserequests') router.register(r'uploads', views.UploadViewSet, base_name='uploads') -# router.register(r'test', views.TestViewSet, base_name='test') urlpatterns = [ path('test', views.sample, name='sample'), @@ -20,7 +20,7 @@ url(r'^courses', views.CourseViewSet.as_view()), url(r'^files', views.FileViewSet.as_view()), url(r'^users', views.UserViewSet.as_view()), - url(r'^requests', views.RequestViewSet.as_view()), + url(r'^filerequests', views.FileRequestViewSet.as_view()), + url(r'^courserequests', views.CourseRequestViewSet.as_view()), url(r'^uploads', views.UploadViewSet.as_view()), - # url(r'^test', views.TestViewSet.as_view()), ] diff --git a/rest_api/views.py b/rest_api/views.py index 713bbfd..afc460f 100644 --- a/rest_api/views.py +++ b/rest_api/views.py @@ -1,9 +1,9 @@ from django.http import HttpResponse -from rest_api.models import Department, Course, File, User, Request, Upload +from rest_api.models import Department, Course, File, User, FileRequest, CourseRequest, Upload from rest_framework import viewsets, status from rest_framework.views import APIView from rest_framework.response import Response -from rest_api.serializers import DepartmentSerializer, CourseSerializer, FileSerializer, UserSerializer, RequestSerializer, UploadSerializer +from rest_api.serializers import DepartmentSerializer, CourseSerializer, FileSerializer, UserSerializer, FileRequestSerializer, CourseRequestSerializer, UploadSerializer from studyportal.settings import SECRET_KEY from apiclient.http import MediaFileUpload from rest_api.drive import driveinit @@ -204,18 +204,18 @@ def put(self,request): def get_extra_actions(cls): return [] -class RequestViewSet(APIView): +class FileRequestViewSet(APIView): def get(self, request): - queryset = Request.objects.filter() + queryset = FileRequest.objects.filter() user = self.request.query_params.get('user') if user is not None: - queryset = Request.objects.filter(user = user) + queryset = FileRequest.objects.filter(user = user) else: token = request.headers['Authorization'].split(' ')[1] if token != 'None': user = getUserFromJWT(token) - queryset = Request.objects.filter(user = user['id']) - serializer = RequestSerializer(queryset, many=True) + queryset = FileRequest.objects.filter(user = user['id']) + serializer = FileRequestSerializer(queryset, many=True) return Response(serializer.data) def post(self, request): @@ -224,9 +224,9 @@ def post(self, request): decoded_jwt = jwt.decode(token,SECRET_KEY,algorithms=['HS256']) user = User.objects.get(username = decoded_jwt['username']) course = Course.objects.get(id = data['course']) - query = Request.objects.filter(title = data['title']) + query = FileRequest.objects.filter(title = data['title']) if not query: - request = Request(user = user, filetype = data['filetype'], status = data['status'], title = data['title'], course = course) + request = FileRequest(user = user, filetype = data['filetype'], status = data['status'], title = data['title'], course = course) request.save() return Response(request.save(), status = status.HTTP_201_CREATED) else: @@ -234,11 +234,50 @@ def post(self, request): def put(self, request): data = request.data - query = Request.objects.filter(id = data['request']).update(status = data['status']) + query = FileRequest.objects.filter(id = data['request']).update(status = data['status']) return Response(query, status = status.HTTP_200_OK) def delete(self, request): - requests = Request.objects.get(id = request.data.get('request')).delete() + requests = FileRequest.objects.get(id = request.data.get('request')).delete() + return Response(requests) + + @classmethod + def get_extra_actions(cls): + return [] + +class CourseRequestViewSet(APIView): + def get(self, request): + queryset = CourseRequest.objects.filter() + user = self.request.query_params.get('user') + if user is not None: + queryset = CourseRequest.objects.filter(user = user) + else: + token = request.headers['Authorization'].split(' ')[1] + if token != 'None': + user = getUserFromJWT(token) + queryset = CourseRequest.objects.filter(user = user['id']) + serializer = CourseRequestSerializer(queryset, many=True) + return Response(serializer.data) + + def post(self, request): + data = request.data + token = request.headers['Authorization'].split(' ')[1] + decoded_jwt = jwt.decode(token,SECRET_KEY,algorithms=['HS256']) + user = User.objects.get(username = decoded_jwt['username']) + if not query: + request = FileRequest(user = user, department = data['department'], course = data['course'], code = data['code']) + request.save() + return Response(request.save(), status = status.HTTP_201_CREATED) + else: + return Response("Request already exists") + + def put(self, request): + data = request.data + query = CourseRequest.objects.filter(id = data['request']).update(status = data['status']) + return Response(query, status = status.HTTP_200_OK) + + def delete(self, request): + requests = CourseRequest.objects.get(id = request.data.get('request')).delete() return Response(requests) @classmethod From 64376f3f6a171d3834e60e455683626d80023518 Mon Sep 17 00:00:00 2001 From: AyanChoudhary Date: Wed, 19 Feb 2020 16:34:27 +0530 Subject: [PATCH 35/69] fix:upload route file management conditions and make user course deletion route --- rest_api/views.py | 37 ++++++++++++++++++++++++------------- 1 file changed, 24 insertions(+), 13 deletions(-) diff --git a/rest_api/views.py b/rest_api/views.py index afc460f..5e7b0ed 100644 --- a/rest_api/views.py +++ b/rest_api/views.py @@ -10,6 +10,7 @@ from rest_api.config import config from rest_api import client import requests +import random import base64 import jwt import os @@ -131,7 +132,6 @@ def post(self, request): return Response(file.save(), status = status.HTTP_201_CREATED) else: return Response("File already exists") - return Response('') def delete(self, request): file = File.objects.get(id = request.data.get('file')).delete() @@ -193,12 +193,21 @@ def put(self,request): decoded_jwt = jwt.decode(token,SECRET_KEY,algorithms=['HS256']) query = User.objects.get(username = decoded_jwt['username']) user = UserSerializer(query).data - if int(new_course) not in user['courses']: - query.courses.append(new_course) - query.save() - return Response('Course Added Successfully') + if data['action'] == 'add': + if int(new_course) not in user['courses']: + query.courses.append(new_course) + query.save() + return Response('Course added successfully') + else: + return Response('Course already added') else: - return Response('Course already added') + if int(new_course) in user['courses']: + print(int(new_course) in user['courses']) + query.courses.remove(int(new_course)) + query.save() + return Response('Course removed successfully') + else: + return Response('Course does not exist') @classmethod def get_extra_actions(cls): @@ -228,7 +237,7 @@ def post(self, request): if not query: request = FileRequest(user = user, filetype = data['filetype'], status = data['status'], title = data['title'], course = course) request.save() - return Response(request.save(), status = status.HTTP_201_CREATED) + return Response(FileRequestSerializer(request).data, status = status.HTTP_201_CREATED) else: return Response("Request already exists") @@ -264,10 +273,11 @@ def post(self, request): token = request.headers['Authorization'].split(' ')[1] decoded_jwt = jwt.decode(token,SECRET_KEY,algorithms=['HS256']) user = User.objects.get(username = decoded_jwt['username']) + query = CourseRequest.objects.filter(department = data['department'], course = data['course'], code = data['code']) if not query: - request = FileRequest(user = user, department = data['department'], course = data['course'], code = data['code']) + request = CourseRequest(user = user, status = data['status'], department = data['department'], course = data['course'], code = data['code']) request.save() - return Response(request.save(), status = status.HTTP_201_CREATED) + return Response(CourseRequestSerializer(request).data, status = status.HTTP_201_CREATED) else: return Response("Request already exists") @@ -312,15 +322,16 @@ def post(self, request): mime_type = type.split(":")[1].split(";")[0] ext = type.split("/")[1].split(";")[0] base64String = file.split(",")[1] - temp = open("temp."+ext,"wb") + rand = str(random.randint(0,100000)) + temp = open("temp"+rand+"."+ext,"wb") temp.write(base64.b64decode(base64String)) file_details = { 'name':name, 'mime_type':mime_type, - 'location':"temp."+ext + 'location':"temp"+rand+"."+ext } driveid = uploadToDrive(driveinit(),'1Zd-uN6muFv8jvjUSM7faanEL0Zv6BTwZ',file_details) # Get folder id from config - os.remove("temp."+ext) + os.remove("temp"+rand+"."+ext) # end of manipulation token = request.headers['Authorization'].split(' ')[1] username = getUserFromJWT(token)['username'] @@ -328,7 +339,7 @@ def post(self, request): course = Course.objects.get(id = request.data['course']) upload = Upload(user = user, driveid = driveid, resolved = False, title = name, filetype = request.data['filetype'], course = course) upload.save() - return Response(upload.save(), status = status.HTTP_200_OK) + return Response(UploadSerializer(upload).data, status = status.HTTP_200_OK) @classmethod def get_extra_actions(cls): From 2a3156973f829bb01eaac875431fe4d94b05c02d Mon Sep 17 00:00:00 2001 From: AyanChoudhary Date: Wed, 19 Feb 2020 19:10:50 +0530 Subject: [PATCH 36/69] added status field to uploads model --- rest_api/migrations/0043_upload_status.py | 19 +++++++++++++++++++ rest_api/models.py | 1 + rest_api/serializers.py | 2 +- rest_api/views.py | 2 +- 4 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 rest_api/migrations/0043_upload_status.py diff --git a/rest_api/migrations/0043_upload_status.py b/rest_api/migrations/0043_upload_status.py new file mode 100644 index 0000000..c01367f --- /dev/null +++ b/rest_api/migrations/0043_upload_status.py @@ -0,0 +1,19 @@ +# Generated by Django 2.2 on 2020-02-19 12:29 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('rest_api', '0042_courserequest_date'), + ] + + operations = [ + migrations.AddField( + model_name='upload', + name='status', + field=models.IntegerField(choices=[(1, 1), (2, 2), (3, 3)], default=1), + preserve_default=False, + ), + ] diff --git a/rest_api/models.py b/rest_api/models.py index 9b631d4..3fa138a 100644 --- a/rest_api/models.py +++ b/rest_api/models.py @@ -102,6 +102,7 @@ class Upload(models.Model): user = models.ForeignKey(User, on_delete=models.CASCADE) driveid = models.CharField(max_length=50) resolved = models.BooleanField(default=False) + status = models.IntegerField(choices=REQUEST_STATUS) title = models.CharField(max_length=100, default='') filetype = models.CharField(max_length=20, choices=FILE_TYPE, default='') date = models.DateField(auto_now_add=True) diff --git a/rest_api/serializers.py b/rest_api/serializers.py index ec4a725..7f927f9 100644 --- a/rest_api/serializers.py +++ b/rest_api/serializers.py @@ -48,5 +48,5 @@ class UploadSerializer(serializers.ModelSerializer): course = CourseSerializer(Course.objects.all()) class Meta: model = Upload - fields = ('id', 'user', 'driveid', 'resolved', 'title', 'filetype', 'date', 'course') + fields = ('id', 'user', 'driveid', 'resolved', 'status', 'title', 'filetype', 'date', 'course') \ No newline at end of file diff --git a/rest_api/views.py b/rest_api/views.py index 5e7b0ed..27e9f8c 100644 --- a/rest_api/views.py +++ b/rest_api/views.py @@ -337,7 +337,7 @@ def post(self, request): username = getUserFromJWT(token)['username'] user = User.objects.get(username = username) course = Course.objects.get(id = request.data['course']) - upload = Upload(user = user, driveid = driveid, resolved = False, title = name, filetype = request.data['filetype'], course = course) + upload = Upload(user = user, driveid = driveid, resolved = False, status = request.data['status'], title = name, filetype = request.data['filetype'], course = course) upload.save() return Response(UploadSerializer(upload).data, status = status.HTTP_200_OK) From c7f3e28e84972394d577e87987481289eb2a7972 Mon Sep 17 00:00:00 2001 From: AyanChoudhary Date: Sun, 15 Mar 2020 19:09:28 +0530 Subject: [PATCH 37/69] fix:standardize department get request response --- rest_api/views.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rest_api/views.py b/rest_api/views.py index 27e9f8c..99336ca 100644 --- a/rest_api/views.py +++ b/rest_api/views.py @@ -30,7 +30,7 @@ def get(self,request): queryset = Department.objects.all() serializer_department = DepartmentSerializer(queryset, many=True) department = self.request.query_params.get('department') - if department != None: + if department is not None and department != 'undefined': queryset = Department.objects.get(abbreviation = department) serializer = DepartmentSerializer(queryset).data course = Course.objects.filter(department = serializer['id']) @@ -40,7 +40,7 @@ def get(self,request): "courses":serializer_course }) else: - return Response(serializer_department.data) + return Response({"department":serializer_department.data}) def post(self, request): data = request.data From d7c1b5d3e72952209470051010e6efb5af8f3965 Mon Sep 17 00:00:00 2001 From: AyanChoudhary Date: Mon, 23 Mar 2020 05:47:25 +0530 Subject: [PATCH 38/69] fix: linting according to PEP8 standards --- rest_api/TODO.md | 2 - rest_api/admin.py | 6 +- rest_api/client.py | 22 ++- rest_api/config.py | 14 +- rest_api/drive.py | 23 +-- rest_api/models.py | 38 +++-- rest_api/serializers.py | 57 +++++++- rest_api/urls.py | 32 +++-- rest_api/views.py | 310 +++++++++++++++++++++++++++------------- 9 files changed, 366 insertions(+), 138 deletions(-) delete mode 100644 rest_api/TODO.md diff --git a/rest_api/TODO.md b/rest_api/TODO.md deleted file mode 100644 index 8872551..0000000 --- a/rest_api/TODO.md +++ /dev/null @@ -1,2 +0,0 @@ -* change api route to /api/v1 -* proper error responses \ No newline at end of file diff --git a/rest_api/admin.py b/rest_api/admin.py index 353bc91..dde2e13 100644 --- a/rest_api/admin.py +++ b/rest_api/admin.py @@ -1,6 +1,6 @@ from django.contrib import admin - -from .models import Department, Course, File, User, FileRequest, CourseRequest, Upload +from .models import Department, Course, File +from .models import User, FileRequest, CourseRequest, Upload admin.site.register(Department) admin.site.register(Course) @@ -8,4 +8,4 @@ admin.site.register(User) admin.site.register(FileRequest) admin.site.register(CourseRequest) -admin.site.register(Upload) \ No newline at end of file +admin.site.register(Upload) diff --git a/rest_api/client.py b/rest_api/client.py index 79d9e37..be2c166 100644 --- a/rest_api/client.py +++ b/rest_api/client.py @@ -1,10 +1,14 @@ import requests from django.http import HttpResponseRedirect + + class DataResponse: def __init__(self, AccessToken, TokenType, ExpiresIn): self.AccessToken = AccessToken self.TokenType = TokenType self.ExpiresIn = ExpiresIn + + class FalconClient: def __init__(self, ClientId, ClientSecret, URLAccessToken, URLResourceOwner, AccountsURL, RedirectURL): self.ClientId = ClientId @@ -13,28 +17,41 @@ def __init__(self, ClientId, ClientSecret, URLAccessToken, URLResourceOwner, Acc self.URLResourceOwner = URLResourceOwner self.AccountsURL = AccountsURL self.RedirectURL = RedirectURL + COOKIE_NAME = "sdslabs" + + def make_request(url, token): headers = { 'Authorization': "Bearer {}".format(token), "Content-Type": "application/json" } response = requests.get(url, headers=headers) return response.json() + + def get_token(config): data = { "client_id": config.ClientId, "client_secret": config.ClientSecret, "grant_type": "client_credentials", "scope": "email image_url" } headers = { "Content-Type": "application/x-www-form-urlencoded" } response = requests.post(config.URLAccessToken, data=data, headers=headers) return response.json()['access_token'] + + def get_user_by_id(id, config): token = get_token(config) response = make_request(config.URLResourceOwner+"id/"+id, token) return response + + def get_user_by_username(username, config): token = get_token(config) response = make_request(config.URLResourceOwner+"username/"+username, token) return response + + def get_user_by_email(email, config): token = get_token(config) response = make_request(config.URLResourceOwner+"email/"+email, token) return response + + def get_logged_in_user(config, cookies): cookie = cookies[COOKIE_NAME] if cookie == "": @@ -42,8 +59,11 @@ def get_logged_in_user(config, cookies): token = get_token(config) user_data = make_request(config.URLResourceOwner+"logged_in_user/"+ cookie, token) return user_data + + def login(config, cookies): user_data = get_logged_in_user(config, cookies) if user_data == None: user_data = HttpResponseRedirect(config.AccountsURL+"/login?redirect=//"+config.RedirectURL) - return user_data \ No newline at end of file + return user_data + \ No newline at end of file diff --git a/rest_api/config.py b/rest_api/config.py index e593bca..42c2048 100644 --- a/rest_api/config.py +++ b/rest_api/config.py @@ -1,11 +1,19 @@ from rest_api import client client_id = "study-vT1gzcnoVml4Mcfq" -client_secret = "5e0c13777f4c6b7c1ea96ad6c42a26c9911e04edeae8cfdfad2d59f58dfd627e" +client_secret = ( + "5e0c13777f4c6b7c1ea96ad6c42a26c9911e04edeae8cfdfad2d59f58dfd627e" +) access_url = "http://falcon.sdslabs.local/access_token" user_url = "http://falcon.sdslabs.local/users/" accounts_url = "http://arceus.sdslabs.local/" redirect_url = "http://studyportal.sdslabs.local" -config = client.FalconClient(client_id, client_secret, access_url,user_url, accounts_url, redirect_url) - +config = client.FalconClient( + client_id, + client_secret, + access_url, + user_url, + accounts_url, + redirect_url +) diff --git a/rest_api/drive.py b/rest_api/drive.py index 9e4f01d..e7afde1 100644 --- a/rest_api/drive.py +++ b/rest_api/drive.py @@ -5,14 +5,16 @@ from google_auth_oauthlib.flow import InstalledAppFlow from google.auth.transport.requests import Request + def driveinit(): creds = None - SCOPES = ['https://www.googleapis.com/auth/drive.readonly', - 'https://www.googleapis.com/auth/drive.file', - 'https://www.googleapis.com/auth/drive.appdata', - 'https://www.googleapis.com/auth/userinfo.profile', - 'openid', - 'https://www.googleapis.com/auth/userinfo.email'] + SCOPES = [ + 'https://www.googleapis.com/auth/drive.readonly', + 'https://www.googleapis.com/auth/drive.file', + 'https://www.googleapis.com/auth/drive.appdata', + 'https://www.googleapis.com/auth/userinfo.profile', + 'openid', + 'https://www.googleapis.com/auth/userinfo.email'] if os.path.exists('token.pickle'): with open('token.pickle', 'rb') as token: creds = pickle.load(token) @@ -31,9 +33,14 @@ def driveinit(): user_service = build('oauth2', 'v2', credentials=creds) info = user_service.userinfo().get().execute() - print("Accessing drive of user {} <{}>".format(((info['name'])), info['email'])) + print( + "Accessing drive of user {} <{}>".format( + ((info['name'])), info['email'] + ) + ) return service + if __name__ == '__main__': - driveinit() \ No newline at end of file + driveinit() diff --git a/rest_api/models.py b/rest_api/models.py index 3fa138a..d1a1507 100644 --- a/rest_api/models.py +++ b/rest_api/models.py @@ -1,6 +1,7 @@ from django.db import models from django.contrib.postgres.fields import ArrayField + class Department(models.Model): id = models.AutoField(primary_key=True, editable=False) title = models.CharField(max_length=100) @@ -10,29 +11,39 @@ class Department(models.Model): def __str__(self): return self.title + class Course(models.Model): id = models.AutoField(primary_key=True, editable=False) title = models.CharField(max_length=200) - department = models.ForeignKey(Department, on_delete=models.CASCADE, blank=True, null=True) + department = models.ForeignKey( + Department, + on_delete=models.CASCADE, + blank=True, + null=True + ) code = models.CharField(max_length=10, default='') def __str__(self): return self.title + FILE_TYPE = [ - ('Tutorial','tutorials'), - ('Book','books'), - ('Notes','notes'), - ('Examination Papers','exampapers') + ('Tutorial', 'tutorials'), + ('Book', 'books'), + ('Notes', 'notes'), + ('Examination Papers', 'exampapers') ] + def fileLocation(instance, filename): return '/'.join(['./files', instance.filetype, filename]) + def fileName(file): filename = file.split('/')[-1] return filename.split('.')[-2] + class File(models.Model): id = models.AutoField(primary_key=True, editable=False) title = models.CharField(max_length=100, default='') @@ -48,12 +59,14 @@ class File(models.Model): def __str__(self): return self.title + USER_ROLE = [ - ('user','user'), - ('moderator','moderator'), - ('admin','admin') + ('user', 'user'), + ('moderator', 'moderator'), + ('admin', 'admin') ] + class User(models.Model): id = models.AutoField(primary_key=True, editable=False) falcon_id = models.IntegerField(default=0) @@ -68,11 +81,12 @@ def __str__(self): REQUEST_STATUS = [ - (1,1), - (2,2), - (3,3) + (1, 1), + (2, 2), + (3, 3) ] + class FileRequest(models.Model): id = models.AutoField(primary_key=True, editable=False) user = models.ForeignKey(User, on_delete=models.CASCADE) @@ -85,6 +99,7 @@ class FileRequest(models.Model): def __str__(self): return self.title + class CourseRequest(models.Model): id = models.AutoField(primary_key=True, editable=False) user = models.ForeignKey(User, on_delete=models.CASCADE) @@ -97,6 +112,7 @@ class CourseRequest(models.Model): def __str__(self): return self.course + class Upload(models.Model): id = models.AutoField(primary_key=True, editable=False) user = models.ForeignKey(User, on_delete=models.CASCADE) diff --git a/rest_api/serializers.py b/rest_api/serializers.py index 7f927f9..ea3ebed 100644 --- a/rest_api/serializers.py +++ b/rest_api/serializers.py @@ -1,7 +1,10 @@ -from rest_api.models import Department, Course, File, User, FileRequest, CourseRequest, Upload +from rest_api.models import Department, Course, File +from rest_api.models import User, FileRequest, CourseRequest, Upload from rest_framework import serializers + class DepartmentSerializer(serializers.ModelSerializer): + class Meta: model = Department fields = ('id', 'title', 'abbreviation', 'imageurl') @@ -9,44 +12,86 @@ class Meta: def create(self, validated_data): return Department.objects.create(**validated_data) + class CourseSerializer(serializers.ModelSerializer): department = DepartmentSerializer(Department.objects.all()) + class Meta: model = Course fields = ('id', 'title', 'department', 'code') + def fileName(file): filename = file.split('/')[-1] return filename.split('.')[-2] + class FileSerializer(serializers.ModelSerializer): course = CourseSerializer(Course.objects.all()) + class Meta: model = File - fields = ('id', 'title', 'driveid', 'downloads', 'size', 'date_modified', 'fileext', 'filetype', 'course') + fields = ( + 'id', + 'title', + 'driveid', + 'downloads', + 'size', + 'date_modified', + 'fileext', + 'filetype', + 'course' + ) + class UserSerializer(serializers.ModelSerializer): + class Meta: model = User - fields = ('id', 'falcon_id', 'username', 'email', 'profile_image', 'courses', 'role') + fields = ( + 'id', + 'falcon_id', + 'username', + 'email', + 'profile_image', + 'courses', + 'role' + ) + class FileRequestSerializer(serializers.ModelSerializer): user = UserSerializer(User.objects.all()) course = CourseSerializer(Course.objects.all()) + class Meta: model = FileRequest - fields = ('id', 'user', 'filetype', 'status', 'title', 'date', 'course') + fields = ( + 'id', 'user', 'filetype', 'status', 'title', 'date', 'course' + ) + class CourseRequestSerializer(serializers.ModelSerializer): user = UserSerializer(User.objects.all()) + class Meta: model = CourseRequest fields = ('id', 'user', 'status', 'department', 'course', 'code') + class UploadSerializer(serializers.ModelSerializer): user = UserSerializer(User.objects.all()) course = CourseSerializer(Course.objects.all()) + class Meta: model = Upload - fields = ('id', 'user', 'driveid', 'resolved', 'status', 'title', 'filetype', 'date', 'course') - \ No newline at end of file + fields = ( + 'id', + 'user', + 'driveid', + 'resolved', + 'status', + 'title', + 'filetype', + 'date', + 'course' + ) diff --git a/rest_api/urls.py b/rest_api/urls.py index c4664fc..1c6b370 100644 --- a/rest_api/urls.py +++ b/rest_api/urls.py @@ -4,18 +4,34 @@ from rest_api import views router = routers.DefaultRouter() -router.register(r'departments', views.DepartmentViewSet, base_name='departments') -router.register(r'courses', views.CourseViewSet, base_name='courses') -router.register(r'files', views.FileViewSet, base_name='files') -router.register(r'users', views.UserViewSet, base_name='users') -router.register(r'filerequests', views.FileRequestViewSet, base_name='filerequests') -router.register(r'^courserequests', views.CourseRequestViewSet, base_name='courserequests') -router.register(r'uploads', views.UploadViewSet, base_name='uploads') +router.register( + r'departments', views.DepartmentViewSet, base_name='departments' +) +router.register( + r'courses', views.CourseViewSet, base_name='courses' +) +router.register( + r'files', views.FileViewSet, base_name='files' +) +router.register( + r'users', views.UserViewSet, base_name='users' +) +router.register( + r'filerequests', views.FileRequestViewSet, base_name='filerequests' +) +router.register( + r'^courserequests', views.CourseRequestViewSet, base_name='courserequests' +) +router.register( + r'uploads', views.UploadViewSet, base_name='uploads' +) urlpatterns = [ path('test', views.sample, name='sample'), path('', include(router.urls)), - path('api-auth', include('rest_framework.urls', namespace='rest_framework')), + path( + 'api-auth', include('rest_framework.urls', namespace='rest_framework') + ), url(r'^departments', views.DepartmentViewSet.as_view()), url(r'^courses', views.CourseViewSet.as_view()), url(r'^files', views.FileViewSet.as_view()), diff --git a/rest_api/views.py b/rest_api/views.py index 99336ca..3cd7478 100644 --- a/rest_api/views.py +++ b/rest_api/views.py @@ -1,9 +1,13 @@ from django.http import HttpResponse -from rest_api.models import Department, Course, File, User, FileRequest, CourseRequest, Upload -from rest_framework import viewsets, status +from rest_api.models import Department, Course, File +from rest_api.models import User, FileRequest, CourseRequest, Upload +from rest_framework import viewsets, status from rest_framework.views import APIView from rest_framework.response import Response -from rest_api.serializers import DepartmentSerializer, CourseSerializer, FileSerializer, UserSerializer, FileRequestSerializer, CourseRequestSerializer, UploadSerializer +from rest_api.serializers import DepartmentSerializer, CourseSerializer +from rest_api.serializers import FileSerializer, UserSerializer +from rest_api.serializers import FileRequestSerializer, CourseRequestSerializer +from rest_api.serializers import UploadSerializer from studyportal.settings import SECRET_KEY from apiclient.http import MediaFileUpload from rest_api.drive import driveinit @@ -17,38 +21,45 @@ NEXUS_URL = "http://nexus.sdslabs.local/api/v1" + def sample(request): return HttpResponse("Test endpoint") + def getUserFromJWT(token): - decoded_jwt = jwt.decode(token,SECRET_KEY,algorithms=['HS256']) - user = User.objects.get(username = decoded_jwt['username']) + decoded_jwt = jwt.decode(token, SECRET_KEY, algorithms=['HS256']) + user = User.objects.get(username=decoded_jwt['username']) return UserSerializer(user).data + class DepartmentViewSet(APIView): - def get(self,request): + def get(self, request): queryset = Department.objects.all() serializer_department = DepartmentSerializer(queryset, many=True) department = self.request.query_params.get('department') if department is not None and department != 'undefined': - queryset = Department.objects.get(abbreviation = department) + queryset = Department.objects.get(abbreviation=department) serializer = DepartmentSerializer(queryset).data - course = Course.objects.filter(department = serializer['id']) + course = Course.objects.filter(department=serializer['id']) serializer_course = CourseSerializer(course, many=True).data return Response({ - "department":serializer, - "courses":serializer_course + "department": serializer, + "courses": serializer_course }) else: - return Response({"department":serializer_department.data}) + return Response({"department": serializer_department.data}) def post(self, request): data = request.data - query = Department.objects.filter(abbreviation = data['abbreviation']) + query = Department.objects.filter(abbreviation=data['abbreviation']) if not query: - department = Department(title = data['title'], abbreviation = data['abbreviation'], imageurl = data['imageurl']) + department = Department( + title=data['title'], + abbreviation=data['abbreviation'], + imageurl=data['imageurl'] + ) department.save() - return Response(department.save(), status = status.HTTP_201_CREATED) + return Response(department.save(), status=status.HTTP_201_CREATED) else: return Response("Department already exists") @@ -56,142 +67,193 @@ def post(self, request): def get_extra_actions(cls): return [] + class CourseViewSet(APIView): def get(self, request): queryset = Course.objects.all() department = self.request.query_params.get('department') course = self.request.query_params.get('course') - if department != None and course == 'null': - queryset = Course.objects.filter(department = department) - elif department != None and course != None: - queryset = Course.objects.filter(department = department).filter(code = course) + if department is not None and course == 'null': + queryset = Course.objects.filter(department=department) + elif department is not None and course is not None: + queryset = Course.objects.filter( + department=department + ).filter(code=course) serializer = CourseSerializer(queryset, many=True) return Response(serializer.data) def post(self, request): data = request.data.copy() if request.data['department'].isdigit(): - queryset = Department.objects.get(id = request.data['department']) + queryset = Department.objects.get(id=request.data['department']) else: - queryset = Department.objects.get(title = request.data['department']) - query = Course.objects.filter(code = data['code']) + queryset = Department.objects.get(title=request.data['department']) + query = Course.objects.filter(code=data['code']) if not query: - course = Course(title = data['title'], department = queryset, code = data['code']) + course = Course( + title=data['title'], + department=queryset, + code=data['code'] + ) course.save() - return Response(course.save(), status = status.HTTP_201_CREATED) + return Response(course.save(), status=status.HTTP_201_CREATED) else: return Response("Course already exists") def delete(self, request): - course = Course.objects.get(id = request.data.get('course')).delete() + course = Course.objects.get(id=request.data.get('course')).delete() return Response(course) @classmethod def get_extra_actions(cls): return [] + def get_size(size): file_size = size - if round(file_size/(1024*1024),2) == 0.00: - return str(round(file_size/(1024),2))+" KB" + if round(file_size/(1024*1024), 2) == 0.00: + return str(round(file_size/(1024), 2))+" KB" else: - return str(round(file_size/(1024*1024),2))+" MB" + return str(round(file_size/(1024*1024), 2))+" MB" + def fileName(file): return file.rpartition('.')[0] + def get_title(name): file_title = name return fileName(file_title) - + + def get_fileext(name): filename = name return filename.split('.')[-1] + class FileViewSet(APIView): def get(self, request): queryset = File.objects.all() course = self.request.query_params.get('course') filetype = self.request.query_params.get('filetype') - if course != None and filetype == 'null' : - queryset = File.objects.filter(course = course).filter(finalized = True) - elif course != None and filetype == 'all' : - queryset = File.objects.filter(course = course).filter(finalized = True) - elif course != None and filetype != None: - queryset = File.objects.filter(course = course).filter(filetype = filetype).filter(finalized = True) + if course is not None and filetype == 'null': + queryset = File.objects.filter( + course=course + ).filter(finalized=True) + elif course is not None and filetype == 'all': + queryset = File.objects.filter( + course=course + ).filter(finalized=True) + elif course is not None and filetype is not None: + queryset = File.objects.filter( + course=course + ).filter(filetype=filetype).filter(finalized=True) serializer = FileSerializer(queryset, many=True) return Response(serializer.data) def post(self, request): data = request.data.copy() - course = Course.objects.get(code = data['code']) - query = File.objects.filter(title = data['title']) + course = Course.objects.get(code=data['code']) + query = File.objects.filter(title=data['title']) if not query: - file = File(title = get_title(data['title']), driveid = data['driveid'], downloads = 0, size = get_size(int(data['size'])), course = course, fileext = get_fileext(data['title']), filetype = data['filetype'], finalized = data['finalized']) + file = File( + title=get_title(data['title']), + driveid=data['driveid'], + downloads=0, + size=get_size(int(data['size'])), + course=course, + fileext=get_fileext(data['title']), + filetype=data['filetype'], + finalized=data['finalized'] + ) file.save() - return Response(file.save(), status = status.HTTP_201_CREATED) + return Response(file.save(), status=status.HTTP_201_CREATED) else: return Response("File already exists") def delete(self, request): - file = File.objects.get(id = request.data.get('file')).delete() + file = File.objects.get(id=request.data.get('file')).delete() return Response(file) @classmethod def get_extra_actions(cls): return [] + class UserViewSet(APIView): def get(self, request): queryset = None token = request.headers['Authorization'].split(' ')[1] if token == 'None': # user = client.get_logged_in_user(config,{'sdslabs': ''}) - user = client.get_user_by_username('darkrider',config) + user = client.get_user_by_username('darkrider', config) if user is not None: - queryset = User.objects.filter(falcon_id = user['id']) + queryset = User.objects.filter(falcon_id=user['id']) serializer = UserSerializer(queryset, many=True) if serializer.data == []: data = { - 'falcon_id':user['id'], - 'username':user['username'], - 'email':user['email'], - 'profile_image':user['image_url'], - 'role':'user' + 'falcon_id': user['id'], + 'username': user['username'], + 'email': user['email'], + 'profile_image': user['image_url'], + 'role': 'user' } - requests.post(NEXUS_URL+'/users',data=data) - queryset = User.objects.filter(falcon_id = user['id']) + requests.post(NEXUS_URL+'/users', data=data) + queryset = User.objects.filter(falcon_id=user['id']) serializer = UserSerializer(queryset, many=True) user = serializer.data[0] - encoded_jwt = jwt.encode({'username':user['username'], 'email':user['email']},SECRET_KEY,algorithm='HS256') - return Response({'token':encoded_jwt,'user':user, 'courses':''}, status = status.HTTP_200_OK) + encoded_jwt = jwt.encode( + { + 'username': user['username'], + 'email': user['email'] + }, + SECRET_KEY, + algorithm='HS256' + ) + return Response( + { + 'token': encoded_jwt, + 'user': user, + 'courses': '' + }, + status=status.HTTP_200_OK + ) else: user = getUserFromJWT(token) courselist = user['courses'] courses = [] for course in courselist: - course_object = Course.objects.filter(id = course) + course_object = Course.objects.filter(id=course) if course_object: - coursedata = CourseSerializer(course_object,many=True).data[0] + coursedata = CourseSerializer( + course_object, + many=True + ).data[0] courses.append(coursedata) - return Response({'user':user,'courses':courses}) + return Response({'user': user, 'courses': courses}) def post(self, request): data = request.data - query = User.objects.filter(falcon_id = data['falcon_id']) + query = User.objects.filter(falcon_id=data['falcon_id']) if not query: - user = User(falcon_id = data['falcon_id'], username = data['username'], email = data['email'], profile_image = data['profile_image'], role = data['role']) + user = User( + falcon_id=data['falcon_id'], + username=data['username'], + email=data['email'], + profile_image=data['profile_image'], + role=data['role'] + ) user.save() - return Response(user.save(), status = status.HTTP_201_CREATED) + return Response(user.save(), status=status.HTTP_201_CREATED) else: return Response("User already exists") - def put(self,request): + def put(self, request): data = request.data new_course = data['course'] token = request.headers['Authorization'].split(' ')[1] - decoded_jwt = jwt.decode(token,SECRET_KEY,algorithms=['HS256']) - query = User.objects.get(username = decoded_jwt['username']) + decoded_jwt = jwt.decode(token, SECRET_KEY, algorithms=['HS256']) + query = User.objects.get(username=decoded_jwt['username']) user = UserSerializer(query).data if data['action'] == 'add': if int(new_course) not in user['courses']: @@ -213,104 +275,145 @@ def put(self,request): def get_extra_actions(cls): return [] + class FileRequestViewSet(APIView): def get(self, request): queryset = FileRequest.objects.filter() user = self.request.query_params.get('user') if user is not None: - queryset = FileRequest.objects.filter(user = user) + queryset = FileRequest.objects.filter(user=user) else: token = request.headers['Authorization'].split(' ')[1] if token != 'None': user = getUserFromJWT(token) - queryset = FileRequest.objects.filter(user = user['id']) + queryset = FileRequest.objects.filter(user=user['id']) serializer = FileRequestSerializer(queryset, many=True) return Response(serializer.data) def post(self, request): data = request.data token = request.headers['Authorization'].split(' ')[1] - decoded_jwt = jwt.decode(token,SECRET_KEY,algorithms=['HS256']) - user = User.objects.get(username = decoded_jwt['username']) - course = Course.objects.get(id = data['course']) - query = FileRequest.objects.filter(title = data['title']) + decoded_jwt = jwt.decode(token, SECRET_KEY, algorithms=['HS256']) + user = User.objects.get(username=decoded_jwt['username']) + course = Course.objects.get(id=data['course']) + query = FileRequest.objects.filter(title=data['title']) if not query: - request = FileRequest(user = user, filetype = data['filetype'], status = data['status'], title = data['title'], course = course) + request = FileRequest( + user=user, + filetype=data['filetype'], + status=data['status'], + title=data['title'], + course=course + ) request.save() - return Response(FileRequestSerializer(request).data, status = status.HTTP_201_CREATED) + return Response( + FileRequestSerializer(request).data, + status=status.HTTP_201_CREATED + ) else: return Response("Request already exists") def put(self, request): data = request.data - query = FileRequest.objects.filter(id = data['request']).update(status = data['status']) - return Response(query, status = status.HTTP_200_OK) + query = FileRequest.objects.filter( + id=data['request'] + ).update(status=data['status']) + return Response(query, status=status.HTTP_200_OK) def delete(self, request): - requests = FileRequest.objects.get(id = request.data.get('request')).delete() + requests = FileRequest.objects.get( + id=request.data.get('request') + ).delete() return Response(requests) @classmethod def get_extra_actions(cls): return [] + class CourseRequestViewSet(APIView): def get(self, request): queryset = CourseRequest.objects.filter() user = self.request.query_params.get('user') if user is not None: - queryset = CourseRequest.objects.filter(user = user) + queryset = CourseRequest.objects.filter(user=user) else: token = request.headers['Authorization'].split(' ')[1] if token != 'None': user = getUserFromJWT(token) - queryset = CourseRequest.objects.filter(user = user['id']) + queryset = CourseRequest.objects.filter(user=user['id']) serializer = CourseRequestSerializer(queryset, many=True) return Response(serializer.data) def post(self, request): data = request.data token = request.headers['Authorization'].split(' ')[1] - decoded_jwt = jwt.decode(token,SECRET_KEY,algorithms=['HS256']) - user = User.objects.get(username = decoded_jwt['username']) - query = CourseRequest.objects.filter(department = data['department'], course = data['course'], code = data['code']) + decoded_jwt = jwt.decode(token, SECRET_KEY, algorithms=['HS256']) + user = User.objects.get(username=decoded_jwt['username']) + query = CourseRequest.objects.filter( + department=data['department'], + course=data['course'], + code=data['code'] + ) if not query: - request = CourseRequest(user = user, status = data['status'], department = data['department'], course = data['course'], code = data['code']) + request = CourseRequest( + user=user, + status=data['status'], + department=data['department'], + course=data['course'], + code=data['code'] + ) request.save() - return Response(CourseRequestSerializer(request).data, status = status.HTTP_201_CREATED) + return Response( + CourseRequestSerializer(request).data, + status=status.HTTP_201_CREATED + ) else: return Response("Request already exists") def put(self, request): data = request.data - query = CourseRequest.objects.filter(id = data['request']).update(status = data['status']) - return Response(query, status = status.HTTP_200_OK) + query = CourseRequest.objects.filter( + id=data['request'] + ).update(status=data['status']) + return Response(query, status=status.HTTP_200_OK) def delete(self, request): - requests = CourseRequest.objects.get(id = request.data.get('request')).delete() + requests = CourseRequest.objects.get( + id=request.data.get('request') + ).delete() return Response(requests) @classmethod def get_extra_actions(cls): return [] + def uploadToDrive(service, folder_id, file_details): file_metadata = {'name': file_details['name']} - media = MediaFileUpload(file_details['location'],mimetype=file_details['mime_type']) - file = service.files().create(body=file_metadata,media_body=media,fields='id').execute() + media = MediaFileUpload( + file_details['location'], + mimetype=file_details['mime_type'] + ) + file = service.files().create( + body=file_metadata, + media_body=media, + fields='id' + ).execute() return file.get('id') + class UploadViewSet(APIView): def get(self, request): user = self.request.query_params.get('user') - queryset = Upload.objects.filter(resolved = False) + queryset = Upload.objects.filter(resolved=False) if user is not None: - queryset = Upload.objects.filter(user = user, resolved = False) + queryset = Upload.objects.filter(user=user, resolved=False) else: token = request.headers['Authorization'].split(' ')[1] if token != 'None': user = getUserFromJWT(token) - queryset = Upload.objects.filter(user = user['id']) + queryset = Upload.objects.filter(user=user['id']) serializer = UploadSerializer(queryset, many=True) return Response(serializer.data) @@ -322,26 +425,41 @@ def post(self, request): mime_type = type.split(":")[1].split(";")[0] ext = type.split("/")[1].split(";")[0] base64String = file.split(",")[1] - rand = str(random.randint(0,100000)) - temp = open("temp"+rand+"."+ext,"wb") + rand = str(random.randint(0, 100000)) + temp = open("temp"+rand+"."+ext, "wb") temp.write(base64.b64decode(base64String)) file_details = { - 'name':name, - 'mime_type':mime_type, - 'location':"temp"+rand+"."+ext + 'name': name, + 'mime_type': mime_type, + 'location': "temp"+rand+"."+ext } - driveid = uploadToDrive(driveinit(),'1Zd-uN6muFv8jvjUSM7faanEL0Zv6BTwZ',file_details) # Get folder id from config + # Get folder id from config + driveid = uploadToDrive( + driveinit(), + '1Zd-uN6muFv8jvjUSM7faanEL0Zv6BTwZ', + file_details + ) os.remove("temp"+rand+"."+ext) # end of manipulation token = request.headers['Authorization'].split(' ')[1] username = getUserFromJWT(token)['username'] - user = User.objects.get(username = username) - course = Course.objects.get(id = request.data['course']) - upload = Upload(user = user, driveid = driveid, resolved = False, status = request.data['status'], title = name, filetype = request.data['filetype'], course = course) + user = User.objects.get(username=username) + course = Course.objects.get(id=request.data['course']) + upload = Upload( + user=user, + driveid=driveid, + resolved=False, + status=request.data['status'], + title=name, + filetype=request.data['filetype'], + course=course + ) upload.save() - return Response(UploadSerializer(upload).data, status = status.HTTP_200_OK) + return Response( + UploadSerializer(upload).data, + status=status.HTTP_200_OK + ) @classmethod def get_extra_actions(cls): return [] - \ No newline at end of file From 0ccf3a0772415fd266b39ce34f0d947fc0ab0258 Mon Sep 17 00:00:00 2001 From: AyanChoudhary Date: Sun, 29 Mar 2020 17:50:05 +0530 Subject: [PATCH 39/69] chore: add .pylintrc and added packages to requirements.txt --- .pylintrc | 595 +++++++++++++++++++++++++++++++++++++++++++++++ requirements.txt | 5 + 2 files changed, 600 insertions(+) create mode 100644 .pylintrc diff --git a/.pylintrc b/.pylintrc new file mode 100644 index 0000000..2cb9ef5 --- /dev/null +++ b/.pylintrc @@ -0,0 +1,595 @@ +[MASTER] + +# A comma-separated list of package or module names from where C extensions may +# be loaded. Extensions are loading into the active Python interpreter and may +# run arbitrary code. +extension-pkg-whitelist= + +# Specify a score threshold to be exceeded before program exits with error. +fail-under=10 + +# Add files or directories to the blacklist. They should be base names, not +# paths. +ignore=CVS + +# Add files or directories matching the regex patterns to the blacklist. The +# regex matches against base names, not paths. +ignore-patterns= + +# Python code to execute, usually for sys.path manipulation such as +# pygtk.require(). +#init-hook= + +# Use multiple processes to speed up Pylint. Specifying 0 will auto-detect the +# number of processors available to use. +jobs=1 + +# Control the amount of potential inferred values when inferring a single +# object. This can help the performance when dealing with large functions or +# complex, nested conditions. +limit-inference-results=100 + +# List of plugins (as comma separated values of python module names) to load, +# usually to register additional checkers. +load-plugins= + +# Pickle collected data for later comparisons. +persistent=yes + +# When enabled, pylint would attempt to guess common misconfiguration and emit +# user-friendly hints instead of false-positive error messages. +suggestion-mode=yes + +# Allow loading of arbitrary C extensions. Extensions are imported into the +# active Python interpreter and may run arbitrary code. +unsafe-load-any-extension=no + + +[MESSAGES CONTROL] + +# Only show warnings with the listed confidence levels. Leave empty to show +# all. Valid levels: HIGH, INFERENCE, INFERENCE_FAILURE, UNDEFINED. +confidence= + +# Disable the message, report, category or checker with the given id(s). You +# can either give multiple identifiers separated by comma (,) or put this +# option multiple times (only on the command line, not in the configuration +# file where it should appear only once). You can also use "--disable=all" to +# disable everything first and then reenable specific checks. For example, if +# you want to run only the similarities checker, you can use "--disable=all +# --enable=similarities". If you want to run only the classes checker, but have +# no Warning level messages displayed, use "--disable=all --enable=classes +# --disable=W". +disable=print-statement, + parameter-unpacking, + unpacking-in-except, + old-raise-syntax, + backtick, + long-suffix, + old-ne-operator, + old-octal-literal, + import-star-module-level, + non-ascii-bytes-literal, + raw-checker-failed, + bad-inline-option, + locally-disabled, + file-ignored, + suppressed-message, + useless-suppression, + deprecated-pragma, + use-symbolic-message-instead, + apply-builtin, + basestring-builtin, + buffer-builtin, + cmp-builtin, + coerce-builtin, + execfile-builtin, + file-builtin, + long-builtin, + raw_input-builtin, + reduce-builtin, + standarderror-builtin, + unicode-builtin, + xrange-builtin, + coerce-method, + delslice-method, + getslice-method, + setslice-method, + no-absolute-import, + old-division, + dict-iter-method, + dict-view-method, + next-method-called, + metaclass-assignment, + indexing-exception, + raising-string, + reload-builtin, + oct-method, + hex-method, + nonzero-method, + cmp-method, + input-builtin, + round-builtin, + intern-builtin, + unichr-builtin, + map-builtin-not-iterating, + zip-builtin-not-iterating, + range-builtin-not-iterating, + filter-builtin-not-iterating, + using-cmp-argument, + eq-without-hash, + div-method, + idiv-method, + rdiv-method, + exception-message-attribute, + invalid-str-codec, + sys-max-int, + bad-python3-import, + deprecated-string-function, + deprecated-str-translate-call, + deprecated-itertools-function, + deprecated-types-field, + next-method-defined, + dict-items-not-iterating, + dict-keys-not-iterating, + dict-values-not-iterating, + deprecated-operator-function, + deprecated-urllib-function, + xreadlines-attribute, + deprecated-sys-function, + exception-escape, + comprehension-escape + +# Enable the message, report, category or checker with the given id(s). You can +# either give multiple identifier separated by comma (,) or put this option +# multiple time (only on the command line, not in the configuration file where +# it should appear only once). See also the "--disable" option for examples. +enable=c-extension-no-member + + +[REPORTS] + +# Python expression which should return a score less than or equal to 10. You +# have access to the variables 'error', 'warning', 'refactor', and 'convention' +# which contain the number of messages in each category, as well as 'statement' +# which is the total number of statements analyzed. This score is used by the +# global evaluation report (RP0004). +evaluation=10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10) + +# Template used to display messages. This is a python new-style format string +# used to format the message information. See doc for all details. +#msg-template= + +# Set the output format. Available formats are text, parseable, colorized, json +# and msvs (visual studio). You can also give a reporter class, e.g. +# mypackage.mymodule.MyReporterClass. +output-format=text + +# Tells whether to display a full report or only the messages. +reports=no + +# Activate the evaluation score. +score=yes + + +[REFACTORING] + +# Maximum number of nested blocks for function / method body +max-nested-blocks=5 + +# Complete name of functions that never returns. When checking for +# inconsistent-return-statements if a never returning function is called then +# it will be considered as an explicit return statement and no message will be +# printed. +never-returning-functions=sys.exit + + +[LOGGING] + +# Format style used to check logging format string. `old` means using % +# formatting, `new` is for `{}` formatting,and `fstr` is for f-strings. +logging-format-style=old + +# Logging modules to check that the string format arguments are in logging +# function parameter format. +logging-modules=logging + + +[SPELLING] + +# Limits count of emitted suggestions for spelling mistakes. +max-spelling-suggestions=4 + +# Spelling dictionary name. Available dictionaries: none. To make it work, +# install the python-enchant package. +spelling-dict= + +# List of comma separated words that should not be checked. +spelling-ignore-words= + +# A path to a file that contains the private dictionary; one word per line. +spelling-private-dict-file= + +# Tells whether to store unknown words to the private dictionary (see the +# --spelling-private-dict-file option) instead of raising a message. +spelling-store-unknown-words=no + + +[MISCELLANEOUS] + +# List of note tags to take in consideration, separated by a comma. +notes=FIXME, + XXX, + TODO + +# Regular expression of note tags to take in consideration. +#notes-rgx= + + +[TYPECHECK] + +# List of decorators that produce context managers, such as +# contextlib.contextmanager. Add to this list to register other decorators that +# produce valid context managers. +contextmanager-decorators=contextlib.contextmanager + +# List of members which are set dynamically and missed by pylint inference +# system, and so shouldn't trigger E1101 when accessed. Python regular +# expressions are accepted. +generated-members= + +# Tells whether missing members accessed in mixin class should be ignored. A +# mixin class is detected if its name ends with "mixin" (case insensitive). +ignore-mixin-members=yes + +# Tells whether to warn about missing members when the owner of the attribute +# is inferred to be None. +ignore-none=yes + +# This flag controls whether pylint should warn about no-member and similar +# checks whenever an opaque object is returned when inferring. The inference +# can return multiple potential results while evaluating a Python object, but +# some branches might not be evaluated, which results in partial inference. In +# that case, it might be useful to still emit no-member and other checks for +# the rest of the inferred objects. +ignore-on-opaque-inference=yes + +# List of class names for which member attributes should not be checked (useful +# for classes with dynamically set attributes). This supports the use of +# qualified names. +ignored-classes=optparse.Values,thread._local,_thread._local + +# List of module names for which member attributes should not be checked +# (useful for modules/projects where namespaces are manipulated during runtime +# and thus existing member attributes cannot be deduced by static analysis). It +# supports qualified module names, as well as Unix pattern matching. +ignored-modules= + +# Show a hint with possible names when a member name was not found. The aspect +# of finding the hint is based on edit distance. +missing-member-hint=yes + +# The minimum edit distance a name should have in order to be considered a +# similar match for a missing member name. +missing-member-hint-distance=1 + +# The total number of similar names that should be taken in consideration when +# showing a hint for a missing member. +missing-member-max-choices=1 + +# List of decorators that change the signature of a decorated function. +signature-mutators= + + +[VARIABLES] + +# List of additional names supposed to be defined in builtins. Remember that +# you should avoid defining new builtins when possible. +additional-builtins= + +# Tells whether unused global variables should be treated as a violation. +allow-global-unused-variables=yes + +# List of strings which can identify a callback function by name. A callback +# name must start or end with one of those strings. +callbacks=cb_, + _cb + +# A regular expression matching the name of dummy variables (i.e. expected to +# not be used). +dummy-variables-rgx=_+$|(_[a-zA-Z0-9_]*[a-zA-Z0-9]+?$)|dummy|^ignored_|^unused_ + +# Argument names that match this expression will be ignored. Default to name +# with leading underscore. +ignored-argument-names=_.*|^ignored_|^unused_ + +# Tells whether we should check for unused import in __init__ files. +init-import=no + +# List of qualified module names which can have objects that can redefine +# builtins. +redefining-builtins-modules=six.moves,past.builtins,future.builtins,builtins,io + + +[FORMAT] + +# Expected format of line ending, e.g. empty (any line ending), LF or CRLF. +expected-line-ending-format= + +# Regexp for a line that is allowed to be longer than the limit. +ignore-long-lines=^\s*(# )??$ + +# Number of spaces of indent required inside a hanging or continued line. +indent-after-paren=4 + +# String used as indentation unit. This is usually " " (4 spaces) or "\t" (1 +# tab). +indent-string=' ' + +# Maximum number of characters on a single line. +max-line-length=100 + +# Maximum number of lines in a module. +max-module-lines=1000 + +# List of optional constructs for which whitespace checking is disabled. `dict- +# separator` is used to allow tabulation in dicts, etc.: {1 : 1,\n222: 2}. +# `trailing-comma` allows a space between comma and closing bracket: (a, ). +# `empty-line` allows space-only lines. +no-space-check=trailing-comma, + dict-separator + +# Allow the body of a class to be on the same line as the declaration if body +# contains single statement. +single-line-class-stmt=no + +# Allow the body of an if to be on the same line as the test if there is no +# else. +single-line-if-stmt=no + + +[SIMILARITIES] + +# Ignore comments when computing similarities. +ignore-comments=yes + +# Ignore docstrings when computing similarities. +ignore-docstrings=yes + +# Ignore imports when computing similarities. +ignore-imports=no + +# Minimum lines number of a similarity. +min-similarity-lines=4 + + +[BASIC] + +# Naming style matching correct argument names. +argument-naming-style=snake_case + +# Regular expression matching correct argument names. Overrides argument- +# naming-style. +#argument-rgx= + +# Naming style matching correct attribute names. +attr-naming-style=snake_case + +# Regular expression matching correct attribute names. Overrides attr-naming- +# style. +#attr-rgx= + +# Bad variable names which should always be refused, separated by a comma. +bad-names=foo, + bar, + baz, + toto, + tutu, + tata + +# Bad variable names regexes, separated by a comma. If names match any regex, +# they will always be refused +bad-names-rgxs= + +# Naming style matching correct class attribute names. +class-attribute-naming-style=any + +# Regular expression matching correct class attribute names. Overrides class- +# attribute-naming-style. +#class-attribute-rgx= + +# Naming style matching correct class names. +class-naming-style=PascalCase + +# Regular expression matching correct class names. Overrides class-naming- +# style. +#class-rgx= + +# Naming style matching correct constant names. +const-naming-style=UPPER_CASE + +# Regular expression matching correct constant names. Overrides const-naming- +# style. +#const-rgx= + +# Minimum line length for functions/classes that require docstrings, shorter +# ones are exempt. +docstring-min-length=-1 + +# Naming style matching correct function names. +function-naming-style=snake_case + +# Regular expression matching correct function names. Overrides function- +# naming-style. +#function-rgx= + +# Good variable names which should always be accepted, separated by a comma. +good-names=i, + j, + k, + ex, + Run, + _ + +# Good variable names regexes, separated by a comma. If names match any regex, +# they will always be accepted +good-names-rgxs= + +# Include a hint for the correct naming format with invalid-name. +include-naming-hint=no + +# Naming style matching correct inline iteration names. +inlinevar-naming-style=any + +# Regular expression matching correct inline iteration names. Overrides +# inlinevar-naming-style. +#inlinevar-rgx= + +# Naming style matching correct method names. +method-naming-style=snake_case + +# Regular expression matching correct method names. Overrides method-naming- +# style. +#method-rgx= + +# Naming style matching correct module names. +module-naming-style=snake_case + +# Regular expression matching correct module names. Overrides module-naming- +# style. +#module-rgx= + +# Colon-delimited sets of names that determine each other's naming style when +# the name regexes allow several styles. +name-group= + +# Regular expression which should only match function or class names that do +# not require a docstring. +no-docstring-rgx=^_ + +# List of decorators that produce properties, such as abc.abstractproperty. Add +# to this list to register other decorators that produce valid properties. +# These decorators are taken in consideration only for invalid-name. +property-classes=abc.abstractproperty + +# Naming style matching correct variable names. +variable-naming-style=snake_case + +# Regular expression matching correct variable names. Overrides variable- +# naming-style. +#variable-rgx= + + +[STRING] + +# This flag controls whether inconsistent-quotes generates a warning when the +# character used as a quote delimiter is used inconsistently within a module. +check-quote-consistency=no + +# This flag controls whether the implicit-str-concat should generate a warning +# on implicit string concatenation in sequences defined over several lines. +check-str-concat-over-line-jumps=no + + +[IMPORTS] + +# List of modules that can be imported at any level, not just the top level +# one. +allow-any-import-level= + +# Allow wildcard imports from modules that define __all__. +allow-wildcard-with-all=no + +# Analyse import fallback blocks. This can be used to support both Python 2 and +# 3 compatible code, which means that the block might have code that exists +# only in one or another interpreter, leading to false positives when analysed. +analyse-fallback-blocks=no + +# Deprecated modules which should not be used, separated by a comma. +deprecated-modules=optparse,tkinter.tix + +# Create a graph of external dependencies in the given file (report RP0402 must +# not be disabled). +ext-import-graph= + +# Create a graph of every (i.e. internal and external) dependencies in the +# given file (report RP0402 must not be disabled). +import-graph= + +# Create a graph of internal dependencies in the given file (report RP0402 must +# not be disabled). +int-import-graph= + +# Force import order to recognize a module as part of the standard +# compatibility libraries. +known-standard-library= + +# Force import order to recognize a module as part of a third party library. +known-third-party=enchant + +# Couples of modules and preferred modules, separated by a comma. +preferred-modules= + + +[CLASSES] + +# List of method names used to declare (i.e. assign) instance attributes. +defining-attr-methods=__init__, + __new__, + setUp, + __post_init__ + +# List of member names, which should be excluded from the protected access +# warning. +exclude-protected=_asdict, + _fields, + _replace, + _source, + _make + +# List of valid names for the first argument in a class method. +valid-classmethod-first-arg=cls + +# List of valid names for the first argument in a metaclass class method. +valid-metaclass-classmethod-first-arg=cls + + +[DESIGN] + +# Maximum number of arguments for function / method. +max-args=5 + +# Maximum number of attributes for a class (see R0902). +max-attributes=7 + +# Maximum number of boolean expressions in an if statement (see R0916). +max-bool-expr=5 + +# Maximum number of branch for function / method body. +max-branches=12 + +# Maximum number of locals for function / method body. +max-locals=15 + +# Maximum number of parents for a class (see R0901). +max-parents=7 + +# Maximum number of public methods for a class (see R0904). +max-public-methods=20 + +# Maximum number of return / yield for function / method body. +max-returns=6 + +# Maximum number of statements in function / method body. +max-statements=50 + +# Minimum number of public methods for a class (see R0903). +min-public-methods=2 + + +[EXCEPTIONS] + +# Exceptions that will emit a warning when being caught. Defaults to +# "BaseException, Exception". +overgeneral-exceptions=BaseException, + Exception \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 348c1d2..3c8a143 100644 --- a/requirements.txt +++ b/requirements.txt @@ -9,3 +9,8 @@ PyYAML==5.1 requests==2.21.0 sqlparse==0.3.0 urllib3==1.24.1 +django-cors-headers=="*" +google-api-python-client=="*" +google-auth-httplib2=="*" +google-auth-oauthlib=="*" +jwt="*" From ddfdeb3aae75501407afecfdc401913908a24a05 Mon Sep 17 00:00:00 2001 From: AyanChoudhary Date: Sun, 29 Mar 2020 22:00:13 +0530 Subject: [PATCH 40/69] chore: added new dependencies in requirements.txt --- requirements.txt | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/requirements.txt b/requirements.txt index 3c8a143..5c6038d 100644 --- a/requirements.txt +++ b/requirements.txt @@ -9,8 +9,8 @@ PyYAML==5.1 requests==2.21.0 sqlparse==0.3.0 urllib3==1.24.1 -django-cors-headers=="*" -google-api-python-client=="*" -google-auth-httplib2=="*" -google-auth-oauthlib=="*" -jwt="*" +django-cors-headers==3.2.1 +google-api-python-client==1.7.11 +google-auth-httplib2==0.0.3 +google-auth-oauthlib==0.4.1 +pyjwt==1.7.1 From 8e5edef9c4133ca22a62a2308425e9ac20c5a88a Mon Sep 17 00:00:00 2001 From: AyanChoudhary Date: Wed, 8 Apr 2020 01:40:25 +0530 Subject: [PATCH 41/69] refactor: separate user related functions into a separate app --- rest_api/admin.py | 5 - .../migrations/0044_auto_20200407_2005.py | 41 +++ rest_api/models.py | 68 ---- rest_api/serializers.py | 54 --- rest_api/urls.py | 16 - rest_api/views.py | 290 +--------------- studyportal/settings.py | 1 + studyportal/urls.py | 3 +- users/__init__.py | 0 users/admin.py | 7 + users/apps.py | 5 + users/migrations/0001_initial.py | 67 ++++ users/migrations/__init__.py | 0 users/models.py | 77 +++++ users/serializers.py | 57 ++++ users/tests.py | 3 + users/urls.py | 14 + users/views.py | 312 ++++++++++++++++++ 18 files changed, 587 insertions(+), 433 deletions(-) create mode 100644 rest_api/migrations/0044_auto_20200407_2005.py create mode 100644 users/__init__.py create mode 100644 users/admin.py create mode 100644 users/apps.py create mode 100644 users/migrations/0001_initial.py create mode 100644 users/migrations/__init__.py create mode 100644 users/models.py create mode 100644 users/serializers.py create mode 100644 users/tests.py create mode 100644 users/urls.py create mode 100644 users/views.py diff --git a/rest_api/admin.py b/rest_api/admin.py index dde2e13..dfdd284 100644 --- a/rest_api/admin.py +++ b/rest_api/admin.py @@ -1,11 +1,6 @@ from django.contrib import admin from .models import Department, Course, File -from .models import User, FileRequest, CourseRequest, Upload admin.site.register(Department) admin.site.register(Course) admin.site.register(File) -admin.site.register(User) -admin.site.register(FileRequest) -admin.site.register(CourseRequest) -admin.site.register(Upload) diff --git a/rest_api/migrations/0044_auto_20200407_2005.py b/rest_api/migrations/0044_auto_20200407_2005.py new file mode 100644 index 0000000..e36f15e --- /dev/null +++ b/rest_api/migrations/0044_auto_20200407_2005.py @@ -0,0 +1,41 @@ +# Generated by Django 2.2 on 2020-04-07 20:05 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('rest_api', '0043_upload_status'), + ] + + operations = [ + migrations.RemoveField( + model_name='filerequest', + name='course', + ), + migrations.RemoveField( + model_name='filerequest', + name='user', + ), + migrations.RemoveField( + model_name='upload', + name='course', + ), + migrations.RemoveField( + model_name='upload', + name='user', + ), + migrations.DeleteModel( + name='CourseRequest', + ), + migrations.DeleteModel( + name='FileRequest', + ), + migrations.DeleteModel( + name='Upload', + ), + migrations.DeleteModel( + name='User', + ), + ] diff --git a/rest_api/models.py b/rest_api/models.py index d1a1507..efe51f7 100644 --- a/rest_api/models.py +++ b/rest_api/models.py @@ -58,71 +58,3 @@ class File(models.Model): def __str__(self): return self.title - - -USER_ROLE = [ - ('user', 'user'), - ('moderator', 'moderator'), - ('admin', 'admin') -] - - -class User(models.Model): - id = models.AutoField(primary_key=True, editable=False) - falcon_id = models.IntegerField(default=0) - username = models.CharField(max_length=100, default='') - email = models.CharField(max_length=100, default='') - profile_image = models.URLField(max_length=500) - courses = ArrayField(models.IntegerField(), blank=True, default=list) - role = models.CharField(max_length=20, choices=USER_ROLE) - - def __str__(self): - return self.username - - -REQUEST_STATUS = [ - (1, 1), - (2, 2), - (3, 3) -] - - -class FileRequest(models.Model): - id = models.AutoField(primary_key=True, editable=False) - user = models.ForeignKey(User, on_delete=models.CASCADE) - filetype = models.CharField(max_length=20, choices=FILE_TYPE) - status = models.IntegerField(choices=REQUEST_STATUS) - title = models.CharField(max_length=100) - date = models.DateField(auto_now_add=True) - course = models.ForeignKey(Course, on_delete=models.CASCADE) - - def __str__(self): - return self.title - - -class CourseRequest(models.Model): - id = models.AutoField(primary_key=True, editable=False) - user = models.ForeignKey(User, on_delete=models.CASCADE) - status = models.IntegerField(choices=REQUEST_STATUS) - department = models.CharField(max_length=100) - course = models.CharField(max_length=100) - code = models.CharField(max_length=8) - date = models.DateField(auto_now_add=True) - - def __str__(self): - return self.course - - -class Upload(models.Model): - id = models.AutoField(primary_key=True, editable=False) - user = models.ForeignKey(User, on_delete=models.CASCADE) - driveid = models.CharField(max_length=50) - resolved = models.BooleanField(default=False) - status = models.IntegerField(choices=REQUEST_STATUS) - title = models.CharField(max_length=100, default='') - filetype = models.CharField(max_length=20, choices=FILE_TYPE, default='') - date = models.DateField(auto_now_add=True) - course = models.ForeignKey(Course, on_delete=models.CASCADE) - - def __str__(self): - return self.title diff --git a/rest_api/serializers.py b/rest_api/serializers.py index ea3ebed..7d357ec 100644 --- a/rest_api/serializers.py +++ b/rest_api/serializers.py @@ -1,5 +1,4 @@ from rest_api.models import Department, Course, File -from rest_api.models import User, FileRequest, CourseRequest, Upload from rest_framework import serializers @@ -42,56 +41,3 @@ class Meta: 'filetype', 'course' ) - - -class UserSerializer(serializers.ModelSerializer): - - class Meta: - model = User - fields = ( - 'id', - 'falcon_id', - 'username', - 'email', - 'profile_image', - 'courses', - 'role' - ) - - -class FileRequestSerializer(serializers.ModelSerializer): - user = UserSerializer(User.objects.all()) - course = CourseSerializer(Course.objects.all()) - - class Meta: - model = FileRequest - fields = ( - 'id', 'user', 'filetype', 'status', 'title', 'date', 'course' - ) - - -class CourseRequestSerializer(serializers.ModelSerializer): - user = UserSerializer(User.objects.all()) - - class Meta: - model = CourseRequest - fields = ('id', 'user', 'status', 'department', 'course', 'code') - - -class UploadSerializer(serializers.ModelSerializer): - user = UserSerializer(User.objects.all()) - course = CourseSerializer(Course.objects.all()) - - class Meta: - model = Upload - fields = ( - 'id', - 'user', - 'driveid', - 'resolved', - 'status', - 'title', - 'filetype', - 'date', - 'course' - ) diff --git a/rest_api/urls.py b/rest_api/urls.py index 1c6b370..f71dca4 100644 --- a/rest_api/urls.py +++ b/rest_api/urls.py @@ -13,18 +13,6 @@ router.register( r'files', views.FileViewSet, base_name='files' ) -router.register( - r'users', views.UserViewSet, base_name='users' -) -router.register( - r'filerequests', views.FileRequestViewSet, base_name='filerequests' -) -router.register( - r'^courserequests', views.CourseRequestViewSet, base_name='courserequests' -) -router.register( - r'uploads', views.UploadViewSet, base_name='uploads' -) urlpatterns = [ path('test', views.sample, name='sample'), @@ -35,8 +23,4 @@ url(r'^departments', views.DepartmentViewSet.as_view()), url(r'^courses', views.CourseViewSet.as_view()), url(r'^files', views.FileViewSet.as_view()), - url(r'^users', views.UserViewSet.as_view()), - url(r'^filerequests', views.FileRequestViewSet.as_view()), - url(r'^courserequests', views.CourseRequestViewSet.as_view()), - url(r'^uploads', views.UploadViewSet.as_view()), ] diff --git a/rest_api/views.py b/rest_api/views.py index 3cd7478..b798775 100644 --- a/rest_api/views.py +++ b/rest_api/views.py @@ -1,13 +1,10 @@ from django.http import HttpResponse from rest_api.models import Department, Course, File -from rest_api.models import User, FileRequest, CourseRequest, Upload from rest_framework import viewsets, status from rest_framework.views import APIView from rest_framework.response import Response from rest_api.serializers import DepartmentSerializer, CourseSerializer -from rest_api.serializers import FileSerializer, UserSerializer -from rest_api.serializers import FileRequestSerializer, CourseRequestSerializer -from rest_api.serializers import UploadSerializer +from rest_api.serializers import FileSerializer from studyportal.settings import SECRET_KEY from apiclient.http import MediaFileUpload from rest_api.drive import driveinit @@ -178,288 +175,3 @@ def delete(self, request): @classmethod def get_extra_actions(cls): return [] - - -class UserViewSet(APIView): - def get(self, request): - queryset = None - token = request.headers['Authorization'].split(' ')[1] - if token == 'None': - # user = client.get_logged_in_user(config,{'sdslabs': ''}) - user = client.get_user_by_username('darkrider', config) - if user is not None: - queryset = User.objects.filter(falcon_id=user['id']) - serializer = UserSerializer(queryset, many=True) - if serializer.data == []: - data = { - 'falcon_id': user['id'], - 'username': user['username'], - 'email': user['email'], - 'profile_image': user['image_url'], - 'role': 'user' - } - requests.post(NEXUS_URL+'/users', data=data) - queryset = User.objects.filter(falcon_id=user['id']) - serializer = UserSerializer(queryset, many=True) - user = serializer.data[0] - encoded_jwt = jwt.encode( - { - 'username': user['username'], - 'email': user['email'] - }, - SECRET_KEY, - algorithm='HS256' - ) - return Response( - { - 'token': encoded_jwt, - 'user': user, - 'courses': '' - }, - status=status.HTTP_200_OK - ) - else: - user = getUserFromJWT(token) - courselist = user['courses'] - courses = [] - for course in courselist: - course_object = Course.objects.filter(id=course) - if course_object: - coursedata = CourseSerializer( - course_object, - many=True - ).data[0] - courses.append(coursedata) - return Response({'user': user, 'courses': courses}) - - def post(self, request): - data = request.data - query = User.objects.filter(falcon_id=data['falcon_id']) - if not query: - user = User( - falcon_id=data['falcon_id'], - username=data['username'], - email=data['email'], - profile_image=data['profile_image'], - role=data['role'] - ) - user.save() - return Response(user.save(), status=status.HTTP_201_CREATED) - else: - return Response("User already exists") - - def put(self, request): - data = request.data - new_course = data['course'] - token = request.headers['Authorization'].split(' ')[1] - decoded_jwt = jwt.decode(token, SECRET_KEY, algorithms=['HS256']) - query = User.objects.get(username=decoded_jwt['username']) - user = UserSerializer(query).data - if data['action'] == 'add': - if int(new_course) not in user['courses']: - query.courses.append(new_course) - query.save() - return Response('Course added successfully') - else: - return Response('Course already added') - else: - if int(new_course) in user['courses']: - print(int(new_course) in user['courses']) - query.courses.remove(int(new_course)) - query.save() - return Response('Course removed successfully') - else: - return Response('Course does not exist') - - @classmethod - def get_extra_actions(cls): - return [] - - -class FileRequestViewSet(APIView): - def get(self, request): - queryset = FileRequest.objects.filter() - user = self.request.query_params.get('user') - if user is not None: - queryset = FileRequest.objects.filter(user=user) - else: - token = request.headers['Authorization'].split(' ')[1] - if token != 'None': - user = getUserFromJWT(token) - queryset = FileRequest.objects.filter(user=user['id']) - serializer = FileRequestSerializer(queryset, many=True) - return Response(serializer.data) - - def post(self, request): - data = request.data - token = request.headers['Authorization'].split(' ')[1] - decoded_jwt = jwt.decode(token, SECRET_KEY, algorithms=['HS256']) - user = User.objects.get(username=decoded_jwt['username']) - course = Course.objects.get(id=data['course']) - query = FileRequest.objects.filter(title=data['title']) - if not query: - request = FileRequest( - user=user, - filetype=data['filetype'], - status=data['status'], - title=data['title'], - course=course - ) - request.save() - return Response( - FileRequestSerializer(request).data, - status=status.HTTP_201_CREATED - ) - else: - return Response("Request already exists") - - def put(self, request): - data = request.data - query = FileRequest.objects.filter( - id=data['request'] - ).update(status=data['status']) - return Response(query, status=status.HTTP_200_OK) - - def delete(self, request): - requests = FileRequest.objects.get( - id=request.data.get('request') - ).delete() - return Response(requests) - - @classmethod - def get_extra_actions(cls): - return [] - - -class CourseRequestViewSet(APIView): - def get(self, request): - queryset = CourseRequest.objects.filter() - user = self.request.query_params.get('user') - if user is not None: - queryset = CourseRequest.objects.filter(user=user) - else: - token = request.headers['Authorization'].split(' ')[1] - if token != 'None': - user = getUserFromJWT(token) - queryset = CourseRequest.objects.filter(user=user['id']) - serializer = CourseRequestSerializer(queryset, many=True) - return Response(serializer.data) - - def post(self, request): - data = request.data - token = request.headers['Authorization'].split(' ')[1] - decoded_jwt = jwt.decode(token, SECRET_KEY, algorithms=['HS256']) - user = User.objects.get(username=decoded_jwt['username']) - query = CourseRequest.objects.filter( - department=data['department'], - course=data['course'], - code=data['code'] - ) - if not query: - request = CourseRequest( - user=user, - status=data['status'], - department=data['department'], - course=data['course'], - code=data['code'] - ) - request.save() - return Response( - CourseRequestSerializer(request).data, - status=status.HTTP_201_CREATED - ) - else: - return Response("Request already exists") - - def put(self, request): - data = request.data - query = CourseRequest.objects.filter( - id=data['request'] - ).update(status=data['status']) - return Response(query, status=status.HTTP_200_OK) - - def delete(self, request): - requests = CourseRequest.objects.get( - id=request.data.get('request') - ).delete() - return Response(requests) - - @classmethod - def get_extra_actions(cls): - return [] - - -def uploadToDrive(service, folder_id, file_details): - file_metadata = {'name': file_details['name']} - media = MediaFileUpload( - file_details['location'], - mimetype=file_details['mime_type'] - ) - file = service.files().create( - body=file_metadata, - media_body=media, - fields='id' - ).execute() - return file.get('id') - - -class UploadViewSet(APIView): - def get(self, request): - user = self.request.query_params.get('user') - queryset = Upload.objects.filter(resolved=False) - if user is not None: - queryset = Upload.objects.filter(user=user, resolved=False) - else: - token = request.headers['Authorization'].split(' ')[1] - if token != 'None': - user = getUserFromJWT(token) - queryset = Upload.objects.filter(user=user['id']) - serializer = UploadSerializer(queryset, many=True) - return Response(serializer.data) - - def post(self, request): - file = request.data['file'] - name = request.data['name'] - # File manipulation starts here - type = file.split(",")[0] - mime_type = type.split(":")[1].split(";")[0] - ext = type.split("/")[1].split(";")[0] - base64String = file.split(",")[1] - rand = str(random.randint(0, 100000)) - temp = open("temp"+rand+"."+ext, "wb") - temp.write(base64.b64decode(base64String)) - file_details = { - 'name': name, - 'mime_type': mime_type, - 'location': "temp"+rand+"."+ext - } - # Get folder id from config - driveid = uploadToDrive( - driveinit(), - '1Zd-uN6muFv8jvjUSM7faanEL0Zv6BTwZ', - file_details - ) - os.remove("temp"+rand+"."+ext) - # end of manipulation - token = request.headers['Authorization'].split(' ')[1] - username = getUserFromJWT(token)['username'] - user = User.objects.get(username=username) - course = Course.objects.get(id=request.data['course']) - upload = Upload( - user=user, - driveid=driveid, - resolved=False, - status=request.data['status'], - title=name, - filetype=request.data['filetype'], - course=course - ) - upload.save() - return Response( - UploadSerializer(upload).data, - status=status.HTTP_200_OK - ) - - @classmethod - def get_extra_actions(cls): - return [] diff --git a/studyportal/settings.py b/studyportal/settings.py index dd606a1..72f02c0 100644 --- a/studyportal/settings.py +++ b/studyportal/settings.py @@ -53,6 +53,7 @@ 'rest_api', 'rest_framework', 'corsheaders', + 'users', ] MIDDLEWARE = [ diff --git a/studyportal/urls.py b/studyportal/urls.py index c84c59f..e37e969 100644 --- a/studyportal/urls.py +++ b/studyportal/urls.py @@ -18,5 +18,6 @@ urlpatterns = [ path('admin/', admin.site.urls), - path('api/v1/', include('rest_api.urls')) + path('api/v1/', include('rest_api.urls')), + path('api/v1', include('users.urls')) ] diff --git a/users/__init__.py b/users/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/users/admin.py b/users/admin.py new file mode 100644 index 0000000..6a01804 --- /dev/null +++ b/users/admin.py @@ -0,0 +1,7 @@ +from django.contrib import admin +from .models import User, FileRequest, CourseRequest, Upload + +admin.site.register(User) +admin.site.register(FileRequest) +admin.site.register(CourseRequest) +admin.site.register(Upload) diff --git a/users/apps.py b/users/apps.py new file mode 100644 index 0000000..4ce1fab --- /dev/null +++ b/users/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class UsersConfig(AppConfig): + name = 'users' diff --git a/users/migrations/0001_initial.py b/users/migrations/0001_initial.py new file mode 100644 index 0000000..1fcab5d --- /dev/null +++ b/users/migrations/0001_initial.py @@ -0,0 +1,67 @@ +# Generated by Django 2.2 on 2020-04-07 20:05 + +import django.contrib.postgres.fields +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ('rest_api', '0044_auto_20200407_2005'), + ] + + operations = [ + migrations.CreateModel( + name='User', + fields=[ + ('id', models.AutoField(editable=False, primary_key=True, serialize=False)), + ('falcon_id', models.IntegerField(default=0)), + ('username', models.CharField(default='', max_length=100)), + ('email', models.CharField(default='', max_length=100)), + ('profile_image', models.URLField(max_length=500)), + ('courses', django.contrib.postgres.fields.ArrayField(base_field=models.IntegerField(), blank=True, default=list, size=None)), + ('role', models.CharField(choices=[('user', 'user'), ('moderator', 'moderator'), ('admin', 'admin')], max_length=20)), + ], + ), + migrations.CreateModel( + name='Upload', + fields=[ + ('id', models.AutoField(editable=False, primary_key=True, serialize=False)), + ('driveid', models.CharField(max_length=50)), + ('resolved', models.BooleanField(default=False)), + ('status', models.IntegerField(choices=[(1, 1), (2, 2), (3, 3)])), + ('title', models.CharField(default='', max_length=100)), + ('filetype', models.CharField(choices=[('Tutorial', 'tutorials'), ('Book', 'books'), ('Notes', 'notes'), ('Examination Papers', 'exampapers')], default='', max_length=20)), + ('date', models.DateField(auto_now_add=True)), + ('course', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='rest_api.Course')), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='users.User')), + ], + ), + migrations.CreateModel( + name='FileRequest', + fields=[ + ('id', models.AutoField(editable=False, primary_key=True, serialize=False)), + ('filetype', models.CharField(choices=[('Tutorial', 'tutorials'), ('Book', 'books'), ('Notes', 'notes'), ('Examination Papers', 'exampapers')], max_length=20)), + ('status', models.IntegerField(choices=[(1, 1), (2, 2), (3, 3)])), + ('title', models.CharField(max_length=100)), + ('date', models.DateField(auto_now_add=True)), + ('course', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='rest_api.Course')), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='users.User')), + ], + ), + migrations.CreateModel( + name='CourseRequest', + fields=[ + ('id', models.AutoField(editable=False, primary_key=True, serialize=False)), + ('status', models.IntegerField(choices=[(1, 1), (2, 2), (3, 3)])), + ('department', models.CharField(max_length=100)), + ('course', models.CharField(max_length=100)), + ('code', models.CharField(max_length=8)), + ('date', models.DateField(auto_now_add=True)), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='users.User')), + ], + ), + ] diff --git a/users/migrations/__init__.py b/users/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/users/models.py b/users/models.py new file mode 100644 index 0000000..cf5a08b --- /dev/null +++ b/users/models.py @@ -0,0 +1,77 @@ +from django.db import models +from django.contrib.postgres.fields import ArrayField +from rest_api.models import Course + +USER_ROLE = [ + ('user', 'user'), + ('moderator', 'moderator'), + ('admin', 'admin') +] + + +class User(models.Model): + id = models.AutoField(primary_key=True, editable=False) + falcon_id = models.IntegerField(default=0) + username = models.CharField(max_length=100, default='') + email = models.CharField(max_length=100, default='') + profile_image = models.URLField(max_length=500) + courses = ArrayField(models.IntegerField(), blank=True, default=list) + role = models.CharField(max_length=20, choices=USER_ROLE) + + def __str__(self): + return self.username + + +REQUEST_STATUS = [ + (1, 1), + (2, 2), + (3, 3) +] + +FILE_TYPE = [ + ('Tutorial', 'tutorials'), + ('Book', 'books'), + ('Notes', 'notes'), + ('Examination Papers', 'exampapers') +] + + +class FileRequest(models.Model): + id = models.AutoField(primary_key=True, editable=False) + user = models.ForeignKey(User, on_delete=models.CASCADE) + filetype = models.CharField(max_length=20, choices=FILE_TYPE) + status = models.IntegerField(choices=REQUEST_STATUS) + title = models.CharField(max_length=100) + date = models.DateField(auto_now_add=True) + course = models.ForeignKey(Course, on_delete=models.CASCADE) + + def __str__(self): + return self.title + + +class CourseRequest(models.Model): + id = models.AutoField(primary_key=True, editable=False) + user = models.ForeignKey(User, on_delete=models.CASCADE) + status = models.IntegerField(choices=REQUEST_STATUS) + department = models.CharField(max_length=100) + course = models.CharField(max_length=100) + code = models.CharField(max_length=8) + date = models.DateField(auto_now_add=True) + + def __str__(self): + return self.course + + +class Upload(models.Model): + id = models.AutoField(primary_key=True, editable=False) + user = models.ForeignKey(User, on_delete=models.CASCADE) + driveid = models.CharField(max_length=50) + resolved = models.BooleanField(default=False) + status = models.IntegerField(choices=REQUEST_STATUS) + title = models.CharField(max_length=100, default='') + filetype = models.CharField(max_length=20, choices=FILE_TYPE, default='') + date = models.DateField(auto_now_add=True) + course = models.ForeignKey(Course, on_delete=models.CASCADE) + + def __str__(self): + return self.title diff --git a/users/serializers.py b/users/serializers.py new file mode 100644 index 0000000..2215e47 --- /dev/null +++ b/users/serializers.py @@ -0,0 +1,57 @@ +from users.models import User, FileRequest, CourseRequest, Upload +from rest_api.models import Course +from rest_api.serializers import CourseSerializer +from rest_framework import serializers + + +class UserSerializer(serializers.ModelSerializer): + + class Meta: + model = User + fields = ( + 'id', + 'falcon_id', + 'username', + 'email', + 'profile_image', + 'courses', + 'role' + ) + + +class FileRequestSerializer(serializers.ModelSerializer): + user = UserSerializer(User.objects.all()) + course = CourseSerializer(Course.objects.all()) + + class Meta: + model = FileRequest + fields = ( + 'id', 'user', 'filetype', 'status', 'title', 'date', 'course' + ) + + +class CourseRequestSerializer(serializers.ModelSerializer): + user = UserSerializer(User.objects.all()) + + class Meta: + model = CourseRequest + fields = ('id', 'user', 'status', 'department', 'course', 'code') + + +class UploadSerializer(serializers.ModelSerializer): + user = UserSerializer(User.objects.all()) + course = CourseSerializer(Course.objects.all()) + + class Meta: + model = Upload + fields = ( + 'id', + 'user', + 'driveid', + 'resolved', + 'status', + 'title', + 'filetype', + 'date', + 'course' + ) diff --git a/users/tests.py b/users/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/users/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/users/urls.py b/users/urls.py new file mode 100644 index 0000000..f009f52 --- /dev/null +++ b/users/urls.py @@ -0,0 +1,14 @@ +from django.urls import path, include +from rest_framework import routers +from django.conf.urls import url +from users import views + +router = routers.DefaultRouter() + +urlpatterns = [ + path('', include(router.urls)), + url('users', views.UserViewSet.as_view()), + url('filerequests', views.FileRequestViewSet.as_view()), + url('courserequests', views.CourseRequestViewSet.as_view()), + url('uploads', views.UploadViewSet.as_view()), +] diff --git a/users/views.py b/users/views.py new file mode 100644 index 0000000..6f7afcb --- /dev/null +++ b/users/views.py @@ -0,0 +1,312 @@ +from rest_api.models import Course +from users.models import User, FileRequest, CourseRequest, Upload +from rest_framework import viewsets, status +from rest_framework.views import APIView +from rest_framework.response import Response +from rest_api.serializers import CourseSerializer +from users.serializers import UserSerializer +from users.serializers import FileRequestSerializer, CourseRequestSerializer +from users.serializers import UploadSerializer +from studyportal.settings import SECRET_KEY +from apiclient.http import MediaFileUpload +from rest_api.drive import driveinit +from rest_api.config import config +from rest_api import client +import requests +import random +import base64 +import jwt +import os + +NEXUS_URL = "http://nexus.sdslabs.local/api/v1" + + +def getUserFromJWT(token): + decoded_jwt = jwt.decode(token, SECRET_KEY, algorithms=['HS256']) + user = User.objects.get(username=decoded_jwt['username']) + return UserSerializer(user).data + + +class UserViewSet(APIView): + def get(self, request): + queryset = None + token = request.headers['Authorization'].split(' ')[1] + if token == 'None': + # user = client.get_logged_in_user(config,{'sdslabs': ''}) + user = client.get_user_by_username('darkrider', config) + if user is not None: + queryset = User.objects.filter(falcon_id=user['id']) + serializer = UserSerializer(queryset, many=True) + if serializer.data == []: + data = { + 'falcon_id': user['id'], + 'username': user['username'], + 'email': user['email'], + 'profile_image': user['image_url'], + 'role': 'user' + } + requests.post(NEXUS_URL+'/users', data=data) + queryset = User.objects.filter(falcon_id=user['id']) + serializer = UserSerializer(queryset, many=True) + user = serializer.data[0] + encoded_jwt = jwt.encode( + { + 'username': user['username'], + 'email': user['email'] + }, + SECRET_KEY, + algorithm='HS256' + ) + return Response( + { + 'token': encoded_jwt, + 'user': user, + 'courses': '' + }, + status=status.HTTP_200_OK + ) + else: + user = getUserFromJWT(token) + courselist = user['courses'] + courses = [] + for course in courselist: + course_object = Course.objects.filter(id=course) + if course_object: + coursedata = CourseSerializer( + course_object, + many=True + ).data[0] + courses.append(coursedata) + return Response({'user': user, 'courses': courses}) + + def post(self, request): + data = request.data + query = User.objects.filter(falcon_id=data['falcon_id']) + if not query: + user = User( + falcon_id=data['falcon_id'], + username=data['username'], + email=data['email'], + profile_image=data['profile_image'], + role=data['role'] + ) + user.save() + return Response(user.save(), status=status.HTTP_201_CREATED) + else: + return Response("User already exists") + + def put(self, request): + data = request.data + new_course = data['course'] + token = request.headers['Authorization'].split(' ')[1] + decoded_jwt = jwt.decode(token, SECRET_KEY, algorithms=['HS256']) + query = User.objects.get(username=decoded_jwt['username']) + user = UserSerializer(query).data + if data['action'] == 'add': + if int(new_course) not in user['courses']: + query.courses.append(new_course) + query.save() + return Response('Course added successfully') + else: + return Response('Course already added') + else: + if int(new_course) in user['courses']: + print(int(new_course) in user['courses']) + query.courses.remove(int(new_course)) + query.save() + return Response('Course removed successfully') + else: + return Response('Course does not exist') + + @classmethod + def get_extra_actions(cls): + return [] + + +class FileRequestViewSet(APIView): + def get(self, request): + queryset = FileRequest.objects.filter() + user = self.request.query_params.get('user') + if user is not None: + queryset = FileRequest.objects.filter(user=user) + else: + token = request.headers['Authorization'].split(' ')[1] + if token != 'None': + user = getUserFromJWT(token) + queryset = FileRequest.objects.filter(user=user['id']) + serializer = FileRequestSerializer(queryset, many=True) + return Response(serializer.data) + + def post(self, request): + data = request.data + token = request.headers['Authorization'].split(' ')[1] + decoded_jwt = jwt.decode(token, SECRET_KEY, algorithms=['HS256']) + user = User.objects.get(username=decoded_jwt['username']) + course = Course.objects.get(id=data['course']) + query = FileRequest.objects.filter(title=data['title']) + if not query: + request = FileRequest( + user=user, + filetype=data['filetype'], + status=data['status'], + title=data['title'], + course=course + ) + request.save() + return Response( + FileRequestSerializer(request).data, + status=status.HTTP_201_CREATED + ) + else: + return Response("Request already exists") + + def put(self, request): + data = request.data + query = FileRequest.objects.filter( + id=data['request'] + ).update(status=data['status']) + return Response(query, status=status.HTTP_200_OK) + + def delete(self, request): + requests = FileRequest.objects.get( + id=request.data.get('request') + ).delete() + return Response(requests) + + @classmethod + def get_extra_actions(cls): + return [] + + +class CourseRequestViewSet(APIView): + def get(self, request): + queryset = CourseRequest.objects.filter() + user = self.request.query_params.get('user') + if user is not None: + queryset = CourseRequest.objects.filter(user=user) + else: + token = request.headers['Authorization'].split(' ')[1] + if token != 'None': + user = getUserFromJWT(token) + queryset = CourseRequest.objects.filter(user=user['id']) + serializer = CourseRequestSerializer(queryset, many=True) + return Response(serializer.data) + + def post(self, request): + data = request.data + token = request.headers['Authorization'].split(' ')[1] + decoded_jwt = jwt.decode(token, SECRET_KEY, algorithms=['HS256']) + user = User.objects.get(username=decoded_jwt['username']) + query = CourseRequest.objects.filter( + department=data['department'], + course=data['course'], + code=data['code'] + ) + if not query: + request = CourseRequest( + user=user, + status=data['status'], + department=data['department'], + course=data['course'], + code=data['code'] + ) + request.save() + return Response( + CourseRequestSerializer(request).data, + status=status.HTTP_201_CREATED + ) + else: + return Response("Request already exists") + + def put(self, request): + data = request.data + query = CourseRequest.objects.filter( + id=data['request'] + ).update(status=data['status']) + return Response(query, status=status.HTTP_200_OK) + + def delete(self, request): + requests = CourseRequest.objects.get( + id=request.data.get('request') + ).delete() + return Response(requests) + + @classmethod + def get_extra_actions(cls): + return [] + + +def uploadToDrive(service, folder_id, file_details): + file_metadata = {'name': file_details['name']} + media = MediaFileUpload( + file_details['location'], + mimetype=file_details['mime_type'] + ) + file = service.files().create( + body=file_metadata, + media_body=media, + fields='id' + ).execute() + return file.get('id') + + +class UploadViewSet(APIView): + def get(self, request): + user = self.request.query_params.get('user') + queryset = Upload.objects.filter(resolved=False) + if user is not None: + queryset = Upload.objects.filter(user=user, resolved=False) + else: + token = request.headers['Authorization'].split(' ')[1] + if token != 'None': + user = getUserFromJWT(token) + queryset = Upload.objects.filter(user=user['id']) + serializer = UploadSerializer(queryset, many=True) + return Response(serializer.data) + + def post(self, request): + file = request.data['file'] + name = request.data['name'] + # File manipulation starts here + type = file.split(",")[0] + mime_type = type.split(":")[1].split(";")[0] + ext = type.split("/")[1].split(";")[0] + base64String = file.split(",")[1] + rand = str(random.randint(0, 100000)) + temp = open("temp"+rand+"."+ext, "wb") + temp.write(base64.b64decode(base64String)) + file_details = { + 'name': name, + 'mime_type': mime_type, + 'location': "temp"+rand+"."+ext + } + # Get folder id from config + driveid = uploadToDrive( + driveinit(), + '1Zd-uN6muFv8jvjUSM7faanEL0Zv6BTwZ', + file_details + ) + os.remove("temp"+rand+"."+ext) + # end of manipulation + token = request.headers['Authorization'].split(' ')[1] + username = getUserFromJWT(token)['username'] + user = User.objects.get(username=username) + course = Course.objects.get(id=request.data['course']) + upload = Upload( + user=user, + driveid=driveid, + resolved=False, + status=request.data['status'], + title=name, + filetype=request.data['filetype'], + course=course + ) + upload.save() + return Response( + UploadSerializer(upload).data, + status=status.HTTP_200_OK + ) + + @classmethod + def get_extra_actions(cls): + return [] From cbc58f0552e0612268b74c16eeeebce1b0ae9286 Mon Sep 17 00:00:00 2001 From: Mahak Date: Fri, 10 Apr 2020 19:55:50 +0530 Subject: [PATCH 42/69] Implemented search using elasticsearch --- rest_api/documents.py | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 rest_api/documents.py diff --git a/rest_api/documents.py b/rest_api/documents.py new file mode 100644 index 0000000..42e5e68 --- /dev/null +++ b/rest_api/documents.py @@ -0,0 +1,40 @@ +from django_elasticsearch_dsl import Document, Index +from rest_api.models import Course, Department, File + +courses = Index('courses') +departments = Index('departments') +files = Index('files') + +@courses.doc_type +class CourseDocument(Document): + class Django: + model = Course + + fields = [ + 'id', + 'title', + 'code', + ] + +@departments.doc_type +class DepartmentDocument(Document): + class Django: + model = Department + + fields = [ + 'id', + 'title', + 'abbreviation', + ] + +@files.doc_type +class FileDocument(Document): + class Django: + model = File + + fields = [ + 'id', + 'title', + 'fileext', + 'filetype' + ] \ No newline at end of file From 8f9eae836f74514b5fec1da6bf9b88bdc4332926 Mon Sep 17 00:00:00 2001 From: Mahak Date: Fri, 10 Apr 2020 20:31:27 +0530 Subject: [PATCH 43/69] implemented search --- rest_api/urls.py | 1 + rest_api/views.py | 51 +++++++++++++++++++++++++++++++++++++++++ studyportal/settings.py | 7 ++++++ 3 files changed, 59 insertions(+) diff --git a/rest_api/urls.py b/rest_api/urls.py index 1c6b370..909078c 100644 --- a/rest_api/urls.py +++ b/rest_api/urls.py @@ -39,4 +39,5 @@ url(r'^filerequests', views.FileRequestViewSet.as_view()), url(r'^courserequests', views.CourseRequestViewSet.as_view()), url(r'^uploads', views.UploadViewSet.as_view()), + url(r'^search', views.SearchViewSet.as_view()), ] diff --git a/rest_api/views.py b/rest_api/views.py index 3cd7478..5b9ac9a 100644 --- a/rest_api/views.py +++ b/rest_api/views.py @@ -18,6 +18,8 @@ import base64 import jwt import os +import itertools +from rest_api.documents import CourseDocument, DepartmentDocument, FileDocument NEXUS_URL = "http://nexus.sdslabs.local/api/v1" @@ -71,6 +73,7 @@ def get_extra_actions(cls): class CourseViewSet(APIView): def get(self, request): queryset = Course.objects.all() + print(type(queryset)) department = self.request.query_params.get('department') course = self.request.query_params.get('course') if department is not None and course == 'null': @@ -463,3 +466,51 @@ def post(self, request): @classmethod def get_extra_actions(cls): return [] + + +class SearchViewSet(APIView): + def get(self,request): + q = request.query_params.get('q') + + if q: + courses = CourseDocument.search().query("multi_match", query=q, type="phrase_prefix", fields=['title','code']) + departments = DepartmentDocument.search().query("multi_match", query=q, type="phrase_prefix", fields=['title','abbreviation']) + files = FileDocument.search().query("multi_match", query=q, type="phrase_prefix", fields=['title','fileext','filetype']) + + response_courses = courses.execute() + queryset_courses = Course.objects.none() + response_departments = departments.execute() + queryset_departments = Department.objects.none() + response_files = files.execute() + queryset_files = File.objects.none() + + for hit in response_files.hits.hits: + fileId = hit['_source']["id"] + query_files = File.objects.filter(id=fileId) + queryset_files = list(itertools.chain(queryset_files,query_files)) + + for hit in response_departments.hits.hits: + departmentId = hit['_source']["id"] + query_departments = Department.objects.filter(id=departmentId) + queryset_departments = list(itertools.chain(queryset_departments,query_departments)) + + for hit in response_courses.hits.hits: + courseId = hit['_source']["id"] + query = Course.objects.filter(id=courseId) + queryset_courses = list(itertools.chain(queryset_courses,query)) + + serializer_courses = CourseSerializer(queryset_courses,many=True).data + serializer_departments = DepartmentSerializer(queryset_departments,many=True).data + serializer_files = FileSerializer(queryset_files,many=True).data + + return Response({ + "departments" : serializer_departments, + "courses" : serializer_courses, + "files" : serializer_files, + }) + else: + return Response("search query not found") + + @classmethod + def get_extra_actions(cls): + return [] diff --git a/studyportal/settings.py b/studyportal/settings.py index dd606a1..c29e8db 100644 --- a/studyportal/settings.py +++ b/studyportal/settings.py @@ -53,6 +53,7 @@ 'rest_api', 'rest_framework', 'corsheaders', + 'django_elasticsearch_dsl', ] MIDDLEWARE = [ @@ -144,3 +145,9 @@ # https://docs.djangoproject.com/en/2.2/howto/static-files/ STATIC_URL = '/static/' + +ELASTICSEARCH_DSL={ + 'default':{ + 'hosts': 'localhost:9200' + } +} From 2f5cca183c3061ce53044fd94a9931ba21d637fe Mon Sep 17 00:00:00 2001 From: Mahak Date: Fri, 10 Apr 2020 21:48:41 +0530 Subject: [PATCH 44/69] removed unnecessary print statements --- rest_api/views.py | 1 - 1 file changed, 1 deletion(-) diff --git a/rest_api/views.py b/rest_api/views.py index 5b9ac9a..5136184 100644 --- a/rest_api/views.py +++ b/rest_api/views.py @@ -73,7 +73,6 @@ def get_extra_actions(cls): class CourseViewSet(APIView): def get(self, request): queryset = Course.objects.all() - print(type(queryset)) department = self.request.query_params.get('department') course = self.request.query_params.get('course') if department is not None and course == 'null': From d14eba1dda7ef04ca61d113d991d3d6267c9c43b Mon Sep 17 00:00:00 2001 From: Mahak Date: Fri, 10 Apr 2020 21:53:59 +0530 Subject: [PATCH 45/69] Revert "implemented search" This reverts commit 8f9eae836f74514b5fec1da6bf9b88bdc4332926. --- rest_api/urls.py | 1 - rest_api/views.py | 51 ----------------------------------------- studyportal/settings.py | 7 ------ 3 files changed, 59 deletions(-) diff --git a/rest_api/urls.py b/rest_api/urls.py index 909078c..1c6b370 100644 --- a/rest_api/urls.py +++ b/rest_api/urls.py @@ -39,5 +39,4 @@ url(r'^filerequests', views.FileRequestViewSet.as_view()), url(r'^courserequests', views.CourseRequestViewSet.as_view()), url(r'^uploads', views.UploadViewSet.as_view()), - url(r'^search', views.SearchViewSet.as_view()), ] diff --git a/rest_api/views.py b/rest_api/views.py index 5b9ac9a..3cd7478 100644 --- a/rest_api/views.py +++ b/rest_api/views.py @@ -18,8 +18,6 @@ import base64 import jwt import os -import itertools -from rest_api.documents import CourseDocument, DepartmentDocument, FileDocument NEXUS_URL = "http://nexus.sdslabs.local/api/v1" @@ -73,7 +71,6 @@ def get_extra_actions(cls): class CourseViewSet(APIView): def get(self, request): queryset = Course.objects.all() - print(type(queryset)) department = self.request.query_params.get('department') course = self.request.query_params.get('course') if department is not None and course == 'null': @@ -466,51 +463,3 @@ def post(self, request): @classmethod def get_extra_actions(cls): return [] - - -class SearchViewSet(APIView): - def get(self,request): - q = request.query_params.get('q') - - if q: - courses = CourseDocument.search().query("multi_match", query=q, type="phrase_prefix", fields=['title','code']) - departments = DepartmentDocument.search().query("multi_match", query=q, type="phrase_prefix", fields=['title','abbreviation']) - files = FileDocument.search().query("multi_match", query=q, type="phrase_prefix", fields=['title','fileext','filetype']) - - response_courses = courses.execute() - queryset_courses = Course.objects.none() - response_departments = departments.execute() - queryset_departments = Department.objects.none() - response_files = files.execute() - queryset_files = File.objects.none() - - for hit in response_files.hits.hits: - fileId = hit['_source']["id"] - query_files = File.objects.filter(id=fileId) - queryset_files = list(itertools.chain(queryset_files,query_files)) - - for hit in response_departments.hits.hits: - departmentId = hit['_source']["id"] - query_departments = Department.objects.filter(id=departmentId) - queryset_departments = list(itertools.chain(queryset_departments,query_departments)) - - for hit in response_courses.hits.hits: - courseId = hit['_source']["id"] - query = Course.objects.filter(id=courseId) - queryset_courses = list(itertools.chain(queryset_courses,query)) - - serializer_courses = CourseSerializer(queryset_courses,many=True).data - serializer_departments = DepartmentSerializer(queryset_departments,many=True).data - serializer_files = FileSerializer(queryset_files,many=True).data - - return Response({ - "departments" : serializer_departments, - "courses" : serializer_courses, - "files" : serializer_files, - }) - else: - return Response("search query not found") - - @classmethod - def get_extra_actions(cls): - return [] diff --git a/studyportal/settings.py b/studyportal/settings.py index c29e8db..dd606a1 100644 --- a/studyportal/settings.py +++ b/studyportal/settings.py @@ -53,7 +53,6 @@ 'rest_api', 'rest_framework', 'corsheaders', - 'django_elasticsearch_dsl', ] MIDDLEWARE = [ @@ -145,9 +144,3 @@ # https://docs.djangoproject.com/en/2.2/howto/static-files/ STATIC_URL = '/static/' - -ELASTICSEARCH_DSL={ - 'default':{ - 'hosts': 'localhost:9200' - } -} From fa3ade98c1ddbcfbd520f3beff04f1cb52e0e1c7 Mon Sep 17 00:00:00 2001 From: Mahak Date: Fri, 10 Apr 2020 21:54:36 +0530 Subject: [PATCH 46/69] Revert "Implemented search using elasticsearch" This reverts commit cbc58f0552e0612268b74c16eeeebce1b0ae9286. --- rest_api/documents.py | 40 ---------------------------------------- 1 file changed, 40 deletions(-) delete mode 100644 rest_api/documents.py diff --git a/rest_api/documents.py b/rest_api/documents.py deleted file mode 100644 index 42e5e68..0000000 --- a/rest_api/documents.py +++ /dev/null @@ -1,40 +0,0 @@ -from django_elasticsearch_dsl import Document, Index -from rest_api.models import Course, Department, File - -courses = Index('courses') -departments = Index('departments') -files = Index('files') - -@courses.doc_type -class CourseDocument(Document): - class Django: - model = Course - - fields = [ - 'id', - 'title', - 'code', - ] - -@departments.doc_type -class DepartmentDocument(Document): - class Django: - model = Department - - fields = [ - 'id', - 'title', - 'abbreviation', - ] - -@files.doc_type -class FileDocument(Document): - class Django: - model = File - - fields = [ - 'id', - 'title', - 'fileext', - 'filetype' - ] \ No newline at end of file From 39625d4a52b3e5769c11bada74cc1487ade2d233 Mon Sep 17 00:00:00 2001 From: Mahak Date: Fri, 10 Apr 2020 22:45:50 +0530 Subject: [PATCH 47/69] Fixed styling issues and added HTTP status response --- rest_api/documents.py | 14 +++++----- rest_api/views.py | 62 ++++++++++++++++++++++++++--------------- studyportal/settings.py | 8 +++--- 3 files changed, 50 insertions(+), 34 deletions(-) diff --git a/rest_api/documents.py b/rest_api/documents.py index 42e5e68..2701a40 100644 --- a/rest_api/documents.py +++ b/rest_api/documents.py @@ -1,11 +1,11 @@ from django_elasticsearch_dsl import Document, Index from rest_api.models import Course, Department, File -courses = Index('courses') -departments = Index('departments') -files = Index('files') +COURSES = Index('courses') +DEPARTMENTS = Index('departments') +FILES = Index('files') -@courses.doc_type +@COURSES.doc_type class CourseDocument(Document): class Django: model = Course @@ -16,7 +16,7 @@ class Django: 'code', ] -@departments.doc_type +@DEPARTMENTS.doc_type class DepartmentDocument(Document): class Django: model = Department @@ -27,7 +27,7 @@ class Django: 'abbreviation', ] -@files.doc_type +@FILES.doc_type class FileDocument(Document): class Django: model = File @@ -37,4 +37,4 @@ class Django: 'title', 'fileext', 'filetype' - ] \ No newline at end of file + ] diff --git a/rest_api/views.py b/rest_api/views.py index 5136184..a3f8574 100644 --- a/rest_api/views.py +++ b/rest_api/views.py @@ -159,14 +159,14 @@ def post(self, request): query = File.objects.filter(title=data['title']) if not query: file = File( - title=get_title(data['title']), - driveid=data['driveid'], - downloads=0, - size=get_size(int(data['size'])), - course=course, - fileext=get_fileext(data['title']), - filetype=data['filetype'], - finalized=data['finalized'] + title=get_title(data['title']), + driveid=data['driveid'], + downloads=0, + size=get_size(int(data['size'])), + course=course, + fileext=get_fileext(data['title']), + filetype=data['filetype'], + finalized=data['finalized'] ) file.save() return Response(file.save(), status=status.HTTP_201_CREATED) @@ -468,13 +468,28 @@ def get_extra_actions(cls): class SearchViewSet(APIView): - def get(self,request): + def get(self, request): q = request.query_params.get('q') if q: - courses = CourseDocument.search().query("multi_match", query=q, type="phrase_prefix", fields=['title','code']) - departments = DepartmentDocument.search().query("multi_match", query=q, type="phrase_prefix", fields=['title','abbreviation']) - files = FileDocument.search().query("multi_match", query=q, type="phrase_prefix", fields=['title','fileext','filetype']) + courses = CourseDocument.search().query( + "multi_match", + query=q, + type="phrase_prefix", + fields=['title', 'code'] + ) + departments = DepartmentDocument.search().query( + "multi_match", + query=q, + type="phrase_prefix", + fields=['title', 'abbreviation'] + ) + files = FileDocument.search().query( + "multi_match", + query=q, + type="phrase_prefix", + fields=['title', 'fileext', 'filetype'] + ) response_courses = courses.execute() queryset_courses = Course.objects.none() @@ -486,30 +501,31 @@ def get(self,request): for hit in response_files.hits.hits: fileId = hit['_source']["id"] query_files = File.objects.filter(id=fileId) - queryset_files = list(itertools.chain(queryset_files,query_files)) + queryset_files = list(itertools.chain(queryset_files, query_files)) for hit in response_departments.hits.hits: departmentId = hit['_source']["id"] query_departments = Department.objects.filter(id=departmentId) - queryset_departments = list(itertools.chain(queryset_departments,query_departments)) - + queryset_departments = list(itertools.chain( + queryset_departments, query_departments)) + for hit in response_courses.hits.hits: courseId = hit['_source']["id"] query = Course.objects.filter(id=courseId) - queryset_courses = list(itertools.chain(queryset_courses,query)) - - serializer_courses = CourseSerializer(queryset_courses,many=True).data - serializer_departments = DepartmentSerializer(queryset_departments,many=True).data - serializer_files = FileSerializer(queryset_files,many=True).data + queryset_courses = list(itertools.chain(queryset_courses, query)) + + serializer_courses = CourseSerializer(queryset_courses, many=True).data + serializer_departments = DepartmentSerializer(queryset_departments, many=True).data + serializer_files = FileSerializer(queryset_files, many=True).data return Response({ "departments" : serializer_departments, "courses" : serializer_courses, "files" : serializer_files, - }) + }, status = status.HTTP_200_OK) else: - return Response("search query not found") - + return Response(status.HTTP_400_BAD_REQUEST) + @classmethod def get_extra_actions(cls): return [] diff --git a/studyportal/settings.py b/studyportal/settings.py index c29e8db..2dc5e37 100644 --- a/studyportal/settings.py +++ b/studyportal/settings.py @@ -70,8 +70,8 @@ ROOT_URLCONF = 'studyportal.urls' CORS_ORIGIN_WHITELIST = ( - 'http://studyportal.sdslabs.local', - 'http://nexus.sdslabs.local' + 'http://studyportal.sdslabs.local', + 'http://nexus.sdslabs.local' ) TEMPLATES = [ @@ -146,8 +146,8 @@ STATIC_URL = '/static/' -ELASTICSEARCH_DSL={ - 'default':{ +ELASTICSEARCH_DSL = { + 'default': { 'hosts': 'localhost:9200' } } From fb98f1fa06677d041b764fc2b41e2c4efccb5260 Mon Sep 17 00:00:00 2001 From: Mahak Date: Fri, 10 Apr 2020 22:45:50 +0530 Subject: [PATCH 48/69] Fixed styling issues and added HTTP status response --- rest_api/documents.py | 40 +++++++++++++++++++++ rest_api/views.py | 80 ++++++++++++++++++++++++++++++++++++----- studyportal/settings.py | 10 ++++-- 3 files changed, 120 insertions(+), 10 deletions(-) create mode 100644 rest_api/documents.py diff --git a/rest_api/documents.py b/rest_api/documents.py new file mode 100644 index 0000000..2701a40 --- /dev/null +++ b/rest_api/documents.py @@ -0,0 +1,40 @@ +from django_elasticsearch_dsl import Document, Index +from rest_api.models import Course, Department, File + +COURSES = Index('courses') +DEPARTMENTS = Index('departments') +FILES = Index('files') + +@COURSES.doc_type +class CourseDocument(Document): + class Django: + model = Course + + fields = [ + 'id', + 'title', + 'code', + ] + +@DEPARTMENTS.doc_type +class DepartmentDocument(Document): + class Django: + model = Department + + fields = [ + 'id', + 'title', + 'abbreviation', + ] + +@FILES.doc_type +class FileDocument(Document): + class Django: + model = File + + fields = [ + 'id', + 'title', + 'fileext', + 'filetype' + ] diff --git a/rest_api/views.py b/rest_api/views.py index 3cd7478..15d5c44 100644 --- a/rest_api/views.py +++ b/rest_api/views.py @@ -157,14 +157,14 @@ def post(self, request): query = File.objects.filter(title=data['title']) if not query: file = File( - title=get_title(data['title']), - driveid=data['driveid'], - downloads=0, - size=get_size(int(data['size'])), - course=course, - fileext=get_fileext(data['title']), - filetype=data['filetype'], - finalized=data['finalized'] + title=get_title(data['title']), + driveid=data['driveid'], + downloads=0, + size=get_size(int(data['size'])), + course=course, + fileext=get_fileext(data['title']), + filetype=data['filetype'], + finalized=data['finalized'] ) file.save() return Response(file.save(), status=status.HTTP_201_CREATED) @@ -463,3 +463,67 @@ def post(self, request): @classmethod def get_extra_actions(cls): return [] + + +class SearchViewSet(APIView): + def get(self, request): + q = request.query_params.get('q') + + if q: + courses = CourseDocument.search().query( + "multi_match", + query=q, + type="phrase_prefix", + fields=['title', 'code'] + ) + departments = DepartmentDocument.search().query( + "multi_match", + query=q, + type="phrase_prefix", + fields=['title', 'abbreviation'] + ) + files = FileDocument.search().query( + "multi_match", + query=q, + type="phrase_prefix", + fields=['title', 'fileext', 'filetype'] + ) + + response_courses = courses.execute() + queryset_courses = Course.objects.none() + response_departments = departments.execute() + queryset_departments = Department.objects.none() + response_files = files.execute() + queryset_files = File.objects.none() + + for hit in response_files.hits.hits: + fileId = hit['_source']["id"] + query_files = File.objects.filter(id=fileId) + queryset_files = list(itertools.chain(queryset_files, query_files)) + + for hit in response_departments.hits.hits: + departmentId = hit['_source']["id"] + query_departments = Department.objects.filter(id=departmentId) + queryset_departments = list(itertools.chain( + queryset_departments, query_departments)) + + for hit in response_courses.hits.hits: + courseId = hit['_source']["id"] + query = Course.objects.filter(id=courseId) + queryset_courses = list(itertools.chain(queryset_courses, query)) + + serializer_courses = CourseSerializer(queryset_courses, many=True).data + serializer_departments = DepartmentSerializer(queryset_departments, many=True).data + serializer_files = FileSerializer(queryset_files, many=True).data + + return Response({ + "departments" : serializer_departments, + "courses" : serializer_courses, + "files" : serializer_files, + }, status = status.HTTP_200_OK) + else: + return Response(status.HTTP_400_BAD_REQUEST) + + @classmethod + def get_extra_actions(cls): + return [] diff --git a/studyportal/settings.py b/studyportal/settings.py index dd606a1..932664f 100644 --- a/studyportal/settings.py +++ b/studyportal/settings.py @@ -69,8 +69,8 @@ ROOT_URLCONF = 'studyportal.urls' CORS_ORIGIN_WHITELIST = ( - 'http://studyportal.sdslabs.local', - 'http://nexus.sdslabs.local' + 'http://studyportal.sdslabs.local', + 'http://nexus.sdslabs.local' ) TEMPLATES = [ @@ -144,3 +144,9 @@ # https://docs.djangoproject.com/en/2.2/howto/static-files/ STATIC_URL = '/static/' + +ELASTICSEARCH_DSL = { + 'default': { + 'hosts': 'localhost:9200' + } +} From a400ed8600432b49b86baed6254be8163b2e6656 Mon Sep 17 00:00:00 2001 From: Mahak Date: Fri, 10 Apr 2020 23:26:44 +0530 Subject: [PATCH 49/69] added import statements --- rest_api/views.py | 4 +++- studyportal/settings.py | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/rest_api/views.py b/rest_api/views.py index 15d5c44..7083273 100644 --- a/rest_api/views.py +++ b/rest_api/views.py @@ -18,6 +18,8 @@ import base64 import jwt import os +import itertools +from rest_api.documents import CourseDocument, FileDocument, DepartmentDocument NEXUS_URL = "http://nexus.sdslabs.local/api/v1" @@ -520,7 +522,7 @@ def get(self, request): "departments" : serializer_departments, "courses" : serializer_courses, "files" : serializer_files, - }, status = status.HTTP_200_OK) + }, status=status.HTTP_200_OK) else: return Response(status.HTTP_400_BAD_REQUEST) diff --git a/studyportal/settings.py b/studyportal/settings.py index 932664f..2dc5e37 100644 --- a/studyportal/settings.py +++ b/studyportal/settings.py @@ -53,6 +53,7 @@ 'rest_api', 'rest_framework', 'corsheaders', + 'django_elasticsearch_dsl', ] MIDDLEWARE = [ From f365e39e0121caa2e2b96e0e9265bbeda151cc28 Mon Sep 17 00:00:00 2001 From: Mahak Date: Sat, 11 Apr 2020 00:10:33 +0530 Subject: [PATCH 50/69] added setup instructions --- README.md | 11 +++++++++++ requirements.txt | 3 +++ rest_api/urls.py | 1 + 3 files changed, 15 insertions(+) diff --git a/README.md b/README.md index 49ecbd8..1d61333 100644 --- a/README.md +++ b/README.md @@ -64,4 +64,15 @@ This is the backend API repository for Study Portal intended to be used by Study ```bash python manage.py runserver + ``` + +8. Setup and run Elasticsearch + + ```bash + wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.6.2-linux-x86_64.tar.gz + wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.6.2-linux-x86_64.tar.gz.sha512 + shasum -a 512 -c elasticsearch-7.6.2-linux-x86_64.tar.gz.sha512 + tar -xzf elasticsearch-7.6.2-linux-x86_64.tar.gz + cd elasticsearch-7.6.2/bin/ + ./elasticsearch ``` \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 5c6038d..5c75655 100644 --- a/requirements.txt +++ b/requirements.txt @@ -14,3 +14,6 @@ google-api-python-client==1.7.11 google-auth-httplib2==0.0.3 google-auth-oauthlib==0.4.1 pyjwt==1.7.1 +django-elasticsearch-dsl==7.1.1 +elasticsearch==7.6.0 +elasticsearch-dsl==7.1.0 \ No newline at end of file diff --git a/rest_api/urls.py b/rest_api/urls.py index 1c6b370..f60d92f 100644 --- a/rest_api/urls.py +++ b/rest_api/urls.py @@ -39,4 +39,5 @@ url(r'^filerequests', views.FileRequestViewSet.as_view()), url(r'^courserequests', views.CourseRequestViewSet.as_view()), url(r'^uploads', views.UploadViewSet.as_view()), + url(r'^search',views.SearchViewSet.as_view()), ] From 19af5e16405281a11b04df08e1de08f8575b5682 Mon Sep 17 00:00:00 2001 From: Mahak Date: Sat, 11 Apr 2020 22:31:21 +0530 Subject: [PATCH 51/69] added command to initialize indexes --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index 1d61333..a390cc9 100644 --- a/README.md +++ b/README.md @@ -75,4 +75,9 @@ This is the backend API repository for Study Portal intended to be used by Study tar -xzf elasticsearch-7.6.2-linux-x86_64.tar.gz cd elasticsearch-7.6.2/bin/ ./elasticsearch + ``` + In a separate terminal, run the following command + + ```bash + python3 manage.py search_index --rebuild ``` \ No newline at end of file From e1dde8754f539bc2dedee59c2e4c4d6a48266993 Mon Sep 17 00:00:00 2001 From: AyanChoudhary Date: Wed, 8 Apr 2020 01:40:25 +0530 Subject: [PATCH 52/69] refactor: separate user related functions into a separate app --- rest_api/admin.py | 5 - .../migrations/0044_auto_20200407_2005.py | 41 +++ rest_api/models.py | 68 ---- rest_api/serializers.py | 54 --- rest_api/urls.py | 16 - rest_api/views.py | 290 +--------------- studyportal/settings.py | 1 + studyportal/urls.py | 3 +- users/__init__.py | 0 users/admin.py | 7 + users/apps.py | 5 + users/migrations/0001_initial.py | 67 ++++ users/migrations/__init__.py | 0 users/models.py | 77 +++++ users/serializers.py | 57 ++++ users/tests.py | 3 + users/urls.py | 14 + users/views.py | 312 ++++++++++++++++++ 18 files changed, 587 insertions(+), 433 deletions(-) create mode 100644 rest_api/migrations/0044_auto_20200407_2005.py create mode 100644 users/__init__.py create mode 100644 users/admin.py create mode 100644 users/apps.py create mode 100644 users/migrations/0001_initial.py create mode 100644 users/migrations/__init__.py create mode 100644 users/models.py create mode 100644 users/serializers.py create mode 100644 users/tests.py create mode 100644 users/urls.py create mode 100644 users/views.py diff --git a/rest_api/admin.py b/rest_api/admin.py index dde2e13..dfdd284 100644 --- a/rest_api/admin.py +++ b/rest_api/admin.py @@ -1,11 +1,6 @@ from django.contrib import admin from .models import Department, Course, File -from .models import User, FileRequest, CourseRequest, Upload admin.site.register(Department) admin.site.register(Course) admin.site.register(File) -admin.site.register(User) -admin.site.register(FileRequest) -admin.site.register(CourseRequest) -admin.site.register(Upload) diff --git a/rest_api/migrations/0044_auto_20200407_2005.py b/rest_api/migrations/0044_auto_20200407_2005.py new file mode 100644 index 0000000..e36f15e --- /dev/null +++ b/rest_api/migrations/0044_auto_20200407_2005.py @@ -0,0 +1,41 @@ +# Generated by Django 2.2 on 2020-04-07 20:05 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('rest_api', '0043_upload_status'), + ] + + operations = [ + migrations.RemoveField( + model_name='filerequest', + name='course', + ), + migrations.RemoveField( + model_name='filerequest', + name='user', + ), + migrations.RemoveField( + model_name='upload', + name='course', + ), + migrations.RemoveField( + model_name='upload', + name='user', + ), + migrations.DeleteModel( + name='CourseRequest', + ), + migrations.DeleteModel( + name='FileRequest', + ), + migrations.DeleteModel( + name='Upload', + ), + migrations.DeleteModel( + name='User', + ), + ] diff --git a/rest_api/models.py b/rest_api/models.py index d1a1507..efe51f7 100644 --- a/rest_api/models.py +++ b/rest_api/models.py @@ -58,71 +58,3 @@ class File(models.Model): def __str__(self): return self.title - - -USER_ROLE = [ - ('user', 'user'), - ('moderator', 'moderator'), - ('admin', 'admin') -] - - -class User(models.Model): - id = models.AutoField(primary_key=True, editable=False) - falcon_id = models.IntegerField(default=0) - username = models.CharField(max_length=100, default='') - email = models.CharField(max_length=100, default='') - profile_image = models.URLField(max_length=500) - courses = ArrayField(models.IntegerField(), blank=True, default=list) - role = models.CharField(max_length=20, choices=USER_ROLE) - - def __str__(self): - return self.username - - -REQUEST_STATUS = [ - (1, 1), - (2, 2), - (3, 3) -] - - -class FileRequest(models.Model): - id = models.AutoField(primary_key=True, editable=False) - user = models.ForeignKey(User, on_delete=models.CASCADE) - filetype = models.CharField(max_length=20, choices=FILE_TYPE) - status = models.IntegerField(choices=REQUEST_STATUS) - title = models.CharField(max_length=100) - date = models.DateField(auto_now_add=True) - course = models.ForeignKey(Course, on_delete=models.CASCADE) - - def __str__(self): - return self.title - - -class CourseRequest(models.Model): - id = models.AutoField(primary_key=True, editable=False) - user = models.ForeignKey(User, on_delete=models.CASCADE) - status = models.IntegerField(choices=REQUEST_STATUS) - department = models.CharField(max_length=100) - course = models.CharField(max_length=100) - code = models.CharField(max_length=8) - date = models.DateField(auto_now_add=True) - - def __str__(self): - return self.course - - -class Upload(models.Model): - id = models.AutoField(primary_key=True, editable=False) - user = models.ForeignKey(User, on_delete=models.CASCADE) - driveid = models.CharField(max_length=50) - resolved = models.BooleanField(default=False) - status = models.IntegerField(choices=REQUEST_STATUS) - title = models.CharField(max_length=100, default='') - filetype = models.CharField(max_length=20, choices=FILE_TYPE, default='') - date = models.DateField(auto_now_add=True) - course = models.ForeignKey(Course, on_delete=models.CASCADE) - - def __str__(self): - return self.title diff --git a/rest_api/serializers.py b/rest_api/serializers.py index ea3ebed..7d357ec 100644 --- a/rest_api/serializers.py +++ b/rest_api/serializers.py @@ -1,5 +1,4 @@ from rest_api.models import Department, Course, File -from rest_api.models import User, FileRequest, CourseRequest, Upload from rest_framework import serializers @@ -42,56 +41,3 @@ class Meta: 'filetype', 'course' ) - - -class UserSerializer(serializers.ModelSerializer): - - class Meta: - model = User - fields = ( - 'id', - 'falcon_id', - 'username', - 'email', - 'profile_image', - 'courses', - 'role' - ) - - -class FileRequestSerializer(serializers.ModelSerializer): - user = UserSerializer(User.objects.all()) - course = CourseSerializer(Course.objects.all()) - - class Meta: - model = FileRequest - fields = ( - 'id', 'user', 'filetype', 'status', 'title', 'date', 'course' - ) - - -class CourseRequestSerializer(serializers.ModelSerializer): - user = UserSerializer(User.objects.all()) - - class Meta: - model = CourseRequest - fields = ('id', 'user', 'status', 'department', 'course', 'code') - - -class UploadSerializer(serializers.ModelSerializer): - user = UserSerializer(User.objects.all()) - course = CourseSerializer(Course.objects.all()) - - class Meta: - model = Upload - fields = ( - 'id', - 'user', - 'driveid', - 'resolved', - 'status', - 'title', - 'filetype', - 'date', - 'course' - ) diff --git a/rest_api/urls.py b/rest_api/urls.py index f60d92f..a171585 100644 --- a/rest_api/urls.py +++ b/rest_api/urls.py @@ -13,18 +13,6 @@ router.register( r'files', views.FileViewSet, base_name='files' ) -router.register( - r'users', views.UserViewSet, base_name='users' -) -router.register( - r'filerequests', views.FileRequestViewSet, base_name='filerequests' -) -router.register( - r'^courserequests', views.CourseRequestViewSet, base_name='courserequests' -) -router.register( - r'uploads', views.UploadViewSet, base_name='uploads' -) urlpatterns = [ path('test', views.sample, name='sample'), @@ -35,9 +23,5 @@ url(r'^departments', views.DepartmentViewSet.as_view()), url(r'^courses', views.CourseViewSet.as_view()), url(r'^files', views.FileViewSet.as_view()), - url(r'^users', views.UserViewSet.as_view()), - url(r'^filerequests', views.FileRequestViewSet.as_view()), - url(r'^courserequests', views.CourseRequestViewSet.as_view()), - url(r'^uploads', views.UploadViewSet.as_view()), url(r'^search',views.SearchViewSet.as_view()), ] diff --git a/rest_api/views.py b/rest_api/views.py index 7083273..fc1859d 100644 --- a/rest_api/views.py +++ b/rest_api/views.py @@ -1,13 +1,10 @@ from django.http import HttpResponse from rest_api.models import Department, Course, File -from rest_api.models import User, FileRequest, CourseRequest, Upload from rest_framework import viewsets, status from rest_framework.views import APIView from rest_framework.response import Response from rest_api.serializers import DepartmentSerializer, CourseSerializer -from rest_api.serializers import FileSerializer, UserSerializer -from rest_api.serializers import FileRequestSerializer, CourseRequestSerializer -from rest_api.serializers import UploadSerializer +from rest_api.serializers import FileSerializer from studyportal.settings import SECRET_KEY from apiclient.http import MediaFileUpload from rest_api.drive import driveinit @@ -182,291 +179,6 @@ def get_extra_actions(cls): return [] -class UserViewSet(APIView): - def get(self, request): - queryset = None - token = request.headers['Authorization'].split(' ')[1] - if token == 'None': - # user = client.get_logged_in_user(config,{'sdslabs': ''}) - user = client.get_user_by_username('darkrider', config) - if user is not None: - queryset = User.objects.filter(falcon_id=user['id']) - serializer = UserSerializer(queryset, many=True) - if serializer.data == []: - data = { - 'falcon_id': user['id'], - 'username': user['username'], - 'email': user['email'], - 'profile_image': user['image_url'], - 'role': 'user' - } - requests.post(NEXUS_URL+'/users', data=data) - queryset = User.objects.filter(falcon_id=user['id']) - serializer = UserSerializer(queryset, many=True) - user = serializer.data[0] - encoded_jwt = jwt.encode( - { - 'username': user['username'], - 'email': user['email'] - }, - SECRET_KEY, - algorithm='HS256' - ) - return Response( - { - 'token': encoded_jwt, - 'user': user, - 'courses': '' - }, - status=status.HTTP_200_OK - ) - else: - user = getUserFromJWT(token) - courselist = user['courses'] - courses = [] - for course in courselist: - course_object = Course.objects.filter(id=course) - if course_object: - coursedata = CourseSerializer( - course_object, - many=True - ).data[0] - courses.append(coursedata) - return Response({'user': user, 'courses': courses}) - - def post(self, request): - data = request.data - query = User.objects.filter(falcon_id=data['falcon_id']) - if not query: - user = User( - falcon_id=data['falcon_id'], - username=data['username'], - email=data['email'], - profile_image=data['profile_image'], - role=data['role'] - ) - user.save() - return Response(user.save(), status=status.HTTP_201_CREATED) - else: - return Response("User already exists") - - def put(self, request): - data = request.data - new_course = data['course'] - token = request.headers['Authorization'].split(' ')[1] - decoded_jwt = jwt.decode(token, SECRET_KEY, algorithms=['HS256']) - query = User.objects.get(username=decoded_jwt['username']) - user = UserSerializer(query).data - if data['action'] == 'add': - if int(new_course) not in user['courses']: - query.courses.append(new_course) - query.save() - return Response('Course added successfully') - else: - return Response('Course already added') - else: - if int(new_course) in user['courses']: - print(int(new_course) in user['courses']) - query.courses.remove(int(new_course)) - query.save() - return Response('Course removed successfully') - else: - return Response('Course does not exist') - - @classmethod - def get_extra_actions(cls): - return [] - - -class FileRequestViewSet(APIView): - def get(self, request): - queryset = FileRequest.objects.filter() - user = self.request.query_params.get('user') - if user is not None: - queryset = FileRequest.objects.filter(user=user) - else: - token = request.headers['Authorization'].split(' ')[1] - if token != 'None': - user = getUserFromJWT(token) - queryset = FileRequest.objects.filter(user=user['id']) - serializer = FileRequestSerializer(queryset, many=True) - return Response(serializer.data) - - def post(self, request): - data = request.data - token = request.headers['Authorization'].split(' ')[1] - decoded_jwt = jwt.decode(token, SECRET_KEY, algorithms=['HS256']) - user = User.objects.get(username=decoded_jwt['username']) - course = Course.objects.get(id=data['course']) - query = FileRequest.objects.filter(title=data['title']) - if not query: - request = FileRequest( - user=user, - filetype=data['filetype'], - status=data['status'], - title=data['title'], - course=course - ) - request.save() - return Response( - FileRequestSerializer(request).data, - status=status.HTTP_201_CREATED - ) - else: - return Response("Request already exists") - - def put(self, request): - data = request.data - query = FileRequest.objects.filter( - id=data['request'] - ).update(status=data['status']) - return Response(query, status=status.HTTP_200_OK) - - def delete(self, request): - requests = FileRequest.objects.get( - id=request.data.get('request') - ).delete() - return Response(requests) - - @classmethod - def get_extra_actions(cls): - return [] - - -class CourseRequestViewSet(APIView): - def get(self, request): - queryset = CourseRequest.objects.filter() - user = self.request.query_params.get('user') - if user is not None: - queryset = CourseRequest.objects.filter(user=user) - else: - token = request.headers['Authorization'].split(' ')[1] - if token != 'None': - user = getUserFromJWT(token) - queryset = CourseRequest.objects.filter(user=user['id']) - serializer = CourseRequestSerializer(queryset, many=True) - return Response(serializer.data) - - def post(self, request): - data = request.data - token = request.headers['Authorization'].split(' ')[1] - decoded_jwt = jwt.decode(token, SECRET_KEY, algorithms=['HS256']) - user = User.objects.get(username=decoded_jwt['username']) - query = CourseRequest.objects.filter( - department=data['department'], - course=data['course'], - code=data['code'] - ) - if not query: - request = CourseRequest( - user=user, - status=data['status'], - department=data['department'], - course=data['course'], - code=data['code'] - ) - request.save() - return Response( - CourseRequestSerializer(request).data, - status=status.HTTP_201_CREATED - ) - else: - return Response("Request already exists") - - def put(self, request): - data = request.data - query = CourseRequest.objects.filter( - id=data['request'] - ).update(status=data['status']) - return Response(query, status=status.HTTP_200_OK) - - def delete(self, request): - requests = CourseRequest.objects.get( - id=request.data.get('request') - ).delete() - return Response(requests) - - @classmethod - def get_extra_actions(cls): - return [] - - -def uploadToDrive(service, folder_id, file_details): - file_metadata = {'name': file_details['name']} - media = MediaFileUpload( - file_details['location'], - mimetype=file_details['mime_type'] - ) - file = service.files().create( - body=file_metadata, - media_body=media, - fields='id' - ).execute() - return file.get('id') - - -class UploadViewSet(APIView): - def get(self, request): - user = self.request.query_params.get('user') - queryset = Upload.objects.filter(resolved=False) - if user is not None: - queryset = Upload.objects.filter(user=user, resolved=False) - else: - token = request.headers['Authorization'].split(' ')[1] - if token != 'None': - user = getUserFromJWT(token) - queryset = Upload.objects.filter(user=user['id']) - serializer = UploadSerializer(queryset, many=True) - return Response(serializer.data) - - def post(self, request): - file = request.data['file'] - name = request.data['name'] - # File manipulation starts here - type = file.split(",")[0] - mime_type = type.split(":")[1].split(";")[0] - ext = type.split("/")[1].split(";")[0] - base64String = file.split(",")[1] - rand = str(random.randint(0, 100000)) - temp = open("temp"+rand+"."+ext, "wb") - temp.write(base64.b64decode(base64String)) - file_details = { - 'name': name, - 'mime_type': mime_type, - 'location': "temp"+rand+"."+ext - } - # Get folder id from config - driveid = uploadToDrive( - driveinit(), - '1Zd-uN6muFv8jvjUSM7faanEL0Zv6BTwZ', - file_details - ) - os.remove("temp"+rand+"."+ext) - # end of manipulation - token = request.headers['Authorization'].split(' ')[1] - username = getUserFromJWT(token)['username'] - user = User.objects.get(username=username) - course = Course.objects.get(id=request.data['course']) - upload = Upload( - user=user, - driveid=driveid, - resolved=False, - status=request.data['status'], - title=name, - filetype=request.data['filetype'], - course=course - ) - upload.save() - return Response( - UploadSerializer(upload).data, - status=status.HTTP_200_OK - ) - - @classmethod - def get_extra_actions(cls): - return [] - - class SearchViewSet(APIView): def get(self, request): q = request.query_params.get('q') diff --git a/studyportal/settings.py b/studyportal/settings.py index 2dc5e37..26b08fb 100644 --- a/studyportal/settings.py +++ b/studyportal/settings.py @@ -54,6 +54,7 @@ 'rest_framework', 'corsheaders', 'django_elasticsearch_dsl', + 'users', ] MIDDLEWARE = [ diff --git a/studyportal/urls.py b/studyportal/urls.py index c84c59f..e37e969 100644 --- a/studyportal/urls.py +++ b/studyportal/urls.py @@ -18,5 +18,6 @@ urlpatterns = [ path('admin/', admin.site.urls), - path('api/v1/', include('rest_api.urls')) + path('api/v1/', include('rest_api.urls')), + path('api/v1', include('users.urls')) ] diff --git a/users/__init__.py b/users/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/users/admin.py b/users/admin.py new file mode 100644 index 0000000..6a01804 --- /dev/null +++ b/users/admin.py @@ -0,0 +1,7 @@ +from django.contrib import admin +from .models import User, FileRequest, CourseRequest, Upload + +admin.site.register(User) +admin.site.register(FileRequest) +admin.site.register(CourseRequest) +admin.site.register(Upload) diff --git a/users/apps.py b/users/apps.py new file mode 100644 index 0000000..4ce1fab --- /dev/null +++ b/users/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class UsersConfig(AppConfig): + name = 'users' diff --git a/users/migrations/0001_initial.py b/users/migrations/0001_initial.py new file mode 100644 index 0000000..1fcab5d --- /dev/null +++ b/users/migrations/0001_initial.py @@ -0,0 +1,67 @@ +# Generated by Django 2.2 on 2020-04-07 20:05 + +import django.contrib.postgres.fields +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ('rest_api', '0044_auto_20200407_2005'), + ] + + operations = [ + migrations.CreateModel( + name='User', + fields=[ + ('id', models.AutoField(editable=False, primary_key=True, serialize=False)), + ('falcon_id', models.IntegerField(default=0)), + ('username', models.CharField(default='', max_length=100)), + ('email', models.CharField(default='', max_length=100)), + ('profile_image', models.URLField(max_length=500)), + ('courses', django.contrib.postgres.fields.ArrayField(base_field=models.IntegerField(), blank=True, default=list, size=None)), + ('role', models.CharField(choices=[('user', 'user'), ('moderator', 'moderator'), ('admin', 'admin')], max_length=20)), + ], + ), + migrations.CreateModel( + name='Upload', + fields=[ + ('id', models.AutoField(editable=False, primary_key=True, serialize=False)), + ('driveid', models.CharField(max_length=50)), + ('resolved', models.BooleanField(default=False)), + ('status', models.IntegerField(choices=[(1, 1), (2, 2), (3, 3)])), + ('title', models.CharField(default='', max_length=100)), + ('filetype', models.CharField(choices=[('Tutorial', 'tutorials'), ('Book', 'books'), ('Notes', 'notes'), ('Examination Papers', 'exampapers')], default='', max_length=20)), + ('date', models.DateField(auto_now_add=True)), + ('course', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='rest_api.Course')), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='users.User')), + ], + ), + migrations.CreateModel( + name='FileRequest', + fields=[ + ('id', models.AutoField(editable=False, primary_key=True, serialize=False)), + ('filetype', models.CharField(choices=[('Tutorial', 'tutorials'), ('Book', 'books'), ('Notes', 'notes'), ('Examination Papers', 'exampapers')], max_length=20)), + ('status', models.IntegerField(choices=[(1, 1), (2, 2), (3, 3)])), + ('title', models.CharField(max_length=100)), + ('date', models.DateField(auto_now_add=True)), + ('course', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='rest_api.Course')), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='users.User')), + ], + ), + migrations.CreateModel( + name='CourseRequest', + fields=[ + ('id', models.AutoField(editable=False, primary_key=True, serialize=False)), + ('status', models.IntegerField(choices=[(1, 1), (2, 2), (3, 3)])), + ('department', models.CharField(max_length=100)), + ('course', models.CharField(max_length=100)), + ('code', models.CharField(max_length=8)), + ('date', models.DateField(auto_now_add=True)), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='users.User')), + ], + ), + ] diff --git a/users/migrations/__init__.py b/users/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/users/models.py b/users/models.py new file mode 100644 index 0000000..cf5a08b --- /dev/null +++ b/users/models.py @@ -0,0 +1,77 @@ +from django.db import models +from django.contrib.postgres.fields import ArrayField +from rest_api.models import Course + +USER_ROLE = [ + ('user', 'user'), + ('moderator', 'moderator'), + ('admin', 'admin') +] + + +class User(models.Model): + id = models.AutoField(primary_key=True, editable=False) + falcon_id = models.IntegerField(default=0) + username = models.CharField(max_length=100, default='') + email = models.CharField(max_length=100, default='') + profile_image = models.URLField(max_length=500) + courses = ArrayField(models.IntegerField(), blank=True, default=list) + role = models.CharField(max_length=20, choices=USER_ROLE) + + def __str__(self): + return self.username + + +REQUEST_STATUS = [ + (1, 1), + (2, 2), + (3, 3) +] + +FILE_TYPE = [ + ('Tutorial', 'tutorials'), + ('Book', 'books'), + ('Notes', 'notes'), + ('Examination Papers', 'exampapers') +] + + +class FileRequest(models.Model): + id = models.AutoField(primary_key=True, editable=False) + user = models.ForeignKey(User, on_delete=models.CASCADE) + filetype = models.CharField(max_length=20, choices=FILE_TYPE) + status = models.IntegerField(choices=REQUEST_STATUS) + title = models.CharField(max_length=100) + date = models.DateField(auto_now_add=True) + course = models.ForeignKey(Course, on_delete=models.CASCADE) + + def __str__(self): + return self.title + + +class CourseRequest(models.Model): + id = models.AutoField(primary_key=True, editable=False) + user = models.ForeignKey(User, on_delete=models.CASCADE) + status = models.IntegerField(choices=REQUEST_STATUS) + department = models.CharField(max_length=100) + course = models.CharField(max_length=100) + code = models.CharField(max_length=8) + date = models.DateField(auto_now_add=True) + + def __str__(self): + return self.course + + +class Upload(models.Model): + id = models.AutoField(primary_key=True, editable=False) + user = models.ForeignKey(User, on_delete=models.CASCADE) + driveid = models.CharField(max_length=50) + resolved = models.BooleanField(default=False) + status = models.IntegerField(choices=REQUEST_STATUS) + title = models.CharField(max_length=100, default='') + filetype = models.CharField(max_length=20, choices=FILE_TYPE, default='') + date = models.DateField(auto_now_add=True) + course = models.ForeignKey(Course, on_delete=models.CASCADE) + + def __str__(self): + return self.title diff --git a/users/serializers.py b/users/serializers.py new file mode 100644 index 0000000..2215e47 --- /dev/null +++ b/users/serializers.py @@ -0,0 +1,57 @@ +from users.models import User, FileRequest, CourseRequest, Upload +from rest_api.models import Course +from rest_api.serializers import CourseSerializer +from rest_framework import serializers + + +class UserSerializer(serializers.ModelSerializer): + + class Meta: + model = User + fields = ( + 'id', + 'falcon_id', + 'username', + 'email', + 'profile_image', + 'courses', + 'role' + ) + + +class FileRequestSerializer(serializers.ModelSerializer): + user = UserSerializer(User.objects.all()) + course = CourseSerializer(Course.objects.all()) + + class Meta: + model = FileRequest + fields = ( + 'id', 'user', 'filetype', 'status', 'title', 'date', 'course' + ) + + +class CourseRequestSerializer(serializers.ModelSerializer): + user = UserSerializer(User.objects.all()) + + class Meta: + model = CourseRequest + fields = ('id', 'user', 'status', 'department', 'course', 'code') + + +class UploadSerializer(serializers.ModelSerializer): + user = UserSerializer(User.objects.all()) + course = CourseSerializer(Course.objects.all()) + + class Meta: + model = Upload + fields = ( + 'id', + 'user', + 'driveid', + 'resolved', + 'status', + 'title', + 'filetype', + 'date', + 'course' + ) diff --git a/users/tests.py b/users/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/users/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/users/urls.py b/users/urls.py new file mode 100644 index 0000000..f009f52 --- /dev/null +++ b/users/urls.py @@ -0,0 +1,14 @@ +from django.urls import path, include +from rest_framework import routers +from django.conf.urls import url +from users import views + +router = routers.DefaultRouter() + +urlpatterns = [ + path('', include(router.urls)), + url('users', views.UserViewSet.as_view()), + url('filerequests', views.FileRequestViewSet.as_view()), + url('courserequests', views.CourseRequestViewSet.as_view()), + url('uploads', views.UploadViewSet.as_view()), +] diff --git a/users/views.py b/users/views.py new file mode 100644 index 0000000..6f7afcb --- /dev/null +++ b/users/views.py @@ -0,0 +1,312 @@ +from rest_api.models import Course +from users.models import User, FileRequest, CourseRequest, Upload +from rest_framework import viewsets, status +from rest_framework.views import APIView +from rest_framework.response import Response +from rest_api.serializers import CourseSerializer +from users.serializers import UserSerializer +from users.serializers import FileRequestSerializer, CourseRequestSerializer +from users.serializers import UploadSerializer +from studyportal.settings import SECRET_KEY +from apiclient.http import MediaFileUpload +from rest_api.drive import driveinit +from rest_api.config import config +from rest_api import client +import requests +import random +import base64 +import jwt +import os + +NEXUS_URL = "http://nexus.sdslabs.local/api/v1" + + +def getUserFromJWT(token): + decoded_jwt = jwt.decode(token, SECRET_KEY, algorithms=['HS256']) + user = User.objects.get(username=decoded_jwt['username']) + return UserSerializer(user).data + + +class UserViewSet(APIView): + def get(self, request): + queryset = None + token = request.headers['Authorization'].split(' ')[1] + if token == 'None': + # user = client.get_logged_in_user(config,{'sdslabs': ''}) + user = client.get_user_by_username('darkrider', config) + if user is not None: + queryset = User.objects.filter(falcon_id=user['id']) + serializer = UserSerializer(queryset, many=True) + if serializer.data == []: + data = { + 'falcon_id': user['id'], + 'username': user['username'], + 'email': user['email'], + 'profile_image': user['image_url'], + 'role': 'user' + } + requests.post(NEXUS_URL+'/users', data=data) + queryset = User.objects.filter(falcon_id=user['id']) + serializer = UserSerializer(queryset, many=True) + user = serializer.data[0] + encoded_jwt = jwt.encode( + { + 'username': user['username'], + 'email': user['email'] + }, + SECRET_KEY, + algorithm='HS256' + ) + return Response( + { + 'token': encoded_jwt, + 'user': user, + 'courses': '' + }, + status=status.HTTP_200_OK + ) + else: + user = getUserFromJWT(token) + courselist = user['courses'] + courses = [] + for course in courselist: + course_object = Course.objects.filter(id=course) + if course_object: + coursedata = CourseSerializer( + course_object, + many=True + ).data[0] + courses.append(coursedata) + return Response({'user': user, 'courses': courses}) + + def post(self, request): + data = request.data + query = User.objects.filter(falcon_id=data['falcon_id']) + if not query: + user = User( + falcon_id=data['falcon_id'], + username=data['username'], + email=data['email'], + profile_image=data['profile_image'], + role=data['role'] + ) + user.save() + return Response(user.save(), status=status.HTTP_201_CREATED) + else: + return Response("User already exists") + + def put(self, request): + data = request.data + new_course = data['course'] + token = request.headers['Authorization'].split(' ')[1] + decoded_jwt = jwt.decode(token, SECRET_KEY, algorithms=['HS256']) + query = User.objects.get(username=decoded_jwt['username']) + user = UserSerializer(query).data + if data['action'] == 'add': + if int(new_course) not in user['courses']: + query.courses.append(new_course) + query.save() + return Response('Course added successfully') + else: + return Response('Course already added') + else: + if int(new_course) in user['courses']: + print(int(new_course) in user['courses']) + query.courses.remove(int(new_course)) + query.save() + return Response('Course removed successfully') + else: + return Response('Course does not exist') + + @classmethod + def get_extra_actions(cls): + return [] + + +class FileRequestViewSet(APIView): + def get(self, request): + queryset = FileRequest.objects.filter() + user = self.request.query_params.get('user') + if user is not None: + queryset = FileRequest.objects.filter(user=user) + else: + token = request.headers['Authorization'].split(' ')[1] + if token != 'None': + user = getUserFromJWT(token) + queryset = FileRequest.objects.filter(user=user['id']) + serializer = FileRequestSerializer(queryset, many=True) + return Response(serializer.data) + + def post(self, request): + data = request.data + token = request.headers['Authorization'].split(' ')[1] + decoded_jwt = jwt.decode(token, SECRET_KEY, algorithms=['HS256']) + user = User.objects.get(username=decoded_jwt['username']) + course = Course.objects.get(id=data['course']) + query = FileRequest.objects.filter(title=data['title']) + if not query: + request = FileRequest( + user=user, + filetype=data['filetype'], + status=data['status'], + title=data['title'], + course=course + ) + request.save() + return Response( + FileRequestSerializer(request).data, + status=status.HTTP_201_CREATED + ) + else: + return Response("Request already exists") + + def put(self, request): + data = request.data + query = FileRequest.objects.filter( + id=data['request'] + ).update(status=data['status']) + return Response(query, status=status.HTTP_200_OK) + + def delete(self, request): + requests = FileRequest.objects.get( + id=request.data.get('request') + ).delete() + return Response(requests) + + @classmethod + def get_extra_actions(cls): + return [] + + +class CourseRequestViewSet(APIView): + def get(self, request): + queryset = CourseRequest.objects.filter() + user = self.request.query_params.get('user') + if user is not None: + queryset = CourseRequest.objects.filter(user=user) + else: + token = request.headers['Authorization'].split(' ')[1] + if token != 'None': + user = getUserFromJWT(token) + queryset = CourseRequest.objects.filter(user=user['id']) + serializer = CourseRequestSerializer(queryset, many=True) + return Response(serializer.data) + + def post(self, request): + data = request.data + token = request.headers['Authorization'].split(' ')[1] + decoded_jwt = jwt.decode(token, SECRET_KEY, algorithms=['HS256']) + user = User.objects.get(username=decoded_jwt['username']) + query = CourseRequest.objects.filter( + department=data['department'], + course=data['course'], + code=data['code'] + ) + if not query: + request = CourseRequest( + user=user, + status=data['status'], + department=data['department'], + course=data['course'], + code=data['code'] + ) + request.save() + return Response( + CourseRequestSerializer(request).data, + status=status.HTTP_201_CREATED + ) + else: + return Response("Request already exists") + + def put(self, request): + data = request.data + query = CourseRequest.objects.filter( + id=data['request'] + ).update(status=data['status']) + return Response(query, status=status.HTTP_200_OK) + + def delete(self, request): + requests = CourseRequest.objects.get( + id=request.data.get('request') + ).delete() + return Response(requests) + + @classmethod + def get_extra_actions(cls): + return [] + + +def uploadToDrive(service, folder_id, file_details): + file_metadata = {'name': file_details['name']} + media = MediaFileUpload( + file_details['location'], + mimetype=file_details['mime_type'] + ) + file = service.files().create( + body=file_metadata, + media_body=media, + fields='id' + ).execute() + return file.get('id') + + +class UploadViewSet(APIView): + def get(self, request): + user = self.request.query_params.get('user') + queryset = Upload.objects.filter(resolved=False) + if user is not None: + queryset = Upload.objects.filter(user=user, resolved=False) + else: + token = request.headers['Authorization'].split(' ')[1] + if token != 'None': + user = getUserFromJWT(token) + queryset = Upload.objects.filter(user=user['id']) + serializer = UploadSerializer(queryset, many=True) + return Response(serializer.data) + + def post(self, request): + file = request.data['file'] + name = request.data['name'] + # File manipulation starts here + type = file.split(",")[0] + mime_type = type.split(":")[1].split(";")[0] + ext = type.split("/")[1].split(";")[0] + base64String = file.split(",")[1] + rand = str(random.randint(0, 100000)) + temp = open("temp"+rand+"."+ext, "wb") + temp.write(base64.b64decode(base64String)) + file_details = { + 'name': name, + 'mime_type': mime_type, + 'location': "temp"+rand+"."+ext + } + # Get folder id from config + driveid = uploadToDrive( + driveinit(), + '1Zd-uN6muFv8jvjUSM7faanEL0Zv6BTwZ', + file_details + ) + os.remove("temp"+rand+"."+ext) + # end of manipulation + token = request.headers['Authorization'].split(' ')[1] + username = getUserFromJWT(token)['username'] + user = User.objects.get(username=username) + course = Course.objects.get(id=request.data['course']) + upload = Upload( + user=user, + driveid=driveid, + resolved=False, + status=request.data['status'], + title=name, + filetype=request.data['filetype'], + course=course + ) + upload.save() + return Response( + UploadSerializer(upload).data, + status=status.HTTP_200_OK + ) + + @classmethod + def get_extra_actions(cls): + return [] From ca89b7699063f4aebbc6ecda1fab581ddfc5d780 Mon Sep 17 00:00:00 2001 From: AyanChoudhary Date: Sun, 12 Apr 2020 11:46:32 +0530 Subject: [PATCH 53/69] feat: rebase search and remove unnecessary url registers --- rest_api/urls.py | 11 +---------- studyportal/urls.py | 2 +- users/urls.py | 8 ++++---- 3 files changed, 6 insertions(+), 15 deletions(-) diff --git a/rest_api/urls.py b/rest_api/urls.py index a171585..178be86 100644 --- a/rest_api/urls.py +++ b/rest_api/urls.py @@ -4,15 +4,6 @@ from rest_api import views router = routers.DefaultRouter() -router.register( - r'departments', views.DepartmentViewSet, base_name='departments' -) -router.register( - r'courses', views.CourseViewSet, base_name='courses' -) -router.register( - r'files', views.FileViewSet, base_name='files' -) urlpatterns = [ path('test', views.sample, name='sample'), @@ -23,5 +14,5 @@ url(r'^departments', views.DepartmentViewSet.as_view()), url(r'^courses', views.CourseViewSet.as_view()), url(r'^files', views.FileViewSet.as_view()), - url(r'^search',views.SearchViewSet.as_view()), + url(r'^search', views.SearchViewSet.as_view()), ] diff --git a/studyportal/urls.py b/studyportal/urls.py index e37e969..e0f50aa 100644 --- a/studyportal/urls.py +++ b/studyportal/urls.py @@ -19,5 +19,5 @@ urlpatterns = [ path('admin/', admin.site.urls), path('api/v1/', include('rest_api.urls')), - path('api/v1', include('users.urls')) + path('api/v1/', include('users.urls')) ] diff --git a/users/urls.py b/users/urls.py index f009f52..4898738 100644 --- a/users/urls.py +++ b/users/urls.py @@ -7,8 +7,8 @@ urlpatterns = [ path('', include(router.urls)), - url('users', views.UserViewSet.as_view()), - url('filerequests', views.FileRequestViewSet.as_view()), - url('courserequests', views.CourseRequestViewSet.as_view()), - url('uploads', views.UploadViewSet.as_view()), + url(r'^users', views.UserViewSet.as_view()), + url(r'^filerequests', views.FileRequestViewSet.as_view()), + url(r'^courserequests', views.CourseRequestViewSet.as_view()), + url(r'^uploads', views.UploadViewSet.as_view()), ] From 81762de42244243634d3663591a808b9807f2faa Mon Sep 17 00:00:00 2001 From: AyanChoudhary Date: Sun, 12 Apr 2020 14:46:54 +0530 Subject: [PATCH 54/69] feat: configure elastic search and django server to docker --- Dockerfile | 24 +++++++++++++++++ docker-compose.yml | 58 +++++++++++++++++++++++++++++++++++++++++ run.sh | 11 ++++++++ studyportal/settings.py | 2 +- 4 files changed, 94 insertions(+), 1 deletion(-) create mode 100644 Dockerfile create mode 100644 docker-compose.yml create mode 100755 run.sh diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..4d5b83d --- /dev/null +++ b/Dockerfile @@ -0,0 +1,24 @@ +FROM python:3.7-stretch + +ENV PYTHONBUFFERED 1 + +RUN apt-get update \ + && apt-get install libexempi3 \ + && mkdir /cccatalog-api \ + && mkdir -p /var/log/studyportal.log + +WORKDIR /studyportal-nexus + +# Install Python dependency management tools +RUN pip install --upgrade pip \ + && pip install --upgrade setuptools \ + && pip install --upgrade pipenv + +# Copy the requirements.txt into the container +COPY requirements.txt /studyportal-nexus/ + +# Install the dependencies system-wide +# TODO: Use build args to avoid installing dev dependencies in production +RUN pip install -r requirements.txt + +ENTRYPOINT ["./run.sh"] diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..efaac12 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,58 @@ +version: '3' +services: + db: + image: postgres:10.3-alpine + ports: + - "5432:5432" + environment: + POSTGRES_DB: "studyportal" + POSTGRES_USER: "studyportal" + POSTGRES_PASSWORD: "studyportal" + POSTGRES_HOST: "0.0.0.0" + healthcheck: + test: "pg_isready -U studyportal -d studyportal" + + es: + image: docker.elastic.co/elasticsearch/elasticsearch:7.1.0 + ports: + - "9200:9200" + environment: + # disable XPack + # https://www.elastic.co/guide/en/elasticsearch/reference/5.3/docker.html#_security_note + - xpack.security.enabled=false + - discovery.type=single-node + healthcheck: + test: ["CMD-SHELL", "curl -si -XGET 'localhost:9200/_cluster/health?pretty' | grep -qE 'yellow|green'"] + interval: 10s + timeout: 60s + retries: 10 + ulimits: + nofile: + soft: 65536 + hard: 65536 + + web: + build: ./ + image: studyportal-nexus + command: bash -c 'python manage.py migrate && python manage.py search_index --rebuild -f && python manage.py runserver 0.0.0.0:8005' + container_name: studyportal-nexus + volumes: + - ".:/studyportal-nexus:rw" + ports: + - "8005:8005" + depends_on: + - db + - es + environment: + DJANGO_DATABASE_NAME: "studyportal" + DJANGO_DATABASE_USER: "studyportal" + DJANGO_DATABASE_PASSWORD: "studyportal" + DJANGO_DATABASE_HOST: "db" + PYTHONUNBUFFERED: "0" + DJANGO_DEBUG_ENABLED: "True" + ELASTICSEARCH_URL: "es" + ELASTICSEARCH_PORT: "9200" + DISABLE_GLOBAL_THROTTLING: "True" + ROOT_SHORTENING_URL: "localhost:8005" + stdin_open: true + tty: true diff --git a/run.sh b/run.sh new file mode 100755 index 0000000..a6cfef7 --- /dev/null +++ b/run.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +set -e + +while [[ "$(curl --insecure -s -o /dev/null -w '%{http_code}' http://es:9200/)" != "200" ]] +do + echo "Waiting for Elasticsearch connection..." + sleep 2 +done + +exec "$@" diff --git a/studyportal/settings.py b/studyportal/settings.py index 26b08fb..bacd07c 100644 --- a/studyportal/settings.py +++ b/studyportal/settings.py @@ -149,6 +149,6 @@ ELASTICSEARCH_DSL = { 'default': { - 'hosts': 'localhost:9200' + 'hosts': 'es:9200' } } From 7cc2754b043b5d832e9ee558182ef20843346b9d Mon Sep 17 00:00:00 2001 From: AyanChoudhary Date: Mon, 13 Apr 2020 01:55:21 +0530 Subject: [PATCH 55/69] chore: added test data and ingestion script --- dump.sql | 2538 +++++++++++++++++++++++++++++++++++++++++++++++++++++ ingest.sh | 4 + 2 files changed, 2542 insertions(+) create mode 100644 dump.sql create mode 100755 ingest.sh diff --git a/dump.sql b/dump.sql new file mode 100644 index 0000000..9d62dd7 --- /dev/null +++ b/dump.sql @@ -0,0 +1,2538 @@ +-- +-- PostgreSQL database dump +-- + +-- Dumped from database version 11.6 (Ubuntu 11.6-1.pgdg18.04+1) +-- Dumped by pg_dump version 12.1 (Ubuntu 12.1-1.pgdg18.04+1) + +SET statement_timeout = 0; +SET lock_timeout = 0; +SET idle_in_transaction_session_timeout = 0; +SET client_encoding = 'UTF8'; +SET standard_conforming_strings = on; +SELECT pg_catalog.set_config('search_path', '', false); +SET check_function_bodies = false; +SET xmloption = content; +SET client_min_messages = warning; +SET row_security = off; + +-- +-- Data for Name: auth_group; Type: TABLE DATA; Schema: public; Owner: ayan +-- + +COPY public.auth_group (id, name) FROM stdin; +\. + + +-- +-- Data for Name: django_content_type; Type: TABLE DATA; Schema: public; Owner: ayan +-- + +COPY public.django_content_type (id, app_label, model) FROM stdin; +1 admin logentry +2 auth permission +3 auth group +4 auth user +5 contenttypes contenttype +6 sessions session +7 rest_api department +8 rest_api course +9 corsheaders corsmodel +10 rest_api file +12 rest_api user +13 rest_api upload +11 rest_api filerequest +14 rest_api courserequest +15 users courserequest +16 users filerequest +17 users upload +18 users user +\. + + +-- +-- Data for Name: auth_permission; Type: TABLE DATA; Schema: public; Owner: ayan +-- + +COPY public.auth_permission (id, name, content_type_id, codename) FROM stdin; +1 Can add log entry 1 add_logentry +2 Can change log entry 1 change_logentry +3 Can delete log entry 1 delete_logentry +4 Can view log entry 1 view_logentry +5 Can add permission 2 add_permission +6 Can change permission 2 change_permission +7 Can delete permission 2 delete_permission +8 Can view permission 2 view_permission +9 Can add group 3 add_group +10 Can change group 3 change_group +11 Can delete group 3 delete_group +12 Can view group 3 view_group +13 Can add user 4 add_user +14 Can change user 4 change_user +15 Can delete user 4 delete_user +16 Can view user 4 view_user +17 Can add content type 5 add_contenttype +18 Can change content type 5 change_contenttype +19 Can delete content type 5 delete_contenttype +20 Can view content type 5 view_contenttype +21 Can add session 6 add_session +22 Can change session 6 change_session +23 Can delete session 6 delete_session +24 Can view session 6 view_session +25 Can add department 7 add_department +26 Can change department 7 change_department +27 Can delete department 7 delete_department +28 Can view department 7 view_department +29 Can add course 8 add_course +30 Can change course 8 change_course +31 Can delete course 8 delete_course +32 Can view course 8 view_course +33 Can add cors model 9 add_corsmodel +34 Can change cors model 9 change_corsmodel +35 Can delete cors model 9 delete_corsmodel +36 Can view cors model 9 view_corsmodel +37 Can add file 10 add_file +38 Can change file 10 change_file +39 Can delete file 10 delete_file +40 Can view file 10 view_file +41 Can add request 11 add_request +42 Can change request 11 change_request +43 Can delete request 11 delete_request +44 Can view request 11 view_request +45 Can add user 12 add_user +46 Can change user 12 change_user +47 Can delete user 12 delete_user +48 Can view user 12 view_user +49 Can add upload 13 add_upload +50 Can change upload 13 change_upload +51 Can delete upload 13 delete_upload +52 Can view upload 13 view_upload +53 Can add file request 11 add_filerequest +54 Can change file request 11 change_filerequest +55 Can delete file request 11 delete_filerequest +56 Can view file request 11 view_filerequest +57 Can add course request 14 add_courserequest +58 Can change course request 14 change_courserequest +59 Can delete course request 14 delete_courserequest +60 Can view course request 14 view_courserequest +61 Can add course request 15 add_courserequest +62 Can change course request 15 change_courserequest +63 Can delete course request 15 delete_courserequest +64 Can view course request 15 view_courserequest +65 Can add file request 16 add_filerequest +66 Can change file request 16 change_filerequest +67 Can delete file request 16 delete_filerequest +68 Can view file request 16 view_filerequest +69 Can add upload 17 add_upload +70 Can change upload 17 change_upload +71 Can delete upload 17 delete_upload +72 Can view upload 17 view_upload +73 Can add user 18 add_user +74 Can change user 18 change_user +75 Can delete user 18 delete_user +76 Can view user 18 view_user +\. + + +-- +-- Data for Name: auth_group_permissions; Type: TABLE DATA; Schema: public; Owner: ayan +-- + +COPY public.auth_group_permissions (id, group_id, permission_id) FROM stdin; +\. + + +-- +-- Data for Name: auth_user; Type: TABLE DATA; Schema: public; Owner: ayan +-- + +COPY public.auth_user (id, password, last_login, is_superuser, username, first_name, last_name, email, is_staff, is_active, date_joined) FROM stdin; +1 pbkdf2_sha256$150000$phcDEV5DES3Y$d98eD9VI70H8qv5HmkBTSVWWftepVUtHPJEH3dO4iOw= 2020-03-29 13:21:41.336611+05:30 t studyportal darkrider251099@gmail.com t t 2019-08-31 03:36:10.702663+05:30 +\. + + +-- +-- Data for Name: auth_user_groups; Type: TABLE DATA; Schema: public; Owner: ayan +-- + +COPY public.auth_user_groups (id, user_id, group_id) FROM stdin; +\. + + +-- +-- Data for Name: auth_user_user_permissions; Type: TABLE DATA; Schema: public; Owner: ayan +-- + +COPY public.auth_user_user_permissions (id, user_id, permission_id) FROM stdin; +\. + + +-- +-- Data for Name: corsheaders_corsmodel; Type: TABLE DATA; Schema: public; Owner: ayan +-- + +COPY public.corsheaders_corsmodel (id, cors) FROM stdin; +\. + + +-- +-- Data for Name: django_admin_log; Type: TABLE DATA; Schema: public; Owner: ayan +-- + +COPY public.django_admin_log (id, action_time, object_id, object_repr, action_flag, change_message, content_type_id, user_id) FROM stdin; +1 2019-08-31 03:36:50.287472+05:30 1 Electrical Engineering 1 [{"added": {}}] 7 1 +2 2019-08-31 03:37:04.31955+05:30 1 Network Theory 1 [{"added": {}}] 8 1 +3 2019-08-31 03:54:25.119222+05:30 1 Electrical Engineering 2 [] 7 1 +4 2019-08-31 03:54:31.322563+05:30 1 Network Theory 2 [] 8 1 +5 2019-08-31 04:34:34.019852+05:30 1 Tutorial 1 1 [{"added": {}}] 10 1 +6 2019-08-31 16:22:31.953574+05:30 20 Network Theory 1 [{"added": {}}] 8 1 +7 2019-08-31 16:23:07.668362+05:30 21 Analog Electronic 1 [{"added": {}}] 8 1 +8 2019-09-01 18:40:23.758295+05:30 3 Electronics and Communication Engineering 1 [{"added": {}}] 7 1 +9 2019-09-01 18:40:49.934904+05:30 22 Semiconductor Devices 1 [{"added": {}}] 8 1 +10 2019-09-01 18:52:11.421957+05:30 4 Production and Industrial Engineering 1 [{"added": {}}] 7 1 +11 2019-09-01 18:52:48.474841+05:30 5 Polymer Science And Engineering 1 [{"added": {}}] 7 1 +12 2019-09-01 18:53:45.669+05:30 6 Computer Science and Engineering 1 [{"added": {}}] 7 1 +13 2019-09-01 18:54:02.81564+05:30 7 Mechanical Engineering 1 [{"added": {}}] 7 1 +14 2019-09-01 18:54:22.464381+05:30 8 Applied Mathematics 1 [{"added": {}}] 7 1 +15 2019-09-01 18:56:00.579686+05:30 9 Metallurgical and Materials Engineering 1 [{"added": {}}] 7 1 +16 2019-09-01 18:56:38.397921+05:30 10 Civil Engineering 1 [{"added": {}}] 7 1 +17 2019-09-01 18:57:07.875368+05:30 11 Biotechnology 1 [{"added": {}}] 7 1 +18 2019-09-01 18:57:53.777036+05:30 12 Engineering Physics 1 [{"added": {}}] 7 1 +19 2019-09-01 23:46:37.651322+05:30 2 Tutorial 1 1 [{"added": {}}] 10 1 +20 2019-09-02 00:44:01.017669+05:30 23 Digital Logic Design 1 [{"added": {}}] 8 1 +21 2019-09-22 00:58:42.730454+05:30 1 Electrical Engineering 2 [{"changed": {"fields": ["url"]}}] 7 1 +22 2019-09-29 05:15:20.479451+05:30 1 Electrical Engineering 2 [{"changed": {"fields": ["url"]}}] 7 1 +23 2019-09-29 05:16:19.869223+05:30 12 Engineering Physics 2 [{"changed": {"fields": ["url"]}}] 7 1 +24 2019-09-29 05:16:56.184047+05:30 11 Biotechnology 2 [{"changed": {"fields": ["url"]}}] 7 1 +25 2019-09-29 05:16:58.799201+05:30 11 Biotechnology 2 [] 7 1 +26 2019-09-29 05:17:12.120682+05:30 10 Civil Engineering 2 [{"changed": {"fields": ["url"]}}] 7 1 +27 2019-09-29 05:17:49.040713+05:30 9 Metallurgical and Materials Engineering 2 [{"changed": {"fields": ["url"]}}] 7 1 +28 2019-09-29 05:18:21.688429+05:30 8 Applied Mathematics 2 [{"changed": {"fields": ["url"]}}] 7 1 +29 2019-09-29 05:18:55.520266+05:30 7 Mechanical Engineering 2 [{"changed": {"fields": ["url"]}}] 7 1 +30 2019-09-29 05:19:07.410987+05:30 6 Computer Science and Engineering 2 [{"changed": {"fields": ["url"]}}] 7 1 +31 2019-09-29 05:19:39.884534+05:30 5 Polymer Science And Engineering 2 [{"changed": {"fields": ["url"]}}] 7 1 +32 2019-09-29 05:19:50.937692+05:30 4 Production and Industrial Engineering 2 [{"changed": {"fields": ["url"]}}] 7 1 +33 2019-09-29 05:20:16.116946+05:30 3 Electronics and Communication Engineering 2 [{"changed": {"fields": ["url"]}}] 7 1 +34 2019-09-29 05:20:33.387465+05:30 2 Chemical Engineering 2 [{"changed": {"fields": ["url"]}}] 7 1 +35 2019-09-29 05:21:02.159236+05:30 5 Polymer Science And Engineering 2 [{"changed": {"fields": ["url"]}}] 7 1 +36 2019-09-29 05:21:14.854116+05:30 12 Engineering Physics 2 [{"changed": {"fields": ["url"]}}] 7 1 +37 2019-10-03 17:47:28.879348+05:30 2 Tutorial 1 3 10 1 +38 2019-10-03 17:54:43.554002+05:30 3 Tutorial-1 1 [{"added": {}}] 10 1 +39 2019-10-07 21:08:48.113809+05:30 3 Tutorial-1 3 10 1 +40 2019-10-07 21:12:30.92814+05:30 4 Tutorial-1 1 [{"added": {}}] 10 1 +41 2019-10-07 21:25:24.814566+05:30 4 Tutorial-1 3 10 1 +42 2019-10-07 21:27:19.56742+05:30 5 Tutorial-1 1 [{"added": {}}] 10 1 +43 2019-10-07 21:40:00.295493+05:30 5 Tutorial-1 3 10 1 +44 2019-10-07 21:42:17.597176+05:30 6 Tutorial-1 1 [{"added": {}}] 10 1 +45 2019-10-07 21:43:41.290064+05:30 6 Tutorial-1 3 10 1 +46 2019-10-07 21:45:25.811711+05:30 7 Tutorial-1 1 [{"added": {}}] 10 1 +47 2019-10-07 21:47:31.121135+05:30 7 Tutorial-1 2 [{"changed": {"fields": ["file"]}}] 10 1 +48 2019-10-07 21:49:09.948481+05:30 7 Tutorial-1 2 [{"changed": {"fields": ["filetype"]}}] 10 1 +49 2019-10-07 21:49:42.176864+05:30 7 Tutorial-1 2 [{"changed": {"fields": ["file"]}}] 10 1 +50 2019-10-07 21:50:03.280286+05:30 7 Tutorial-1 2 [{"changed": {"fields": ["file"]}}] 10 1 +51 2019-10-07 21:50:48.796738+05:30 7 Tutorial-1 2 [{"changed": {"fields": ["file"]}}] 10 1 +52 2019-10-07 21:51:07.962575+05:30 7 Tutorial-1 2 [{"changed": {"fields": ["file", "filetype"]}}] 10 1 +53 2019-10-07 21:51:32.1278+05:30 7 Tutorial-1 2 [{"changed": {"fields": ["file", "filetype"]}}] 10 1 +54 2019-10-07 22:43:10.331447+05:30 7 files/exampapers/Booking_Details.pdf 2 [] 10 1 +55 2019-10-07 23:05:30.822267+05:30 7 files/exampapers/Booking_Details.pdf 2 [] 10 1 +56 2019-10-07 23:08:06.569891+05:30 7 files/exampapers/Booking_Details.pdf 3 10 1 +57 2019-10-07 23:08:26.276963+05:30 8 files/tutorials/air_asia.pdf 1 [{"added": {}}] 10 1 +58 2019-10-08 01:35:42.408579+05:30 8 Tutorial-1 2 [{"changed": {"fields": ["title", "size", "fileext"]}}] 10 1 +59 2019-10-08 01:56:19.493557+05:30 9 Tutorial 2 1 [{"added": {}}] 10 1 +60 2019-10-08 01:57:03.270698+05:30 9 Network Thory-E Kandestal 2 [{"changed": {"fields": ["title"]}}] 10 1 +61 2019-10-08 03:02:30.629132+05:30 8 Tutorial-1 3 10 1 +62 2019-10-08 03:02:37.546398+05:30 9 Network Thory-E Kandestal 3 10 1 +63 2019-10-08 03:07:57.588343+05:30 11 files/tutorials/bash_9a7gZHO.sh 1 [{"added": {}}] 10 1 +64 2019-10-08 03:15:00.894022+05:30 12 ayan 1 [{"added": {}}] 10 1 +65 2019-10-08 03:58:48.008136+05:30 13 Ayan_Choudhary_s_CV 1 [{"added": {}}] 10 1 +66 2019-10-08 03:59:52.396627+05:30 14 image 1 [{"added": {}}] 10 1 +67 2019-10-14 22:43:10.811133+05:30 15 Booking_Details 1 [{"added": {}}] 10 1 +68 2019-10-30 20:39:51.765372+05:30 62 Electrical Machines 3 8 1 +69 2019-10-30 20:40:09.729271+05:30 61 Electrical Machines 3 8 1 +70 2019-10-30 20:40:09.760195+05:30 60 Electrical Machines 3 8 1 +71 2019-10-30 20:40:09.804347+05:30 59 Electrical Machines 3 8 1 +72 2019-10-30 20:40:09.847407+05:30 58 Electrical Machines 3 8 1 +73 2019-10-30 20:40:09.890957+05:30 57 Electrical Machines 3 8 1 +74 2019-10-30 20:40:09.91068+05:30 56 Electrical Machines 3 8 1 +75 2019-10-30 20:40:09.923135+05:30 55 Electrical Machines 3 8 1 +76 2019-10-31 13:48:03.561102+05:30 72 Electrical Machines 3 8 1 +77 2019-10-31 13:53:03.544984+05:30 73 Electrical Machines 3 8 1 +78 2019-10-31 13:53:22.222201+05:30 74 Electrical Machines 3 8 1 +79 2019-10-31 14:50:25.019963+05:30 15 Booking_Details 3 10 1 +80 2019-10-31 14:50:25.10833+05:30 14 image 3 10 1 +81 2019-10-31 14:50:25.120539+05:30 13 Ayan_Choudhary_s_CV 3 10 1 +82 2019-10-31 14:50:25.133455+05:30 12 ayan 3 10 1 +83 2019-10-31 14:50:25.145842+05:30 11 bash_9a7gZHO 3 10 1 +1387 2020-02-19 17:49:53.753122+05:30 24 nkansn 3 11 1 +84 2019-10-31 20:12:36.013471+05:30 75 Structural Analysis - 1 2 [{"changed": {"fields": ["department"]}}] 8 1 +85 2019-11-01 22:27:52.215454+05:30 16 Geo Physical Technology 3 7 1 +86 2019-11-03 21:28:51.079131+05:30 76 Digital Electronic 1 [{"added": {}}] 8 1 +87 2019-11-03 21:42:16.723202+05:30 18 PDF 3 10 1 +88 2019-11-03 21:42:17.249831+05:30 17 PDF 3 10 1 +89 2019-11-03 21:52:20.074742+05:30 22 ECN-212 End term solution.PDF 3 10 1 +90 2019-11-03 21:52:20.146644+05:30 21 ECN-212 quiz 2 solution.PDF 3 10 1 +91 2019-11-03 21:55:35.028127+05:30 24 ECN-212 End term solution.PDF 3 10 1 +92 2019-11-03 21:55:35.162977+05:30 23 ECN-212 quiz 2 solution.PDF 3 10 1 +93 2019-11-24 17:54:44.497669+05:30 50 Water Resources Development and Management 3 7 1 +94 2019-11-24 17:54:45.21382+05:30 49 Physics 3 7 1 +95 2019-11-24 17:54:45.226342+05:30 48 Polymer and Process Engineering 3 7 1 +96 2019-11-24 17:54:45.2386+05:30 47 Paper Technology 3 7 1 +97 2019-11-24 17:54:45.251355+05:30 46 Metallurgical and Materials Engineering 3 7 1 +98 2019-11-24 17:54:45.263929+05:30 45 Mechanical and Industrial Engineering 3 7 1 +99 2019-11-24 17:54:45.277148+05:30 44 Mathematics 3 7 1 +100 2019-11-24 17:54:45.289158+05:30 43 Management Studies 3 7 1 +101 2019-11-24 17:54:45.302102+05:30 42 Hydrology 3 7 1 +102 2019-11-24 17:54:45.314546+05:30 41 Humanities and Social Sciences 3 7 1 +103 2019-11-24 17:54:45.327429+05:30 40 Electronics and Communication Engineering 3 7 1 +104 2019-11-24 17:54:45.339816+05:30 39 Electrical Engineering 3 7 1 +105 2019-11-24 17:54:45.352784+05:30 38 Earth Sciences 3 7 1 +106 2019-11-24 17:54:45.365316+05:30 37 Earthquake 3 7 1 +107 2019-11-24 17:54:45.378121+05:30 36 Computer Science and Engineering 3 7 1 +108 2019-11-24 17:54:45.39061+05:30 35 Civil Engineering 3 7 1 +109 2019-11-24 17:54:45.403283+05:30 34 Chemistry 3 7 1 +110 2019-11-24 17:54:45.415805+05:30 33 Chemical Engineering 3 7 1 +111 2019-11-24 17:54:45.428877+05:30 32 Biotechnology 3 7 1 +112 2019-11-24 17:54:45.441173+05:30 31 Architecture and Planning 3 7 1 +113 2019-11-24 17:54:45.454032+05:30 30 Applied Science and Engineering 3 7 1 +114 2019-11-24 17:54:45.466402+05:30 29 Hydro and Renewable Energy 3 7 1 +115 2019-11-24 17:54:45.487406+05:30 28 Physics 3 7 1 +116 2019-11-24 17:54:45.499865+05:30 27 Paper Technology 3 7 1 +117 2019-11-24 17:54:45.513243+05:30 26 Mathematics 3 7 1 +118 2019-11-24 17:54:45.525314+05:30 25 Management Studies 3 7 1 +119 2019-11-24 17:54:45.538197+05:30 24 Hydrology 3 7 1 +120 2019-11-24 17:54:45.550578+05:30 23 Humanities and Social Sciences 3 7 1 +121 2019-11-24 17:54:45.563445+05:30 22 Electrical Engineering 3 7 1 +122 2019-11-24 17:54:45.57562+05:30 21 Earth Sciences 3 7 1 +123 2019-11-24 17:54:45.588294+05:30 20 Earthquake 3 7 1 +124 2019-11-24 17:54:45.60082+05:30 19 Civil Engineering 3 7 1 +125 2019-11-24 17:54:45.613964+05:30 18 Chemistry 3 7 1 +126 2019-11-24 17:54:45.626746+05:30 17 Biotechnology 3 7 1 +127 2019-11-24 17:54:45.639346+05:30 15 Geo Physical Technology 3 7 1 +128 2019-11-24 17:54:45.652266+05:30 14 Geotechnology 3 7 1 +129 2019-11-24 17:54:45.664961+05:30 13 Textile Engineering 3 7 1 +130 2019-11-24 17:54:45.677714+05:30 12 Engineering Physics 3 7 1 +131 2019-11-24 17:54:45.690098+05:30 11 Biotechnology 3 7 1 +132 2019-11-24 17:54:45.703099+05:30 10 Civil Engineering 3 7 1 +133 2019-11-24 17:54:45.715301+05:30 9 Metallurgical and Materials Engineering 3 7 1 +134 2019-11-24 17:54:45.728368+05:30 8 Applied Mathematics 3 7 1 +135 2019-11-24 17:54:45.740847+05:30 7 Mechanical Engineering 3 7 1 +136 2019-11-24 17:54:45.753659+05:30 6 Computer Science and Engineering 3 7 1 +137 2019-11-24 17:54:45.765918+05:30 5 Polymer Science And Engineering 3 7 1 +138 2019-11-24 17:54:45.778933+05:30 4 Production and Industrial Engineering 3 7 1 +139 2019-11-24 17:54:45.794905+05:30 3 Electronics and Communication Engineering 3 7 1 +140 2019-11-24 17:54:45.807774+05:30 2 Chemical Engineering 3 7 1 +141 2019-11-24 17:54:45.820362+05:30 1 Electrical Engineering 3 7 1 +142 2019-11-24 17:55:54.937495+05:30 72 Water Resources Development and Management 3 7 1 +143 2019-11-24 17:55:55.316912+05:30 71 Physics 3 7 1 +144 2019-11-24 17:55:55.516329+05:30 70 Polymer and Process Engineering 3 7 1 +145 2019-11-24 17:55:55.783961+05:30 69 Paper Technology 3 7 1 +146 2019-11-24 17:55:55.972369+05:30 68 Metallurgical and Materials Engineering 3 7 1 +147 2019-11-24 17:55:56.132009+05:30 67 Mechanical and Industrial Engineering 3 7 1 +148 2019-11-24 17:55:56.311779+05:30 66 Mathematics 3 7 1 +149 2019-11-24 17:55:56.51721+05:30 65 Management Studies 3 7 1 +150 2019-11-24 17:55:56.705686+05:30 64 Hydrology 3 7 1 +151 2019-11-24 17:55:56.877536+05:30 63 Humanities and Social Sciences 3 7 1 +152 2019-11-24 17:55:57.173766+05:30 62 Electronics and Communication Engineering 3 7 1 +153 2019-11-24 17:55:57.329031+05:30 61 Electrical Engineering 3 7 1 +154 2019-11-24 17:55:57.646289+05:30 60 Earth Sciences 3 7 1 +155 2019-11-24 17:55:57.797086+05:30 59 Earthquake 3 7 1 +156 2019-11-24 17:55:57.939833+05:30 58 Computer Science and Engineering 3 7 1 +157 2019-11-24 17:55:58.092144+05:30 57 Civil Engineering 3 7 1 +158 2019-11-24 17:55:58.22709+05:30 56 Chemistry 3 7 1 +159 2019-11-24 17:55:58.362757+05:30 55 Chemical Engineering 3 7 1 +160 2019-11-24 17:55:58.505943+05:30 54 Biotechnology 3 7 1 +161 2019-11-24 17:55:58.674344+05:30 53 Architecture and Planning 3 7 1 +162 2019-11-24 17:55:58.817388+05:30 52 Applied Science and Engineering 3 7 1 +163 2019-11-24 17:55:58.969347+05:30 51 Hydro and Renewable Energy 3 7 1 +164 2019-11-24 18:37:46.348197+05:30 663 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 3 8 1 +165 2019-11-24 18:37:46.441522+05:30 662 SEMINAR 3 8 1 +166 2019-11-24 18:37:46.453867+05:30 661 On Farm Development 3 8 1 +167 2019-11-24 18:37:46.466845+05:30 660 Principles and Practices of Irrigation 3 8 1 +168 2019-11-24 18:37:46.479344+05:30 659 Design of Irrigation Structures and Drainage Works 3 8 1 +169 2019-11-24 18:37:46.492059+05:30 658 Construction Planning and Management 3 8 1 +170 2019-11-24 18:37:46.517504+05:30 657 Design of Hydro Mechanical Equipment 3 8 1 +171 2019-11-24 18:37:46.529896+05:30 656 Power System Protection Application 3 8 1 +172 2019-11-24 18:37:46.542834+05:30 655 Hydropower System Planning 3 8 1 +173 2019-11-24 18:37:46.555145+05:30 654 Hydro Generating Equipment 3 8 1 +174 2019-11-24 18:37:46.56808+05:30 653 Applied Hydrology 3 8 1 +175 2019-11-24 18:37:46.580466+05:30 652 Water Resources Planning and Management 3 8 1 +176 2019-11-24 18:37:46.593604+05:30 651 Design of Water Resources Structures 3 8 1 +177 2019-11-24 18:37:46.605729+05:30 650 System Design Techniques 3 8 1 +178 2019-11-24 18:37:46.700837+05:30 649 MATHEMATICAL AND COMPUTATIONAL TECHNIQUES 3 8 1 +179 2019-11-24 18:37:46.712877+05:30 648 Experimental Techniques 3 8 1 +180 2019-11-24 18:37:46.726566+05:30 647 Laboratory Work in Photonics 3 8 1 +181 2019-11-24 18:37:46.739038+05:30 646 Semiconductor Device Physics 3 8 1 +182 2019-11-24 18:37:46.751928+05:30 645 Computational Techniques and Programming 3 8 1 +183 2019-11-24 18:37:46.764765+05:30 644 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 3 8 1 +184 2019-11-24 18:37:46.777338+05:30 643 SEMINAR 3 8 1 +185 2019-11-24 18:37:46.790028+05:30 642 SEMINAR 3 8 1 +186 2019-11-24 18:37:46.802452+05:30 641 Numerical Analysis & Computer Programming 3 8 1 +187 2019-11-24 18:37:46.815704+05:30 640 Semiconductor Photonics 3 8 1 +188 2019-11-24 18:37:46.827768+05:30 639 Quantum Theory of Solids 3 8 1 +189 2019-11-24 18:37:46.840715+05:30 638 A Primer in Quantum Field Theory 3 8 1 +190 2019-11-24 18:37:46.853353+05:30 637 Advanced Characterization Techniques 3 8 1 +191 2019-11-24 18:37:46.865987+05:30 636 Advanced Nuclear Physics 3 8 1 +192 2019-11-24 18:37:46.87836+05:30 635 Advanced Laser Physics 3 8 1 +193 2019-11-24 18:37:46.891343+05:30 634 Advanced Condensed Matter Physics 3 8 1 +194 2019-11-24 18:37:46.903994+05:30 633 DISSERTATION STAGE-I 3 8 1 +195 2019-11-24 18:37:46.916754+05:30 632 SEMICONDUCTOR DEVICES AND APPLICATIONS 3 8 1 +196 2019-11-24 18:37:46.929254+05:30 631 Classical Mechanics 3 8 1 +197 2019-11-24 18:37:46.941912+05:30 630 Mathematical Physics 3 8 1 +198 2019-11-24 18:37:46.954334+05:30 629 Quantum Mechanics – I 3 8 1 +199 2019-11-24 18:37:46.967321+05:30 628 Training Seminar 3 8 1 +200 2019-11-24 18:37:46.979773+05:30 627 B.Tech. Project 3 8 1 +201 2019-11-24 18:37:46.992548+05:30 626 Nuclear Astrophysics 3 8 1 +202 2019-11-24 18:37:47.005299+05:30 625 Techincal Communication 3 8 1 +203 2019-11-24 18:37:47.017918+05:30 624 Laser & Photonics 3 8 1 +204 2019-11-24 18:37:47.030355+05:30 623 Signals and Systems 3 8 1 +205 2019-11-24 18:37:47.043207+05:30 622 Numerical Analysis and Computational Physics 3 8 1 +206 2019-11-24 18:37:47.055512+05:30 621 Applied Instrumentation 3 8 1 +207 2019-11-24 18:37:47.068788+05:30 620 Lab-based Project 3 8 1 +208 2019-11-24 18:37:47.080932+05:30 619 Microprocessors and Peripheral Devices 3 8 1 +209 2019-11-24 18:37:47.093794+05:30 618 Mathematical Physics 3 8 1 +210 2019-11-24 18:37:47.106217+05:30 617 Mechanics and Relativity 3 8 1 +211 2019-11-24 18:37:47.119147+05:30 616 Atomic Molecular and Laser Physics 3 8 1 +212 2019-11-24 18:37:47.131561+05:30 615 Computer Programming 3 8 1 +213 2019-11-24 18:37:47.144463+05:30 614 Introduction to Physical Science 3 8 1 +214 2019-11-24 18:37:47.156832+05:30 613 Modern Physics 3 8 1 +215 2019-11-24 18:37:47.16978+05:30 612 QUARK GLUON PLASMA & FINITE TEMPERATURE FIELD THEORY 3 8 1 +216 2019-11-24 18:37:47.181992+05:30 611 Optical Electronics 3 8 1 +217 2019-11-24 18:37:47.19487+05:30 610 Semiconductor Materials and Devices 3 8 1 +218 2019-11-24 18:37:47.207032+05:30 609 Laboratory Work 3 8 1 +219 2019-11-24 18:37:47.220232+05:30 608 Weather Forecasting 3 8 1 +220 2019-11-24 18:37:47.232536+05:30 607 Advanced Atmospheric Physics 3 8 1 +221 2019-11-24 18:37:47.2453+05:30 606 Physics of Earth’s Atmosphere 3 8 1 +222 2019-11-24 18:37:47.25839+05:30 605 Classical Electrodynamics 3 8 1 +223 2019-11-24 18:37:47.270738+05:30 604 Laboratory Work 3 8 1 +224 2019-11-24 18:37:47.283881+05:30 603 QUANTUM INFORMATION AND COMPUTING 3 8 1 +225 2019-11-24 18:37:47.296247+05:30 602 Plasma Physics and Applications 3 8 1 +226 2019-11-24 18:37:47.309331+05:30 601 Applied Optics 3 8 1 +227 2019-11-24 18:37:47.321721+05:30 600 Quantum Physics 3 8 1 +228 2019-11-24 18:37:47.33464+05:30 599 Engineering Analysis Design 3 8 1 +229 2019-11-24 18:37:47.346979+05:30 598 Quantum Mechanics and Statistical Mechanics 3 8 1 +230 2019-11-24 18:37:47.359996+05:30 597 Electrodynamics and Optics 3 8 1 +231 2019-11-24 18:37:47.372299+05:30 596 Applied Physics 3 8 1 +232 2019-11-24 18:37:47.385357+05:30 595 Electromagnetic Field Theory 3 8 1 +233 2019-11-24 18:37:47.397662+05:30 594 Mechanics 3 8 1 +234 2019-11-24 18:37:47.410566+05:30 593 Advanced Atmospheric Physics 3 8 1 +235 2019-11-24 18:37:47.426697+05:30 592 Elements of Nuclear and Particle Physics 3 8 1 +236 2019-11-24 18:37:47.439638+05:30 591 Physics of Earth’s Atmosphere 3 8 1 +237 2019-11-24 18:37:47.451921+05:30 590 Computational Physics 3 8 1 +238 2019-11-24 18:37:47.464848+05:30 589 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 3 8 1 +239 2019-11-24 18:37:47.477201+05:30 588 SEMINAR 3 8 1 +240 2019-11-24 18:37:47.490121+05:30 587 Converting Processes for Packaging 3 8 1 +241 2019-11-24 18:37:47.502522+05:30 586 Printing Technology 3 8 1 +242 2019-11-24 18:37:47.51556+05:30 585 Packaging Materials 3 8 1 +243 2019-11-24 18:37:47.528025+05:30 584 Packaging Principles, Processes and Sustainability 3 8 1 +244 2019-11-24 18:37:47.541069+05:30 583 Process Instrumentation and Control 3 8 1 +245 2019-11-24 18:37:47.553237+05:30 582 Advanced Numerical Methods and Statistics 3 8 1 +246 2019-11-24 18:37:47.56607+05:30 581 Paper Proprieties and Stock Preparation 3 8 1 +247 2019-11-24 18:37:47.578437+05:30 580 Chemical Recovery Process 3 8 1 +248 2019-11-24 18:37:47.591459+05:30 579 Pulping 3 8 1 +249 2019-11-24 18:37:47.604089+05:30 578 Printing Technology 3 8 1 +250 2019-11-24 18:37:47.616783+05:30 577 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 3 8 1 +251 2019-11-24 18:37:47.629352+05:30 576 SEMINAR 3 8 1 +252 2019-11-24 18:37:47.642007+05:30 575 Numerical Methods in Manufacturing 3 8 1 +253 2019-11-24 18:37:47.654836+05:30 574 Non-Traditional Machining Processes 3 8 1 +254 2019-11-24 18:37:47.667425+05:30 573 Materials Management 3 8 1 +255 2019-11-24 18:37:47.679687+05:30 572 Machine Tool Design and Numerical Control 3 8 1 +256 2019-11-24 18:37:47.692915+05:30 571 Design for Manufacturability 3 8 1 +257 2019-11-24 18:37:47.705294+05:30 570 Advanced Manufacturing Processes 3 8 1 +258 2019-11-24 18:37:47.717931+05:30 569 Quality Management 3 8 1 +259 2019-11-24 18:37:47.730422+05:30 568 Operations Management 3 8 1 +260 2019-11-24 18:37:47.743242+05:30 567 Computer Aided Design 3 8 1 +261 2019-11-24 18:37:47.755636+05:30 566 Advanced Mechanics of Solids 3 8 1 +262 2019-11-24 18:37:47.768903+05:30 565 Dynamics of Mechanical Systems 3 8 1 +263 2019-11-24 18:37:47.781012+05:30 564 Micro and Nano Scale Thermal Engineering 3 8 1 +264 2019-11-24 18:37:47.794705+05:30 563 Hydro-dynamic Machines 3 8 1 +265 2019-11-24 18:37:47.807151+05:30 562 Solar Energy 3 8 1 +1388 2020-02-19 17:49:53.765557+05:30 23 dasasd 3 11 1 +266 2019-11-24 18:37:47.819886+05:30 561 Advanced Heat Transfer 3 8 1 +267 2019-11-24 18:37:47.832344+05:30 560 Advanced Fluid Mechanics 3 8 1 +268 2019-11-24 18:37:47.845377+05:30 559 Advanced Thermodynamics 3 8 1 +269 2019-11-24 18:37:47.857583+05:30 558 Modeling and Simulation 3 8 1 +270 2019-11-24 18:37:47.870501+05:30 557 Modeling and Simulation 3 8 1 +271 2019-11-24 18:37:47.883108+05:30 556 Robotics and Control 3 8 1 +272 2019-11-24 18:37:47.895838+05:30 555 Training Seminar 3 8 1 +273 2019-11-24 18:37:47.909039+05:30 554 B.Tech. Project 3 8 1 +274 2019-11-24 18:37:47.921592+05:30 553 Technical Communication 3 8 1 +275 2019-11-24 18:37:47.934073+05:30 552 Refrigeration and Air-Conditioning 3 8 1 +276 2019-11-24 18:37:47.946596+05:30 551 Industrial Management 3 8 1 +277 2019-11-24 18:37:47.95949+05:30 550 Vibration and Noise 3 8 1 +278 2019-11-24 18:37:47.971995+05:30 549 Operations Research 3 8 1 +279 2019-11-24 18:37:47.984429+05:30 548 Principles of Industrial Enigneering 3 8 1 +280 2019-11-24 18:37:47.996664+05:30 547 Dynamics of Machines 3 8 1 +281 2019-11-24 18:37:48.022749+05:30 546 THEORY OF MACHINES 3 8 1 +282 2019-11-24 18:37:48.048461+05:30 545 Energy Conversion 3 8 1 +283 2019-11-24 18:37:48.073134+05:30 544 THERMAL ENGINEERING 3 8 1 +284 2019-11-24 18:37:48.099319+05:30 543 FLUID MECHANICS 3 8 1 +285 2019-11-24 18:37:48.124542+05:30 542 MANUFACTURING TECHNOLOGY-II 3 8 1 +286 2019-11-24 18:37:48.150437+05:30 541 KINEMATICS OF MACHINES 3 8 1 +287 2019-11-24 18:37:48.392386+05:30 540 Non-Conventional Welding Processes 3 8 1 +288 2019-11-24 18:37:49.15385+05:30 539 Smart Materials, Structures, and Devices 3 8 1 +289 2019-11-24 18:37:49.179989+05:30 538 Advanced Mechanical Vibrations 3 8 1 +290 2019-11-24 18:37:49.191964+05:30 537 Finite Element Methods 3 8 1 +291 2019-11-24 18:37:49.204751+05:30 536 Computer Aided Mechanism Design 3 8 1 +292 2019-11-24 18:37:49.230658+05:30 535 Computational Fluid Dynamics & Heat Transfer 3 8 1 +293 2019-11-24 18:37:49.255487+05:30 534 Instrumentation and Experimental Methods 3 8 1 +294 2019-11-24 18:37:49.269289+05:30 533 Power Plants 3 8 1 +295 2019-11-24 18:37:49.295266+05:30 532 Work System Desing 3 8 1 +296 2019-11-24 18:37:49.320172+05:30 531 Theory of Production Processes-II 3 8 1 +297 2019-11-24 18:37:49.343651+05:30 530 Heat and Mass Transfer 3 8 1 +298 2019-11-24 18:37:49.35634+05:30 529 Machine Design 3 8 1 +299 2019-11-24 18:37:49.370684+05:30 528 Lab Based Project 3 8 1 +300 2019-11-24 18:37:49.381958+05:30 527 ENGINEERING ANALYSIS AND DESIGN 3 8 1 +301 2019-11-24 18:37:49.394233+05:30 526 Theory of Production Processes - I 3 8 1 +302 2019-11-24 18:37:49.407183+05:30 525 Fluid Mechanics 3 8 1 +303 2019-11-24 18:37:49.41955+05:30 524 Mechanical Engineering Drawing 3 8 1 +304 2019-11-24 18:37:49.43292+05:30 523 Engineering Thermodynamics 3 8 1 +305 2019-11-24 18:37:49.44531+05:30 522 Programming and Data Structure 3 8 1 +306 2019-11-24 18:37:49.457975+05:30 521 Introduction to Production and Industrial Engineering 3 8 1 +307 2019-11-24 18:37:49.470435+05:30 520 Introduction to Mechanical Engineering 3 8 1 +308 2019-11-24 18:37:49.483753+05:30 519 Advanced Manufacturing Processes 3 8 1 +309 2019-11-24 18:37:49.495893+05:30 518 ADVANCED NUMERICAL ANALYSIS 3 8 1 +310 2019-11-24 18:37:49.508846+05:30 517 SELECTED TOPICS IN ANALYSIS 3 8 1 +311 2019-11-24 18:37:49.521052+05:30 516 SEMINAR 3 8 1 +312 2019-11-24 18:37:49.533962+05:30 515 Seminar 3 8 1 +313 2019-11-24 18:37:49.546498+05:30 514 Orthogonal Polynomials and Special Functions 3 8 1 +314 2019-11-24 18:37:49.559392+05:30 513 Financial Mathematics 3 8 1 +315 2019-11-24 18:37:49.571917+05:30 512 Dynamical Systems 3 8 1 +316 2019-11-24 18:37:49.584887+05:30 511 CONTROL THEORY 3 8 1 +317 2019-11-24 18:37:49.597143+05:30 510 Coding Theory 3 8 1 +318 2019-11-24 18:37:49.610122+05:30 509 Advanced Numerical Analysis 3 8 1 +319 2019-11-24 18:37:49.622677+05:30 508 Mathematical Statistics 3 8 1 +320 2019-11-24 18:37:49.635518+05:30 507 SEMINAR 3 8 1 +321 2019-11-24 18:37:49.647767+05:30 506 OPERATIONS RESEARCH 3 8 1 +322 2019-11-24 18:37:49.660743+05:30 505 FUNCTIONAL ANALYSIS 3 8 1 +323 2019-11-24 18:37:49.673174+05:30 504 Functional Analysis 3 8 1 +324 2019-11-24 18:37:49.686719+05:30 503 Tensors and Differential Geometry 3 8 1 +325 2019-11-24 18:37:49.699015+05:30 502 Fluid Dynamics 3 8 1 +326 2019-11-24 18:37:49.711812+05:30 501 Mathematics 3 8 1 +327 2019-11-24 18:37:49.724936+05:30 500 SOFT COMPUTING 3 8 1 +328 2019-11-24 18:37:49.737329+05:30 499 Complex Analysis 3 8 1 +329 2019-11-24 18:37:49.750624+05:30 498 Computer Programming 3 8 1 +330 2019-11-24 18:37:49.76259+05:30 497 Abstract Algebra 3 8 1 +331 2019-11-24 18:37:49.775566+05:30 496 Topology 3 8 1 +332 2019-11-24 18:37:49.78827+05:30 495 Real Analysis 3 8 1 +333 2019-11-24 18:37:49.800943+05:30 494 Theory of Ordinary Differential Equations 3 8 1 +334 2019-11-24 18:37:49.8133+05:30 493 Complex Analysis-II 3 8 1 +335 2019-11-24 18:37:49.826111+05:30 492 Theory of Partial Differential Equations 3 8 1 +336 2019-11-24 18:37:49.83875+05:30 491 Topology 3 8 1 +337 2019-11-24 18:37:49.85149+05:30 490 Real Analysis-II 3 8 1 +338 2019-11-24 18:37:49.87208+05:30 489 THEORY OF ORDINARY DIFFERENTIAL EQUATIONS 3 8 1 +339 2019-11-24 18:37:49.885441+05:30 488 Technical Communication 3 8 1 +340 2019-11-24 18:37:49.897526+05:30 487 MATHEMATICAL IMAGING TECHNOLOGY 3 8 1 +341 2019-11-24 18:37:49.91039+05:30 486 Linear Programming 3 8 1 +342 2019-11-24 18:37:49.922626+05:30 485 Mathematical Statistics 3 8 1 +343 2019-11-24 18:37:49.935634+05:30 484 Abstract Algebra-I 3 8 1 +344 2019-11-24 18:37:49.947962+05:30 483 DESIGN AND ANALYSIS OF ALGORITHMS 3 8 1 +345 2019-11-24 18:37:49.96095+05:30 482 ORDINARY AND PARTIAL DIFFERENTIAL EQUATIONS 3 8 1 +346 2019-11-24 18:37:49.973345+05:30 481 DISCRETE MATHEMATICS 3 8 1 +347 2019-11-24 18:37:49.986224+05:30 480 Introduction to Computer Programming 3 8 1 +348 2019-11-24 18:37:49.998666+05:30 479 Mathematics-I 3 8 1 +349 2019-11-24 18:37:50.011539+05:30 478 Numerical Methods, Probability and Statistics 3 8 1 +350 2019-11-24 18:37:50.023936+05:30 477 Optimization Techniques 3 8 1 +351 2019-11-24 18:37:50.036906+05:30 476 Probability and Statistics 3 8 1 +352 2019-11-24 18:37:50.049127+05:30 475 MEASURE THEORY 3 8 1 +353 2019-11-24 18:37:50.06211+05:30 474 Statistical Inference 3 8 1 +354 2019-11-24 18:37:50.074492+05:30 473 COMPLEX ANALYSIS-I 3 8 1 +355 2019-11-24 18:37:50.087999+05:30 472 Real Analysis I 3 8 1 +356 2019-11-24 18:37:50.099752+05:30 471 Introduction to Mathematical Sciences 3 8 1 +357 2019-11-24 18:37:50.112749+05:30 470 Probability and Statistics 3 8 1 +358 2019-11-24 18:37:50.125216+05:30 469 Mathematical Methods 3 8 1 +359 2019-11-24 18:37:50.154683+05:30 468 DISSERTATION STAGE-II (CONTINUED FROM III SEMESTER) 3 8 1 +360 2019-11-24 18:37:50.166777+05:30 467 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 3 8 1 +361 2019-11-24 18:37:50.179774+05:30 466 SEMINAR 3 8 1 +362 2019-11-24 18:37:50.19218+05:30 465 Watershed modeling and simulation 3 8 1 +363 2019-11-24 18:37:50.205127+05:30 464 Soil and groundwater contamination modelling 3 8 1 +364 2019-11-24 18:37:50.217531+05:30 463 Experimental hydrology 3 8 1 +365 2019-11-24 18:37:50.230435+05:30 462 Remote sensing and GIS applications 3 8 1 +366 2019-11-24 18:37:50.243355+05:30 461 Environmental quality 3 8 1 +367 2019-11-24 18:37:50.255753+05:30 460 Watershed Behavior and Conservation Practices 3 8 1 +368 2019-11-24 18:37:50.268779+05:30 459 Geophysical investigations 3 8 1 +369 2019-11-24 18:37:50.281073+05:30 458 Groundwater hydrology 3 8 1 +370 2019-11-24 18:37:50.293991+05:30 457 Stochastic hydrology 3 8 1 +371 2019-11-24 18:37:50.306359+05:30 456 Irrigation and drainage engineering 3 8 1 +372 2019-11-24 18:37:50.31929+05:30 455 Engineering Hydrology 3 8 1 +373 2019-11-24 18:37:50.331962+05:30 454 RESEARCH METHODOLOGY IN LANGUAGE & LITERATURE 3 8 1 +374 2019-11-24 18:37:50.344904+05:30 453 RESEARCH METHODOLOGY IN SOCIAL SCIENCES 3 8 1 +375 2019-11-24 18:37:50.357318+05:30 452 UNDERSTANDING PERSONLALITY 3 8 1 +376 2019-11-24 18:37:50.369971+05:30 451 SEMINAR 3 8 1 +377 2019-11-24 18:37:50.382411+05:30 450 Advanced Topics in Growth Theory 3 8 1 +378 2019-11-24 18:37:50.395013+05:30 449 Ecological Economics 3 8 1 +379 2019-11-24 18:37:50.410807+05:30 448 Introduction to Research Methodology 3 8 1 +380 2019-11-24 18:37:50.42367+05:30 447 Issues in Indian Economy 3 8 1 +381 2019-11-24 18:37:50.436213+05:30 446 PUBLIC POLICY; THEORY AND PRACTICE 3 8 1 +382 2019-11-24 18:37:50.449174+05:30 445 ADVANCED ECONOMETRICS 3 8 1 +383 2019-11-24 18:37:50.461518+05:30 444 MONEY, BANKING AND FINANCIAL MARKETS 3 8 1 +384 2019-11-24 18:37:50.474296+05:30 443 DEVELOPMENT ECONOMICS 3 8 1 +385 2019-11-24 18:37:50.486886+05:30 442 MATHEMATICS FOR ECONOMISTS 3 8 1 +386 2019-11-24 18:37:50.500206+05:30 441 MACROECONOMICS I 3 8 1 +387 2019-11-24 18:37:50.51247+05:30 440 MICROECONOMICS I 3 8 1 +388 2019-11-24 18:37:50.525447+05:30 439 HSN-01 3 8 1 +389 2019-11-24 18:37:50.59511+05:30 438 UNDERSTANDING PERSONALITY 3 8 1 +390 2019-11-24 18:37:50.608044+05:30 437 Sociology 3 8 1 +391 2019-11-24 18:37:50.620559+05:30 436 Economics 3 8 1 +392 2019-11-24 18:37:50.641472+05:30 435 Technical Communication 3 8 1 +393 2019-11-24 18:37:50.653727+05:30 434 Society,Culture Built Environment 3 8 1 +394 2019-11-24 18:37:50.666516+05:30 433 Introduction to Psychology 3 8 1 +395 2019-11-24 18:37:50.679263+05:30 432 Communication Skills(Advance) 3 8 1 +396 2019-11-24 18:37:50.692162+05:30 431 Communication Skills(Basic) 3 8 1 +397 2019-11-24 18:37:50.704889+05:30 430 Technical Communication 3 8 1 +398 2019-11-24 18:37:50.717456+05:30 429 Communication skills (Basic) 3 8 1 +399 2019-11-24 18:37:50.729788+05:30 428 DISSERTATION STAGE-II (CONTINUED FROM III SEMESTER) 3 8 1 +400 2019-11-24 18:37:50.742718+05:30 427 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 3 8 1 +401 2019-11-24 18:37:50.755133+05:30 426 SEMINAR 3 8 1 +402 2019-11-24 18:37:50.768243+05:30 425 Analog VLSI Circuit Design 3 8 1 +403 2019-11-24 18:37:50.788675+05:30 424 Digital System Design 3 8 1 +404 2019-11-24 18:37:50.801415+05:30 423 Simulation Lab-1 3 8 1 +405 2019-11-24 18:37:50.813756+05:30 422 Microelectronics Lab-1 3 8 1 +406 2019-11-24 18:37:50.826932+05:30 421 Digital VLSI Circuit Design 3 8 1 +407 2019-11-24 18:37:50.839276+05:30 420 MOS Device Physics 3 8 1 +408 2019-11-24 18:37:50.852987+05:30 419 Microwave and Millimeter Wave Circuits 3 8 1 +409 2019-11-24 18:37:50.87355+05:30 418 Antenna Theory & Design 3 8 1 +410 2019-11-24 18:37:51.27596+05:30 417 Advanced EMFT 3 8 1 +411 2019-11-24 18:37:51.709029+05:30 416 Microwave Engineering 3 8 1 +412 2019-11-24 18:37:51.732471+05:30 415 Microwave Lab 3 8 1 +413 2019-11-24 18:37:51.759727+05:30 414 Telecommunication Networks 3 8 1 +414 2019-11-24 18:37:51.778341+05:30 413 Information and Communication Theory 3 8 1 +415 2019-11-24 18:37:51.79129+05:30 412 Digital Communication Systems 3 8 1 +416 2019-11-24 18:37:51.803699+05:30 411 Laboratory 3 8 1 +417 2019-11-24 18:37:51.817578+05:30 410 Training Seminar 3 8 1 +418 2019-11-24 18:37:51.829562+05:30 409 B.Tech. Project 3 8 1 +419 2019-11-24 18:37:51.842689+05:30 408 Technical Communication 3 8 1 +420 2019-11-24 18:37:51.871552+05:30 407 IC Application Laboratory 3 8 1 +421 2019-11-24 18:37:51.884133+05:30 406 Fundamentals of Microelectronics 3 8 1 +422 2019-11-24 18:37:51.896818+05:30 405 Microelectronic Devices,Technology and Circuits 3 8 1 +423 2019-11-24 18:37:51.909655+05:30 404 ELECTRONICS NETWORK THEORY 3 8 1 +424 2019-11-24 18:37:51.921899+05:30 403 SIGNALS AND SYSTEMS 3 8 1 +425 2019-11-24 18:37:51.93506+05:30 402 Introduction to Electronics and Communication Engineering 3 8 1 +426 2019-11-24 18:37:51.94725+05:30 401 SIGNALS AND SYSTEMS 3 8 1 +427 2019-11-24 18:37:51.968279+05:30 400 RF System Design and Analysis 3 8 1 +428 2019-11-24 18:37:51.981003+05:30 399 Radar Signal Processing 3 8 1 +429 2019-11-24 18:37:51.993626+05:30 398 Fiber Optic Systems 3 8 1 +430 2019-11-24 18:37:52.006084+05:30 397 Coding Theory and Applications 3 8 1 +431 2019-11-24 18:37:52.019181+05:30 396 Microwave Engineering 3 8 1 +432 2019-11-24 18:37:52.039547+05:30 395 Antenna Theory 3 8 1 +433 2019-11-24 18:37:52.052662+05:30 394 Communication Systems and Techniques 3 8 1 +434 2019-11-24 18:37:52.07305+05:30 393 Digital Electronic Circuits Laboratory 3 8 1 +435 2019-11-24 18:37:52.085976+05:30 392 Engineering Electromagnetics 3 8 1 +436 2019-11-24 18:37:52.106553+05:30 391 Automatic Control Systems 3 8 1 +437 2019-11-24 18:37:52.119448+05:30 390 Principles of Digital Communication 3 8 1 +438 2019-11-24 18:37:52.131908+05:30 389 Fundamental of Electronics 3 8 1 +439 2019-11-24 18:37:52.144816+05:30 388 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 3 8 1 +440 2019-11-24 18:37:52.157269+05:30 387 SEMINAR 3 8 1 +441 2019-11-24 18:37:52.170019+05:30 386 Modeling and Simulation 3 8 1 +442 2019-11-24 18:37:52.183324+05:30 385 Introduction to Robotics 3 8 1 +443 2019-11-24 18:37:52.203883+05:30 384 Smart Grid 3 8 1 +444 2019-11-24 18:37:52.216694+05:30 383 Power System Planning 3 8 1 +445 2019-11-24 18:37:52.229202+05:30 382 Enhanced Power Quality AC-DC Converters 3 8 1 +446 2019-11-24 18:37:52.249951+05:30 381 Advances in Signal and Image Processing 3 8 1 +447 2019-11-24 18:37:52.262382+05:30 380 Advanced System Engineering 3 8 1 +448 2019-11-24 18:37:52.275268+05:30 379 Intelligent Control Techniques 3 8 1 +449 2019-11-24 18:37:52.287721+05:30 378 Advanced Linear Control Systems 3 8 1 +450 2019-11-24 18:37:52.300846+05:30 377 EHV AC Transmission Systems 3 8 1 +451 2019-11-24 18:37:52.313114+05:30 376 Distribution System Analysis and Operation 3 8 1 +452 2019-11-24 18:37:52.32594+05:30 375 Power System Operation and Control 3 8 1 +453 2019-11-24 18:37:52.346685+05:30 374 Computer Aided Power System Analysis 3 8 1 +454 2019-11-24 18:37:52.367814+05:30 373 Advanced Electric Drives 3 8 1 +455 2019-11-24 18:37:52.388396+05:30 372 Analysis of Electrical Machines 3 8 1 +456 2019-11-24 18:37:52.401169+05:30 371 Advanced Power Electronics 3 8 1 +457 2019-11-24 18:37:52.413269+05:30 370 Biomedical Instrumentation 3 8 1 +458 2019-11-24 18:37:52.426347+05:30 369 Digital Signal and Image Processing 3 8 1 +459 2019-11-24 18:37:52.438941+05:30 368 Advanced Industrial and Electronic Instrumentation 3 8 1 +460 2019-11-24 18:37:52.451837+05:30 367 Training Seminar 3 8 1 +461 2019-11-24 18:37:52.464129+05:30 366 B.Tech. Project 3 8 1 +462 2019-11-24 18:37:52.476985+05:30 365 Technical Communication 3 8 1 +463 2019-11-24 18:37:52.48943+05:30 364 Embedded Systems 3 8 1 +464 2019-11-24 18:37:52.510481+05:30 363 Data Structures 3 8 1 +465 2019-11-24 18:37:52.522578+05:30 362 Signals and Systems 3 8 1 +466 2019-11-24 18:37:52.535545+05:30 361 Artificial Neural Networks 3 8 1 +467 2019-11-24 18:37:52.547727+05:30 360 Advanced Control Systems 3 8 1 +468 2019-11-24 18:37:52.560721+05:30 359 Power Electronics 3 8 1 +469 2019-11-24 18:37:52.573065+05:30 358 Power System Analysis & Control 3 8 1 +470 2019-11-24 18:37:52.586183+05:30 357 ENGINEERING ANALYSIS AND DESIGN 3 8 1 +471 2019-11-24 18:37:52.598469+05:30 356 DESIGN OF ELECTRONICS CIRCUITS 3 8 1 +472 2019-11-24 18:37:52.611356+05:30 355 DIGITAL ELECTRONICS AND CIRCUITS 3 8 1 +473 2019-11-24 18:37:52.623827+05:30 354 ELECTRICAL MACHINES-I 3 8 1 +474 2019-11-24 18:37:52.637284+05:30 353 Programming in C++ 3 8 1 +475 2019-11-24 18:37:52.657751+05:30 352 Network Theory 3 8 1 +476 2019-11-24 18:37:52.671742+05:30 351 Introduction to Electrical Engineering 3 8 1 +477 2019-11-24 18:37:52.691882+05:30 350 Instrumentation laboratory 3 8 1 +478 2019-11-24 18:37:52.705476+05:30 349 Electrical Science 3 8 1 +479 2019-11-24 18:37:52.726114+05:30 348 SEMINAR 3 8 1 +480 2019-11-24 18:37:52.738681+05:30 347 Plate Tectonics 3 8 1 +481 2019-11-24 18:37:52.759382+05:30 346 Well Logging 3 8 1 +482 2019-11-24 18:37:52.771988+05:30 345 Petroleum Geology 3 8 1 +483 2019-11-24 18:37:52.785085+05:30 344 Engineering Geology 3 8 1 +484 2019-11-24 18:37:52.805426+05:30 343 Indian Mineral Deposits 3 8 1 +485 2019-11-24 18:37:52.818757+05:30 342 Isotope Geology 3 8 1 +486 2019-11-24 18:37:52.839173+05:30 341 Seminar 3 8 1 +487 2019-11-24 18:37:52.859816+05:30 340 ADVANCED SEISMIC PROSPECTING 3 8 1 +488 2019-11-24 18:37:52.872192+05:30 339 DYNAMIC SYSTEMS IN EARTH SCIENCES 3 8 1 +489 2019-11-24 18:37:52.88536+05:30 338 Global Environment 3 8 1 +490 2019-11-24 18:37:52.905874+05:30 337 Micropaleontology and Paleoceanography 3 8 1 +491 2019-11-24 18:37:52.918939+05:30 336 ISOTOPE GEOLOGY 3 8 1 +492 2019-11-24 18:37:52.939211+05:30 335 Geophysical Prospecting 3 8 1 +493 2019-11-24 18:37:52.952297+05:30 334 Sedimentology and Stratigraphy 3 8 1 +494 2019-11-24 18:37:52.972871+05:30 333 Comprehensive Viva Voce 3 8 1 +495 2019-11-24 18:37:52.985685+05:30 332 Structural Geology 3 8 1 +496 2019-11-24 18:37:53.006189+05:30 331 Igneous Petrology 3 8 1 +497 2019-11-24 18:37:53.019137+05:30 330 Geochemistry 3 8 1 +498 2019-11-24 18:37:53.039645+05:30 329 Crystallography and Mineralogy 3 8 1 +499 2019-11-24 18:37:53.052734+05:30 328 Numerical Techniques and Computer Programming 3 8 1 +500 2019-11-24 18:37:53.064907+05:30 327 Comprehensive Viva Voce 3 8 1 +501 2019-11-24 18:37:53.086148+05:30 326 Seminar-I 3 8 1 +502 2019-11-24 18:37:53.098488+05:30 325 STRONG MOTION SEISMOGRAPH 3 8 1 +503 2019-11-24 18:37:53.111573+05:30 324 Geophysical Well logging 3 8 1 +504 2019-11-24 18:37:53.123839+05:30 323 Numerical Modelling in Geophysical 3 8 1 +505 2019-11-24 18:37:53.13665+05:30 322 PETROLEUM GEOLOGY 3 8 1 +506 2019-11-24 18:37:53.148923+05:30 321 HYDROGEOLOGY 3 8 1 +507 2019-11-24 18:37:53.162018+05:30 320 ENGINEERING GEOLOGY 3 8 1 +508 2019-11-24 18:37:53.23166+05:30 319 PRINCIPLES OF GIS 3 8 1 +509 2019-11-24 18:37:53.244551+05:30 318 PRINCIPLES OF REMOTE SENSING 3 8 1 +510 2019-11-24 18:37:53.256996+05:30 317 Technical Communication 3 8 1 +511 2019-11-24 18:37:53.269966+05:30 316 ROCK AND SOIL MECHANICS 3 8 1 +512 2019-11-24 18:37:53.290421+05:30 315 Seismology 3 8 1 +513 2019-11-24 18:37:53.303276+05:30 314 Gravity and Magnetic Prospecting 3 8 1 +514 2019-11-24 18:37:53.315873+05:30 313 Economic Geology 3 8 1 +515 2019-11-24 18:37:53.336987+05:30 312 Metamorphic Petrology 3 8 1 +516 2019-11-24 18:37:53.357951+05:30 311 Structural Geology-II 3 8 1 +517 2019-11-24 18:37:53.378595+05:30 310 GEOPHYSICAL PROSPECTING 3 8 1 +518 2019-11-24 18:37:53.39152+05:30 309 FIELD THEORY 3 8 1 +519 2019-11-24 18:37:53.403996+05:30 308 STRUCTURAL GEOLOGY-I 3 8 1 +520 2019-11-24 18:37:53.425075+05:30 307 PALEONTOLOGY 3 8 1 +521 2019-11-24 18:37:53.437654+05:30 306 BASIC PETROLOGY 3 8 1 +522 2019-11-24 18:37:53.458532+05:30 305 Computer Programming 3 8 1 +523 2019-11-24 18:37:53.471003+05:30 304 Introduction to Earth Sciences 3 8 1 +524 2019-11-24 18:37:53.483666+05:30 303 Electrical Prospecting 3 8 1 +525 2019-11-24 18:37:53.496194+05:30 302 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 3 8 1 +526 2019-11-24 18:37:53.509165+05:30 301 SEMINAR 3 8 1 +527 2019-11-24 18:37:53.521752+05:30 300 Principles of Seismology 3 8 1 +528 2019-11-24 18:37:53.534841+05:30 299 Machine Foundation 3 8 1 +529 2019-11-24 18:37:53.555285+05:30 298 Earthquake Resistant Design of Structures 3 8 1 +530 2019-11-24 18:37:53.5761+05:30 297 Vulnerability and Risk Analysis 3 8 1 +531 2019-11-24 18:37:53.591812+05:30 296 Seismological Modeling and Simulation 3 8 1 +532 2019-11-24 18:37:53.604645+05:30 295 Seismic Hazard Assessment 3 8 1 +533 2019-11-24 18:37:53.625608+05:30 294 Geotechnical Earthquake Engineering 3 8 1 +534 2019-11-24 18:37:53.66994+05:30 663 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 3 8 1 +535 2019-11-24 18:37:53.695347+05:30 293 Numerical Methods for Dynamic Systems 3 8 1 +536 2019-11-24 18:37:53.789988+05:30 292 Finite Element Method 3 8 1 +537 2019-11-24 18:37:53.823987+05:30 662 SEMINAR 3 8 1 +538 2019-11-24 18:37:54.051371+05:30 291 Engineering Seismology 3 8 1 +539 2019-11-24 18:37:54.267482+05:30 661 On Farm Development 3 8 1 +540 2019-11-24 18:37:54.692875+05:30 290 Vibration of Elastic Media 3 8 1 +542 2019-11-24 18:37:54.718291+05:30 289 Theory of Vibrations 3 8 1 +544 2019-11-24 18:37:54.743676+05:30 288 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 3 8 1 +546 2019-11-24 18:37:54.769186+05:30 287 SEMINAR 3 8 1 +548 2019-11-24 18:37:54.794397+05:30 286 Advanced Topics in Software Engineering 3 8 1 +550 2019-11-24 18:37:54.819696+05:30 285 Lab II (Project Lab) 3 8 1 +552 2019-11-24 18:37:54.845303+05:30 284 Lab I (Programming Lab) 3 8 1 +554 2019-11-24 18:37:54.870648+05:30 283 Advanced Computer Networks 3 8 1 +556 2019-11-24 18:37:54.895576+05:30 282 Advanced Operating Systems 3 8 1 +558 2019-11-24 18:37:54.921124+05:30 281 Advanced Algorithms 3 8 1 +560 2019-11-24 18:37:54.946312+05:30 280 Training Seminar 3 8 1 +562 2019-11-24 18:37:54.971608+05:30 279 B.Tech. Project 3 8 1 +564 2019-11-24 18:37:54.997088+05:30 278 Technical Communication 3 8 1 +566 2019-11-24 18:37:55.022222+05:30 277 Computer Network Laboratory 3 8 1 +568 2019-11-24 18:37:55.0478+05:30 276 Theory of Computation 3 8 1 +570 2019-11-24 18:37:55.072918+05:30 275 Computer Network 3 8 1 +572 2019-11-24 18:37:55.098291+05:30 274 DATA STRUCTURE LABORATORY 3 8 1 +574 2019-11-24 18:37:55.123493+05:30 273 COMPUTER ARCHITECTURE AND MICROPROCESSORS 3 8 1 +576 2019-11-24 18:37:55.149709+05:30 272 Fundamentals of Object Oriented Programming 3 8 1 +578 2019-11-24 18:37:55.174812+05:30 271 Introduction to Computer Science and Engineering 3 8 1 +580 2019-11-24 18:37:55.200463+05:30 270 Logic and Automated Reasoning 3 8 1 +582 2019-11-24 18:37:55.225376+05:30 269 Data Mining and Warehousing 3 8 1 +584 2019-11-24 18:37:55.250287+05:30 268 MACHINE LEARNING 3 8 1 +586 2019-11-24 18:37:55.276166+05:30 267 ARTIFICIAL INTELLIGENCE 3 8 1 +588 2019-11-24 18:37:55.30168+05:30 266 Compiler Design 3 8 1 +590 2019-11-24 18:37:55.326529+05:30 265 Data Base Management Systems 3 8 1 +592 2019-11-24 18:37:55.351634+05:30 264 OBJECT ORIENTED ANALYSIS AND DESIGN 3 8 1 +594 2019-11-24 18:37:55.376915+05:30 263 Data Structures 3 8 1 +596 2019-11-24 18:37:55.402577+05:30 262 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 3 8 1 +598 2019-11-24 18:37:55.427957+05:30 261 SEMINAR 3 8 1 +600 2019-11-24 18:37:55.453835+05:30 260 Geoinformatics for Landuse Surveys 3 8 1 +602 2019-11-24 18:37:55.479339+05:30 259 Planning, Design and Construction of Rural Roads 3 8 1 +604 2019-11-24 18:37:55.505299+05:30 258 Pavement Analysis and Design 3 8 1 +606 2019-11-24 18:37:55.529718+05:30 257 Traffic Engineering and Modeling 3 8 1 +608 2019-11-24 18:37:55.554978+05:30 256 Modeling, Simulation and Optimization 3 8 1 +610 2019-11-24 18:37:55.58038+05:30 255 Free Surface Flows 3 8 1 +612 2019-11-24 18:37:55.606028+05:30 254 Advanced Fluid Mechanics 3 8 1 +614 2019-11-24 18:37:55.631023+05:30 253 Advanced Hydrology 3 8 1 +616 2019-11-24 18:37:55.656409+05:30 252 Soil Dynamics and Machine Foundations 3 8 1 +618 2019-11-24 18:37:55.68163+05:30 251 Engineering Behaviour of Rocks 3 8 1 +620 2019-11-24 18:37:55.707146+05:30 250 Advanced Soil Mechanics 3 8 1 +622 2019-11-24 18:37:55.732093+05:30 249 Advanced Numerical Analysis 3 8 1 +624 2019-11-24 18:37:55.756982+05:30 248 FIELD SURVEY CAMP 3 8 1 +626 2019-11-24 18:37:55.782606+05:30 247 Principles of Photogrammetry 3 8 1 +628 2019-11-24 18:37:55.808256+05:30 246 Surveying Measurements and Adjustments 3 8 1 +630 2019-11-24 18:37:55.833569+05:30 245 Environmental Hydraulics 3 8 1 +632 2019-11-24 18:37:55.858865+05:30 244 Water Treatment 3 8 1 +634 2019-11-24 18:37:55.884933+05:30 243 Environmental Modeling and Simulation 3 8 1 +636 2019-11-24 18:37:55.910202+05:30 242 Training Seminar 3 8 1 +638 2019-11-24 18:37:55.935433+05:30 241 Advanced Highway Engineering 3 8 1 +640 2019-11-24 18:37:55.96095+05:30 240 Advanced Water and Wastewater Treatment 3 8 1 +642 2019-11-24 18:37:55.986085+05:30 239 WATER RESOURCE ENGINEERING 3 8 1 +644 2019-11-24 18:37:56.011415+05:30 238 B.Tech. Project 3 8 1 +646 2019-11-24 18:37:56.036778+05:30 237 Technical Communication 3 8 1 +648 2019-11-24 18:37:56.062071+05:30 236 Design of Reinforced Concrete Elements 3 8 1 +650 2019-11-24 18:37:56.087689+05:30 235 Soil Mechanicas 3 8 1 +652 2019-11-24 18:37:56.112945+05:30 234 Theory of Structures 3 8 1 +654 2019-11-24 18:37:56.137998+05:30 233 ENGINEERING GRAPHICS 3 8 1 +656 2019-11-24 18:37:56.163286+05:30 232 Highway and Traffic Engineering 3 8 1 +658 2019-11-24 18:37:56.189157+05:30 231 STRUCTURAL ANALYSIS-I 3 8 1 +660 2019-11-24 18:37:56.213974+05:30 230 CHANNEL HYDRAULICS 3 8 1 +662 2019-11-24 18:37:56.239298+05:30 229 GEOMATICS ENGINEERING-II 3 8 1 +664 2019-11-24 18:37:56.264674+05:30 228 Urban Mass Transit Systems 3 8 1 +666 2019-11-24 18:37:56.289851+05:30 227 Transportation Planning 3 8 1 +668 2019-11-24 18:37:56.50192+05:30 226 Road Traffic Safety 3 8 1 +670 2019-11-24 18:37:57.168564+05:30 225 Behaviour & Design of Steel Structures (Autumn) 3 8 1 +672 2019-11-24 18:37:57.210624+05:30 224 Industrial and Hazardous Waste Management 3 8 1 +674 2019-11-24 18:37:57.23599+05:30 223 Geometric Design 3 8 1 +676 2019-11-24 18:37:57.261309+05:30 222 Finite Element Analysis 3 8 1 +678 2019-11-24 18:37:57.287104+05:30 221 Structural Dynamics 3 8 1 +680 2019-11-24 18:37:57.31242+05:30 220 Advanced Concrete Design 3 8 1 +682 2019-11-24 18:37:57.33774+05:30 219 Continuum Mechanics 3 8 1 +684 2019-11-24 18:37:57.363056+05:30 218 Matrix Structural Analysis 3 8 1 +686 2019-11-24 18:37:57.388445+05:30 217 Geodesy and GPS Surveying 3 8 1 +688 2019-11-24 18:37:57.413747+05:30 216 Remote Sensing and Image Processing 3 8 1 +690 2019-11-24 18:37:57.439016+05:30 215 Environmental Chemistry 3 8 1 +692 2019-11-24 18:37:57.464337+05:30 214 Wastewater Treatment 3 8 1 +694 2019-11-24 18:37:57.489744+05:30 213 Design of Steel Elements 3 8 1 +696 2019-11-24 18:37:57.515222+05:30 212 Railway Engineering and Airport Planning 3 8 1 +698 2019-11-24 18:37:57.540271+05:30 211 Design of Steel Elements 3 8 1 +700 2019-11-24 18:37:57.565586+05:30 210 Waste Water Engineering 3 8 1 +702 2019-11-24 18:37:57.590914+05:30 209 Geomatics Engineering – I 3 8 1 +704 2019-11-24 18:37:57.616407+05:30 208 Introduction to Environmental Studies 3 8 1 +706 2019-11-24 18:37:57.641549+05:30 207 Numerical Methods and Computer Programming 3 8 1 +708 2019-11-24 18:37:57.667174+05:30 206 Solid Mechanics 3 8 1 +710 2019-11-24 18:37:57.692426+05:30 205 Introduction to Civil Engineering 3 8 1 +712 2019-11-24 18:37:57.717627+05:30 204 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 3 8 1 +714 2019-11-24 18:37:57.742974+05:30 203 SEMINAR 3 8 1 +716 2019-11-24 18:37:57.768488+05:30 202 Training Seminar 3 8 1 +541 2019-11-24 18:37:54.705414+05:30 660 Principles and Practices of Irrigation 3 8 1 +543 2019-11-24 18:37:54.730557+05:30 659 Design of Irrigation Structures and Drainage Works 3 8 1 +545 2019-11-24 18:37:54.757147+05:30 658 Construction Planning and Management 3 8 1 +547 2019-11-24 18:37:54.781515+05:30 657 Design of Hydro Mechanical Equipment 3 8 1 +549 2019-11-24 18:37:54.806863+05:30 656 Power System Protection Application 3 8 1 +551 2019-11-24 18:37:54.831964+05:30 655 Hydropower System Planning 3 8 1 +553 2019-11-24 18:37:54.857563+05:30 654 Hydro Generating Equipment 3 8 1 +555 2019-11-24 18:37:54.883062+05:30 653 Applied Hydrology 3 8 1 +557 2019-11-24 18:37:54.908285+05:30 652 Water Resources Planning and Management 3 8 1 +559 2019-11-24 18:37:54.933816+05:30 651 Design of Water Resources Structures 3 8 1 +561 2019-11-24 18:37:54.958847+05:30 650 System Design Techniques 3 8 1 +563 2019-11-24 18:37:54.984983+05:30 649 MATHEMATICAL AND COMPUTATIONAL TECHNIQUES 3 8 1 +565 2019-11-24 18:37:55.009856+05:30 648 Experimental Techniques 3 8 1 +567 2019-11-24 18:37:55.035171+05:30 647 Laboratory Work in Photonics 3 8 1 +569 2019-11-24 18:37:55.060467+05:30 646 Semiconductor Device Physics 3 8 1 +571 2019-11-24 18:37:55.08579+05:30 645 Computational Techniques and Programming 3 8 1 +573 2019-11-24 18:37:55.111147+05:30 644 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 3 8 1 +575 2019-11-24 18:37:55.137464+05:30 643 SEMINAR 3 8 1 +577 2019-11-24 18:37:55.162422+05:30 642 SEMINAR 3 8 1 +579 2019-11-24 18:37:55.187842+05:30 641 Numerical Analysis & Computer Programming 3 8 1 +581 2019-11-24 18:37:55.213063+05:30 640 Semiconductor Photonics 3 8 1 +583 2019-11-24 18:37:55.237941+05:30 639 Quantum Theory of Solids 3 8 1 +585 2019-11-24 18:37:55.263092+05:30 638 A Primer in Quantum Field Theory 3 8 1 +587 2019-11-24 18:37:55.289177+05:30 637 Advanced Characterization Techniques 3 8 1 +589 2019-11-24 18:37:55.314045+05:30 636 Advanced Nuclear Physics 3 8 1 +591 2019-11-24 18:37:55.339152+05:30 635 Advanced Laser Physics 3 8 1 +593 2019-11-24 18:37:55.364668+05:30 634 Advanced Condensed Matter Physics 3 8 1 +595 2019-11-24 18:37:55.390412+05:30 633 DISSERTATION STAGE-I 3 8 1 +597 2019-11-24 18:37:55.416127+05:30 632 SEMICONDUCTOR DEVICES AND APPLICATIONS 3 8 1 +599 2019-11-24 18:37:55.440928+05:30 631 Classical Mechanics 3 8 1 +601 2019-11-24 18:37:55.466165+05:30 630 Mathematical Physics 3 8 1 +603 2019-11-24 18:37:55.491474+05:30 629 Quantum Mechanics – I 3 8 1 +605 2019-11-24 18:37:55.516737+05:30 628 Training Seminar 3 8 1 +607 2019-11-24 18:37:55.5421+05:30 627 B.Tech. Project 3 8 1 +609 2019-11-24 18:37:55.567822+05:30 626 Nuclear Astrophysics 3 8 1 +611 2019-11-24 18:37:55.592834+05:30 625 Techincal Communication 3 8 1 +613 2019-11-24 18:37:55.618559+05:30 624 Laser & Photonics 3 8 1 +615 2019-11-24 18:37:55.643539+05:30 623 Signals and Systems 3 8 1 +617 2019-11-24 18:37:55.668884+05:30 622 Numerical Analysis and Computational Physics 3 8 1 +619 2019-11-24 18:37:55.694349+05:30 621 Applied Instrumentation 3 8 1 +621 2019-11-24 18:37:55.719364+05:30 620 Lab-based Project 3 8 1 +623 2019-11-24 18:37:55.7442+05:30 619 Microprocessors and Peripheral Devices 3 8 1 +625 2019-11-24 18:37:55.76971+05:30 618 Mathematical Physics 3 8 1 +627 2019-11-24 18:37:55.795335+05:30 617 Mechanics and Relativity 3 8 1 +629 2019-11-24 18:37:55.820981+05:30 616 Atomic Molecular and Laser Physics 3 8 1 +631 2019-11-24 18:37:55.845928+05:30 615 Computer Programming 3 8 1 +633 2019-11-24 18:37:55.871694+05:30 614 Introduction to Physical Science 3 8 1 +635 2019-11-24 18:37:55.897314+05:30 613 Modern Physics 3 8 1 +637 2019-11-24 18:37:55.923094+05:30 612 QUARK GLUON PLASMA & FINITE TEMPERATURE FIELD THEORY 3 8 1 +639 2019-11-24 18:37:55.948419+05:30 611 Optical Electronics 3 8 1 +641 2019-11-24 18:37:55.973706+05:30 610 Semiconductor Materials and Devices 3 8 1 +643 2019-11-24 18:37:55.999205+05:30 609 Laboratory Work 3 8 1 +645 2019-11-24 18:37:56.024376+05:30 608 Weather Forecasting 3 8 1 +647 2019-11-24 18:37:56.04972+05:30 607 Advanced Atmospheric Physics 3 8 1 +649 2019-11-24 18:37:56.075039+05:30 606 Physics of Earth’s Atmosphere 3 8 1 +651 2019-11-24 18:37:56.100344+05:30 605 Classical Electrodynamics 3 8 1 +653 2019-11-24 18:37:56.125692+05:30 604 Laboratory Work 3 8 1 +655 2019-11-24 18:37:56.15115+05:30 603 QUANTUM INFORMATION AND COMPUTING 3 8 1 +657 2019-11-24 18:37:56.176371+05:30 602 Plasma Physics and Applications 3 8 1 +659 2019-11-24 18:37:56.201852+05:30 601 Applied Optics 3 8 1 +661 2019-11-24 18:37:56.227103+05:30 600 Quantum Physics 3 8 1 +663 2019-11-24 18:37:56.252374+05:30 599 Engineering Analysis Design 3 8 1 +665 2019-11-24 18:37:56.27763+05:30 598 Quantum Mechanics and Statistical Mechanics 3 8 1 +667 2019-11-24 18:37:56.302994+05:30 597 Electrodynamics and Optics 3 8 1 +669 2019-11-24 18:37:57.150393+05:30 596 Applied Physics 3 8 1 +671 2019-11-24 18:37:57.182029+05:30 595 Electromagnetic Field Theory 3 8 1 +673 2019-11-24 18:37:57.223507+05:30 594 Mechanics 3 8 1 +675 2019-11-24 18:37:57.249255+05:30 593 Advanced Atmospheric Physics 3 8 1 +677 2019-11-24 18:37:57.274215+05:30 592 Elements of Nuclear and Particle Physics 3 8 1 +679 2019-11-24 18:37:57.29946+05:30 591 Physics of Earth’s Atmosphere 3 8 1 +681 2019-11-24 18:37:57.325007+05:30 590 Computational Physics 3 8 1 +683 2019-11-24 18:37:57.350457+05:30 589 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 3 8 1 +685 2019-11-24 18:37:57.375475+05:30 588 SEMINAR 3 8 1 +687 2019-11-24 18:37:57.400928+05:30 587 Converting Processes for Packaging 3 8 1 +689 2019-11-24 18:37:57.426099+05:30 586 Printing Technology 3 8 1 +691 2019-11-24 18:37:57.451596+05:30 585 Packaging Materials 3 8 1 +693 2019-11-24 18:37:57.477086+05:30 584 Packaging Principles, Processes and Sustainability 3 8 1 +695 2019-11-24 18:37:57.502084+05:30 583 Process Instrumentation and Control 3 8 1 +697 2019-11-24 18:37:57.527381+05:30 582 Advanced Numerical Methods and Statistics 3 8 1 +699 2019-11-24 18:37:57.552732+05:30 581 Paper Proprieties and Stock Preparation 3 8 1 +701 2019-11-24 18:37:57.578068+05:30 580 Chemical Recovery Process 3 8 1 +703 2019-11-24 18:37:57.6037+05:30 579 Pulping 3 8 1 +705 2019-11-24 18:37:57.628894+05:30 578 Printing Technology 3 8 1 +707 2019-11-24 18:37:57.653824+05:30 577 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 3 8 1 +709 2019-11-24 18:37:57.679306+05:30 576 SEMINAR 3 8 1 +711 2019-11-24 18:37:57.704654+05:30 575 Numerical Methods in Manufacturing 3 8 1 +713 2019-11-24 18:37:57.730009+05:30 574 Non-Traditional Machining Processes 3 8 1 +715 2019-11-24 18:37:57.755247+05:30 573 Materials Management 3 8 1 +717 2019-11-24 18:37:57.781067+05:30 572 Machine Tool Design and Numerical Control 3 8 1 +719 2019-11-24 18:37:57.806394+05:30 571 Design for Manufacturability 3 8 1 +721 2019-11-24 18:37:57.83186+05:30 570 Advanced Manufacturing Processes 3 8 1 +723 2019-11-24 18:37:57.856866+05:30 569 Quality Management 3 8 1 +725 2019-11-24 18:37:57.881773+05:30 568 Operations Management 3 8 1 +727 2019-11-24 18:37:57.907157+05:30 567 Computer Aided Design 3 8 1 +729 2019-11-24 18:37:57.933371+05:30 566 Advanced Mechanics of Solids 3 8 1 +731 2019-11-24 18:37:57.9588+05:30 565 Dynamics of Mechanical Systems 3 8 1 +733 2019-11-24 18:37:57.984276+05:30 564 Micro and Nano Scale Thermal Engineering 3 8 1 +735 2019-11-24 18:37:58.009637+05:30 563 Hydro-dynamic Machines 3 8 1 +737 2019-11-24 18:37:58.054568+05:30 562 Solar Energy 3 8 1 +739 2019-11-24 18:37:58.085517+05:30 561 Advanced Heat Transfer 3 8 1 +741 2019-11-24 18:37:58.11085+05:30 560 Advanced Fluid Mechanics 3 8 1 +743 2019-11-24 18:37:58.136202+05:30 559 Advanced Thermodynamics 3 8 1 +745 2019-11-24 18:37:58.161477+05:30 558 Modeling and Simulation 3 8 1 +747 2019-11-24 18:37:58.187285+05:30 557 Modeling and Simulation 3 8 1 +749 2019-11-24 18:37:58.212083+05:30 556 Robotics and Control 3 8 1 +751 2019-11-24 18:37:58.237541+05:30 555 Training Seminar 3 8 1 +753 2019-11-24 18:37:58.262743+05:30 554 B.Tech. Project 3 8 1 +755 2019-11-24 18:37:58.288288+05:30 553 Technical Communication 3 8 1 +757 2019-11-24 18:37:58.313653+05:30 552 Refrigeration and Air-Conditioning 3 8 1 +759 2019-11-24 18:37:58.338749+05:30 551 Industrial Management 3 8 1 +761 2019-11-24 18:37:58.364042+05:30 550 Vibration and Noise 3 8 1 +763 2019-11-24 18:37:58.389468+05:30 549 Operations Research 3 8 1 +765 2019-11-24 18:37:58.414619+05:30 548 Principles of Industrial Enigneering 3 8 1 +767 2019-11-24 18:37:58.440163+05:30 547 Dynamics of Machines 3 8 1 +769 2019-11-24 18:37:58.465458+05:30 546 THEORY OF MACHINES 3 8 1 +771 2019-11-24 18:37:58.49057+05:30 545 Energy Conversion 3 8 1 +773 2019-11-24 18:37:58.515925+05:30 544 THERMAL ENGINEERING 3 8 1 +775 2019-11-24 18:37:58.541177+05:30 543 FLUID MECHANICS 3 8 1 +777 2019-11-24 18:37:58.566499+05:30 542 MANUFACTURING TECHNOLOGY-II 3 8 1 +779 2019-11-24 18:37:58.591813+05:30 541 KINEMATICS OF MACHINES 3 8 1 +781 2019-11-24 18:37:58.617228+05:30 540 Non-Conventional Welding Processes 3 8 1 +783 2019-11-24 18:37:58.642458+05:30 539 Smart Materials, Structures, and Devices 3 8 1 +785 2019-11-24 18:37:58.668119+05:30 538 Advanced Mechanical Vibrations 3 8 1 +787 2019-11-24 18:37:58.693852+05:30 537 Finite Element Methods 3 8 1 +789 2019-11-24 18:37:58.719648+05:30 536 Computer Aided Mechanism Design 3 8 1 +791 2019-11-24 18:37:58.745185+05:30 535 Computational Fluid Dynamics & Heat Transfer 3 8 1 +793 2019-11-24 18:37:58.770611+05:30 534 Instrumentation and Experimental Methods 3 8 1 +795 2019-11-24 18:37:58.999012+05:30 533 Power Plants 3 8 1 +797 2019-11-24 18:37:59.575428+05:30 532 Work System Desing 3 8 1 +799 2019-11-24 18:37:59.601018+05:30 531 Theory of Production Processes-II 3 8 1 +801 2019-11-24 18:37:59.625635+05:30 530 Heat and Mass Transfer 3 8 1 +803 2019-11-24 18:37:59.65129+05:30 529 Machine Design 3 8 1 +805 2019-11-24 18:37:59.676505+05:30 528 Lab Based Project 3 8 1 +807 2019-11-24 18:37:59.701738+05:30 527 ENGINEERING ANALYSIS AND DESIGN 3 8 1 +809 2019-11-24 18:37:59.727162+05:30 526 Theory of Production Processes - I 3 8 1 +811 2019-11-24 18:37:59.75235+05:30 525 Fluid Mechanics 3 8 1 +813 2019-11-24 18:37:59.77759+05:30 524 Mechanical Engineering Drawing 3 8 1 +815 2019-11-24 18:37:59.803215+05:30 523 Engineering Thermodynamics 3 8 1 +817 2019-11-24 18:37:59.828205+05:30 522 Programming and Data Structure 3 8 1 +819 2019-11-24 18:37:59.853468+05:30 521 Introduction to Production and Industrial Engineering 3 8 1 +821 2019-11-24 18:37:59.87877+05:30 520 Introduction to Mechanical Engineering 3 8 1 +823 2019-11-24 18:37:59.905647+05:30 519 Advanced Manufacturing Processes 3 8 1 +825 2019-11-24 18:37:59.958036+05:30 518 ADVANCED NUMERICAL ANALYSIS 3 8 1 +827 2019-11-24 18:37:59.979477+05:30 517 SELECTED TOPICS IN ANALYSIS 3 8 1 +829 2019-11-24 18:38:00.005973+05:30 516 SEMINAR 3 8 1 +831 2019-11-24 18:38:00.030024+05:30 515 Seminar 3 8 1 +833 2019-11-24 18:38:00.055816+05:30 514 Orthogonal Polynomials and Special Functions 3 8 1 +835 2019-11-24 18:38:00.081122+05:30 513 Financial Mathematics 3 8 1 +837 2019-11-24 18:38:00.106639+05:30 512 Dynamical Systems 3 8 1 +839 2019-11-24 18:38:00.132089+05:30 511 CONTROL THEORY 3 8 1 +841 2019-11-24 18:38:00.15712+05:30 510 Coding Theory 3 8 1 +843 2019-11-24 18:38:00.182265+05:30 509 Advanced Numerical Analysis 3 8 1 +845 2019-11-24 18:38:00.207581+05:30 508 Mathematical Statistics 3 8 1 +847 2019-11-24 18:38:00.233372+05:30 507 SEMINAR 3 8 1 +849 2019-11-24 18:38:00.258306+05:30 506 OPERATIONS RESEARCH 3 8 1 +851 2019-11-24 18:38:00.283419+05:30 505 FUNCTIONAL ANALYSIS 3 8 1 +853 2019-11-24 18:38:00.309021+05:30 504 Functional Analysis 3 8 1 +855 2019-11-24 18:38:00.334556+05:30 503 Tensors and Differential Geometry 3 8 1 +857 2019-11-24 18:38:00.359059+05:30 502 Fluid Dynamics 3 8 1 +859 2019-11-24 18:38:00.384649+05:30 501 Mathematics 3 8 1 +861 2019-11-24 18:38:00.409844+05:30 500 SOFT COMPUTING 3 8 1 +863 2019-11-24 18:38:00.435534+05:30 499 Complex Analysis 3 8 1 +865 2019-11-24 18:38:00.461131+05:30 498 Computer Programming 3 8 1 +867 2019-11-24 18:38:00.486439+05:30 497 Abstract Algebra 3 8 1 +869 2019-11-24 18:38:00.512034+05:30 496 Topology 3 8 1 +871 2019-11-24 18:38:00.537507+05:30 495 Real Analysis 3 8 1 +873 2019-11-24 18:38:00.562611+05:30 494 Theory of Ordinary Differential Equations 3 8 1 +875 2019-11-24 18:38:00.588031+05:30 493 Complex Analysis-II 3 8 1 +877 2019-11-24 18:38:00.613385+05:30 492 Theory of Partial Differential Equations 3 8 1 +879 2019-11-24 18:38:00.638564+05:30 491 Topology 3 8 1 +881 2019-11-24 18:38:00.664484+05:30 490 Real Analysis-II 3 8 1 +883 2019-11-24 18:38:00.68986+05:30 489 THEORY OF ORDINARY DIFFERENTIAL EQUATIONS 3 8 1 +885 2019-11-24 18:38:00.715046+05:30 488 Technical Communication 3 8 1 +887 2019-11-24 18:38:00.74054+05:30 487 MATHEMATICAL IMAGING TECHNOLOGY 3 8 1 +889 2019-11-24 18:38:00.766047+05:30 486 Linear Programming 3 8 1 +891 2019-11-24 18:38:00.791264+05:30 485 Mathematical Statistics 3 8 1 +893 2019-11-24 18:38:00.816858+05:30 484 Abstract Algebra-I 3 8 1 +895 2019-11-24 18:38:00.849989+05:30 483 DESIGN AND ANALYSIS OF ALGORITHMS 3 8 1 +897 2019-11-24 18:38:00.875273+05:30 482 ORDINARY AND PARTIAL DIFFERENTIAL EQUATIONS 3 8 1 +899 2019-11-24 18:38:00.900988+05:30 481 DISCRETE MATHEMATICS 3 8 1 +718 2019-11-24 18:37:57.79373+05:30 201 B.Tech. Project 3 8 1 +720 2019-11-24 18:37:57.818837+05:30 200 Technical Communication 3 8 1 +722 2019-11-24 18:37:57.8442+05:30 199 Process Integration 3 8 1 +724 2019-11-24 18:37:57.869103+05:30 198 Optimization of Chemical Enigneering Processes 3 8 1 +726 2019-11-24 18:37:57.894334+05:30 197 Process Utilities and Safety 3 8 1 +728 2019-11-24 18:37:57.91974+05:30 196 Process Equipment Design* 3 8 1 +730 2019-11-24 18:37:57.945678+05:30 195 Process Dynamics and Control 3 8 1 +732 2019-11-24 18:37:57.971269+05:30 194 Fluid and Fluid Particle Mechanics 3 8 1 +734 2019-11-24 18:37:57.996735+05:30 193 CHEMICAL ENGINEERING THERMODYNAMICS 3 8 1 +736 2019-11-24 18:37:58.022235+05:30 192 Chemical Technology 3 8 1 +738 2019-11-24 18:37:58.072676+05:30 191 CHEMICAL ENGINEERING THERMODYNAMICS 3 8 1 +740 2019-11-24 18:37:58.098013+05:30 190 MECHANICAL OPERATION 3 8 1 +742 2019-11-24 18:37:58.123245+05:30 189 HEAT TRANSFER 3 8 1 +744 2019-11-24 18:37:58.148444+05:30 188 SEMINAR 3 8 1 +746 2019-11-24 18:37:58.173877+05:30 187 COMPUTATIONAL FLUID DYNAMICS 3 8 1 +748 2019-11-24 18:37:58.199482+05:30 186 Biochemical Engineering 3 8 1 +750 2019-11-24 18:37:58.224826+05:30 185 Advanced Reaction Engineering 3 8 1 +752 2019-11-24 18:37:58.250528+05:30 184 Advanced Transport Phenomena 3 8 1 +754 2019-11-24 18:37:58.275684+05:30 183 Mathematical Methods in Chemical Engineering 3 8 1 +756 2019-11-24 18:37:58.30112+05:30 182 Waste to Energy 3 8 1 +758 2019-11-24 18:37:58.326308+05:30 181 Polymer Physics and Rheology* 3 8 1 +760 2019-11-24 18:37:58.351585+05:30 180 Fluidization Engineering 3 8 1 +762 2019-11-24 18:37:58.376941+05:30 179 Computer Application in Chemical Engineering 3 8 1 +764 2019-11-24 18:37:58.402316+05:30 178 Enginering Analysis and Process Modeling 3 8 1 +766 2019-11-24 18:37:58.427542+05:30 177 Mass Transfer-II 3 8 1 +768 2019-11-24 18:37:58.453136+05:30 176 Mass Transfer -I 3 8 1 +770 2019-11-24 18:37:58.478161+05:30 175 Computer Programming and Numerical Methods 3 8 1 +772 2019-11-24 18:37:58.503525+05:30 174 Material and Energy Balance 3 8 1 +774 2019-11-24 18:37:58.528875+05:30 173 Introduction to Chemical Engineering 3 8 1 +776 2019-11-24 18:37:58.554547+05:30 172 Advanced Thermodynamics and Molecular Simulations 3 8 1 +778 2019-11-24 18:37:58.579397+05:30 171 DISSERTATION STAGE I 3 8 1 +780 2019-11-24 18:37:58.604885+05:30 170 SEMINAR 3 8 1 +782 2019-11-24 18:37:58.6301+05:30 169 ADVANCED TRANSPORT PROCESS 3 8 1 +784 2019-11-24 18:37:58.655453+05:30 168 RECOMBINANT DNA TECHNOLOGY 3 8 1 +786 2019-11-24 18:37:58.68177+05:30 167 REACTION KINETICS AND REACTOR DESIGN 3 8 1 +788 2019-11-24 18:37:58.706673+05:30 166 MICROBIOLOGY AND BIOCHEMISTRY 3 8 1 +790 2019-11-24 18:37:58.732422+05:30 165 Chemical Genetics and Drug Discovery 3 8 1 +792 2019-11-24 18:37:58.757377+05:30 164 Structural Biology 3 8 1 +794 2019-11-24 18:37:58.783133+05:30 163 Genomics and Proteomics 3 8 1 +796 2019-11-24 18:37:59.181958+05:30 162 Vaccine Development & Production 3 8 1 +798 2019-11-24 18:37:59.587455+05:30 161 Cell & Tissue Culture Technology 3 8 1 +800 2019-11-24 18:37:59.612813+05:30 160 Biotechnology Laboratory – III 3 8 1 +802 2019-11-24 18:37:59.638094+05:30 159 Seminar 3 8 1 +804 2019-11-24 18:37:59.663363+05:30 158 Genetic Engineering 3 8 1 +806 2019-11-24 18:37:59.688737+05:30 157 Biophysical Techniques 3 8 1 +808 2019-11-24 18:37:59.713985+05:30 156 DOWNSTREAM PROCESSING 3 8 1 +810 2019-11-24 18:37:59.73942+05:30 155 BIOREACTION ENGINEERING 3 8 1 +812 2019-11-24 18:37:59.764714+05:30 154 Technical Communication 3 8 1 +814 2019-11-24 18:37:59.789941+05:30 153 Cell & Developmental Biology 3 8 1 +816 2019-11-24 18:37:59.815262+05:30 152 Genetics & Molecular Biology 3 8 1 +818 2019-11-24 18:37:59.840636+05:30 151 Applied Microbiology 3 8 1 +820 2019-11-24 18:37:59.866184+05:30 150 Biotechnology Laboratory – I 3 8 1 +822 2019-11-24 18:37:59.891252+05:30 149 Biochemistry 3 8 1 +824 2019-11-24 18:37:59.94149+05:30 148 Training Seminar 3 8 1 +826 2019-11-24 18:37:59.967597+05:30 147 Drug Designing 3 8 1 +828 2019-11-24 18:37:59.991665+05:30 146 Protein Engineering 3 8 1 +830 2019-11-24 18:38:00.017366+05:30 145 Genomics and Proteomics 3 8 1 +832 2019-11-24 18:38:00.043327+05:30 144 B.Tech. Project 3 8 1 +834 2019-11-24 18:38:00.068857+05:30 143 Technical Communication 3 8 1 +836 2019-11-24 18:38:00.094102+05:30 142 CELL AND TISSUE ENGINEERING 3 8 1 +838 2019-11-24 18:38:00.119565+05:30 141 IMMUNOTECHNOLOGY 3 8 1 +840 2019-11-24 18:38:00.144961+05:30 140 GENETICS AND MOLECULAR BIOLOGY 3 8 1 +842 2019-11-24 18:38:00.170575+05:30 139 Computer Programming 3 8 1 +844 2019-11-24 18:38:00.195252+05:30 138 Introduction to Biotechnology 3 8 1 +846 2019-11-24 18:38:00.220552+05:30 137 Molecular Biophysics 3 8 1 +848 2019-11-24 18:38:00.246016+05:30 136 Animal Biotechnology 3 8 1 +850 2019-11-24 18:38:00.271094+05:30 135 Plant Biotechnology 3 8 1 +852 2019-11-24 18:38:00.296492+05:30 134 Bioseparation Engineering 3 8 1 +854 2019-11-24 18:38:00.321727+05:30 133 Bioprocess Engineering 3 8 1 +856 2019-11-24 18:38:00.346638+05:30 132 Chemical Kinetics and Reactor Design 3 8 1 +858 2019-11-24 18:38:00.372489+05:30 131 BIOINFORMATICS 3 8 1 +860 2019-11-24 18:38:00.397391+05:30 130 MICROBIOLOGY 3 8 1 +862 2019-11-24 18:38:00.423024+05:30 129 Professional Training 3 8 1 +864 2019-11-24 18:38:00.448738+05:30 128 Planning Studio-III 3 8 1 +866 2019-11-24 18:38:00.473738+05:30 127 DISSERTATION STAGE-I 3 8 1 +868 2019-11-24 18:38:00.499173+05:30 126 Professional Training 3 8 1 +870 2019-11-24 18:38:00.524424+05:30 125 Design Studio-III 3 8 1 +872 2019-11-24 18:38:00.549901+05:30 124 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 3 8 1 +874 2019-11-24 18:38:00.574965+05:30 123 Housing 3 8 1 +876 2019-11-24 18:38:00.600762+05:30 122 Planning Theory and Techniques 3 8 1 +878 2019-11-24 18:38:00.625666+05:30 121 Ecology and Sustainable Development 3 8 1 +880 2019-11-24 18:38:00.650955+05:30 120 Infrastructure Planning 3 8 1 +882 2019-11-24 18:38:00.677084+05:30 119 Socio Economics, Demography and Quantitative Techniques 3 8 1 +884 2019-11-24 18:38:00.702245+05:30 118 Planning Studio-I 3 8 1 +886 2019-11-24 18:38:00.727516+05:30 117 Computer Applications in Architecture 3 8 1 +888 2019-11-24 18:38:00.752998+05:30 116 Advanced Building Technologies 3 8 1 +890 2019-11-24 18:38:00.778228+05:30 115 Urban Design 3 8 1 +892 2019-11-24 18:38:00.80356+05:30 114 Contemporary Architecture- Theories and Trends 3 8 1 +894 2019-11-24 18:38:00.828975+05:30 113 Design Studio-I 3 8 1 +896 2019-11-24 18:38:00.8622+05:30 112 Live Project/Studio/Seminar-II 3 8 1 +898 2019-11-24 18:38:00.888228+05:30 111 Vastushastra 3 8 1 +900 2019-11-24 18:38:00.91297+05:30 110 Hill Architecture 3 8 1 +902 2019-11-24 18:38:00.938433+05:30 109 Urban Planning 3 8 1 +904 2019-11-24 18:38:00.963577+05:30 108 Thesis Project I 3 8 1 +906 2019-11-24 18:38:00.989421+05:30 107 Architectural Design-VII 3 8 1 +908 2019-11-24 18:38:01.015636+05:30 106 Live Project/ Studio/ Seminar-I 3 8 1 +910 2019-11-24 18:38:01.040094+05:30 105 Ekistics 3 8 1 +912 2019-11-24 18:38:01.122855+05:30 104 Working Drawing 3 8 1 +914 2019-11-24 18:38:01.14787+05:30 103 Sustainable Architecture 3 8 1 +916 2019-11-24 18:38:01.173354+05:30 102 Urban Design 3 8 1 +918 2019-11-24 18:38:01.198431+05:30 101 Architectural Design-VI 3 8 1 +920 2019-11-24 18:38:01.224007+05:30 100 MODERN INDIAN ARCHITECTURE 3 8 1 +922 2019-11-24 18:38:01.249822+05:30 99 Interior Design 3 8 1 +924 2019-11-24 18:38:01.27444+05:30 98 Computer Applications in Architecture 3 8 1 +926 2019-11-24 18:38:01.60747+05:30 97 Building Construction-IV 3 8 1 +928 2019-11-24 18:38:02.054652+05:30 96 Architectural Design-IV 3 8 1 +930 2019-11-24 18:38:02.194271+05:30 95 MEASURED DRAWING CAMP 3 8 1 +932 2019-11-24 18:38:02.219762+05:30 94 PRICIPLES OF ARCHITECTURE 3 8 1 +934 2019-11-24 18:38:02.244909+05:30 93 STRUCTURE AND ARCHITECTURE 3 8 1 +936 2019-11-24 18:38:02.27068+05:30 92 QUANTITY, PRICING AND SPECIFICATIONS 3 8 1 +938 2019-11-24 18:38:02.29605+05:30 91 HISTORY OF ARCHITECTUTRE I 3 8 1 +940 2019-11-24 18:38:02.32142+05:30 90 BUILDING CONSTRUCTION II 3 8 1 +942 2019-11-24 18:38:02.346741+05:30 89 Architectural Design-III 3 8 1 +944 2019-11-24 18:38:02.371922+05:30 88 ARCHITECTURAL DESIGN II 3 8 1 +946 2019-11-24 18:38:02.397356+05:30 87 Basic Design and Creative Workshop I 3 8 1 +948 2019-11-24 18:38:02.422658+05:30 86 Architectural Graphics I 3 8 1 +950 2019-11-24 18:38:02.448099+05:30 85 Visual Art I 3 8 1 +952 2019-11-24 18:38:02.485352+05:30 84 Introduction to Architecture 3 8 1 +954 2019-11-24 18:38:02.509977+05:30 83 SEMINAR 3 8 1 +956 2019-11-24 18:38:02.535474+05:30 82 Regional Planning 3 8 1 +958 2019-11-24 18:38:02.561047+05:30 81 Planning Legislation and Governance 3 8 1 +960 2019-11-24 18:38:02.586641+05:30 80 Modern World Architecture 3 8 1 +962 2019-11-24 18:38:02.620038+05:30 79 SEMINAR 3 8 1 +964 2019-11-24 18:38:02.645351+05:30 78 Advanced Characterization Techniques 3 8 1 +901 2019-11-24 18:38:00.925815+05:30 480 Introduction to Computer Programming 3 8 1 +903 2019-11-24 18:38:00.95169+05:30 479 Mathematics-I 3 8 1 +905 2019-11-24 18:38:00.976522+05:30 478 Numerical Methods, Probability and Statistics 3 8 1 +907 2019-11-24 18:38:01.001921+05:30 477 Optimization Techniques 3 8 1 +909 2019-11-24 18:38:01.027173+05:30 476 Probability and Statistics 3 8 1 +911 2019-11-24 18:38:01.052243+05:30 475 MEASURE THEORY 3 8 1 +913 2019-11-24 18:38:01.134784+05:30 474 Statistical Inference 3 8 1 +915 2019-11-24 18:38:01.160324+05:30 473 COMPLEX ANALYSIS-I 3 8 1 +917 2019-11-24 18:38:01.185756+05:30 472 Real Analysis I 3 8 1 +919 2019-11-24 18:38:01.210956+05:30 471 Introduction to Mathematical Sciences 3 8 1 +921 2019-11-24 18:38:01.23676+05:30 470 Probability and Statistics 3 8 1 +923 2019-11-24 18:38:01.261592+05:30 469 Mathematical Methods 3 8 1 +925 2019-11-24 18:38:01.441161+05:30 468 DISSERTATION STAGE-II (CONTINUED FROM III SEMESTER) 3 8 1 +927 2019-11-24 18:38:02.017536+05:30 467 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 3 8 1 +929 2019-11-24 18:38:02.124324+05:30 466 SEMINAR 3 8 1 +931 2019-11-24 18:38:02.207299+05:30 465 Watershed modeling and simulation 3 8 1 +933 2019-11-24 18:38:02.23309+05:30 464 Soil and groundwater contamination modelling 3 8 1 +935 2019-11-24 18:38:02.25782+05:30 463 Experimental hydrology 3 8 1 +937 2019-11-24 18:38:02.28337+05:30 462 Remote sensing and GIS applications 3 8 1 +939 2019-11-24 18:38:02.308429+05:30 461 Environmental quality 3 8 1 +941 2019-11-24 18:38:02.333814+05:30 460 Watershed Behavior and Conservation Practices 3 8 1 +943 2019-11-24 18:38:02.359278+05:30 459 Geophysical investigations 3 8 1 +945 2019-11-24 18:38:02.384439+05:30 458 Groundwater hydrology 3 8 1 +947 2019-11-24 18:38:02.409744+05:30 457 Stochastic hydrology 3 8 1 +949 2019-11-24 18:38:02.435098+05:30 456 Irrigation and drainage engineering 3 8 1 +951 2019-11-24 18:38:02.455979+05:30 455 Engineering Hydrology 3 8 1 +953 2019-11-24 18:38:02.497123+05:30 454 RESEARCH METHODOLOGY IN LANGUAGE & LITERATURE 3 8 1 +955 2019-11-24 18:38:02.522812+05:30 453 RESEARCH METHODOLOGY IN SOCIAL SCIENCES 3 8 1 +957 2019-11-24 18:38:02.547773+05:30 452 UNDERSTANDING PERSONLALITY 3 8 1 +959 2019-11-24 18:38:02.573384+05:30 451 SEMINAR 3 8 1 +961 2019-11-24 18:38:02.608011+05:30 450 Advanced Topics in Growth Theory 3 8 1 +963 2019-11-24 18:38:02.632739+05:30 449 Ecological Economics 3 8 1 +965 2019-11-24 18:38:02.657618+05:30 448 Introduction to Research Methodology 3 8 1 +966 2019-11-24 18:38:02.691196+05:30 447 Issues in Indian Economy 3 8 1 +967 2019-11-24 18:38:02.709227+05:30 446 PUBLIC POLICY; THEORY AND PRACTICE 3 8 1 +968 2019-11-24 18:38:02.726634+05:30 445 ADVANCED ECONOMETRICS 3 8 1 +969 2019-11-24 18:38:02.737809+05:30 444 MONEY, BANKING AND FINANCIAL MARKETS 3 8 1 +970 2019-11-24 18:38:02.749872+05:30 443 DEVELOPMENT ECONOMICS 3 8 1 +971 2019-11-24 18:38:02.762279+05:30 442 MATHEMATICS FOR ECONOMISTS 3 8 1 +972 2019-11-24 18:38:02.774723+05:30 441 MACROECONOMICS I 3 8 1 +973 2019-11-24 18:38:02.800504+05:30 440 MICROECONOMICS I 3 8 1 +974 2019-11-24 18:38:02.812962+05:30 439 HSN-01 3 8 1 +975 2019-11-24 18:38:02.825781+05:30 438 UNDERSTANDING PERSONALITY 3 8 1 +976 2019-11-24 18:38:02.838665+05:30 437 Sociology 3 8 1 +977 2019-11-24 18:38:02.851325+05:30 436 Economics 3 8 1 +978 2019-11-24 18:38:02.864822+05:30 435 Technical Communication 3 8 1 +979 2019-11-24 18:38:02.877199+05:30 434 Society,Culture Built Environment 3 8 1 +980 2019-11-24 18:38:02.890055+05:30 433 Introduction to Psychology 3 8 1 +981 2019-11-24 18:38:02.902615+05:30 432 Communication Skills(Advance) 3 8 1 +982 2019-11-24 18:38:02.915574+05:30 431 Communication Skills(Basic) 3 8 1 +983 2019-11-24 18:38:02.927733+05:30 430 Technical Communication 3 8 1 +984 2019-11-24 18:38:02.940862+05:30 429 Communication skills (Basic) 3 8 1 +985 2019-11-24 18:38:02.953561+05:30 428 DISSERTATION STAGE-II (CONTINUED FROM III SEMESTER) 3 8 1 +986 2019-11-24 18:38:02.966248+05:30 427 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 3 8 1 +987 2019-11-24 18:38:02.978872+05:30 426 SEMINAR 3 8 1 +988 2019-11-24 18:38:02.991499+05:30 425 Analog VLSI Circuit Design 3 8 1 +989 2019-11-24 18:38:03.004722+05:30 424 Digital System Design 3 8 1 +990 2019-11-24 18:38:03.017214+05:30 423 Simulation Lab-1 3 8 1 +991 2019-11-24 18:38:03.029686+05:30 422 Microelectronics Lab-1 3 8 1 +992 2019-11-24 18:38:03.046759+05:30 421 Digital VLSI Circuit Design 3 8 1 +993 2019-11-24 18:38:03.072009+05:30 420 MOS Device Physics 3 8 1 +994 2019-11-24 18:38:03.084759+05:30 419 Microwave and Millimeter Wave Circuits 3 8 1 +995 2019-11-24 18:38:03.097383+05:30 418 Antenna Theory & Design 3 8 1 +996 2019-11-24 18:38:03.109706+05:30 417 Advanced EMFT 3 8 1 +997 2019-11-24 18:38:03.122641+05:30 416 Microwave Engineering 3 8 1 +998 2019-11-24 18:38:03.134983+05:30 415 Microwave Lab 3 8 1 +999 2019-11-24 18:38:03.148149+05:30 414 Telecommunication Networks 3 8 1 +1000 2019-11-24 18:38:03.160403+05:30 413 Information and Communication Theory 3 8 1 +1001 2019-11-24 18:38:03.173097+05:30 412 Digital Communication Systems 3 8 1 +1002 2019-11-24 18:38:03.18557+05:30 411 Laboratory 3 8 1 +1003 2019-11-24 18:38:03.198115+05:30 410 Training Seminar 3 8 1 +1004 2019-11-24 18:38:03.21077+05:30 409 B.Tech. Project 3 8 1 +1005 2019-11-24 18:38:03.231997+05:30 408 Technical Communication 3 8 1 +1006 2019-11-24 18:38:03.244286+05:30 407 IC Application Laboratory 3 8 1 +1007 2019-11-24 18:38:03.256948+05:30 406 Fundamentals of Microelectronics 3 8 1 +1008 2019-11-24 18:38:03.269839+05:30 405 Microelectronic Devices,Technology and Circuits 3 8 1 +1009 2019-11-24 18:38:03.282293+05:30 404 ELECTRONICS NETWORK THEORY 3 8 1 +1010 2019-11-24 18:38:03.294631+05:30 403 SIGNALS AND SYSTEMS 3 8 1 +1011 2019-11-24 18:38:03.307544+05:30 402 Introduction to Electronics and Communication Engineering 3 8 1 +1012 2019-11-24 18:38:03.320369+05:30 401 SIGNALS AND SYSTEMS 3 8 1 +1013 2019-11-24 18:38:03.333216+05:30 400 RF System Design and Analysis 3 8 1 +1014 2019-11-24 18:38:03.345213+05:30 399 Radar Signal Processing 3 8 1 +1015 2019-11-24 18:38:03.35814+05:30 398 Fiber Optic Systems 3 8 1 +1016 2019-11-24 18:38:03.370619+05:30 397 Coding Theory and Applications 3 8 1 +1017 2019-11-24 18:38:03.383935+05:30 396 Microwave Engineering 3 8 1 +1018 2019-11-24 18:38:03.395956+05:30 395 Antenna Theory 3 8 1 +1019 2019-11-24 18:38:03.408979+05:30 394 Communication Systems and Techniques 3 8 1 +1020 2019-11-24 18:38:03.421654+05:30 393 Digital Electronic Circuits Laboratory 3 8 1 +1021 2019-11-24 18:38:03.434823+05:30 392 Engineering Electromagnetics 3 8 1 +1022 2019-11-24 18:38:03.447438+05:30 391 Automatic Control Systems 3 8 1 +1023 2019-11-24 18:38:03.459896+05:30 390 Principles of Digital Communication 3 8 1 +1024 2019-11-24 18:38:03.472851+05:30 389 Fundamental of Electronics 3 8 1 +1025 2019-11-24 18:38:03.485474+05:30 388 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 3 8 1 +1026 2019-11-24 18:38:03.498195+05:30 387 SEMINAR 3 8 1 +1027 2019-11-24 18:38:03.510354+05:30 386 Modeling and Simulation 3 8 1 +1028 2019-11-24 18:38:03.523454+05:30 385 Introduction to Robotics 3 8 1 +1029 2019-11-24 18:38:03.543958+05:30 384 Smart Grid 3 8 1 +1030 2019-11-24 18:38:03.557028+05:30 383 Power System Planning 3 8 1 +1031 2019-11-24 18:38:03.569287+05:30 382 Enhanced Power Quality AC-DC Converters 3 8 1 +1032 2019-11-24 18:38:03.582086+05:30 381 Advances in Signal and Image Processing 3 8 1 +1033 2019-11-24 18:38:03.594662+05:30 380 Advanced System Engineering 3 8 1 +1034 2019-11-24 18:38:03.608351+05:30 379 Intelligent Control Techniques 3 8 1 +1035 2019-11-24 18:38:03.621037+05:30 378 Advanced Linear Control Systems 3 8 1 +1036 2019-11-24 18:38:03.633771+05:30 377 EHV AC Transmission Systems 3 8 1 +1037 2019-11-24 18:38:03.645933+05:30 376 Distribution System Analysis and Operation 3 8 1 +1038 2019-11-24 18:38:03.658983+05:30 375 Power System Operation and Control 3 8 1 +1039 2019-11-24 18:38:03.671303+05:30 374 Computer Aided Power System Analysis 3 8 1 +1040 2019-11-24 18:38:03.684552+05:30 373 Advanced Electric Drives 3 8 1 +1041 2019-11-24 18:38:03.696763+05:30 372 Analysis of Electrical Machines 3 8 1 +1042 2019-11-24 18:38:03.709605+05:30 371 Advanced Power Electronics 3 8 1 +1043 2019-11-24 18:38:03.721828+05:30 370 Biomedical Instrumentation 3 8 1 +1044 2019-11-24 18:38:03.734805+05:30 369 Digital Signal and Image Processing 3 8 1 +1045 2019-11-24 18:38:03.747192+05:30 368 Advanced Industrial and Electronic Instrumentation 3 8 1 +1046 2019-11-24 18:38:03.760142+05:30 367 Training Seminar 3 8 1 +1047 2019-11-24 18:38:03.772566+05:30 366 B.Tech. Project 3 8 1 +1048 2019-11-24 18:38:03.801897+05:30 365 Technical Communication 3 8 1 +1049 2019-11-24 18:38:03.814219+05:30 364 Embedded Systems 3 8 1 +1050 2019-11-24 18:38:03.827307+05:30 363 Data Structures 3 8 1 +1051 2019-11-24 18:38:03.860713+05:30 362 Signals and Systems 3 8 1 +1052 2019-11-24 18:38:04.068118+05:30 361 Artificial Neural Networks 3 8 1 +1053 2019-11-24 18:38:04.265941+05:30 360 Advanced Control Systems 3 8 1 +1054 2019-11-24 18:38:04.685469+05:30 359 Power Electronics 3 8 1 +1055 2019-11-24 18:38:04.698599+05:30 358 Power System Analysis & Control 3 8 1 +1056 2019-11-24 18:38:04.710803+05:30 357 ENGINEERING ANALYSIS AND DESIGN 3 8 1 +1057 2019-11-24 18:38:04.723807+05:30 356 DESIGN OF ELECTRONICS CIRCUITS 3 8 1 +1058 2019-11-24 18:38:04.793367+05:30 355 DIGITAL ELECTRONICS AND CIRCUITS 3 8 1 +1059 2019-11-24 18:38:04.806293+05:30 354 ELECTRICAL MACHINES-I 3 8 1 +1060 2019-11-24 18:38:04.818748+05:30 353 Programming in C++ 3 8 1 +1061 2019-11-24 18:38:04.83178+05:30 352 Network Theory 3 8 1 +1062 2019-11-24 18:38:04.844054+05:30 351 Introduction to Electrical Engineering 3 8 1 +1063 2019-11-24 18:38:04.85695+05:30 350 Instrumentation laboratory 3 8 1 +1064 2019-11-24 18:38:04.869568+05:30 349 Electrical Science 3 8 1 +1065 2019-11-24 18:38:04.882486+05:30 348 SEMINAR 3 8 1 +1066 2019-11-24 18:38:04.89464+05:30 347 Plate Tectonics 3 8 1 +1067 2019-11-24 18:38:04.907869+05:30 346 Well Logging 3 8 1 +1068 2019-11-24 18:38:04.920351+05:30 345 Petroleum Geology 3 8 1 +1069 2019-11-24 18:38:04.933339+05:30 344 Engineering Geology 3 8 1 +1070 2019-11-24 18:38:04.953414+05:30 343 Indian Mineral Deposits 3 8 1 +1071 2019-11-24 18:38:04.96705+05:30 342 Isotope Geology 3 8 1 +1072 2019-11-24 18:38:04.986496+05:30 341 Seminar 3 8 1 +1073 2019-11-24 18:38:05.000373+05:30 340 ADVANCED SEISMIC PROSPECTING 3 8 1 +1074 2019-11-24 18:38:05.012252+05:30 339 DYNAMIC SYSTEMS IN EARTH SCIENCES 3 8 1 +1075 2019-11-24 18:38:05.025262+05:30 338 Global Environment 3 8 1 +1076 2019-11-24 18:38:05.038345+05:30 337 Micropaleontology and Paleoceanography 3 8 1 +1077 2019-11-24 18:38:05.05084+05:30 336 ISOTOPE GEOLOGY 3 8 1 +1078 2019-11-24 18:38:05.071027+05:30 335 Geophysical Prospecting 3 8 1 +1079 2019-11-24 18:38:05.08407+05:30 334 Sedimentology and Stratigraphy 3 8 1 +1080 2019-11-24 18:38:05.096341+05:30 333 Comprehensive Viva Voce 3 8 1 +1081 2019-11-24 18:38:05.109334+05:30 332 Structural Geology 3 8 1 +1082 2019-11-24 18:38:05.121475+05:30 331 Igneous Petrology 3 8 1 +1083 2019-11-24 18:38:05.134471+05:30 330 Geochemistry 3 8 1 +1084 2019-11-24 18:38:05.146985+05:30 329 Crystallography and Mineralogy 3 8 1 +1085 2019-11-24 18:38:05.159896+05:30 328 Numerical Techniques and Computer Programming 3 8 1 +1086 2019-11-24 18:38:05.172292+05:30 327 Comprehensive Viva Voce 3 8 1 +1087 2019-11-24 18:38:05.185157+05:30 326 Seminar-I 3 8 1 +1088 2019-11-24 18:38:05.1975+05:30 325 STRONG MOTION SEISMOGRAPH 3 8 1 +1089 2019-11-24 18:38:05.21058+05:30 324 Geophysical Well logging 3 8 1 +1090 2019-11-24 18:38:05.223471+05:30 323 Numerical Modelling in Geophysical 3 8 1 +1091 2019-11-24 18:38:05.236041+05:30 322 PETROLEUM GEOLOGY 3 8 1 +1092 2019-11-24 18:38:05.248782+05:30 321 HYDROGEOLOGY 3 8 1 +1093 2019-11-24 18:38:05.261222+05:30 320 ENGINEERING GEOLOGY 3 8 1 +1094 2019-11-24 18:38:05.274338+05:30 319 PRINCIPLES OF GIS 3 8 1 +1095 2019-11-24 18:38:05.287053+05:30 318 PRINCIPLES OF REMOTE SENSING 3 8 1 +1096 2019-11-24 18:38:05.299866+05:30 317 Technical Communication 3 8 1 +1097 2019-11-24 18:38:05.311381+05:30 316 ROCK AND SOIL MECHANICS 3 8 1 +1098 2019-11-24 18:38:05.324364+05:30 315 Seismology 3 8 1 +1099 2019-11-24 18:38:05.337047+05:30 314 Gravity and Magnetic Prospecting 3 8 1 +1100 2019-11-24 18:38:05.349741+05:30 313 Economic Geology 3 8 1 +1101 2019-11-24 18:38:05.427739+05:30 312 Metamorphic Petrology 3 8 1 +1102 2019-11-24 18:38:05.440705+05:30 311 Structural Geology-II 3 8 1 +1103 2019-11-24 18:38:05.457002+05:30 310 GEOPHYSICAL PROSPECTING 3 8 1 +1104 2019-11-24 18:38:05.470105+05:30 309 FIELD THEORY 3 8 1 +1105 2019-11-24 18:38:05.48193+05:30 308 STRUCTURAL GEOLOGY-I 3 8 1 +1106 2019-11-24 18:38:05.49485+05:30 307 PALEONTOLOGY 3 8 1 +1107 2019-11-24 18:38:05.507334+05:30 306 BASIC PETROLOGY 3 8 1 +1108 2019-11-24 18:38:05.520859+05:30 305 Computer Programming 3 8 1 +1109 2019-11-24 18:38:05.533178+05:30 304 Introduction to Earth Sciences 3 8 1 +1110 2019-11-24 18:38:05.545616+05:30 303 Electrical Prospecting 3 8 1 +1111 2019-11-24 18:38:05.558121+05:30 302 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 3 8 1 +1112 2019-11-24 18:38:05.571132+05:30 301 SEMINAR 3 8 1 +1113 2019-11-24 18:38:05.583705+05:30 300 Principles of Seismology 3 8 1 +1114 2019-11-24 18:38:05.596291+05:30 299 Machine Foundation 3 8 1 +1115 2019-11-24 18:38:05.608735+05:30 298 Earthquake Resistant Design of Structures 3 8 1 +1116 2019-11-24 18:38:05.621752+05:30 297 Vulnerability and Risk Analysis 3 8 1 +1117 2019-11-24 18:38:05.634008+05:30 296 Seismological Modeling and Simulation 3 8 1 +1118 2019-11-24 18:38:05.646694+05:30 295 Seismic Hazard Assessment 3 8 1 +1119 2019-11-24 18:38:05.659263+05:30 294 Geotechnical Earthquake Engineering 3 8 1 +1120 2019-11-24 18:38:05.672194+05:30 293 Numerical Methods for Dynamic Systems 3 8 1 +1121 2019-11-24 18:38:05.684929+05:30 292 Finite Element Method 3 8 1 +1122 2019-11-24 18:38:05.697599+05:30 291 Engineering Seismology 3 8 1 +1123 2019-11-24 18:38:05.709762+05:30 290 Vibration of Elastic Media 3 8 1 +1124 2019-11-24 18:38:05.722938+05:30 289 Theory of Vibrations 3 8 1 +1125 2019-11-24 18:38:05.735304+05:30 288 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 3 8 1 +1126 2019-11-24 18:38:05.748404+05:30 287 SEMINAR 3 8 1 +1127 2019-11-24 18:38:05.761017+05:30 286 Advanced Topics in Software Engineering 3 8 1 +1128 2019-11-24 18:38:05.773678+05:30 285 Lab II (Project Lab) 3 8 1 +1129 2019-11-24 18:38:05.785878+05:30 284 Lab I (Programming Lab) 3 8 1 +1130 2019-11-24 18:38:05.798815+05:30 283 Advanced Computer Networks 3 8 1 +1131 2019-11-24 18:38:05.811397+05:30 282 Advanced Operating Systems 3 8 1 +1132 2019-11-24 18:38:05.833376+05:30 281 Advanced Algorithms 3 8 1 +1133 2019-11-24 18:38:05.845629+05:30 280 Training Seminar 3 8 1 +1134 2019-11-24 18:38:05.858258+05:30 279 B.Tech. Project 3 8 1 +1135 2019-11-24 18:38:05.870671+05:30 278 Technical Communication 3 8 1 +1136 2019-11-24 18:38:05.883624+05:30 277 Computer Network Laboratory 3 8 1 +1137 2019-11-24 18:38:05.896011+05:30 276 Theory of Computation 3 8 1 +1138 2019-11-24 18:38:05.909001+05:30 275 Computer Network 3 8 1 +1139 2019-11-24 18:38:05.921483+05:30 274 DATA STRUCTURE LABORATORY 3 8 1 +1140 2019-11-24 18:38:05.934415+05:30 273 COMPUTER ARCHITECTURE AND MICROPROCESSORS 3 8 1 +1141 2019-11-24 18:38:05.947169+05:30 272 Fundamentals of Object Oriented Programming 3 8 1 +1142 2019-11-24 18:38:05.959513+05:30 271 Introduction to Computer Science and Engineering 3 8 1 +1143 2019-11-24 18:38:05.972442+05:30 270 Logic and Automated Reasoning 3 8 1 +1144 2019-11-24 18:38:05.984811+05:30 269 Data Mining and Warehousing 3 8 1 +1145 2019-11-24 18:38:05.997911+05:30 268 MACHINE LEARNING 3 8 1 +1146 2019-11-24 18:38:06.010261+05:30 267 ARTIFICIAL INTELLIGENCE 3 8 1 +1147 2019-11-24 18:38:06.023181+05:30 266 Compiler Design 3 8 1 +1148 2019-11-24 18:38:06.035389+05:30 265 Data Base Management Systems 3 8 1 +1149 2019-11-24 18:38:06.048338+05:30 264 OBJECT ORIENTED ANALYSIS AND DESIGN 3 8 1 +1150 2019-11-24 18:38:06.060891+05:30 263 Data Structures 3 8 1 +1151 2019-11-24 18:38:06.07365+05:30 262 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 3 8 1 +1152 2019-11-24 18:38:06.086381+05:30 261 SEMINAR 3 8 1 +1153 2019-11-24 18:38:06.099213+05:30 260 Geoinformatics for Landuse Surveys 3 8 1 +1154 2019-11-24 18:38:06.111475+05:30 259 Planning, Design and Construction of Rural Roads 3 8 1 +1155 2019-11-24 18:38:06.124357+05:30 258 Pavement Analysis and Design 3 8 1 +1156 2019-11-24 18:38:06.136893+05:30 257 Traffic Engineering and Modeling 3 8 1 +1157 2019-11-24 18:38:06.149894+05:30 256 Modeling, Simulation and Optimization 3 8 1 +1158 2019-11-24 18:38:06.162094+05:30 255 Free Surface Flows 3 8 1 +1159 2019-11-24 18:38:06.175014+05:30 254 Advanced Fluid Mechanics 3 8 1 +1160 2019-11-24 18:38:06.187699+05:30 253 Advanced Hydrology 3 8 1 +1161 2019-11-24 18:38:06.200426+05:30 252 Soil Dynamics and Machine Foundations 3 8 1 +1162 2019-11-24 18:38:06.212837+05:30 251 Engineering Behaviour of Rocks 3 8 1 +1163 2019-11-24 18:38:06.225744+05:30 250 Advanced Soil Mechanics 3 8 1 +1164 2019-11-24 18:38:06.238094+05:30 249 Advanced Numerical Analysis 3 8 1 +1165 2019-11-24 18:38:06.251266+05:30 248 FIELD SURVEY CAMP 3 8 1 +1166 2019-11-24 18:38:06.263581+05:30 247 Principles of Photogrammetry 3 8 1 +1167 2019-11-24 18:38:06.276296+05:30 246 Surveying Measurements and Adjustments 3 8 1 +1168 2019-11-24 18:38:06.288809+05:30 245 Environmental Hydraulics 3 8 1 +1169 2019-11-24 18:38:06.301659+05:30 244 Water Treatment 3 8 1 +1170 2019-11-24 18:38:06.314062+05:30 243 Environmental Modeling and Simulation 3 8 1 +1171 2019-11-24 18:38:06.326805+05:30 242 Training Seminar 3 8 1 +1172 2019-11-24 18:38:06.339366+05:30 241 Advanced Highway Engineering 3 8 1 +1173 2019-11-24 18:38:06.352202+05:30 240 Advanced Water and Wastewater Treatment 3 8 1 +1174 2019-11-24 18:38:06.364827+05:30 239 WATER RESOURCE ENGINEERING 3 8 1 +1175 2019-11-24 18:38:06.377142+05:30 238 B.Tech. Project 3 8 1 +1176 2019-11-24 18:38:06.389451+05:30 237 Technical Communication 3 8 1 +1177 2019-11-24 18:38:06.402295+05:30 236 Design of Reinforced Concrete Elements 3 8 1 +1178 2019-11-24 18:38:06.415322+05:30 235 Soil Mechanicas 3 8 1 +1179 2019-11-24 18:38:06.428102+05:30 234 Theory of Structures 3 8 1 +1180 2019-11-24 18:38:06.44116+05:30 233 ENGINEERING GRAPHICS 3 8 1 +1181 2019-11-24 18:38:06.453862+05:30 232 Highway and Traffic Engineering 3 8 1 +1182 2019-11-24 18:38:06.64542+05:30 231 STRUCTURAL ANALYSIS-I 3 8 1 +1183 2019-11-24 18:38:06.82784+05:30 230 CHANNEL HYDRAULICS 3 8 1 +1184 2019-11-24 18:38:07.271047+05:30 229 GEOMATICS ENGINEERING-II 3 8 1 +1185 2019-11-24 18:38:07.283862+05:30 228 Urban Mass Transit Systems 3 8 1 +1186 2019-11-24 18:38:07.296185+05:30 227 Transportation Planning 3 8 1 +1187 2019-11-24 18:38:07.308976+05:30 226 Road Traffic Safety 3 8 1 +1188 2019-11-24 18:38:07.321567+05:30 225 Behaviour & Design of Steel Structures (Autumn) 3 8 1 +1189 2019-11-24 18:38:07.334766+05:30 224 Industrial and Hazardous Waste Management 3 8 1 +1190 2019-11-24 18:38:07.346944+05:30 223 Geometric Design 3 8 1 +1191 2019-11-24 18:38:07.359887+05:30 222 Finite Element Analysis 3 8 1 +1192 2019-11-24 18:38:07.372101+05:30 221 Structural Dynamics 3 8 1 +1193 2019-11-24 18:38:07.38513+05:30 220 Advanced Concrete Design 3 8 1 +1194 2019-11-24 18:38:07.397529+05:30 219 Continuum Mechanics 3 8 1 +1195 2019-11-24 18:38:07.410523+05:30 218 Matrix Structural Analysis 3 8 1 +1196 2019-11-24 18:38:07.422639+05:30 217 Geodesy and GPS Surveying 3 8 1 +1197 2019-11-24 18:38:07.435335+05:30 216 Remote Sensing and Image Processing 3 8 1 +1198 2019-11-24 18:38:07.447549+05:30 215 Environmental Chemistry 3 8 1 +1199 2019-11-24 18:38:07.46094+05:30 214 Wastewater Treatment 3 8 1 +1200 2019-11-24 18:38:07.473162+05:30 213 Design of Steel Elements 3 8 1 +1201 2019-11-24 18:38:07.485966+05:30 212 Railway Engineering and Airport Planning 3 8 1 +1202 2019-11-24 18:38:07.498527+05:30 211 Design of Steel Elements 3 8 1 +1203 2019-11-24 18:38:07.512319+05:30 210 Waste Water Engineering 3 8 1 +1204 2019-11-24 18:38:07.524865+05:30 209 Geomatics Engineering – I 3 8 1 +1205 2019-11-24 18:38:07.537823+05:30 208 Introduction to Environmental Studies 3 8 1 +1206 2019-11-24 18:38:07.550765+05:30 207 Numerical Methods and Computer Programming 3 8 1 +1207 2019-11-24 18:38:07.562874+05:30 206 Solid Mechanics 3 8 1 +1208 2019-11-24 18:38:07.576047+05:30 205 Introduction to Civil Engineering 3 8 1 +1209 2019-11-24 18:38:07.596542+05:30 204 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 3 8 1 +1210 2019-11-24 18:38:07.609467+05:30 203 SEMINAR 3 8 1 +1211 2019-11-24 18:38:07.621831+05:30 202 Training Seminar 3 8 1 +1212 2019-11-24 18:38:07.634921+05:30 201 B.Tech. Project 3 8 1 +1213 2019-11-24 18:38:07.64704+05:30 200 Technical Communication 3 8 1 +1214 2019-11-24 18:38:07.660054+05:30 199 Process Integration 3 8 1 +1215 2019-11-24 18:38:07.672184+05:30 198 Optimization of Chemical Enigneering Processes 3 8 1 +1216 2019-11-24 18:38:07.68529+05:30 197 Process Utilities and Safety 3 8 1 +1217 2019-11-24 18:38:07.697815+05:30 196 Process Equipment Design* 3 8 1 +1218 2019-11-24 18:38:07.710677+05:30 195 Process Dynamics and Control 3 8 1 +1219 2019-11-24 18:38:07.723085+05:30 194 Fluid and Fluid Particle Mechanics 3 8 1 +1220 2019-11-24 18:38:07.744176+05:30 193 CHEMICAL ENGINEERING THERMODYNAMICS 3 8 1 +1221 2019-11-24 18:38:07.764959+05:30 192 Chemical Technology 3 8 1 +1222 2019-11-24 18:38:07.782597+05:30 191 CHEMICAL ENGINEERING THERMODYNAMICS 3 8 1 +1223 2019-11-24 18:38:07.846993+05:30 190 MECHANICAL OPERATION 3 8 1 +1224 2019-11-24 18:38:07.91733+05:30 189 HEAT TRANSFER 3 8 1 +1225 2019-11-24 18:38:07.929707+05:30 188 SEMINAR 3 8 1 +1226 2019-11-24 18:38:08.00014+05:30 187 COMPUTATIONAL FLUID DYNAMICS 3 8 1 +1227 2019-11-24 18:38:08.012565+05:30 186 Biochemical Engineering 3 8 1 +1228 2019-11-24 18:38:08.02498+05:30 185 Advanced Reaction Engineering 3 8 1 +1229 2019-11-24 18:38:08.03792+05:30 184 Advanced Transport Phenomena 3 8 1 +1230 2019-11-24 18:38:08.073009+05:30 183 Mathematical Methods in Chemical Engineering 3 8 1 +1231 2019-11-24 18:38:08.084554+05:30 182 Waste to Energy 3 8 1 +1232 2019-11-24 18:38:08.096824+05:30 181 Polymer Physics and Rheology* 3 8 1 +1233 2019-11-24 18:38:08.109779+05:30 180 Fluidization Engineering 3 8 1 +1234 2019-11-24 18:38:08.122155+05:30 179 Computer Application in Chemical Engineering 3 8 1 +1235 2019-11-24 18:38:08.135005+05:30 178 Enginering Analysis and Process Modeling 3 8 1 +1236 2019-11-24 18:38:08.147407+05:30 177 Mass Transfer-II 3 8 1 +1237 2019-11-24 18:38:08.160383+05:30 176 Mass Transfer -I 3 8 1 +1238 2019-11-24 18:38:08.172926+05:30 175 Computer Programming and Numerical Methods 3 8 1 +1239 2019-11-24 18:38:08.201996+05:30 174 Material and Energy Balance 3 8 1 +1240 2019-11-24 18:38:08.272136+05:30 173 Introduction to Chemical Engineering 3 8 1 +1241 2019-11-24 18:38:08.342307+05:30 172 Advanced Thermodynamics and Molecular Simulations 3 8 1 +1242 2019-11-24 18:38:08.412651+05:30 171 DISSERTATION STAGE I 3 8 1 +1243 2019-11-24 18:38:08.425033+05:30 170 SEMINAR 3 8 1 +1244 2019-11-24 18:38:08.437937+05:30 169 ADVANCED TRANSPORT PROCESS 3 8 1 +1245 2019-11-24 18:38:08.507009+05:30 168 RECOMBINANT DNA TECHNOLOGY 3 8 1 +1246 2019-11-24 18:38:08.519884+05:30 167 REACTION KINETICS AND REACTOR DESIGN 3 8 1 +1247 2019-11-24 18:38:08.532471+05:30 166 MICROBIOLOGY AND BIOCHEMISTRY 3 8 1 +1248 2019-11-24 18:38:08.545649+05:30 165 Chemical Genetics and Drug Discovery 3 8 1 +1249 2019-11-24 18:38:08.558166+05:30 164 Structural Biology 3 8 1 +1250 2019-11-24 18:38:08.571258+05:30 163 Genomics and Proteomics 3 8 1 +1251 2019-11-24 18:38:08.583609+05:30 162 Vaccine Development & Production 3 8 1 +1252 2019-11-24 18:38:08.596313+05:30 161 Cell & Tissue Culture Technology 3 8 1 +1253 2019-11-24 18:38:08.608915+05:30 160 Biotechnology Laboratory – III 3 8 1 +1254 2019-11-24 18:38:08.621691+05:30 159 Seminar 3 8 1 +1255 2019-11-24 18:38:08.637698+05:30 158 Genetic Engineering 3 8 1 +1256 2019-11-24 18:38:08.650746+05:30 157 Biophysical Techniques 3 8 1 +1257 2019-11-24 18:38:08.663005+05:30 156 DOWNSTREAM PROCESSING 3 8 1 +1258 2019-11-24 18:38:08.675928+05:30 155 BIOREACTION ENGINEERING 3 8 1 +1259 2019-11-24 18:38:08.688367+05:30 154 Technical Communication 3 8 1 +1260 2019-11-24 18:38:08.701169+05:30 153 Cell & Developmental Biology 3 8 1 +1261 2019-11-24 18:38:08.713637+05:30 152 Genetics & Molecular Biology 3 8 1 +1262 2019-11-24 18:38:08.72665+05:30 151 Applied Microbiology 3 8 1 +1263 2019-11-24 18:38:08.738908+05:30 150 Biotechnology Laboratory – I 3 8 1 +1264 2019-11-24 18:38:08.75197+05:30 149 Biochemistry 3 8 1 +1265 2019-11-24 18:38:08.764477+05:30 148 Training Seminar 3 8 1 +1266 2019-11-24 18:38:08.777487+05:30 147 Drug Designing 3 8 1 +1267 2019-11-24 18:38:08.78955+05:30 146 Protein Engineering 3 8 1 +1268 2019-11-24 18:38:08.802613+05:30 145 Genomics and Proteomics 3 8 1 +1269 2019-11-24 18:38:08.815034+05:30 144 B.Tech. Project 3 8 1 +1270 2019-11-24 18:38:08.828005+05:30 143 Technical Communication 3 8 1 +1271 2019-11-24 18:38:08.840162+05:30 142 CELL AND TISSUE ENGINEERING 3 8 1 +1272 2019-11-24 18:38:08.853341+05:30 141 IMMUNOTECHNOLOGY 3 8 1 +1273 2019-11-24 18:38:08.865491+05:30 140 GENETICS AND MOLECULAR BIOLOGY 3 8 1 +1274 2019-11-24 18:38:08.878405+05:30 139 Computer Programming 3 8 1 +1275 2019-11-24 18:38:08.890835+05:30 138 Introduction to Biotechnology 3 8 1 +1276 2019-11-24 18:38:08.903954+05:30 137 Molecular Biophysics 3 8 1 +1277 2019-11-24 18:38:08.916225+05:30 136 Animal Biotechnology 3 8 1 +1278 2019-11-24 18:38:08.937719+05:30 135 Plant Biotechnology 3 8 1 +1279 2019-11-24 18:38:08.949664+05:30 134 Bioseparation Engineering 3 8 1 +1280 2019-11-24 18:38:08.962668+05:30 133 Bioprocess Engineering 3 8 1 +1281 2019-11-24 18:38:08.974972+05:30 132 Chemical Kinetics and Reactor Design 3 8 1 +1282 2019-11-24 18:38:08.98791+05:30 131 BIOINFORMATICS 3 8 1 +1283 2019-11-24 18:38:09.000218+05:30 130 MICROBIOLOGY 3 8 1 +1284 2019-11-24 18:38:09.022016+05:30 129 Professional Training 3 8 1 +1285 2019-11-24 18:38:09.034392+05:30 128 Planning Studio-III 3 8 1 +1286 2019-11-24 18:38:09.047572+05:30 127 DISSERTATION STAGE-I 3 8 1 +1287 2019-11-24 18:38:09.059941+05:30 126 Professional Training 3 8 1 +1288 2019-11-24 18:38:09.072942+05:30 125 Design Studio-III 3 8 1 +1289 2019-11-24 18:38:09.085329+05:30 124 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 3 8 1 +1290 2019-11-24 18:38:09.098188+05:30 123 Housing 3 8 1 +1291 2019-11-24 18:38:09.110506+05:30 122 Planning Theory and Techniques 3 8 1 +1292 2019-11-24 18:38:09.123549+05:30 121 Ecology and Sustainable Development 3 8 1 +1293 2019-11-24 18:38:09.136462+05:30 120 Infrastructure Planning 3 8 1 +1386 2020-02-19 17:49:53.74024+05:30 25 cmnzmcxz, 3 11 1 +1294 2019-11-24 18:38:09.148896+05:30 119 Socio Economics, Demography and Quantitative Techniques 3 8 1 +1295 2019-11-24 18:38:09.161782+05:30 118 Planning Studio-I 3 8 1 +1296 2019-11-24 18:38:09.174142+05:30 117 Computer Applications in Architecture 3 8 1 +1297 2019-11-24 18:38:09.187141+05:30 116 Advanced Building Technologies 3 8 1 +1298 2019-11-24 18:38:09.222788+05:30 115 Urban Design 3 8 1 +1299 2019-11-24 18:38:09.257102+05:30 114 Contemporary Architecture- Theories and Trends 3 8 1 +1300 2019-11-24 18:38:09.280778+05:30 113 Design Studio-I 3 8 1 +1301 2019-11-24 18:38:09.627571+05:30 112 Live Project/Studio/Seminar-II 3 8 1 +1302 2019-11-24 18:38:10.045431+05:30 111 Vastushastra 3 8 1 +1303 2019-11-24 18:38:10.115512+05:30 110 Hill Architecture 3 8 1 +1304 2019-11-24 18:38:10.184901+05:30 109 Urban Planning 3 8 1 +1305 2019-11-24 18:38:10.221108+05:30 108 Thesis Project I 3 8 1 +1306 2019-11-24 18:38:10.240537+05:30 107 Architectural Design-VII 3 8 1 +1307 2019-11-24 18:38:10.25248+05:30 106 Live Project/ Studio/ Seminar-I 3 8 1 +1308 2019-11-24 18:38:10.265411+05:30 105 Ekistics 3 8 1 +1309 2019-11-24 18:38:10.278274+05:30 104 Working Drawing 3 8 1 +1310 2019-11-24 18:38:10.290916+05:30 103 Sustainable Architecture 3 8 1 +1311 2019-11-24 18:38:10.32835+05:30 102 Urban Design 3 8 1 +1312 2019-11-24 18:38:10.341063+05:30 101 Architectural Design-VI 3 8 1 +1313 2019-11-24 18:38:10.353748+05:30 100 MODERN INDIAN ARCHITECTURE 3 8 1 +1314 2019-11-24 18:38:10.366016+05:30 99 Interior Design 3 8 1 +1315 2019-11-24 18:38:10.395382+05:30 98 Computer Applications in Architecture 3 8 1 +1316 2019-11-24 18:38:10.407945+05:30 97 Building Construction-IV 3 8 1 +1317 2019-11-24 18:38:10.420985+05:30 96 Architectural Design-IV 3 8 1 +1318 2019-11-24 18:38:10.43338+05:30 95 MEASURED DRAWING CAMP 3 8 1 +1319 2019-11-24 18:38:10.446084+05:30 94 PRICIPLES OF ARCHITECTURE 3 8 1 +1320 2019-11-24 18:38:10.458439+05:30 93 STRUCTURE AND ARCHITECTURE 3 8 1 +1321 2019-11-24 18:38:10.471552+05:30 92 QUANTITY, PRICING AND SPECIFICATIONS 3 8 1 +1322 2019-11-24 18:38:10.48394+05:30 91 HISTORY OF ARCHITECTUTRE I 3 8 1 +1323 2019-11-24 18:38:10.496696+05:30 90 BUILDING CONSTRUCTION II 3 8 1 +1324 2019-11-24 18:38:10.509316+05:30 89 Architectural Design-III 3 8 1 +1325 2019-11-24 18:38:10.522098+05:30 88 ARCHITECTURAL DESIGN II 3 8 1 +1326 2019-11-24 18:38:10.534554+05:30 87 Basic Design and Creative Workshop I 3 8 1 +1327 2019-11-24 18:38:10.547507+05:30 86 Architectural Graphics I 3 8 1 +1328 2019-11-24 18:38:10.559557+05:30 85 Visual Art I 3 8 1 +1329 2019-11-24 18:38:10.572376+05:30 84 Introduction to Architecture 3 8 1 +1330 2019-11-24 18:38:10.584672+05:30 83 SEMINAR 3 8 1 +1331 2019-11-24 18:38:10.597299+05:30 82 Regional Planning 3 8 1 +1332 2019-11-24 18:38:10.609656+05:30 81 Planning Legislation and Governance 3 8 1 +1333 2019-11-24 18:38:10.622761+05:30 80 Modern World Architecture 3 8 1 +1334 2019-11-24 18:38:10.63542+05:30 79 SEMINAR 3 8 1 +1335 2019-11-24 18:38:10.648338+05:30 78 Advanced Characterization Techniques 3 8 1 +1336 2019-11-24 18:38:41.54875+05:30 94 Water Resources Development and Management 3 7 1 +1337 2019-11-24 18:38:41.972006+05:30 93 Physics 3 7 1 +1338 2019-11-24 18:38:41.996545+05:30 92 Polymer and Process Engineering 3 7 1 +1339 2019-11-24 18:38:42.039213+05:30 91 Paper Technology 3 7 1 +1340 2019-11-24 18:38:42.051158+05:30 90 Metallurgical and Materials Engineering 3 7 1 +1341 2019-11-24 18:38:42.062923+05:30 89 Mechanical and Industrial Engineering 3 7 1 +1342 2019-11-24 18:38:42.07576+05:30 88 Mathematics 3 7 1 +1343 2019-11-24 18:38:42.088499+05:30 87 Management Studies 3 7 1 +1344 2019-11-24 18:38:42.101074+05:30 86 Hydrology 3 7 1 +1345 2019-11-24 18:38:42.114043+05:30 85 Humanities and Social Sciences 3 7 1 +1346 2019-11-24 18:38:42.139229+05:30 84 Electronics and Communication Engineering 3 7 1 +1347 2019-11-24 18:38:42.152155+05:30 83 Electrical Engineering 3 7 1 +1348 2019-11-24 18:38:42.165021+05:30 82 Earth Sciences 3 7 1 +1349 2019-11-24 18:38:42.177501+05:30 81 Earthquake 3 7 1 +1350 2019-11-24 18:38:42.189896+05:30 80 Computer Science and Engineering 3 7 1 +1351 2019-11-24 18:38:42.203082+05:30 79 Civil Engineering 3 7 1 +1352 2019-11-24 18:38:42.215442+05:30 78 Chemistry 3 7 1 +1353 2019-11-24 18:38:42.229093+05:30 77 Chemical Engineering 3 7 1 +1354 2019-11-24 18:38:42.24134+05:30 76 Biotechnology 3 7 1 +1355 2019-11-24 18:38:42.254229+05:30 75 Architecture and Planning 3 7 1 +1356 2019-11-24 18:38:42.266802+05:30 74 Applied Science and Engineering 3 7 1 +1357 2019-11-24 18:38:42.279485+05:30 73 Hydro and Renewable Energy 3 7 1 +1358 2019-11-24 19:18:10.657609+05:30 26 ECN-212 End term solution.PDF 2 [{"changed": {"fields": ["filetype"]}}] 10 1 +1359 2019-11-24 19:18:16.406004+05:30 25 ECN-212 quiz 2 solution.PDF 2 [{"changed": {"fields": ["filetype"]}}] 10 1 +1360 2019-11-26 23:45:40.120774+05:30 26 ECN-212 End term solution.PDF 2 [{"changed": {"fields": ["finalized"]}}] 10 1 +1361 2019-11-26 23:45:46.701918+05:30 25 ECN-212 quiz 2 solution.PDF 2 [{"changed": {"fields": ["finalized"]}}] 10 1 +1362 2019-12-26 14:55:27.993648+05:30 26 ECN-212 End term solution.PDF 2 [{"changed": {"fields": ["filetype"]}}] 10 1 +1363 2019-12-26 14:55:35.352011+05:30 26 ECN-212 End term solution.PDF 2 [{"changed": {"fields": ["filetype"]}}] 10 1 +1364 2019-12-26 14:55:42.861594+05:30 25 ECN-212 quiz 2 solution.PDF 2 [{"changed": {"fields": ["filetype"]}}] 10 1 +1365 2019-12-28 14:59:01.392535+05:30 1 Ayan 1 [{"added": {}}] 12 1 +1366 2019-12-28 15:09:58.228991+05:30 1 Ayan 2 [{"changed": {"fields": ["department"]}}] 12 1 +1367 2019-12-28 15:32:21.365372+05:30 1 R.C.Hibberler 2 [{"changed": {"fields": ["filetype"]}}] 11 1 +1368 2019-12-28 15:55:05.086939+05:30 2 Advik 1 [{"added": {}}] 12 1 +1369 2020-01-22 22:25:09.879734+05:30 26 ECN-212 End term solution.PDF 2 [] 10 1 +1370 2020-02-17 15:41:30.05166+05:30 1 Ayan 3 12 1 +1371 2020-02-17 15:41:37.783429+05:30 2 Advik 3 12 1 +1372 2020-02-17 15:42:39.419559+05:30 5 darkrider 3 12 1 +1373 2020-02-17 23:46:42.689288+05:30 5 Tutorial 1 1 [{"added": {}}] 11 1 +1374 2020-02-18 00:22:09.765697+05:30 5 Tutorial 1 3 11 1 +1375 2020-02-18 00:33:21.018189+05:30 6 Tutorial 1 1 [{"added": {}}] 11 1 +1376 2020-02-19 17:49:53.44127+05:30 35 mcdnms 3 11 1 +1377 2020-02-19 17:49:53.614522+05:30 34 ddsfsd 3 11 1 +1378 2020-02-19 17:49:53.626865+05:30 33 czxc 3 11 1 +1379 2020-02-19 17:49:53.639017+05:30 32 saSAAD 3 11 1 +1380 2020-02-19 17:49:53.651912+05:30 31 mflemflksd 3 11 1 +1381 2020-02-19 17:49:53.677266+05:30 30 dsads 3 11 1 +1382 2020-02-19 17:49:53.689651+05:30 29 dmsndkanskm 3 11 1 +1383 2020-02-19 17:49:53.702549+05:30 28 msdlkadmlas 3 11 1 +1384 2020-02-19 17:49:53.714902+05:30 27 mckldmslc 3 11 1 +1385 2020-02-19 17:49:53.728112+05:30 26 cnancam 3 11 1 +1389 2020-02-19 17:49:53.778647+05:30 22 djaksdnkjas 3 11 1 +1390 2020-02-19 17:49:53.790839+05:30 21 ndkjadns 3 11 1 +1391 2020-02-19 17:49:53.803719+05:30 20 dmsa dmskd 3 11 1 +1392 2020-02-19 17:49:53.816194+05:30 19 cjkdnk 3 11 1 +1393 2020-02-19 17:49:53.829109+05:30 18 ncksad 3 11 1 +1394 2020-02-19 17:49:53.841453+05:30 17 dsadas 3 11 1 +1395 2020-02-19 17:49:53.854416+05:30 16 ncmznc,m 3 11 1 +1396 2020-02-19 17:49:53.866808+05:30 15 fdfd 3 11 1 +1397 2020-02-19 17:49:53.880535+05:30 14 tut 1 3 11 1 +1398 2020-02-19 17:49:53.89209+05:30 13 book 1 3 11 1 +1399 2020-02-19 17:49:54.01109+05:30 12 cdnms,d 3 11 1 +1400 2020-02-19 17:49:54.02392+05:30 11 cnxm,zc 3 11 1 +1401 2020-02-19 17:49:54.039887+05:30 10 nkldnks 3 11 1 +1402 2020-02-19 17:49:54.052902+05:30 9 nkjsndakcj 3 11 1 +1403 2020-02-19 17:49:54.065239+05:30 8 bjkdsbfc 3 11 1 +1404 2020-02-19 17:49:54.078164+05:30 7 R.C.Hibberler 3 11 1 +1405 2020-02-19 17:49:54.090569+05:30 6 Tutorial 1 3 11 1 +1406 2020-02-19 17:50:09.936114+05:30 43 circuitverse.png 3 13 1 +1407 2020-02-19 17:50:10.061328+05:30 42 blackclover.jpg 3 13 1 +1408 2020-02-19 17:50:10.203331+05:30 41 circuitverse.png 3 13 1 +1409 2020-02-19 17:50:10.347084+05:30 40 blackclover.jpg 3 13 1 +1410 2020-02-19 17:50:10.498397+05:30 39 circuitverse.png 3 13 1 +1411 2020-02-19 17:50:10.642258+05:30 38 blackclover.jpg 3 13 1 +1412 2020-02-19 17:50:10.794014+05:30 37 circuitverse.png 3 13 1 +1413 2020-02-19 17:50:10.937252+05:30 36 blackclover.jpg 3 13 1 +1414 2020-02-19 17:50:11.080458+05:30 35 circuitverse.png 3 13 1 +1415 2020-02-19 17:50:11.257625+05:30 34 blackclover.jpg 3 13 1 +1416 2020-02-19 17:50:11.408973+05:30 33 circuitverse.png 3 13 1 +1417 2020-02-19 17:50:11.569086+05:30 32 blackclover.jpg 3 13 1 +1418 2020-02-19 17:50:11.712343+05:30 31 circuitverse.png 3 13 1 +1419 2020-02-19 17:50:11.872773+05:30 30 blackclover.jpg 3 13 1 +1420 2020-02-19 17:50:12.031894+05:30 29 deathnote.jpg 3 13 1 +1421 2020-02-19 17:50:12.20853+05:30 28 circuitverse.png 3 13 1 +1422 2020-02-19 17:50:12.367915+05:30 27 blackclover.jpg 3 13 1 +1423 2020-02-19 17:50:12.50434+05:30 26 deathnote.jpg 3 13 1 +1424 2020-02-19 17:50:12.51587+05:30 25 deathnote.jpg 3 13 1 +1425 2020-02-19 17:50:12.528792+05:30 24 circuitverse.png 3 13 1 +1426 2020-02-19 17:50:12.541587+05:30 23 blackclover.jpg 3 13 1 +1427 2020-02-19 17:50:12.554141+05:30 22 circuitverse.png 3 13 1 +1428 2020-02-19 17:50:12.566465+05:30 21 deathnote.jpg 3 13 1 +1429 2020-02-19 17:50:12.579371+05:30 20 blackclover.jpg 3 13 1 +1430 2020-02-19 17:50:12.592506+05:30 19 circuitverse.png 3 13 1 +1431 2020-02-19 17:50:12.604697+05:30 18 deathparade.jpg 3 13 1 +1432 2020-02-19 17:50:12.617113+05:30 17 circuitverse.png 3 13 1 +1433 2020-02-19 17:50:12.629992+05:30 16 blackclover.jpg 3 13 1 +1434 2020-02-19 17:50:12.643086+05:30 15 circuitverse.png 3 13 1 +1435 2020-02-19 17:50:12.655742+05:30 14 blackclover.jpg 3 13 1 +1436 2020-02-19 17:50:12.667703+05:30 13 circuitverse.png 3 13 1 +1437 2020-02-19 17:50:12.680642+05:30 12 blackclover.jpg 3 13 1 +1438 2020-02-19 17:50:12.693202+05:30 11 circuitverse.png 3 13 1 +1439 2020-02-19 17:50:12.714066+05:30 10 blackclover.jpg 3 13 1 +1440 2020-02-19 17:50:12.727058+05:30 9 circuitverse.png 3 13 1 +1441 2020-02-19 17:50:12.739935+05:30 8 blackclover.jpg 3 13 1 +1442 2020-02-19 17:50:12.752428+05:30 7 circuitverse.png 3 13 1 +1443 2020-02-19 17:50:12.764757+05:30 6 deathparade.jpg 3 13 1 +1444 2020-02-19 17:50:12.777788+05:30 5 Dororo.jpeg 3 13 1 +1445 2020-02-19 17:50:12.790201+05:30 4 deathnote.jpg 3 13 1 +1446 2020-02-19 17:50:12.802946+05:30 3 blackclover.jpg 3 13 1 +1447 2020-02-19 17:50:12.815358+05:30 2 asdf 3 13 1 +1448 2020-02-19 17:50:12.828374+05:30 1 asdf 3 13 1 +1449 2020-02-19 19:15:46.455439+05:30 116 Water Resources Development and Management 3 7 1 +1450 2020-02-19 19:15:46.741383+05:30 115 Physics 3 7 1 +1451 2020-02-19 19:15:46.75346+05:30 114 Polymer and Process Engineering 3 7 1 +1452 2020-02-19 19:15:46.766373+05:30 113 Paper Technology 3 7 1 +1453 2020-02-19 19:15:46.779921+05:30 112 Metallurgical and Materials Engineering 3 7 1 +1454 2020-02-19 19:15:46.791785+05:30 111 Mechanical and Industrial Engineering 3 7 1 +1455 2020-02-19 19:15:46.804639+05:30 110 Mathematics 3 7 1 +1456 2020-02-19 19:15:46.81704+05:30 109 Management Studies 3 7 1 +1457 2020-02-19 19:15:46.830061+05:30 108 Hydrology 3 7 1 +1458 2020-02-19 19:15:46.842492+05:30 107 Humanities and Social Sciences 3 7 1 +1459 2020-02-19 19:15:46.920611+05:30 106 Electronics and Communication Engineering 3 7 1 +1460 2020-02-19 19:15:46.990928+05:30 105 Electrical Engineering 3 7 1 +1461 2020-02-19 19:15:47.003245+05:30 104 Earth Sciences 3 7 1 +1462 2020-02-19 19:15:47.015963+05:30 103 Earthquake 3 7 1 +1463 2020-02-19 19:15:47.029003+05:30 102 Computer Science and Engineering 3 7 1 +1464 2020-02-19 19:15:47.041439+05:30 101 Civil Engineering 3 7 1 +1465 2020-02-19 19:15:47.054544+05:30 100 Chemistry 3 7 1 +1466 2020-02-19 19:15:47.066936+05:30 99 Chemical Engineering 3 7 1 +1467 2020-02-19 19:15:47.080571+05:30 98 Biotechnology 3 7 1 +1468 2020-02-19 19:15:47.092692+05:30 97 Architecture and Planning 3 7 1 +1469 2020-02-19 19:15:47.105206+05:30 96 Applied Science and Engineering 3 7 1 +1470 2020-02-19 19:15:47.175317+05:30 95 Hydro and Renewable Energy 3 7 1 +\. + + +-- +-- Data for Name: django_migrations; Type: TABLE DATA; Schema: public; Owner: ayan +-- + +COPY public.django_migrations (id, app, name, applied) FROM stdin; +1 contenttypes 0001_initial 2019-08-31 03:34:25.204817+05:30 +2 auth 0001_initial 2019-08-31 03:34:25.807013+05:30 +3 admin 0001_initial 2019-08-31 03:34:26.870559+05:30 +4 admin 0002_logentry_remove_auto_add 2019-08-31 03:34:27.013709+05:30 +5 admin 0003_logentry_add_action_flag_choices 2019-08-31 03:34:27.066471+05:30 +6 contenttypes 0002_remove_content_type_name 2019-08-31 03:34:27.113268+05:30 +7 auth 0002_alter_permission_name_max_length 2019-08-31 03:34:27.129521+05:30 +8 auth 0003_alter_user_email_max_length 2019-08-31 03:34:27.153178+05:30 +9 auth 0004_alter_user_username_opts 2019-08-31 03:34:27.173814+05:30 +10 auth 0005_alter_user_last_login_null 2019-08-31 03:34:27.196307+05:30 +11 auth 0006_require_contenttypes_0002 2019-08-31 03:34:27.211548+05:30 +12 auth 0007_alter_validators_add_error_messages 2019-08-31 03:34:27.254953+05:30 +13 auth 0008_alter_user_username_max_length 2019-08-31 03:34:27.320613+05:30 +14 auth 0009_alter_user_last_name_max_length 2019-08-31 03:34:27.36175+05:30 +15 auth 0010_alter_group_name_max_length 2019-08-31 03:34:27.395961+05:30 +16 auth 0011_update_proxy_permissions 2019-08-31 03:34:27.426645+05:30 +17 corsheaders 0001_initial 2019-08-31 03:34:27.495425+05:30 +18 rest_api 0001_initial 2019-08-31 03:34:27.558583+05:30 +19 rest_api 0002_department_url 2019-08-31 03:34:27.58581+05:30 +20 rest_api 0003_course 2019-08-31 03:34:27.647361+05:30 +21 rest_api 0004_auto_20190830_2153 2019-08-31 03:34:27.784405+05:30 +22 sessions 0001_initial 2019-08-31 03:34:28.216194+05:30 +23 rest_api 0005_file 2019-08-31 04:33:40.929149+05:30 +24 rest_api 0006_auto_20191003_1214 2019-10-03 17:47:55.066226+05:30 +25 rest_api 0007_auto_20191003_1215 2019-10-03 17:47:55.239688+05:30 +26 rest_api 0008_auto_20191003_1224 2019-10-03 17:54:04.879985+05:30 +27 rest_api 0009_file_file 2019-10-07 21:11:48.327955+05:30 +28 rest_api 0010_auto_20191007_1553 2019-10-07 21:23:37.785282+05:30 +29 rest_api 0011_auto_20191007_1556 2019-10-07 21:26:40.4983+05:30 +30 rest_api 0012_auto_20191007_1610 2019-10-07 21:40:17.000639+05:30 +31 rest_api 0013_auto_20191007_1710 2019-10-07 22:40:24.640878+05:30 +32 rest_api 0014_auto_20191007_1749 2019-10-07 23:20:01.380828+05:30 +33 rest_api 0015_auto_20191007_2136 2019-10-08 03:06:47.055683+05:30 +34 rest_api 0016_auto_20191014_1632 2019-10-14 22:02:32.792965+05:30 +35 rest_api 0017_auto_20191014_1711 2019-10-14 22:41:56.57645+05:30 +36 rest_api 0018_auto_20191014_1712 2019-10-14 22:42:34.027493+05:30 +37 rest_api 0019_auto_20191022_1439 2019-10-22 20:09:59.266119+05:30 +38 rest_api 0020_auto_20191030_1511 2019-10-30 20:41:48.124455+05:30 +39 rest_api 0019_auto_20191031_1024 2019-10-31 15:54:13.209732+05:30 +40 rest_api 0020_file_size 2019-10-31 16:16:23.467534+05:30 +41 rest_api 0021_file_fileext 2019-10-31 16:40:11.160831+05:30 +42 rest_api 0022_auto_20191031_1122 2019-10-31 16:52:21.111029+05:30 +43 rest_api 0023_auto_20191103_1613 2019-11-03 21:44:02.623601+05:30 +44 rest_api 0024_auto_20191124_1223 2019-11-24 17:53:45.66404+05:30 +45 rest_api 0025_auto_20191126_1724 2019-11-26 22:55:12.679557+05:30 +46 rest_api 0026_auto_20191126_1730 2019-11-26 23:00:59.217881+05:30 +47 rest_api 0027_file_finalized 2019-11-26 23:44:57.418044+05:30 +48 rest_api 0028_merge_20191226_0724 2019-12-26 12:54:21.360256+05:30 +49 rest_api 0029_auto_20191226_0924 2019-12-26 14:54:47.499571+05:30 +50 rest_api 0030_upload_title 2019-12-26 15:38:48.869386+05:30 +51 rest_api 0031_auto_20191226_1027 2019-12-26 16:00:51.804372+05:30 +52 rest_api 0032_auto_20191228_0928 2019-12-28 14:58:31.31823+05:30 +53 rest_api 0033_auto_20191228_0958 2019-12-28 15:29:08.579078+05:30 +54 rest_api 0034_auto_20200127_1608 2020-01-27 21:39:00.007069+05:30 +55 rest_api 0035_upload_filetype 2020-01-29 05:15:36.287651+05:30 +56 rest_api 0036_remove_user_department 2020-02-13 00:13:52.990389+05:30 +57 rest_api 0037_user_courses 2020-02-13 14:41:10.006461+05:30 +58 rest_api 0038_request_date 2020-02-18 00:32:41.947796+05:30 +59 rest_api 0039_upload_date 2020-02-18 19:38:08.929326+05:30 +60 rest_api 0040_auto_20200218_1534 2020-02-18 21:04:19.932249+05:30 +61 rest_api 0041_courserequest 2020-02-18 21:20:28.990528+05:30 +62 rest_api 0042_courserequest_date 2020-02-18 21:28:25.879881+05:30 +63 rest_api 0043_upload_status 2020-02-19 17:59:38.750588+05:30 +64 rest_api 0044_auto_20200407_2005 2020-04-08 01:35:24.558658+05:30 +65 users 0001_initial 2020-04-08 01:35:24.998658+05:30 +\. + + +-- +-- Data for Name: django_session; Type: TABLE DATA; Schema: public; Owner: ayan +-- + +COPY public.django_session (session_key, session_data, expire_date) FROM stdin; +7o4m4gi683ngfbgtrd4boqdr3ymhrmpo MGQwNzU0Y2FlMmY4OTVhMjc5NjQzMmVjZjIwYzgyNDU3NjYzZTE0YTp7Il9hdXRoX3VzZXJfaWQiOiIxIiwiX2F1dGhfdXNlcl9iYWNrZW5kIjoiZGphbmdvLmNvbnRyaWIuYXV0aC5iYWNrZW5kcy5Nb2RlbEJhY2tlbmQiLCJfYXV0aF91c2VyX2hhc2giOiI2YjQ2MWUyYjJiNWYxNjhkNWVkYWUxNWE5YjNkNmMwZTVmYWEyZTQ1In0= 2019-09-14 03:36:15.6475+05:30 +6u927wty7bauw3hrgjf05m9v7ceinqrr MGQwNzU0Y2FlMmY4OTVhMjc5NjQzMmVjZjIwYzgyNDU3NjYzZTE0YTp7Il9hdXRoX3VzZXJfaWQiOiIxIiwiX2F1dGhfdXNlcl9iYWNrZW5kIjoiZGphbmdvLmNvbnRyaWIuYXV0aC5iYWNrZW5kcy5Nb2RlbEJhY2tlbmQiLCJfYXV0aF91c2VyX2hhc2giOiI2YjQ2MWUyYjJiNWYxNjhkNWVkYWUxNWE5YjNkNmMwZTVmYWEyZTQ1In0= 2019-10-05 03:42:23.466624+05:30 +kcornx24qad8lybhmkdzxut0fbo0v24p MGQwNzU0Y2FlMmY4OTVhMjc5NjQzMmVjZjIwYzgyNDU3NjYzZTE0YTp7Il9hdXRoX3VzZXJfaWQiOiIxIiwiX2F1dGhfdXNlcl9iYWNrZW5kIjoiZGphbmdvLmNvbnRyaWIuYXV0aC5iYWNrZW5kcy5Nb2RlbEJhY2tlbmQiLCJfYXV0aF91c2VyX2hhc2giOiI2YjQ2MWUyYjJiNWYxNjhkNWVkYWUxNWE5YjNkNmMwZTVmYWEyZTQ1In0= 2019-10-21 21:08:28.988476+05:30 +k5dxdl9enq2r5iskqquhmx20g0kmv8zz MGQwNzU0Y2FlMmY4OTVhMjc5NjQzMmVjZjIwYzgyNDU3NjYzZTE0YTp7Il9hdXRoX3VzZXJfaWQiOiIxIiwiX2F1dGhfdXNlcl9iYWNrZW5kIjoiZGphbmdvLmNvbnRyaWIuYXV0aC5iYWNrZW5kcy5Nb2RlbEJhY2tlbmQiLCJfYXV0aF91c2VyX2hhc2giOiI2YjQ2MWUyYjJiNWYxNjhkNWVkYWUxNWE5YjNkNmMwZTVmYWEyZTQ1In0= 2019-11-05 20:11:19.106654+05:30 +i48mahob9r8em13vx0kwo4trairt9hbn MGQwNzU0Y2FlMmY4OTVhMjc5NjQzMmVjZjIwYzgyNDU3NjYzZTE0YTp7Il9hdXRoX3VzZXJfaWQiOiIxIiwiX2F1dGhfdXNlcl9iYWNrZW5kIjoiZGphbmdvLmNvbnRyaWIuYXV0aC5iYWNrZW5kcy5Nb2RlbEJhY2tlbmQiLCJfYXV0aF91c2VyX2hhc2giOiI2YjQ2MWUyYjJiNWYxNjhkNWVkYWUxNWE5YjNkNmMwZTVmYWEyZTQ1In0= 2019-12-08 17:38:22.046113+05:30 +xxay5199jkuedf2qbirjlnlhp28h1205 MGQwNzU0Y2FlMmY4OTVhMjc5NjQzMmVjZjIwYzgyNDU3NjYzZTE0YTp7Il9hdXRoX3VzZXJfaWQiOiIxIiwiX2F1dGhfdXNlcl9iYWNrZW5kIjoiZGphbmdvLmNvbnRyaWIuYXV0aC5iYWNrZW5kcy5Nb2RlbEJhY2tlbmQiLCJfYXV0aF91c2VyX2hhc2giOiI2YjQ2MWUyYjJiNWYxNjhkNWVkYWUxNWE5YjNkNmMwZTVmYWEyZTQ1In0= 2019-12-09 00:27:52.415646+05:30 +b5p11uvqhzv93cqbtspwj691qxc5bwbd MGQwNzU0Y2FlMmY4OTVhMjc5NjQzMmVjZjIwYzgyNDU3NjYzZTE0YTp7Il9hdXRoX3VzZXJfaWQiOiIxIiwiX2F1dGhfdXNlcl9iYWNrZW5kIjoiZGphbmdvLmNvbnRyaWIuYXV0aC5iYWNrZW5kcy5Nb2RlbEJhY2tlbmQiLCJfYXV0aF91c2VyX2hhc2giOiI2YjQ2MWUyYjJiNWYxNjhkNWVkYWUxNWE5YjNkNmMwZTVmYWEyZTQ1In0= 2020-01-09 14:55:15.002822+05:30 +vsktfn59wa7s4pg0jr1zgtovfgmbtyxu MGQwNzU0Y2FlMmY4OTVhMjc5NjQzMmVjZjIwYzgyNDU3NjYzZTE0YTp7Il9hdXRoX3VzZXJfaWQiOiIxIiwiX2F1dGhfdXNlcl9iYWNrZW5kIjoiZGphbmdvLmNvbnRyaWIuYXV0aC5iYWNrZW5kcy5Nb2RlbEJhY2tlbmQiLCJfYXV0aF91c2VyX2hhc2giOiI2YjQ2MWUyYjJiNWYxNjhkNWVkYWUxNWE5YjNkNmMwZTVmYWEyZTQ1In0= 2020-02-05 22:24:26.954061+05:30 +xob8htr6a71jnw7ustfknm0jt9urgpft MGQwNzU0Y2FlMmY4OTVhMjc5NjQzMmVjZjIwYzgyNDU3NjYzZTE0YTp7Il9hdXRoX3VzZXJfaWQiOiIxIiwiX2F1dGhfdXNlcl9iYWNrZW5kIjoiZGphbmdvLmNvbnRyaWIuYXV0aC5iYWNrZW5kcy5Nb2RlbEJhY2tlbmQiLCJfYXV0aF91c2VyX2hhc2giOiI2YjQ2MWUyYjJiNWYxNjhkNWVkYWUxNWE5YjNkNmMwZTVmYWEyZTQ1In0= 2020-02-27 00:11:12.609634+05:30 +ruvywij1q91vup5hpc8i6i45aqpi11je MGQwNzU0Y2FlMmY4OTVhMjc5NjQzMmVjZjIwYzgyNDU3NjYzZTE0YTp7Il9hdXRoX3VzZXJfaWQiOiIxIiwiX2F1dGhfdXNlcl9iYWNrZW5kIjoiZGphbmdvLmNvbnRyaWIuYXV0aC5iYWNrZW5kcy5Nb2RlbEJhY2tlbmQiLCJfYXV0aF91c2VyX2hhc2giOiI2YjQ2MWUyYjJiNWYxNjhkNWVkYWUxNWE5YjNkNmMwZTVmYWEyZTQ1In0= 2020-04-12 13:21:41.423674+05:30 +\. + + +-- +-- Data for Name: rest_api_department; Type: TABLE DATA; Schema: public; Owner: ayan +-- + +COPY public.rest_api_department (id, title, abbreviation, imageurl) FROM stdin; +117 Hydro and Renewable Energy HRED hred.png +118 Applied Science and Engineering ASED ased.png +119 Architecture and Planning ARCD arcd.png +120 Biotechnology BTD btd.png +121 Chemical Engineering CHED ched.png +122 Chemistry CYD cyd.png +123 Civil Engineering CED ced.png +124 Computer Science and Engineering CSED csed.png +125 Earthquake EQD eqd.png +126 Earth Sciences ESD esd.png +127 Electrical Engineering EED eed.png +128 Electronics and Communication Engineering ECED eced.png +129 Humanities and Social Sciences HSD hsd.png +130 Hydrology HYD hyd.png +131 Management Studies MSD msd.png +132 Mathematics MAD mad.png +133 Mechanical and Industrial Engineering MIED mied.png +134 Metallurgical and Materials Engineering MMED mmed.png +135 Paper Technology PTD ptd.png +136 Polymer and Process Engineering PPED pped.png +137 Physics PHD phd.png +138 Water Resources Development and Management WRDMD wrdmd.png +139 Demo DDED dded.png +\. + + +-- +-- Data for Name: rest_api_course; Type: TABLE DATA; Schema: public; Owner: ayan +-- + +COPY public.rest_api_course (id, title, department_id, code) FROM stdin; +1250 Advanced Characterization Techniques 118 AS-901 +1251 SEMINAR 118 ASN-700 +1252 Modern World Architecture 119 ARN-210 +1253 Planning Legislation and Governance 119 ARN-661 +1254 Regional Planning 119 ARN-676 +1255 SEMINAR 119 ARN-700 +1256 Introduction to Architecture 119 ARN-101 +1257 Visual Art I 119 ARN-103 +1258 Architectural Graphics I 119 ARN-105 +1259 Basic Design and Creative Workshop I 119 ARN-107 +1260 ARCHITECTURAL DESIGN II 119 ARN-201 +1261 Architectural Design-III 119 ARN-202 +1262 BUILDING CONSTRUCTION II 119 ARN-203 +1263 HISTORY OF ARCHITECTUTRE I 119 ARN-205 +1264 QUANTITY, PRICING AND SPECIFICATIONS 119 ARN-207 +1265 STRUCTURE AND ARCHITECTURE 119 ARN-209 +1266 PRICIPLES OF ARCHITECTURE 119 ARN-211 +1267 MEASURED DRAWING CAMP 119 ARN-213 +1268 Architectural Design-IV 119 ARN-301 +1269 Building Construction-IV 119 ARN-303 +1270 Computer Applications in Architecture 119 ARN-305 +1271 Interior Design 119 ARN-307 +1272 MODERN INDIAN ARCHITECTURE 119 ARN-311 +1273 Architectural Design-VI 119 ARN-401 +1274 Urban Design 119 ARN-403 +1275 Sustainable Architecture 119 ARN-405 +1276 Working Drawing 119 ARN-407 +1277 Ekistics 119 ARN-411 +1278 Live Project/ Studio/ Seminar-I 119 ARN-415 +1279 Architectural Design-VII 119 ARN-501 +1280 Thesis Project I 119 ARN-503 +1281 Urban Planning 119 ARN-505 +1282 Hill Architecture 119 ARN-507 +1283 Vastushastra 119 ARN-513 +1284 Live Project/Studio/Seminar-II 119 ARN-515 +1285 Design Studio-I 119 ARN-601 +1286 Contemporary Architecture- Theories and Trends 119 ARN-603 +1287 Urban Design 119 ARN-605 +1288 Advanced Building Technologies 119 ARN-607 +1289 Computer Applications in Architecture 119 ARN-609 +1290 Planning Studio-I 119 ARN-651 +1291 Socio Economics, Demography and Quantitative Techniques 119 ARN-653 +1292 Infrastructure Planning 119 ARN-654 +1293 Ecology and Sustainable Development 119 ARN-655 +1294 Planning Theory and Techniques 119 ARN-657 +1295 Housing 119 ARN-659 +1296 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 119 ARN-701A +1297 Design Studio-III 119 ARN-703 +1298 Professional Training 119 ARN-705 +1299 DISSERTATION STAGE-I 119 ARN-751A +1300 Planning Studio-III 119 ARN-753 +1301 Professional Training 119 ARN-755 +1302 MICROBIOLOGY 120 BTN-203 +1303 BIOINFORMATICS 120 BTN-205 +1304 Chemical Kinetics and Reactor Design 120 BTN-292 +1305 Bioprocess Engineering 120 BTN-301 +1306 Bioseparation Engineering 120 BTN-302 +1307 Plant Biotechnology 120 BTN-303 +1308 Animal Biotechnology 120 BTN-305 +1309 Molecular Biophysics 120 BTN-342 +1310 CELL AND TISSUE ENGINEERING 120 BTN-345 +1311 Introduction to Biotechnology 120 BTN-101 +1312 Computer Programming 120 BTN-103 +1313 GENETICS AND MOLECULAR BIOLOGY 120 BTN-201 +1314 IMMUNOTECHNOLOGY 120 BTN-207 +1315 Technical Communication 120 BTN-391 +1316 B.Tech. Project 120 BTN-400A +1317 Genomics and Proteomics 120 BTN-445 +1318 Protein Engineering 120 BTN-447 +1319 Drug Designing 120 BTN-455 +1320 Training Seminar 120 BTN-499 +1321 Biochemistry 120 BTN-512 +1322 Biotechnology Laboratory – I 120 BTN-513 +1323 Applied Microbiology 120 BTN-514 +1324 Genetics & Molecular Biology 120 BTN-515 +1325 Cell & Developmental Biology 120 BTN-516 +1326 Technical Communication 120 BTN-524 +1327 BIOREACTION ENGINEERING 120 BTN-531 +1328 DOWNSTREAM PROCESSING 120 BTN-532 +1329 Biophysical Techniques 120 BTN-611 +1330 Genetic Engineering 120 BTN-612 +1331 Seminar 120 BTN-613 +1332 Biotechnology Laboratory – III 120 BTN-614 +1333 Cell & Tissue Culture Technology 120 BTN-621 +1334 Vaccine Development & Production 120 BTN-625 +1335 Genomics and Proteomics 120 BTN-629 +1336 Structural Biology 120 BTN-632 +1337 Chemical Genetics and Drug Discovery 120 BTN-635 +1338 MICROBIOLOGY AND BIOCHEMISTRY 120 BTN-651 +1339 REACTION KINETICS AND REACTOR DESIGN 120 BTN-655 +1340 RECOMBINANT DNA TECHNOLOGY 120 BTN-657 +1341 ADVANCED TRANSPORT PROCESS 120 BTN-658 +1342 SEMINAR 120 BTN-700 +1343 DISSERTATION STAGE I 120 BTN-701A +1344 Advanced Thermodynamics and Molecular Simulations 121 CHE-507 +1345 Introduction to Chemical Engineering 121 CHN-101 +1346 Material and Energy Balance 121 CHN-102 +1347 Computer Programming and Numerical Methods 121 CHN-103 +1348 Mass Transfer -I 121 CHN-202 +1349 Mass Transfer 121 CHN-212 +1350 Mass Transfer-II 121 CHN-301 +1351 Computer Application in Chemical Engineering 121 CHN-323 +1352 Fluidization Engineering 121 CHN-326 +1353 Polymer Physics and Rheology* 121 CHN-411 +1354 Mathematical Methods in Chemical Engineering 121 CHE-501 +1355 Advanced Transport Phenomena 121 CHE-503 +1356 Advanced Reaction Engineering 121 CHE-505 +1357 Biochemical Engineering 121 CHE-513 +1358 COMPUTATIONAL FLUID DYNAMICS 121 CHE-515 +1359 SEMINAR 121 CHE-700 +1360 HEAT TRANSFER 121 CHN-201 +1361 MECHANICAL OPERATION 121 CHN-203 +1362 CHEMICAL ENGINEERING THERMODYNAMICS 121 CHN-205 +1363 Chemical Technology 121 CHN-206 +1364 CHEMICAL ENGINEERING THERMODYNAMICS 121 CHN-207 +1365 Fluid and Fluid Particle Mechanics 121 CHN-211 +1366 Enginering Analysis and Process Modeling 121 CHN-302 +1367 Process Dynamics and Control 121 CHN-303 +1368 Process Equipment Design* 121 CHN-305 +1369 Process Utilities and Safety 121 CHN-306 +1370 Optimization of Chemical Enigneering Processes 121 CHN-322 +1371 Process Integration 121 CHN-325 +1372 Technical Communication 121 CHN-391 +1373 B.Tech. Project 121 CHN-400A +1374 Training Seminar 121 CHN-499 +1375 SEMINAR 121 CHN-700 +1376 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 121 CHN-701A +1377 Water Supply Engineering 123 CE-104 +1378 Introduction to Civil Engineering 123 CEN-101 +1379 Solid Mechanics 123 CEN-102 +1380 Numerical Methods and Computer Programming 123 CEN-103 +1381 Introduction to Environmental Studies 123 CEN-105 +1382 Geomatics Engineering – I 123 CEN-106 +1383 Waste Water Engineering 123 CEN-202 +1384 Highway and Traffic Engineering 123 CEN-210 +1385 Design of Steel Elements 123 CEN-305 +1386 Railway Engineering and Airport Planning 123 CEN-307 +1387 Wastewater Treatment 123 CEN-503 +1388 Environmental Chemistry 123 CEN-504 +1389 Remote Sensing and Image Processing 123 CEN-513 +1390 Geodesy and GPS Surveying 123 CEN-514 +1391 Matrix Structural Analysis 123 CEN-541 +1392 Continuum Mechanics 123 CEN-542 +1393 Advanced Concrete Design 123 CEN-543 +1394 Structural Dynamics 123 CEN-544 +1395 Finite Element Analysis 123 CEN-545 +1396 Geometric Design 123 CEN-564 +1397 Industrial and Hazardous Waste Management 123 CEN-603 +1398 Behaviour & Design of Steel Structures (Autumn) 123 CEN-641 +1399 Road Traffic Safety 123 CEN-665 +1400 Transportation Planning 123 CEN-669 +1401 Urban Mass Transit Systems 123 CE-664 +1402 GEOMATICS ENGINEERING-II 123 CEN-203 +1403 CHANNEL HYDRAULICS 123 CEN-205 +1404 STRUCTURAL ANALYSIS-I 123 CEN-207 +1405 ENGINEERING GRAPHICS 123 CEN-291 +1406 Theory of Structures 123 CEN-292 +1407 Soil Mechanicas 123 CEN-303 +1408 Design of Reinforced Concrete Elements 123 CEN-381 +1409 Technical Communication 123 CEN-391 +1410 Design of Steel Elements 123 CEN-392 +1411 B.Tech. Project 123 CEN-400A +1412 WATER RESOURCE ENGINEERING 123 CEN-412 +1413 Advanced Water and Wastewater Treatment 123 CEN-421 +1414 Advanced Highway Engineering 123 CEN-431 +1415 Training Seminar 123 CEN-499 +1416 Environmental Modeling and Simulation 123 CEN-501 +1417 Water Treatment 123 CEN-502 +1418 Environmental Hydraulics 123 CEN-505 +1419 Surveying Measurements and Adjustments 123 CEN-511 +1420 Principles of Photogrammetry 123 CEN-512 +1421 FIELD SURVEY CAMP 123 CEN-515 +1422 Advanced Numerical Analysis 123 CEN-521 +1423 Advanced Soil Mechanics 123 CEN-522 +1424 Engineering Behaviour of Rocks 123 CEN-523 +1425 Soil Dynamics and Machine Foundations 123 CEN-524 +1426 Advanced Hydrology 123 CEN-531 +1427 Advanced Fluid Mechanics 123 CEN-532 +1428 Free Surface Flows 123 CEN-533 +1429 Modeling, Simulation and Optimization 123 CEN-534 +1430 Traffic Engineering and Modeling 123 CEN-561 +1431 Pavement Analysis and Design 123 CEN-562 +1432 Planning, Design and Construction of Rural Roads 123 CEN-563 +1433 Geoinformatics for Landuse Surveys 123 CEN-616 +1434 SEMINAR 123 CEN-700 +1435 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 123 CEN-701A +1436 Data Structures 124 CSN-102 +1437 OBJECT ORIENTED ANALYSIS AND DESIGN 124 CSN-291 +1438 Data Base Management Systems 124 CSN-351 +1439 Compiler Design 124 CSN-352 +1440 ARTIFICIAL INTELLIGENCE 124 CSN-371 +1441 MACHINE LEARNING 124 CSN-382 +1442 Data Mining and Warehousing 124 CSN-515 +1443 Logic and Automated Reasoning 124 CSN-518 +1444 Introduction to Computer Science and Engineering 124 CSN-101 +1445 Fundamentals of Object Oriented Programming 124 CSN-103 +1446 COMPUTER ARCHITECTURE AND MICROPROCESSORS 124 CSN-221 +1447 DATA STRUCTURE LABORATORY 124 CSN-261 +1448 Computer Network 124 CSN-341 +1449 Theory of Computation 124 CSN-353 +1450 Computer Network Laboratory 124 CSN-361 +1451 Technical Communication 124 CSN-391 +1452 B.Tech. Project 124 CSN-400A +1453 Training Seminar 124 CSN-499 +1454 Advanced Algorithms 124 CSN-501 +1455 Advanced Operating Systems 124 CSN-502 +1456 Advanced Computer Networks 124 CSN-503 +1457 Lab I (Programming Lab) 124 CSN-504 +1458 Lab II (Project Lab) 124 CSN-505 +1459 Advanced Topics in Software Engineering 124 CSN-517 +1460 SEMINAR 124 CSN-700 +1461 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 124 CSN-701A +1462 Theory of Vibrations 125 EQN-501 +1463 Vibration of Elastic Media 125 EQN-502 +1464 Engineering Seismology 125 EQN-503 +1465 Finite Element Method 125 EQN-504 +1466 Numerical Methods for Dynamic Systems 125 EQN-513 +1467 Geotechnical Earthquake Engineering 125 EQN-521 +1468 Seismic Hazard Assessment 125 EQN-525 +1469 Seismological Modeling and Simulation 125 EQN-531 +1470 Vulnerability and Risk Analysis 125 EQN-532 +1471 Earthquake Resistant Design of Structures 125 EQN-563 +1472 Machine Foundation 125 EQN-572 +1473 Principles of Seismology 125 EQN-598 +1474 SEMINAR 125 EQN-700 +1475 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 125 EQN-701A +1476 Electrical Prospecting 126 ESN-323 +1477 Introduction to Earth Sciences 126 ESN-101 +1478 Computer Programming 126 ESN-103 +1479 BASIC PETROLOGY 126 ESN-201 +1480 PALEONTOLOGY 126 ESN-203 +1481 STRUCTURAL GEOLOGY-I 126 ESN-205 +1482 FIELD THEORY 126 ESN-221 +1483 GEOPHYSICAL PROSPECTING 126 ESN-223 +1484 Structural Geology-II 126 ESN-301 +1485 Metamorphic Petrology 126 ESN-303 +1486 Economic Geology 126 ESN-305 +1487 Gravity and Magnetic Prospecting 126 ESN-321 +1488 Seismology 126 ESN-325 +1489 ROCK AND SOIL MECHANICS 126 ESN-345 +1490 Technical Communication 126 ESN-391 +1491 PRINCIPLES OF REMOTE SENSING 126 ESN-401 +1492 PRINCIPLES OF GIS 126 ESN-403 +1493 ENGINEERING GEOLOGY 126 ESN-405 +1494 HYDROGEOLOGY 126 ESN-407 +1495 PETROLEUM GEOLOGY 126 ESN-409 +1496 Numerical Modelling in Geophysical 126 ESN-421 +1497 Geophysical Well logging 126 ESN-423 +1498 STRONG MOTION SEISMOGRAPH 126 ESN-477 +1499 Seminar-I 126 ESN-499 +1500 Comprehensive Viva Voce 126 ESN-509 +1501 Numerical Techniques and Computer Programming 126 ESN-510 +1502 Crystallography and Mineralogy 126 ESN-511 +1503 Geochemistry 126 ESN-512 +1504 Igneous Petrology 126 ESN-513 +1505 Structural Geology 126 ESN-514 +1506 Comprehensive Viva Voce 126 ESN-529 +1507 Sedimentology and Stratigraphy 126 ESN-531 +1508 Geophysical Prospecting 126 ESN-532 +1509 ISOTOPE GEOLOGY 126 ESN-547 +1510 Micropaleontology and Paleoceanography 126 ESN-551 +1511 Global Environment 126 ESN-553 +1512 DYNAMIC SYSTEMS IN EARTH SCIENCES 126 ESN-579 +1513 ADVANCED SEISMIC PROSPECTING 126 ESN-581 +1514 Seminar 126 ESN-599 +1515 Isotope Geology 126 ESN-603 +1516 Indian Mineral Deposits 126 ESN-606 +1517 Engineering Geology 126 ESN-607 +1518 Petroleum Geology 126 ESN-609 +1519 Well Logging 126 ESN-610 +1520 Plate Tectonics 126 ESN-611 +1521 SEMINAR 126 ESN-700 +1522 Electrical Science 127 EEN-112 +1523 Instrumentation laboratory 127 EEN-523 +1524 Introduction to Electrical Engineering 127 EEN-101 +1525 Network Theory 127 EEN-102 +1526 Programming in C++ 127 EEN-103 +1527 ELECTRICAL MACHINES-I 127 EEN-201 +1528 DIGITAL ELECTRONICS AND CIRCUITS 127 EEN-203 +1529 DESIGN OF ELECTRONICS CIRCUITS 127 EEN-205 +1530 ENGINEERING ANALYSIS AND DESIGN 127 EEN-291 +1531 Power System Analysis & Control 127 EEN-301 +1532 Power Electronics 127 EEN-303 +1533 Advanced Control Systems 127 EEN-305 +1534 Artificial Neural Networks 127 EEN-351 +1535 Signals and Systems 127 EEN-356 +1536 Data Structures 127 EEN-358 +1537 Embedded Systems 127 EEN-360 +1538 Technical Communication 127 EEN-391 +1539 B.Tech. Project 127 EEN-400A +1540 Training Seminar 127 EEN-499 +1541 Advanced Industrial and Electronic Instrumentation 127 EEN-520 +1542 Digital Signal and Image Processing 127 EEN-521 +1543 Biomedical Instrumentation 127 EEN-522 +1544 Advanced Power Electronics 127 EEN-540 +1545 Analysis of Electrical Machines 127 EEN-541 +1546 Advanced Electric Drives 127 EEN-542 +1547 Computer Aided Power System Analysis 127 EEN-560 +1548 Power System Operation and Control 127 EEN-561 +1549 Distribution System Analysis and Operation 127 EEN-562 +1550 EHV AC Transmission Systems 127 EEN-563 +1551 Advanced Linear Control Systems 127 EEN-580 +1552 Intelligent Control Techniques 127 EEN-581 +1553 Advanced System Engineering 127 EEN-582 +1554 Advances in Signal and Image Processing 127 EEN-626 +1555 Enhanced Power Quality AC-DC Converters 127 EEN-649 +1556 Power System Planning 127 EEN-661 +1557 Smart Grid 127 EEN-672 +1558 Introduction to Robotics 127 EEN-683 +1559 Modeling and Simulation 127 EEN-689 +1560 SEMINAR 127 EEN-700 +1561 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 127 EEN-701A +1562 Fundamental of Electronics 128 ECN-102 +1563 Principles of Digital Communication 128 ECN-212 +1564 Automatic Control Systems 128 ECN-222 +1565 Engineering Electromagnetics 128 ECN-232 +1566 Digital Electronic Circuits Laboratory 128 ECN-252 +1567 Communication Systems and Techniques 128 ECN-311 +1568 Antenna Theory 128 ECN-331 +1569 Microwave Engineering 128 ECN-333 +1570 Coding Theory and Applications 128 ECN-515 +1571 Fiber Optic Systems 128 ECN-539 +1572 Radar Signal Processing 128 ECN-550 +1573 RF System Design and Analysis 128 ECN-556 +1574 Microelectronics Lab-1 128 ECN-575 +1575 SIGNALS AND SYSTEMS 128 EC-202 +1576 Introduction to Electronics and Communication Engineering 128 ECN-101 +1577 SIGNALS AND SYSTEMS 128 ECN-203 +1578 ELECTRONICS NETWORK THEORY 128 ECN-291 +1579 Microelectronic Devices,Technology and Circuits 128 ECN-341 +1580 Fundamentals of Microelectronics 128 ECN-343 +1581 IC Application Laboratory 128 ECN-351 +1582 Technical Communication 128 ECN-391 +1583 B.Tech. Project 128 ECN-400A +1584 Training Seminar 128 ECN-499 +1585 Laboratory 128 ECN-510 +1586 Digital Communication Systems 128 ECN-511 +1587 Information and Communication Theory 128 ECN-512 +1588 Telecommunication Networks 128 ECN-513 +1589 Microwave Lab 128 ECN-530 +1590 Microwave Engineering 128 ECN-531 +1591 Advanced EMFT 128 ECN-532 +1592 Antenna Theory & Design 128 ECN-534 +1593 Microwave and Millimeter Wave Circuits 128 ECN-554 +1594 MOS Device Physics 128 ECN-572 +1595 Digital VLSI Circuit Design 128 ECN-573 +1596 Simulation Lab-1 128 ECN-576 +1597 Digital System Design 128 ECN-578 +1598 Analog VLSI Circuit Design 128 ECN-581 +1599 SEMINAR 128 ECN-700 +1600 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 128 ECN-701A +1601 DISSERTATION STAGE-II (CONTINUED FROM III SEMESTER) 128 ECN-701B +1602 Communication skills (Basic) 129 HS-001A +1603 Technical Communication 129 HS-501 +1604 Communication Skills(Basic) 129 HSN-001A +1605 Communication Skills(Advance) 129 HSN-001B +1606 Introduction to Psychology 129 HSN-002 +1607 Society,Culture Built Environment 129 HSN-351 +1608 Technical Communication 129 HSN-501 +1609 Economics 129 HSS-01 +1610 Sociology 129 HSS-02 +1611 UNDERSTANDING PERSONALITY 129 HS-902 +1612 HSN-01 129 HSN-01 +1613 MICROECONOMICS I 129 HSN-502 +1614 MACROECONOMICS I 129 HSN-503 +1615 MATHEMATICS FOR ECONOMISTS 129 HSN-504 +1616 DEVELOPMENT ECONOMICS 129 HSN-505 +1617 MONEY, BANKING AND FINANCIAL MARKETS 129 HSN-506 +1618 ADVANCED ECONOMETRICS 129 HSN-512 +1619 PUBLIC POLICY; THEORY AND PRACTICE 129 HSN-513 +1620 Issues in Indian Economy 129 HSN-601 +1621 Introduction to Research Methodology 129 HSN-602 +1622 Ecological Economics 129 HSN-604 +1623 Advanced Topics in Growth Theory 129 HSN-607 +1624 SEMINAR 129 HSN-700 +1625 UNDERSTANDING PERSONLALITY 129 HSN-902 +1626 RESEARCH METHODOLOGY IN SOCIAL SCIENCES 129 HSN-908 +1627 RESEARCH METHODOLOGY IN LANGUAGE & LITERATURE 129 HSN-911 +1628 Engineering Hydrology 130 HYN-102 +1629 Irrigation and drainage engineering 130 HYN-562 +1630 Stochastic hydrology 130 HYN-522 +1631 Groundwater hydrology 130 HYN-527 +1632 Geophysical investigations 130 HYN-529 +1633 Watershed Behavior and Conservation Practices 130 HYN-531 +1634 Environmental quality 130 HYN-535 +1635 Remote sensing and GIS applications 130 HYN-537 +1636 Experimental hydrology 130 HYN-553 +1637 Soil and groundwater contamination modelling 130 HYN-560 +1638 Watershed modeling and simulation 130 HYN-571 +1639 SEMINAR 130 HYN-700 +1640 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 130 HYN-701A +1641 DISSERTATION STAGE-II (CONTINUED FROM III SEMESTER) 130 HYN-701B +1642 Mathematical Methods 132 MAN-002 +1643 Probability and Statistics 132 MAN-006 +1644 Real Analysis I 132 MAN-104 +1645 Theory of Computation 132 MAN-304 +1646 Combinatorial Mathematics 132 MAN-322 +1647 Complex Analysis-II 132 MAN-510 +1648 Complex Analysis 132 MAN-520 +1649 Combinatorial Mathematics 132 MAN-646 +1650 Probability and Statistics 132 MA-501C +1651 Optimization Techniques 132 MA-501E +1652 Numerical Methods, Probability and Statistics 132 MA-501F +1653 Mathematics-I 132 MAN-001 +1654 Introduction to Mathematical Sciences 132 MAN-101 +1655 Introduction to Computer Programming 132 MAN-103 +1656 COMPLEX ANALYSIS-I 132 MAN-201 +1657 DISCRETE MATHEMATICS 132 MAN-203 +1658 ORDINARY AND PARTIAL DIFFERENTIAL EQUATIONS 132 MAN-205 +1659 DESIGN AND ANALYSIS OF ALGORITHMS 132 MAN-291 +1660 Abstract Algebra-I 132 MAN-301 +1661 Mathematical Statistics 132 MAN-303 +1662 Linear Programming 132 MAN-305 +1663 MATHEMATICAL IMAGING TECHNOLOGY 132 MAN-325 +1664 Technical Communication 132 MAN-391 +1665 THEORY OF ORDINARY DIFFERENTIAL EQUATIONS 132 MAN-501 +1666 Real Analysis-II 132 MAN-503 +1667 Topology 132 MAN-505 +1668 Statistical Inference 132 MAN-507 +1669 Theory of Partial Differential Equations 132 MAN-508 +1670 Theory of Ordinary Differential Equations 132 MAN-511 +1671 Real Analysis 132 MAN-513 +1672 Topology 132 MAN-515 +1673 Abstract Algebra 132 MAN-517 +1674 Computer Programming 132 MAN-519 +1675 SOFT COMPUTING 132 MAN-526 +1676 Mathematics 132 MAN-561 +1677 Fluid Dynamics 132 MAN-601 +1678 Tensors and Differential Geometry 132 MAN-603 +1679 Functional Analysis 132 MAN-605 +1680 FUNCTIONAL ANALYSIS 132 MAN-611 +1681 OPERATIONS RESEARCH 132 MAN-613 +1682 SEMINAR 132 MAN-615 +1683 Mathematical Statistics 132 MAN-629 +1684 Advanced Numerical Analysis 132 MAN-642 +1685 Coding Theory 132 MAN-645 +1686 CONTROL THEORY 132 MAN-647 +1687 Dynamical Systems 132 MAN-648 +1688 Financial Mathematics 132 MAN-649 +1689 MEASURE THEORY 132 MAN-651 +1690 Orthogonal Polynomials and Special Functions 132 MAN-654 +1691 Seminar 132 MAN-699 +1692 SEMINAR 132 MAN-900 +1693 SELECTED TOPICS IN ANALYSIS 132 MAN-901 +1694 ADVANCED NUMERICAL ANALYSIS 132 MAN-902 +1695 Advanced Manufacturing Processes 133 MI-572 +1696 Introduction to Mechanical Engineering 133 MIN-101A +1697 Introduction to Production and Industrial Engineering 133 MIN-101B +1698 Programming and Data Structure 133 MIN-103 +1699 Engineering Thermodynamics 133 MIN-106 +1700 Mechanical Engineering Drawing 133 MIN-108 +1701 Fluid Mechanics 133 MIN-110 +1702 ENGINEERING ANALYSIS AND DESIGN 133 MIN-291 +1703 Lab Based Project 133 MIN-300 +1704 Machine Design 133 MIN-302 +1705 Heat and Mass Transfer 133 MIN-305 +1706 Theory of Production Processes-II 133 MIN-309 +1707 Work System Desing 133 MIN-313 +1708 Power Plants 133 MIN-343 +1709 Instrumentation and Experimental Methods 133 MIN-500 +1710 Computational Fluid Dynamics & Heat Transfer 133 MIN-527 +1711 Computer Aided Mechanism Design 133 MIN-554 +1712 Finite Element Methods 133 MIN-557 +1713 Advanced Mechanical Vibrations 133 MIN-561 +1714 Smart Materials, Structures, and Devices 133 MIN-565 +1715 KINEMATICS OF MACHINES 133 MIN-201 +1716 MANUFACTURING TECHNOLOGY-II 133 MIN-203 +1717 FLUID MECHANICS 133 MIN-205 +1718 THERMAL ENGINEERING 133 MIN-209 +1719 Energy Conversion 133 MIN-210 +1720 THEORY OF MACHINES 133 MIN-211 +1721 Theory of Production Processes - I 133 MIN-216 +1722 Dynamics of Machines 133 MIN-301 +1723 Principles of Industrial Enigneering 133 MIN-303 +1724 Operations Research 133 MIN-311 +1725 Vibration and Noise 133 MIN-321 +1726 Industrial Management 133 MIN-333 +1727 Refrigeration and Air-Conditioning 133 MIN-340 +1728 Technical Communication 133 MIN-391 +1729 B.Tech. Project 133 MIN-400A +1730 Training Seminar 133 MIN-499 +1731 Robotics and Control 133 MIN-502 +1732 Modeling and Simulation 133 MIN-511A +1733 Modeling and Simulation 133 MIN-511B +1734 Advanced Thermodynamics 133 MIN-520 +1735 Advanced Fluid Mechanics 133 MIN-521 +1736 Advanced Heat Transfer 133 MIN-522 +1737 Solar Energy 133 MIN-525 +1738 Hydro-dynamic Machines 133 MIN-531 +1739 Micro and Nano Scale Thermal Engineering 133 MIN-539 +1740 Dynamics of Mechanical Systems 133 MIN-551 +1741 Advanced Mechanics of Solids 133 MIN-552 +1742 Computer Aided Design 133 MIN-559 +1743 Operations Management 133 MIN-570 +1744 Quality Management 133 MIN-571 +1745 Advanced Manufacturing Processes 133 MIN-572 +1746 Design for Manufacturability 133 MIN-573 +1747 Machine Tool Design and Numerical Control 133 MIN-576 +1748 Materials Management 133 MIN-583 +1749 Non-Traditional Machining Processes 133 MIN-588 +1750 Non-Conventional Welding Processes 133 MIN-593 +1751 Numerical Methods in Manufacturing 133 MIN-606 +1752 SEMINAR 133 MIN-700 +1753 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 133 MIN-701A +1754 Printing Technology 136 PP-545 +1755 Pulping 136 PPN-501 +1756 Chemical Recovery Process 136 PPN-503 +1757 Paper Proprieties and Stock Preparation 136 PPN-505 +1758 Advanced Numerical Methods and Statistics 136 PPN-515 +1759 Process Instrumentation and Control 136 PPN-523 +1760 Packaging Principles, Processes and Sustainability 136 PPN-541 +1761 Packaging Materials 136 PPN-543 +1762 Printing Technology 136 PPN-545 +1763 Converting Processes for Packaging 136 PPN-547 +1764 SEMINAR 136 PPN-700 +1765 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 136 PPN-701A +1766 Computational Physics 137 PH-511(O) +1767 Physics of Earth’s Atmosphere 137 PH-512 +1768 Elements of Nuclear and Particle Physics 137 PH-514 +1769 Advanced Atmospheric Physics 137 PH-603 +1770 Mechanics 137 PHN-001 +1771 Electromagnetic Field Theory 137 PHN-003 +1772 Applied Physics 137 PHN-004 +1773 Electrodynamics and Optics 137 PHN-005 +1774 Quantum Mechanics and Statistical Mechanics 137 PHN-006 +1775 Engineering Analysis Design 137 PHN-205 +1776 Quantum Physics 137 PHN-211 +1777 Applied Optics 137 PHN-214 +1778 Plasma Physics and Applications 137 PHN-317 +1779 QUANTUM INFORMATION AND COMPUTING 137 PHN-427 +1780 Laboratory Work 137 PHN-502 +1781 Classical Electrodynamics 137 PHN-507 +1782 Physics of Earth’s Atmosphere 137 PHN-512 +1783 Advanced Atmospheric Physics 137 PHN-603 +1784 Weather Forecasting 137 PHN-629 +1785 Laboratory Work 137 PHN-701 +1786 Semiconductor Materials and Devices 137 PHN-703 +1787 Optical Electronics 137 PHN-713 +1788 QUARK GLUON PLASMA & FINITE TEMPERATURE FIELD THEORY 137 PH-920 +1789 Modern Physics 137 PHN-007 +1790 Introduction to Physical Science 137 PHN-101 +1791 Computer Programming 137 PHN-103 +1792 Atomic Molecular and Laser Physics 137 PHN-204 +1793 Mechanics and Relativity 137 PHN-207 +1794 Mathematical Physics 137 PHN-209 +1795 Microprocessors and Peripheral Devices 137 PHN-210 +1796 Lab-based Project 137 PHN-300 +1797 Applied Instrumentation 137 PHN-310 +1798 Numerical Analysis and Computational Physics 137 PHN-311 +1799 Signals and Systems 137 PHN-313 +1800 Laser & Photonics 137 PHN-315 +1801 Techincal Communication 137 PHN-319 +1802 Nuclear Astrophysics 137 PHN-331 +1803 B.Tech. Project 137 PHN-400A +1804 Training Seminar 137 PHN-499 +1805 Quantum Mechanics – I 137 PHN-503 +1806 Mathematical Physics 137 PHN-505 +1807 Classical Mechanics 137 PHN-509 +1808 SEMICONDUCTOR DEVICES AND APPLICATIONS 137 PHN-513 +1809 DISSERTATION STAGE-I 137 PHN-600A +1810 Advanced Condensed Matter Physics 137 PHN-601 +1811 Advanced Laser Physics 137 PHN-605 +1812 Advanced Nuclear Physics 137 PHN-607 +1813 Advanced Characterization Techniques 137 PHN-617 +1814 A Primer in Quantum Field Theory 137 PHN-619 +1815 Quantum Theory of Solids 137 PHN-627 +1816 Semiconductor Photonics 137 PHN-637 +1817 Numerical Analysis & Computer Programming 137 PHN-643 +1818 SEMINAR 137 PHN-699 +1819 SEMINAR 137 PHN-700 +1820 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 137 PHN-701A +1821 Computational Techniques and Programming 137 PHN-707 +1822 Semiconductor Device Physics 137 PHN-709 +1823 Laboratory Work in Photonics 137 PHN-711 +1824 Experimental Techniques 137 PHN-788 +1825 MATHEMATICAL AND COMPUTATIONAL TECHNIQUES 137 PHN-789 +1826 System Design Techniques 138 WRN-501 +1827 Design of Water Resources Structures 138 WRN-502 +1828 Water Resources Planning and Management 138 WRN-503 +1829 Applied Hydrology 138 WRN-504 +1830 Hydro Generating Equipment 138 WRN-531 +1831 Hydropower System Planning 138 WRN-532 +1832 Power System Protection Application 138 WRN-533 +1833 Design of Hydro Mechanical Equipment 138 WRN-551 +1834 Construction Planning and Management 138 WRN-552 +1835 Design of Irrigation Structures and Drainage Works 138 WRN-571 +1836 Principles and Practices of Irrigation 138 WRN-573 +1837 On Farm Development 138 WRN-575 +1838 SEMINAR 138 WRN-700 +1839 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 138 WRN-701A +\. + + +-- +-- Data for Name: rest_api_file; Type: TABLE DATA; Schema: public; Owner: ayan +-- + +COPY public.rest_api_file (id, downloads, date_modified, filetype, course_id, driveid, title, size, fileext, finalized) FROM stdin; +\. + + +-- +-- Data for Name: users_user; Type: TABLE DATA; Schema: public; Owner: ayan +-- + +COPY public.users_user (id, falcon_id, username, email, profile_image, courses, role) FROM stdin; +\. + + +-- +-- Data for Name: users_courserequest; Type: TABLE DATA; Schema: public; Owner: ayan +-- + +COPY public.users_courserequest (id, status, department, course, code, date, user_id) FROM stdin; +\. + + +-- +-- Data for Name: users_filerequest; Type: TABLE DATA; Schema: public; Owner: ayan +-- + +COPY public.users_filerequest (id, filetype, status, title, date, course_id, user_id) FROM stdin; +\. + + +-- +-- Data for Name: users_upload; Type: TABLE DATA; Schema: public; Owner: ayan +-- + +COPY public.users_upload (id, driveid, resolved, status, title, filetype, date, course_id, user_id) FROM stdin; +\. + + +-- +-- Name: auth_group_id_seq; Type: SEQUENCE SET; Schema: public; Owner: ayan +-- + +SELECT pg_catalog.setval('public.auth_group_id_seq', 1, false); + + +-- +-- Name: auth_group_permissions_id_seq; Type: SEQUENCE SET; Schema: public; Owner: ayan +-- + +SELECT pg_catalog.setval('public.auth_group_permissions_id_seq', 1, false); + + +-- +-- Name: auth_permission_id_seq; Type: SEQUENCE SET; Schema: public; Owner: ayan +-- + +SELECT pg_catalog.setval('public.auth_permission_id_seq', 76, true); + + +-- +-- Name: auth_user_groups_id_seq; Type: SEQUENCE SET; Schema: public; Owner: ayan +-- + +SELECT pg_catalog.setval('public.auth_user_groups_id_seq', 1, false); + + +-- +-- Name: auth_user_id_seq; Type: SEQUENCE SET; Schema: public; Owner: ayan +-- + +SELECT pg_catalog.setval('public.auth_user_id_seq', 1, true); + + +-- +-- Name: auth_user_user_permissions_id_seq; Type: SEQUENCE SET; Schema: public; Owner: ayan +-- + +SELECT pg_catalog.setval('public.auth_user_user_permissions_id_seq', 1, false); + + +-- +-- Name: corsheaders_corsmodel_id_seq; Type: SEQUENCE SET; Schema: public; Owner: ayan +-- + +SELECT pg_catalog.setval('public.corsheaders_corsmodel_id_seq', 1, false); + + +-- +-- Name: django_admin_log_id_seq; Type: SEQUENCE SET; Schema: public; Owner: ayan +-- + +SELECT pg_catalog.setval('public.django_admin_log_id_seq', 1470, true); + + +-- +-- Name: django_content_type_id_seq; Type: SEQUENCE SET; Schema: public; Owner: ayan +-- + +SELECT pg_catalog.setval('public.django_content_type_id_seq', 18, true); + + +-- +-- Name: django_migrations_id_seq; Type: SEQUENCE SET; Schema: public; Owner: ayan +-- + +SELECT pg_catalog.setval('public.django_migrations_id_seq', 65, true); + + +-- +-- Name: rest_api_course_id_seq; Type: SEQUENCE SET; Schema: public; Owner: ayan +-- + +SELECT pg_catalog.setval('public.rest_api_course_id_seq', 1839, true); + + +-- +-- Name: rest_api_department_id_seq; Type: SEQUENCE SET; Schema: public; Owner: ayan +-- + +SELECT pg_catalog.setval('public.rest_api_department_id_seq', 139, true); + + +-- +-- Name: rest_api_file_id_seq; Type: SEQUENCE SET; Schema: public; Owner: ayan +-- + +SELECT pg_catalog.setval('public.rest_api_file_id_seq', 26, true); + + +-- +-- Name: users_courserequest_id_seq; Type: SEQUENCE SET; Schema: public; Owner: ayan +-- + +SELECT pg_catalog.setval('public.users_courserequest_id_seq', 1, false); + + +-- +-- Name: users_filerequest_id_seq; Type: SEQUENCE SET; Schema: public; Owner: ayan +-- + +SELECT pg_catalog.setval('public.users_filerequest_id_seq', 1, false); + + +-- +-- Name: users_upload_id_seq; Type: SEQUENCE SET; Schema: public; Owner: ayan +-- + +SELECT pg_catalog.setval('public.users_upload_id_seq', 1, false); + + +-- +-- Name: users_user_id_seq; Type: SEQUENCE SET; Schema: public; Owner: ayan +-- + +SELECT pg_catalog.setval('public.users_user_id_seq', 1, false); + + +-- +-- PostgreSQL database dump complete +-- + diff --git a/ingest.sh b/ingest.sh new file mode 100755 index 0000000..6f92b19 --- /dev/null +++ b/ingest.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +PGPASSWORD=studyportal psql -h localhost -d studyportal -U studyportal < dump.sql + From e190a4b700ba91ed3dc77150b4f7d529b49f6d1a Mon Sep 17 00:00:00 2001 From: AyanChoudhary Date: Mon, 13 Apr 2020 02:50:26 +0530 Subject: [PATCH 56/69] chore: remove config/postgres.yml from .gitignore --- .gitignore | 1 - studyportal/config/postgresql.yml | 5 +++++ 2 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 studyportal/config/postgresql.yml diff --git a/.gitignore b/.gitignore index 69d1687..3ff40e5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,5 @@ .idea .vscode -studyportal/config/postgresql.yml **/__pycache__ /files/* credentials.json diff --git a/studyportal/config/postgresql.yml b/studyportal/config/postgresql.yml new file mode 100644 index 0000000..5e6a0fc --- /dev/null +++ b/studyportal/config/postgresql.yml @@ -0,0 +1,5 @@ +NAME: studyportal +USER: studyportal +PASSWORD: studyportal +HOST: db +PORT: 5432 \ No newline at end of file From e2798fab01e743261dfedcd2412212b05f2a32b7 Mon Sep 17 00:00:00 2001 From: AyanChoudhary Date: Mon, 13 Apr 2020 11:01:13 +0530 Subject: [PATCH 57/69] docs: update setup instructions in README --- README.md | 79 ++++++++++++++++++------------------------------------- ingest.sh | 13 ++++++++- 2 files changed, 38 insertions(+), 54 deletions(-) diff --git a/README.md b/README.md index a390cc9..27dcee5 100644 --- a/README.md +++ b/README.md @@ -12,72 +12,45 @@ This is the backend API repository for Study Portal intended to be used by Study ## Setup Instructions +Ensure that you have installed [Docker](https://docs.docker.com/install/) (with [Docker Compose](https://docs.docker.com/compose/install/)) and that the [Docker daemon is running](https://docs.docker.com/config/daemon/). + 1. Clone the repository ```bash - git clone git@github.com:sdslabs/studyportal.git + git@github.com:sdslabs/studyportal-nexus.git ``` -2. Create a virtualenv using your preferred method. - * Using virtualenv - - ```bash - virtualenv venv - source venv/bin/activate - ``` +2. Setup and start docker containers - * Using virtualenvwrapper - - ```bash - mkvirtualenv studyportal - workon studyportal - ``` + ```bash + docker-compose up + ``` -3. Install packages in virtual environment. +After executing `docker-compose up`, you will be running: - ```bash - pip install -r requirements.txt - ``` +* A Django API server +* One PostgreSQL instance (serves as the application database) +* Elasticsearch -4. Edit config file. +Once everything has initialized, with `docker-compose` still running in the background, load the sample data. You will need to install PostgreSQL client tools to perform this step. On Debian, the package is called `postgresql-client-common`. - ```bash - cd studyportal/config - cp postgresql.yml.example postgresql.yml - ``` +```bash +./ingest.sh +``` -5. Initialize the database +You are now ready to start sending the API server requests. Hit the API with a request to make sure it is working: +`curl localhost:8005/api/v1/courses` - ```bash - python manage.py makemigrations - python manage.py migrate - ``` +### Diagnosing local Elasticsearch issues -6. Create Django admin user +If the API server container failed to start, there's a good chance that Elasticsearch failed to start on your machine. Ensure that you have allocated enough memory to Docker applications, otherwise the container will instantly exit with an error. Also, if the logs mention "insufficient max map count", increase the number of open files allowed on your system. For most Linux machines, you can fix this by adding the following line to `/etc/sysctl.conf`: - ```bash - python manage.py makemigrations - python manage.py migrate - ``` - -7. Run production server - - ```bash - python manage.py runserver - ``` +```bash +vm.max_map_count=262144 +``` -8. Setup and run Elasticsearch +To make this setting take effect, run: - ```bash - wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.6.2-linux-x86_64.tar.gz - wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.6.2-linux-x86_64.tar.gz.sha512 - shasum -a 512 -c elasticsearch-7.6.2-linux-x86_64.tar.gz.sha512 - tar -xzf elasticsearch-7.6.2-linux-x86_64.tar.gz - cd elasticsearch-7.6.2/bin/ - ./elasticsearch - ``` - In a separate terminal, run the following command - - ```bash - python3 manage.py search_index --rebuild - ``` \ No newline at end of file +```bash +sudo sysctl -p +``` diff --git a/ingest.sh b/ingest.sh index 6f92b19..fbcdcc9 100755 --- a/ingest.sh +++ b/ingest.sh @@ -1,4 +1,15 @@ #!/bin/bash - +NEXUS_CONTAINER_NAME="${NEXUS_CONTAINER_NAME:-studyportal-nexus}" +# Set up API database +docker exec -ti $NEXUS_CONTAINER_NAME /bin/bash -c 'python3 manage.py migrate --noinput' +# Create a user for testing. +docker exec -i $NEXUS_CONTAINER_NAME /bin/bash <<'EOF' +python3 manage.py shell -c "from django.contrib.auth.models import User +user = User.objects.create_user('studyportal', 'test@test.test', 'studyportal') +user.save() +" +EOF +# Create database +PGPASSWORD=studyportal createdb -h localhost -U studyportal studyportal PGPASSWORD=studyportal psql -h localhost -d studyportal -U studyportal < dump.sql From 80d95670d9c161d327bafc81d12d9cc6a8da0449 Mon Sep 17 00:00:00 2001 From: AyanChoudhary Date: Tue, 14 Apr 2020 03:11:06 +0530 Subject: [PATCH 58/69] chore: add index rebuilding script to ingest.sh --- ingest.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ingest.sh b/ingest.sh index fbcdcc9..c12a69d 100755 --- a/ingest.sh +++ b/ingest.sh @@ -12,4 +12,5 @@ EOF # Create database PGPASSWORD=studyportal createdb -h localhost -U studyportal studyportal PGPASSWORD=studyportal psql -h localhost -d studyportal -U studyportal < dump.sql - +# Rebuild indexes +docker exec -ti $NEXUS_CONTAINER_NAME /bin/bash -c 'python3 manage.py search_index --rebuild -f' From dc6043721f66faf942f5c83ad4126d454ae81ad4 Mon Sep 17 00:00:00 2001 From: Ayan Choudhary Date: Tue, 14 Apr 2020 09:55:08 +0530 Subject: [PATCH 59/69] chore: remove litter from Dockerfile --- Dockerfile | 1 - 1 file changed, 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 4d5b83d..997399f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,7 +4,6 @@ ENV PYTHONBUFFERED 1 RUN apt-get update \ && apt-get install libexempi3 \ - && mkdir /cccatalog-api \ && mkdir -p /var/log/studyportal.log WORKDIR /studyportal-nexus From 466beb66ac95643da474993805a84f4092557474 Mon Sep 17 00:00:00 2001 From: Ayan Choudhary Date: Tue, 14 Apr 2020 10:11:13 +0530 Subject: [PATCH 60/69] chore: simplify data addition through ingest script --- README.md | 5 ++--- ingest.sh | 4 +++- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 27dcee5..b1ae38a 100644 --- a/README.md +++ b/README.md @@ -6,9 +6,8 @@ This is the backend API repository for Study Portal intended to be used by Study ## Prerequisites -1. Install and start PostgreSQL service. -2. Create a database `studyportal` -3. Setup Arceus and Falcon locally or get a remote instance for development/testing. +1. Install [PostgreSQL service](https://www.digitalocean.com/community/tutorials/how-to-install-and-use-postgresql-on-ubuntu-18-04). +2. Setup Arceus and Falcon locally or get a remote instance for development/testing. ## Setup Instructions diff --git a/ingest.sh b/ingest.sh index c12a69d..c723c27 100755 --- a/ingest.sh +++ b/ingest.sh @@ -1,5 +1,6 @@ #!/bin/bash NEXUS_CONTAINER_NAME="${NEXUS_CONTAINER_NAME:-studyportal-nexus}" +POSTGRES_CONTAINER_NAME="${POSTGRES_CONTAINER_NAME:-studyportal-nexus_db_1}" # Set up API database docker exec -ti $NEXUS_CONTAINER_NAME /bin/bash -c 'python3 manage.py migrate --noinput' # Create a user for testing. @@ -10,7 +11,8 @@ user.save() " EOF # Create database -PGPASSWORD=studyportal createdb -h localhost -U studyportal studyportal +docker exec -ti $POSTGRES_CONTAINER_NAME /bin/bash -c 'PGPASSWORD=studyportal createdb -h localhost -U studyportal studyportal' +# Ingest mock data PGPASSWORD=studyportal psql -h localhost -d studyportal -U studyportal < dump.sql # Rebuild indexes docker exec -ti $NEXUS_CONTAINER_NAME /bin/bash -c 'python3 manage.py search_index --rebuild -f' From 7c2beb349d9c124e6d5319260f9011d9592ce93a Mon Sep 17 00:00:00 2001 From: Ayan Choudhary Date: Sat, 18 Apr 2020 17:37:02 +0530 Subject: [PATCH 61/69] feat: integrated file initial upload to review folders functionality --- .gitignore | 2 +- rest_api/drive.py | 17 +- rest_api/token.pickle | Bin 0 -> 2217 bytes rest_api/views.py | 6 - studyportal/settings.py | 3 +- users/structure.json | 6597 +++++++++++++++++++++++++++++++++++++++ users/views.py | 19 +- 7 files changed, 6627 insertions(+), 17 deletions(-) create mode 100644 rest_api/token.pickle create mode 100644 users/structure.json diff --git a/.gitignore b/.gitignore index 3ff40e5..ee0c6c9 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,4 @@ **/__pycache__ /files/* credentials.json -token.pickle +venv diff --git a/rest_api/drive.py b/rest_api/drive.py index e7afde1..8da8dc5 100644 --- a/rest_api/drive.py +++ b/rest_api/drive.py @@ -4,7 +4,14 @@ from googleapiclient.discovery import build from google_auth_oauthlib.flow import InstalledAppFlow from google.auth.transport.requests import Request - +CREDENTIALS = os.path.join( + os.path.abspath(os.path.dirname(__file__)), + 'credentials.json' +) +PICKLE = os.path.join( + os.path.abspath(os.path.dirname(__file__)), + 'token.pickle' +) def driveinit(): creds = None @@ -15,8 +22,8 @@ def driveinit(): 'https://www.googleapis.com/auth/userinfo.profile', 'openid', 'https://www.googleapis.com/auth/userinfo.email'] - if os.path.exists('token.pickle'): - with open('token.pickle', 'rb') as token: + if os.path.exists(PICKLE): + with open(PICKLE, 'rb') as token: creds = pickle.load(token) # If there are no (valid) credentials available, let the user log in. if not creds or not creds.valid: @@ -24,10 +31,10 @@ def driveinit(): creds.refresh(Request()) else: flow = InstalledAppFlow.from_client_secrets_file( - 'credentials.json', SCOPES) + CREDENTIALS, SCOPES) creds = flow.run_local_server(port=0) # Save the credentials for the next run - with open('token.pickle', 'wb') as token: + with open(PICKLE, 'wb') as token: pickle.dump(creds, token) service = build('drive', 'v3', credentials=creds) diff --git a/rest_api/token.pickle b/rest_api/token.pickle new file mode 100644 index 0000000000000000000000000000000000000000..18eacffa4d412c7908e945acba1004f7c9cbf7d5 GIT binary patch literal 2217 zcmcgu$+Dx?8E(gIw|(O{u`@ZtE*m>3=`slEk{uEPp$kYtAP!WyRKP*Z^GsE$l0{x7 z`@BmYAPiJ~4Mn7rJR3SaJ2R`Odj` z_03<35B^mA;A`;Ft5>h;EOOK0L-03r9xQ^MTNvXm;&wxp7MBED@4#V0Z_&@pesEWq zUzs{SoW!Wbul!BMFrAe<%G%;LJ;}#`Zc{jNG$%y0XA|vin-8gCTRnAf`!ER^ytKG*?^~#qM!38zMR#g?u)CMCU+K2DRwd=pHyYX z6tBU@$YHn7gK{W7a-dbab&$9Z?+(Ssn};|5eEsET%RhYZ_qurV*WweU_!PWBR@chO zaI^= z@Ht|>mhP=|EC2e^AzuOyUE+_Am`5CKDgtyBl*Yz01V&*Pe$AZaj+=?JP;Q^4@O*67 zmE3Cj*1FN4tAhoLjX0|T`eMK|B8cbVqWdIB*=$87=^{C=xS~~dfqV;DCn|mlKAl_$ z;9K^efq%S4`GTK<+i8wya)*?rs|@ax&Ka{-B)HHZ zXxvVfQA}WK6R{}1mU~s1R-Ej=q+SbB4yPZ4(hhHbg6gJ3jtNGHB$kz0Ye(P zpBW@K+Q8@?J|2v4ja+3K1FSn|pi-NlQ=7lw4sjU}X9M|512_NSg8J$I#Wg}*n7DdL zl@=0vA|=)77HNsH(C~1tQ__LQ1;IWv*Iot^iN^xW9i|Ji#>s)T%OT>j1Pva)< z`%W5-C;oqY&(VYl_PLqF@q`U`d)z#CfdQ18#dD)I;l%=FZugqI&9ieV=kks_8j(SX zn!G)y&cu!Uz+)lIg3~2ltHGK*Z|RG&_19W__q(%n8G~Sd|Hj%Wn6s0X;y_mxYcwW7 zw~MpG#OTKZjru5>najiGl0gjtfiW)$sZ*Y#7WN{O zj-j#Sd^y^Q{YH;FW8Cj%eN}Hp%fsjntCX9j30Zqk7ejC?)h(>j7*=otRC8B*G9z6@Mx*Y{A`zvi9a^uapMh!hqJK89TiU_+i!TK2gQ*f4p(+a z1$9;L7Dp)(8uv+*QoT$&ZRm8-h>-RK2SZ#Ju${$Kijl$k`s}M~mU&jT47Z6&)tB|~ z=;8J~433S(Z{Pnd0Z*VOn?hO?z$1p!fy&9lH3pEWK6q?xzUabe+3vzm*$%{x8~8;xPaK literal 0 HcmV?d00001 diff --git a/rest_api/views.py b/rest_api/views.py index fc1859d..f312655 100644 --- a/rest_api/views.py +++ b/rest_api/views.py @@ -25,12 +25,6 @@ def sample(request): return HttpResponse("Test endpoint") -def getUserFromJWT(token): - decoded_jwt = jwt.decode(token, SECRET_KEY, algorithms=['HS256']) - user = User.objects.get(username=decoded_jwt['username']) - return UserSerializer(user).data - - class DepartmentViewSet(APIView): def get(self, request): queryset = Department.objects.all() diff --git a/studyportal/settings.py b/studyportal/settings.py index bacd07c..45508fe 100644 --- a/studyportal/settings.py +++ b/studyportal/settings.py @@ -72,7 +72,8 @@ CORS_ORIGIN_WHITELIST = ( 'http://studyportal.sdslabs.local', - 'http://nexus.sdslabs.local' + 'http://nexus.sdslabs.local', + 'http://localhost:3005', ) TEMPLATES = [ diff --git a/users/structure.json b/users/structure.json new file mode 100644 index 0000000..585e7e0 --- /dev/null +++ b/users/structure.json @@ -0,0 +1,6597 @@ +{ + "study": { + "WRDMD": { + "WRN-551": { + "exampapers": "1tx0XdF3G1ahS-RNdpSwG8PM7vA-cZNGp", + "tutorials_review": "1d5Tnf7La2WByFpP401zhuMBfEWD35UJl", + "notes": "1TFHhYkaRIuzfk95_7oJLEZX4p7k1XXV_", + "exampapers_review": "14gJtRQ9o6wix9fyTBPcXV7GMgCzHQwvR", + "books": "18zchADaArCJSDQsLTB61wHZ5L3nL0tLf", + "notes_review": "16HSbay9GI6zAXvrgTdUFm7grh_3TaMuD", + "tutorials": "1FBNxywucTmumgIbIPHQhod-rFvKfP19Y", + "books_review": "1yBfpCzDW6aPQtjiAVoN3IJiMb7iAsyn-", + "id": "1LApFH1LmwaAI5gtLxPkMpOePPiiCVE2x" + }, + "WRN-552": { + "exampapers": "1iWS00-hPdEZY28jnSY0H1KXm6XUHb4b_", + "tutorials_review": "1wIlAvhrHqSK1DgOjs0bmnfyF8upMxtmE", + "notes": "17DgmuX41o03TCJpuTerhh38bYqtIfmh2", + "exampapers_review": "1tQRqq0xrRFlubKQz5Bm2m0BBoabxH79j", + "books": "1HylUBpkMwyjshlvrN8agCt_FP0xIfd_i", + "notes_review": "1gnWgeykfMdMX0uR6EieTfTnn5oJut-Hj", + "tutorials": "19hWLrED94tPJN9NQ2ZNyTfL2T4ew2Crc", + "books_review": "1xXEAwaTavSvl8PEH2scRV1toE7zoMCn6", + "id": "1dn3T9etbzVEgN3ZSmjyOoTkOQTVbRZFn" + }, + "WRN-700": { + "exampapers": "1DCjizPipf9AezdUvfCenXW3th4hkPb-m", + "tutorials_review": "1Lg0UxhNtdEY8gyXhv08J0QrYaANSEQgF", + "notes": "1DgVLpHz6hlK2W0KgfJNUwhBSBeVDuZln", + "exampapers_review": "1WWHE0qG3SF71df_0YB-C7RRyvFCqtHoS", + "books": "10jKziREM4fA_YdetTUvB0i5MwQlUdmIx", + "notes_review": "1J9o6foJzeiZ_tAi_KF6aItqxO81AUPO3", + "tutorials": "1lUlEc9UObC4FRQKLRHcavkamBmUu9gEZ", + "books_review": "1DBLNiEM68knsodRW6W7dm7kAKMpkyykS", + "id": "1FKLTwFXH3xSIKt96XU6eBEGQG48UD5v9" + }, + "WRN-571": { + "exampapers": "1yiuuMTYS_U4r_RxzqeS3AmGfkYy3aNmb", + "tutorials_review": "1F9gyfXjnJ2-YNuvrLSLegf_aLIYpUVFi", + "notes": "1ZZY4KnVsSvNhlwVBmIytcnw8EgklmPRP", + "exampapers_review": "14gAMD8DpNerhRUq9uH_Y0N6VbexePT0D", + "books": "1kbs8Ge3dxQy9KQ_F9n6uvhNJguO156Ai", + "notes_review": "1DbJbnQMRYAGiKChYpATaYBBCGPQPVlDI", + "tutorials": "1fLdBXHTR3JK-YYhqPmmNsHSAz1-KoYm0", + "books_review": "1rjcA2sWKg_j9VjcljZBmrbPIbNc9OG5u", + "id": "1eAQYNJ7uz3z9eQIIStnxCfraQhE79U0P" + }, + "WRN-503": { + "exampapers": "1c65qxhRihZz9ezQ8jkisOHdVPMEVeO0v", + "tutorials_review": "1XvoD9CMx6lM_0-6WgkI1y46fedhWofKc", + "notes": "16sNG3wy-wZYBzLyhsUNo8Paic9h2HVMu", + "exampapers_review": "1IeSqW1lZp4dBLr6ayY3e2V7zJBl0ldJW", + "books": "1Utuy1rFtcKToETse0JcwX2avqrW5jbdN", + "notes_review": "1Hf9D_P69vWF51Q2I-MkubKVQeRytEjP7", + "tutorials": "1QCWkx0xylEN-XtRSbzt5B72xnd5BBFPf", + "books_review": "1zsvk_BQUC_yBqpgjLQMlL9uVdrRxnYaJ", + "id": "1EAa9StOqwHnjiSh00FxJRe4v8psNvMwH" + }, + "WRN-533": { + "exampapers": "1VNkTmW86yED4rNP9VMKG1tINZGLjVrif", + "tutorials_review": "1Q8z4ZMBUXvmm8XX1-aI0vQSCdlS0YRlr", + "notes": "1WbL6Y_0YvbR8Hsbx7Z1wm3FTgGvcGmLw", + "exampapers_review": "13CgJTK3n-mulZb9R8MgwfvwTUUemsWQ5", + "books": "16w86xp_-60u48E6GrBMGctXxt3qcagDq", + "notes_review": "1ViG6a7lRKNn2UaJpqUzgnkFcufdX_rwy", + "tutorials": "1jpxiCVExYscF-OSe4yNlOAnUMocoXB_o", + "books_review": "1-kSFF0UlXA0vPGWukgMoRPxxGJgpJpTJ", + "id": "1epvR2YThVq3xZgm7w-a9UMB3mlHKM2h5" + }, + "WRN-532": { + "exampapers": "1C-QWgSwVjTpw2vvvc1gqd6t8ZnxoLpPG", + "tutorials_review": "1YeMUx9NEY5EG1LKXYQoUGozTjbTUSImy", + "notes": "17Zg34Q8jazKGlNnqWYFR3LUoiBC_SVWS", + "exampapers_review": "1idL3IdDZYWfvX5EzhCkZL1zItYKwxS0M", + "books": "1zVnyzqoyaDboztLJcCOVWUSNiN8yCKPs", + "notes_review": "1V9pUZCm46JzHReGM1YBGvNz-2GDmwAMl", + "tutorials": "1dbwhFspo_XHlQacOiNxKdrBTcEB4oxLv", + "books_review": "1ll2Pk8ahpNCg9MhozgpTMJ_k4dN5ruey", + "id": "10cauicKrXT5iwGRnB_6iPmRgqTIJM5bw" + }, + "WRN-531": { + "exampapers": "1bZcPRPCn0YPNXCEcaLnUKzao2RRdYcdJ", + "tutorials_review": "1vhmfNlCR4c1YaCgM3KCkbgLUb0QXsKP4", + "notes": "1mxdydtpR2ceVGdOq8q4qiNwnR87Rx2Su", + "exampapers_review": "1hBskhahkUArIwIUpcCKgL9w-fpjp8UqT", + "books": "1KwxjF3swZnetyYCdU3s0ZnMnXuTh-Tpd", + "notes_review": "1ZYjcmzZjxtMRUHHTxG5-9eRzNY86hi4g", + "tutorials": "1OdhrrCAmM4-zgu-EAb4LZjMLE3sephNt", + "books_review": "18QSwyDDWOUx_DcoxpdKexqnwCHa36OSa", + "id": "1PTflsnDSAUdEI1ikww7Y9vGQaXfsD6FH" + }, + "WRN-701A": { + "exampapers": "1k403fJpjnD76wI9jMNosrCSN6lvK4yPv", + "tutorials_review": "1ey1YuxJ9TW1gxMxD_zDKke5sLWMkMKnG", + "notes": "18tr1tBvYFYKLScrpgO3K41rNYrgaEj_r", + "exampapers_review": "1aDQzDRRfxq9TYV54jKRL67K_PtnZRI6V", + "books": "1CCyiDywJp--npi-kOsgqmqyL6x9B00iX", + "notes_review": "1dj-up6UvPRN-XiMyw9i-MrNDVsbPlres", + "tutorials": "1Mpe3tfJt0J2z2_Q4tbvJZWZPCXbNRxCX", + "books_review": "1lP5JxyOF7tnzdFXU_caIWP68NDnanAZ5", + "id": "1RwTb4ACCWJuhZE5bU_TZASI48gOH5i7u" + }, + "WRN-573": { + "exampapers": "1EmPDVVuRefw3Qxb3pyZiIcr-zUGqTuC7", + "tutorials_review": "1voTE8-1WmWIVgFAfkUvT9jO0dWoFNp4W", + "notes": "10y4sQ298puvHettGVUAZcE4VMURq_B1E", + "exampapers_review": "1t_swWl9CKLgw5wnNnPiDUbbY2jv_kxUS", + "books": "1wInEGCy2a4BldAAaHPytWIV9v0EJ1nPh", + "notes_review": "1tFWikNoHt_3xo7ZpTfgkuSJEGUzCE8xB", + "tutorials": "1jFtpsgAaHhIkl6oZceHuuKr8hc0Cxq8T", + "books_review": "1QdSO15slswb170AKfreED0dfEdQKzdIM", + "id": "1O6zkvLuh3uCA1Bs2Q-b0lSApIndm051b" + }, + "WRN-504": { + "exampapers": "1U3fPPSz-wiBDQYXvVR9hnxCuNOiTYXY9", + "tutorials_review": "1J1ZkUxfJ3Fy4xXAbBqnSQVEVsPaIZprO", + "notes": "1CPt93IIXH2Oh8CzVn46H7vGQbp-vIuI4", + "exampapers_review": "1xAuRaA7i0w30jfObTiJgadDdtzn6zYQg", + "books": "1EsADxHemvP7CYf0DwUvxB1AfAwBoAZwC", + "notes_review": "1GG5o_tpnVtQHYGy_42cyZP2pgdylnVuU", + "tutorials": "1X7Emw-cZTsM83oGrDN4dlq4zHCBk8GBZ", + "books_review": "1GW9OPHJg473vP08qh-MZ10WsJ84Y1Xeq", + "id": "1CRjrA3V15fxs0NuAAOOUKEjRPlflaQcY" + }, + "WRN-502": { + "exampapers": "1A2gw-D9axstoSWx39__YDUXYXACxzwLf", + "tutorials_review": "1O8l00PtqtQRtZ4zhK1IAOuh6RHvYL-5a", + "notes": "1SYNN1b2EhaZnlTtkL3d2ZCSu-K8DGPZm", + "exampapers_review": "1cZ45mRFcSrKcs3YQ-s3g2S6Z9ZGtykwg", + "books": "1SpfMFnnvNvWzbID8swAo_fRKGGZ1yqVB", + "notes_review": "1VrI9DpXhsLqOMHgUWZWAy6RjVjK8wMbz", + "tutorials": "1dmqonMRbri11FoWeA9-u-eEPnrDbOHUN", + "books_review": "1ILRU577XvMglwGrPY7U9JYFXQ6vwn0sR", + "id": "1wCIxiGD33BGxckto1r8kuHO307FqNPLj" + }, + "id": "1q4LjDwUAu5MSbdsJvIlPxNttC3FgRTEf", + "WRN-575": { + "exampapers": "1_gHkAxRz0gxAFah-lmNudN572JMj4FEg", + "tutorials_review": "19bL_UEScG-frM8DeKLKjjpFR8SaZDe3e", + "notes": "19Rfqj-0JaQUqYh337C1p-4C7CRh3JL4K", + "exampapers_review": "1jD-ngFK8RQT-C7Ah4qBD6Ap2oMM1q2bW", + "books": "132-RtoKzm3Gs1vEXJOyt_xdehnVlYESO", + "notes_review": "12vk_jZylYlIHbZX5k3YUAPzyh3Rc8j1W", + "tutorials": "1kNq98Dqry86K5bvKRUQX2T5aa7ejnCdF", + "books_review": "1SRC7jFoyPk5vhIfCrovg_ABHtZE9uWGq", + "id": "1Op8a5H2YIriP5G3wgynQmvS88e-lfocZ" + }, + "WRN-501": { + "exampapers": "1ynv8AuPAdlj3pR1iMrqsP60QV5l1DClv", + "tutorials_review": "11QvtKYNvPvPPa3_umJU0Vnh9-zGa6PCs", + "notes": "1mJgm7t4mUwOEwbUTKJkqiQUDSbaU-Ivt", + "exampapers_review": "1JqPvmhcV6GGDuHSj8q6L2wxHT1zBaTZD", + "books": "1-NBJU9vICYu6yyPT-_kUEkvlXkvcpYDy", + "notes_review": "1AG-JWARlHV3YT7FvBZ3zBYa-ln9wT9Yc", + "tutorials": "1-B7rO-Xe_cbuXxPQo8vD-tebok2Y7Fx3", + "books_review": "1blX4uvxz6wFA2ntatmCAosUqp3XX1NmL", + "id": "1pY-tWTyNTvMSEdq85juPd_y-dGCci_7_" + } + }, + "HYD": { + "HYN-531": { + "exampapers": "1BB377_3OQdWMOB430M7NbwyjENGlwd-p", + "tutorials_review": "1lYNRXwQQSWtmjlr7CJ80x3xIJ9mu8rRG", + "notes": "1Ah7LfviQyQ9aZJ_D44mUlvmFYE6NenDV", + "exampapers_review": "1lZ6bSXeofOIIw1Q5Hhy8TLRo-p1aQYk5", + "books": "1UU1gUsv-Jd6xnXsbYdhDKv7N9MuIus6p", + "notes_review": "1lSofuIC9e1CDiFZa2anIB7AxopfRvira", + "tutorials": "151chaGR0X37ZEUR5gjovRt7H4qKUDI5q", + "books_review": "1XPv4XbrKFCVOydqJ27Zf-AaXfxO2w66Q", + "id": "1hY4_saMSO3HNm7k-IgG-DNoC7Tne7dSF" + }, + "HYN-102": { + "exampapers": "1IS2BXLQN_WhtMikYfMFSaUKPUVAAR3Yw", + "tutorials_review": "1aLtOvoBdqkm31yAc_cFphbyHjCDXIlkF", + "notes": "1KJMmknPiHszpKKlBJMbhTsR-WBmlfXUs", + "exampapers_review": "1ohf4UuZGaBo3XblwUJHqLh1WNKPms777", + "books": "1s3giPz6bdsuSr4_TZjq4UrVmY0EN2-Qe", + "notes_review": "1fiOtqfbSas6PjfOuhY67vy9Jsphyko_S", + "tutorials": "1KyfUf2fG_4EcridpeTB2fJSH1FfyY_o4", + "books_review": "1YL1LxkC-9OJefOnKN3ok5zZy2MnxT6mm", + "id": "11o3xHHfW9gtjiAbBo99HZez6o26tgBn_" + }, + "HYN-535": { + "exampapers": "1Q1_ZeQNy95RhNAXFyC1Bh9hQ3lO6Nn-2", + "tutorials_review": "1cLWPyCc8qH-X-Ngg5LcMFi89If7o3DWv", + "notes": "1NUA8DmN0c8qUpBRYWdCjKz8Hi6FtDxMQ", + "exampapers_review": "1rOIJEMpYT8BKlUbSUadnmIUXgaMkNVxg", + "books": "1nvPgDIvZ7bEcfpyaibr28Bli-UUa7HkV", + "notes_review": "1FoAxweuP84tf3k0f090h5Jp4lU-pIp0E", + "tutorials": "1FZ9lxIM1hktljLMRGvMpnZCkMCvlnHAU", + "books_review": "1NVlHnIQrP7W9tRdiUsE2Vc1O1VnWI5zC", + "id": "1YvD0WkbSaegiddjZA_CKTxjz3jREBxxo" + }, + "HYN-537": { + "exampapers": "1WF403a5tfj9_gab0gllPVi-DLdutyBLp", + "tutorials_review": "1n3a6HyrtR2OPRZZbYhEg94rDG0aR8P8N", + "notes": "1UvBaMERZ8x6HsS_dc3wXXBEIih5_Nzal", + "exampapers_review": "1tionKvlou5Fe9ALKYyys1fhXzgA0ZlII", + "books": "1VcuhA1GnZ-Uyqtrm2shPH5bG-VbPIAMR", + "notes_review": "1JzVNkrq8NzM8qF2H4aWGvDYtipubCIq9", + "tutorials": "1edtlVlKaOXtEF4qSP3oAL2eVJfihmuTY", + "books_review": "1elyYBxRTNAPHnKgH9y3JSwBkicYm3h3O", + "id": "1_FiKkRVvbPXcJsXnEacoSVFR9nOy13Tp" + }, + "HYN-529": { + "exampapers": "1lR4GzncBT9ICJFMC9TeHE6EJ7c8LzRfu", + "tutorials_review": "1JUHUNJfjDnIDQVJETRGIcQmBoQuX_Ggw", + "notes": "18Tr0DZdU_5dTerRmqLXYTk4-7XHbkK41", + "exampapers_review": "1haVcGp4xLWc14PtywCNkRd0bMp77zrmG", + "books": "1wmuPZ7ZujqDuTwU4I9iA-eesl1Fa9RbE", + "notes_review": "1yB0OErK50x4aPx9_Bs6FHJiGLzgmAXsv", + "tutorials": "1_lPXDPjBAghufvCI0E4v6FS_RVIITypY", + "books_review": "1ngZA93egDroJj7lL0_pzVEDiho55GQN_", + "id": "1fYrFrwEkRNcAgf2krfx1p1iYCLiCFT-l" + }, + "HYN-553": { + "exampapers": "1IaUca_wgqCsOMsvZ6w-ShzNeCE13XeAC", + "tutorials_review": "1QWliVK3daebXGw8ZXcKB9iiN9mU8wTMw", + "notes": "1Y2jM39X8gtnML5er8SMZSoBpLwDJYxb0", + "exampapers_review": "1lB7qr9hLfYEx7V4bQnfgrxyw4JR_ioiR", + "books": "1fBsr9FKDjiMMGXPNNFZwNcNztG2Apj4k", + "notes_review": "125rHUvXL64TDhIlLHyrE7c5CfvEj-0Hn", + "tutorials": "1hT2KgIF5A1R7Tqd58Qh1vN3cN0SZIe1G", + "books_review": "1al6zIEyRn03GXhAJ3rLER7dmXQp5-XxJ", + "id": "1SwjPllrlz_VtEBL5PmodST_TmBHLbjqQ" + }, + "HYN-527": { + "exampapers": "1fnmFAvFKoOud7n_QZfCvA2B9_JHPn62n", + "tutorials_review": "1JS_XbSkGz_P9Cz_2DmdpS4NIkkQJsab8", + "notes": "17qFt_IyWXgJORQ28JldMu2l8Y12upfuP", + "exampapers_review": "1iVFCpxDO1CSVFEL4ToqvkXoyAAgOC3tG", + "books": "1pMUhoPbQ2EIZ_aRzyWVOGDHnYalOXW3o", + "notes_review": "1vfXXSq5_ReB6L0CrT7uFIEk-PvydRgA1", + "tutorials": "1RGSDaRTp6lsnHOB7-lHD7SxrTEsJux1w", + "books_review": "1HoAwt0Qr_ePfDbj7H7pEVwnOO5gJuTSg", + "id": "1n96bSovJLFYdHydkdIC8iZ8z9pWp-CFn" + }, + "HYN-522": { + "exampapers": "1ih0u75PO99NcVIkwoIl07r4TPk_SZcrW", + "tutorials_review": "1C92I9I5FW-arPwhWMOxhTkglSjhMcKym", + "notes": "1tkUQv5GbZl74XDbFyTZhCkBZm9YDjbt4", + "exampapers_review": "1V_y6KwblCsRWkCvoRP0XH1R4cARgPM9F", + "books": "11LecXnQPoraVTLTd23V-ZAPSCVzmuH1j", + "notes_review": "1UK8XUgKimGm9_1Pcw_L3NmSBjR9hiIkv", + "tutorials": "1G-EWWYh-270o06SHtdILBg1Hum_T66yx", + "books_review": "15sHYRqvVP68er02yOIcAO68SiUwWjPVi", + "id": "16L9MCx_czDfce8TMTmGVb2a41bRU5hnv" + }, + "HYN-562": { + "exampapers": "1m3S5D6kwQy84_PaKPfXG88svsmfXGO5S", + "tutorials_review": "1JcfIov-XBrITIAk2YwQ8ipa4RfZvwqN0", + "notes": "1FymQ2FAN79QirFnkNWqtg6cpGhfwlryu", + "exampapers_review": "1S7nQaye8RjQP4-hDVIinD0m5obcq1Xqp", + "books": "1n_q5sI1xQTEnTwzElXqOk8II86qvFM8e", + "notes_review": "1iVVe0l1t3_X9JazvBluUtsteUWF2hDn9", + "tutorials": "13U0r4BE_1mRr5itZymkFR7g9-7_9MQdg", + "books_review": "1eMsOgRYBDne3hNN_P62hipTxSmL4Muf7", + "id": "1HAkubx-r_5-s7Y6sb6W1JtCYZ4oyRbR-" + }, + "HYN-560": { + "exampapers": "152nMyPX32vNtzVn1Q71Rra0apV0nvel_", + "tutorials_review": "1MyK77sduvj5uhVgl-rrVPyU4QP8NrK2f", + "notes": "1IBfbzhCMQMaeTJe5UY-4BWjTw0wwBkMq", + "exampapers_review": "18HNGrJSGASssGVAxxiP48YVfVguzszWs", + "books": "1XFLvAFoqCeaZdMLhxMtVdB3lVhsrcU1p", + "notes_review": "1oMMECh_apiR4PWXwlUV30gMFUPl-1uzY", + "tutorials": "1h4vpoUMwGHqV3nT_J-jde39To0CBniyR", + "books_review": "1jEwwANIB7uA25j0SpZQelHguytu4C-8E", + "id": "1eiDu9hz9GcEY7aACnOZg8c4JPbSX6rdy" + }, + "HYN-571": { + "exampapers": "1bPlZ8J-PlMByrLbAyA9ePw5nvFPTRSqW", + "tutorials_review": "1s4jI6Krh_O1-s1NU1ZQvUI4BwNk5_w8V", + "notes": "1yth4GIcawjV4ZtAlhEdyw8U06MCHzfi6", + "exampapers_review": "1eWkvWTkO1MljKWm40m0_n6Cot6Zhvzqx", + "books": "1KuunFmrSgfe7js69cqHseVPiS9ZP5d6w", + "notes_review": "16v7rst2tfxfV-kefmHwrk_8zIErxJJX9", + "tutorials": "1ZgBs_fJqJMJsR7iPspNpLYCalHjpjZT6", + "books_review": "15LEOYwG5KiBlVYpvAYdJM3hZ6tpclVfL", + "id": "1BxclnoyAXBVW93sptigYmoP1fYHDIGVM" + }, + "HYN-700": { + "exampapers": "1ZSU4gVSgOaffDkElCG0eVi1iB15RCyS6", + "tutorials_review": "1hlFu4AYGKVsjZRJJU7RXIGgMuk471tca", + "notes": "1modKrQox2pgmq3ER8SygkWNDbIrWOjPT", + "exampapers_review": "1n33JTz3a6iC9_DPTY6xkE-fP1_s-xKJ_", + "books": "1ei19lKLs53AAGfgBQY_1mtpOHw-evqNW", + "notes_review": "1onpATzQneIUPQLC4YyldDRN_7hY3Upbs", + "tutorials": "1bpeHa9taGZ7yhOKEcOwe8l80ObAcdnvQ", + "books_review": "1RjqL5qeGxWda6vQ-5xx9p4FbVF395Jw2", + "id": "1-rCq75eCBKA27Q3T3TFcrO1FOenw4pXw" + }, + "HYN-701A": { + "exampapers": "1gt5TQRsTQfX70zg0DhWhKDy-_ehdu1kF", + "tutorials_review": "1G6KVyn4ovWSdup5-pJwcbLaMqFQL7dcf", + "notes": "1Ux3uUxCps6g-aZ0F74tyUtQvCskm4anP", + "exampapers_review": "11BJp8nfbNgHaXSccLfK_eknFStBTIKWA", + "books": "1e9PTm9G2bnyzNCSoKFP5weUtO7UJaaF9", + "notes_review": "1wl4iiIsP9K4cAoSnw-eXCmUC4VKdFX1K", + "tutorials": "1AfQthw49ebnmfQg1Q7QhHxiV6lF_t-bo", + "books_review": "1kVaLva0AfGn4wcqNh5wcgXN4ql8snmg4", + "id": "1h8CPFYEH7ZrjIxnagGvlBRbY7gXXJswv" + }, + "HYN-701B": { + "exampapers": "1Pi3iDG28tTJjZPo1sYC39TuOcv6Yv54Y", + "tutorials_review": "1kvE9gfGafImAHyp17ee7QLz_xbcxfuIE", + "notes": "1KQnTOU7Zg4MEpYKv8sb746AKne3Fr6-u", + "exampapers_review": "1EBNAa2e5gs2U2mUkEtpyC1cX0PlM8QvK", + "books": "1_Q7FXfIJwszGw3y-SBV5Gix_4O2LmmFx", + "notes_review": "1NGF2w3DgsGINPhdlW7BleUN99rKp39SC", + "tutorials": "1LKOV4OClFXOMR36HoyPJ4amv6ZNTQP7L", + "books_review": "1dNovqGuUNXrVjPPqkMXrAzPXVYUIsZE0", + "id": "1yNAe7Sc-qvI9ZksLFF9Ier-wOGfJUv9d" + }, + "id": "1mJuBcMOt61SrWnfVWOqmsZ-gPFOe1pWC" + }, + "ARCD": { + "ARN-401": { + "exampapers": "1wZYM7XShCssKJjf-W2Rbv_-Y4q7JH3eM", + "tutorials_review": "17dYcEUGtjQHKAd-xeFYoCeuwYNhfkGIZ", + "notes": "18x0JH7AZc-Hcu3QkYXl8LLiWckBz8aDO", + "exampapers_review": "1ILLdzShG6iolmqnZuXN8aHrHmnC4yZHF", + "books": "19So8r5510I1UxQj68OOOmwWn6Y9yIQ93", + "notes_review": "1HEFnWuQ0kIEIAZrrSQjsIFkbJhfUesaG", + "tutorials": "1xpfGH0a_l3QJlQESdzBBnvY0geng23K8", + "books_review": "1lDoeq48YgbmuK2PIBugI-vp9ldjuw-mo", + "id": "1GE0PQd8ydTnG1nZ9QiOSLLgIqfOJAk5S" + }, + "ARN-307 ": { + "exampapers": "13mCwXUOcpcJQYB7uHxU35UDBjUh8m1cW", + "tutorials_review": "1bEdFrRsTs5jV9KU3lidNTFS1Mshj2ary", + "notes": "1gD0TpJ8O_rmSxve6qFYIvS25sIGZgYGL", + "exampapers_review": "1IpicNXbJ8aH_KH2U-YGbXV4Qrgp-K8wa", + "books": "1GHjKkRqVWz60dGIa0jE0N__-RoQ6Gfsg", + "notes_review": "1EAutg6P8blALxqaL0btRL31mYUUOKZeY", + "tutorials": "15umcbOJzrA032qDRBVO0kBf_S6AQ9c8w", + "books_review": "1ZYxNoSD0ZGfeU26wx5AFSV22iw8PQxiw", + "id": "1V14s6oSjr65WWa2OiL0McKZxQmI6An0o" + }, + "ARN-653": { + "exampapers": "1PRGykEqhRJMpfS9rgow-IuxikfIWSIFu", + "tutorials_review": "1xGEBZ9sNLP_GSYTkhpm0WvbsRvIg9xp4", + "notes": "1uZd1RpbGBv2m6aXnAym_ZUU75eFzHWn6", + "exampapers_review": "1RZ0LCLW2q1R4UhctsTOcEnwlrOqUuVew", + "books": "1tihqERMqKiRcn5QITjClrswDE6iW-3lL", + "notes_review": "1xavBSnQxkajqLhtWHIOqZNoyhT4rjzNm", + "tutorials": "1B_3TJhZWSPikPkH-XJ18f3s0Oz1_JwcZ", + "books_review": "1xsV0bcVlUM9AF-M6oIqD6jmcBhHZIKIe", + "id": "1Om8ByapOMB4ON5OiF6lu_r9a1Gt5dpCM" + }, + "id": "1x1RvnWyOTwyFtkB84ZKssOBmHIkuREwO", + "ARN-705": { + "exampapers": "1wzDRRtvBP48V0QslixAMpDq3mxlQld_r", + "tutorials_review": "1BZAAVY5egv6kMBj6p9f1Uls57JN_8-CV", + "notes": "1rQH9bHFH8I7B38st2j7wxKY3R5la5ydu", + "exampapers_review": "1J_w1Oh_XTKeEAmHgziaycIjYTX-kOwBK", + "books": "1ZXG-5LcKvEnZ_vuUTTZ6QhxuQ9pg-e_m", + "notes_review": "1VeuUQyO8Xdxb8h4pG2oxBcMO2inWeqIF", + "tutorials": "1qfAqBA6ajyRjbHGGD6vIC600QIIa7Xw2", + "books_review": "1BuB7RMEDwNJyt5FwmuflL2afIGwQu_9p", + "id": "1KAZQ3sXN0EWMUUkfBxZO7SIreApQe6nB" + }, + "ARN-311": { + "exampapers": "1I-tJJGnK2TSz9-y-iiRccCBnwg7z8UDd", + "tutorials_review": "10q0VyUTKSaTPtg017NFL7kaUTgJgLuod", + "notes": "19vyFf975b4CbBx1YYh8-fDQeNm57Nz6w", + "exampapers_review": "1koPBQFmGUfjYJzas-ke2qvSlsz2wqzfj", + "books": "182SACbYedCLHUAWQ7HXN12IXadaPpN26", + "notes_review": "1Wy-IbX2sWKcF26ds1-655uoVqYZzNRfU", + "tutorials": "1LDGi0HIwQQcRV-q3rLXUIAcA5PZQZbBL", + "books_review": "1g5NPH4R8L5qBf_2wsVq2OCI_auWV_4Xv", + "id": "1MwzTV66YFRQMNzYc2dJhnFZ_x1f7uTx3" + }, + "ARN-703": { + "exampapers": "1QMEtpaOa_0Z203kG8Or5xkoR8iM4ROT6", + "tutorials_review": "1SqHjtkTY_J27h_Q8tMH43jZdVk7VCoaJ", + "notes": "1DeBXYyucW6r1-pP8In2TDqqkH0m5_lhA", + "exampapers_review": "1tl5ufo7zDH6SbLFYyeqF-Lz4D1Zmf1t5", + "books": "12wKbPHfs78uwAXAkK_zeq6XS7dUt85aG", + "notes_review": "1yVit2ezFsSmuNv3tdSe9mACPADZY3AgB", + "tutorials": "19x0E86m_mPOoyP3vwAwBj6PUWG1Sbnep", + "books_review": "1pGwZpsfwjooybXgWvYUYNfCf1f7eJiE1", + "id": "1BbstaIspI-aN7vZHMOPUiST_xMYAgZKr" + }, + "ARN-700": { + "exampapers": "1t_g0hWpxV8uTnnVPDh2a6yUk-u00F2Jb", + "tutorials_review": "1oXqSqk0Uu4MhjjpnJSKuOzrL7x4_Bc_0", + "notes": "1sjwpbmItPDMQD8gaynRMskvU1lrUGDo-", + "exampapers_review": "1eBmJoajL9hMTzB7Omi3XyeTTrINr58cZ", + "books": "1Djj1ArJJ44QDF3gcj8Jfq8VsyC4YHMtd", + "notes_review": "1mchh_636QY5m4qCngR1UlIn_zTfB8hPV", + "tutorials": "1wOzW52l23kG5UlNJb9_0JjaL9hdEK9GU", + "books_review": "1StBEWcecbVs2O_lvldqiZTTvRxpHohqb", + "id": "1Go6W6nOm8jT9oA3bezatZ6yUyRfMbTG2" + }, + "ARN-405": { + "exampapers": "1QpIMyk0VOqufnV3p5wkWm1QuePUmpvtw", + "tutorials_review": "1WeLDJxNhT-4Y6BB764bsmmmGaT9ifw1s", + "notes": "1EPW9pIENpzCZK1U8oR_q56lP1sUVkwnu", + "exampapers_review": "1QtLST31geKWfIroMbdFj6Cw8sOtDQUV8", + "books": "141Mvo8RkeIIZ_ukahSSvDjPENOCdChlm", + "notes_review": "1sgcn9Pi_5OVkywkUjVeY6WWyYRF9Xgih", + "tutorials": "1N81udQUFzq8g0wQoRiAmwzwEbuyRKiyV", + "books_review": "1LRAWoEY4vQVtZ8djzHGgKU8gksPXjju5", + "id": "1rTMFj8dpHUXHZVtcR9jpC1N8FoN2XeLm" + }, + "ARN-701A": { + "exampapers": "101NPSm1zcSzL0cC61Sk2k9Ln7iV9InJi", + "tutorials_review": "1XBNRlYXcgiqy9ozSrui2LceHardzuSHc", + "notes": "1rt8AtXzPEMysZEkKIMdq5IY_-HF9jH0P", + "exampapers_review": "1wLstnAMhhhd7i__VLIfEHVZFdaWeZsWJ", + "books": "19SDr6m3yg4HX8Wn-hFq2FSlGQlN4AfON", + "notes_review": "1TWf2ojO83671N-QUohmXN0n8l4YX0lDV", + "tutorials": "15xhYnMTyIfdg8vnn-96CPm07Fx9aE_rf", + "books_review": "1NuvRZemAF8syyjiSDNul0W3ukClohKck", + "id": "18c5gHfQpgnAy50itQeGlv7AOMaAjHx9c" + }, + "ARN-407": { + "exampapers": "1gu2jqQeauTJztsRiCf8G3L5j8EDqcKt-", + "tutorials_review": "1QgIRYnwvjnJhJBNYXAAnQ1Kwo9HS2b54", + "notes": "1_Mxe6Q_n8HGUgnxzc7slDhQIBU08b_4l", + "exampapers_review": "1qVr5WWYmxSu49M2_QyiITcHGZO1_ltaH", + "books": "11rUWMrN4amcbua7UO5Tp8BDVvkCsc0kB", + "notes_review": "1F6eKJExM80KWfBzkwblapueKNizbs6vs", + "tutorials": "1-DW-lFpun0EEcB8Snz59HzUrbar3TSw3", + "books_review": "1Vzq8DmfmJkBS3aUpzyK_AgzKSrG0Z8vn", + "id": "1spCvRjlnzjy6es6_OWqi1VOMSEdv9NY1" + }, + "ARN-661": { + "exampapers": "1uluwfNZvp1xJl-qKQQ1oLCWayMTyVs8r", + "tutorials_review": "1qbvUEVBzuYWeIw2sF4_e7g_4qFU-jhqI", + "notes": "1v8hgGpgMocK29t4yaae1fDgDuyLK9WNX", + "exampapers_review": "1kBCHcIb4Z9PaPfy9wrjWTn3OsmZDyevC", + "books": "19uNZFi-QL4LpthhbtgpQSZn3x8UTaiGA", + "notes_review": "13r_enyXgRolYWZNwVp40XlDTkOsr7FhM", + "tutorials": "1O1euaitTMPhwdOaG8Rw3xeftfxLrzLep", + "books_review": "1wgkO7uq47dViKU1tdcQ9Cu7CPk6oJv4G", + "id": "1M1XI4uzpZjDndLn0mpu7G8sCwt4_23tK" + }, + "ARN-403": { + "exampapers": "1CHv7gYTLQ6gIu_VzjQc-PcwF41-JoqZl", + "tutorials_review": "1deWwXi4zgNoBptFUYRgy7C9zvof0ijYD", + "notes": "1b8Q6ikAMDdvpQKO4jfmdRRVcSVkYO9xh", + "exampapers_review": "1fCUXfLw5KnQuaNKVwgIcD0MpEYPSUgPC", + "books": "1hWPt-3QV4ZeEc7x19oXMY0t3kV4EKPCw", + "notes_review": "196yhD_FngJIpogbAsB_51Tn8gDq5O9fO", + "tutorials": "1HJo9615ZI48Uyfg8sQdhH3ACrRimgtdk", + "books_review": "1N6btRIIA8xHW3zOX0LOgsbG-EtOtVhNk", + "id": "1fme57fZY3o1EDsADHv1Z55uGH1D5y_6F" + }, + "ARN-515": { + "exampapers": "1r8ioMUoowyNveQ0di3zuF8XK-X8Xw2c-", + "tutorials_review": "1FggXpX4IdXyWtWzM_hnAa7oVpk8YUcyd", + "notes": "1a7cFaMqOqyhYuUz6BmouFfVCdx21ZAX3", + "exampapers_review": "1McOZBcBkmrrzShBtiQStLOt7CpoQBuuZ", + "books": "1Ov6SvFrjZMwe80laLbUys6wSdWHR6On8", + "notes_review": "1URnS955rClsyUtH_8KPgHF4OvoC1_-WY", + "tutorials": "1pKKIXYxF8ZI-vVujdoTzyCPm541gaUQL", + "books_review": "1sInlQc6Idit_OO7USazQyuKKKrombGoj", + "id": "1FOc6DAI2U0SHusqpihMExFZDYAAIJZ3g" + }, + "ARN-607": { + "exampapers": "1tQrchVbQ2wMrY-I8kvPnWBPaaAzRsmjm", + "tutorials_review": "1Qd39rEg-vYQQOccx2ZdWJc4K-ecc_KHb", + "notes": "1jN_FbREIalWYaSGh4ywsXnVp3oaEF8To", + "exampapers_review": "1hencJUKrj5mBwhTF2uh57czh9eRKppN7", + "books": "1eAHuuq0phnJ3isF-_8VtQCUVlulHJkBU", + "notes_review": "1vbsASxc2NNedEfPSgsMIVURyWQ9Y2gAO", + "tutorials": "19KlhWONHPEP7KwzVq3qxUkNti87pzFjl", + "books_review": "1qa7yuChQABUknlR-2-FQBekhl0TBa8ac", + "id": "1lItV6B988bWQv15JUHL1tfxMQ4z6RgQP" + }, + "ARN-513": { + "exampapers": "1bdZpJAipCPVtyShDM_P2MA79zuVKj-RZ", + "tutorials_review": "1fxm7TyI3WqgIafR26rhDr92mr9t--fYU", + "notes": "1meSMkIj646yF0TYl3IOCqV80Iw5d5T9W", + "exampapers_review": "1Ox6tQ60xZa64N5b9vWSoAojtMYnM3tle", + "books": "1rm8x6BiUxKvQ6whCZRFUsOxcc1Wrswo3", + "notes_review": "1m0-D4t-xo8X5-8gx7HGVhCsZKdJ3WJ7k", + "tutorials": "1uVBW_ALzJQ4hQzPffm5rhuCW2YnlCWjT", + "books_review": "1ywgWJPXSZHlqDCRPWdj2_NggO96RjZ4p", + "id": "13U4oKLPmp0z9QkGn_75tOseD7vtFY5Ts" + }, + "ARN-609": { + "exampapers": "1QRIfCeWNPQ0MppPTmOZddC6cqjZTfiYJ", + "tutorials_review": "1bqcuN2_JUPmgjnR3UCFr4H4akWAuljmI", + "notes": "1ylp9vUgq22gbspJvb2q6QO8Uc7n1R_V3", + "exampapers_review": "18eq0OgMps0cvzPEJZziRdJYu7jL8SmUT", + "books": "1MOPNntleCSVhiMt97Am8c3M9rqkk2Cvt", + "notes_review": "1n9QPjfywqe4gXzRI1HBJaVfAoApY9KeD", + "tutorials": "1raSL2gUFrE4di855pYeVP7blblskqGcZ", + "books_review": "1V2qdODl0BzCnsX7FmB5E6v3DMHp-qaVH", + "id": "1CAh5TILm0W3BYlzA0xd7NRkaibYUSO95" + }, + "ARN-210": { + "exampapers": "1xxQi1weD3LgSuBV9S_bUwxXG17JNxu8C", + "tutorials_review": "1kc-zwv1kMpqZA8IEHMStvN-JKMb7BYAv", + "notes": "1QDQ7TSR3UYXQjEtCcdtjCDz97fcZzGMd", + "exampapers_review": "1M1fRq36RePwQ5iE55yLFMZq4KnWIjPcX", + "books": "1REotLAhHS4MP4enp5E7nmAh9pfQgsW3i", + "notes_review": "1vWUPb2wK3JbDicNbQLRrJGH4hb2LD4t7", + "tutorials": "1G6XIK3Zj2_TbTBjU1EODRXQ8f4pXliAk", + "books_review": "19aAVs-8bHamOtk1GgfUZfLAeHkX1gJzD", + "id": "1ondewsuUo-pqqVqXS1odB4WKElBGoDNY" + }, + "ARN-211": { + "exampapers": "1GV5A3TmoXPcZTUnQewouH_Ph_pCf9Snl", + "tutorials_review": "18m_Z_qtgd_ozfwLXeE1A4nQpOcxUF75y", + "notes": "1kSFMkZYGY7xlzmM0WdfqHCYCgA7opwYg", + "exampapers_review": "12oyQqpxSImsIDiaBzNqLtxZ2teaRnyPj", + "books": "12lo82ndQmzyWoXpeS09b-lYe21cGAbHW", + "notes_review": "1QxWViyCbtgxAVblYWGEwVBNwt77an_Mh", + "tutorials": "1TEbFH8maO4wQ5TCzk0HH1Ho1DTuT0O_C", + "books_review": "1B9_sWxW3leDNY8-_MKFq5Hqgv8BxgBsB", + "id": "1u4IiZzJIbQPTEJiLmGlU0XRqYs4XeoDn" + }, + "ARN-605": { + "exampapers": "1ObCzc_lxJZEayMaIBrAuJP5DJ1SXeens", + "tutorials_review": "1V0ExUluOqlISBOgDkMyULlZtm8PRq_Dy", + "notes": "1_zSiyTJfl4fg0pe5AFXKe1ELhG_oeP2l", + "exampapers_review": "1NoQYJQlYvuX29pwNxg-GnI3EJjzN1ZIc", + "books": "19J9cLINieMadI-sJOwR18JOi53ScddpO", + "notes_review": "11tm7eHrNwqJWogWA39hhufQZLnr0xO2p", + "tutorials": "1oCTNYQNkioTaf1JLmKSqJpFXbvgNnrIG", + "books_review": "1MM6tKSjvPhn9Pgoi9lAJAQT1X0rJEYdO", + "id": "1wkoa1UXM4Gabz7k5CRViLTMABzaqkfj6" + }, + "ARN-213": { + "exampapers": "1V7PHrKXDLVSHKuPT2EGmb6xLh0QJbpvq", + "tutorials_review": "1wctTclvUS-k8CvW4ksHknwnEzV7OhZuN", + "notes": "1FtahrVah43YFdPMMuMNYUX28a77N4Dj1", + "exampapers_review": "1OKw0GuxZ696GyGJZOm2i9d9J0Sd7UeLp", + "books": "11mqYoDX3Dpi4dt239qltZFgQjvPvnr4_", + "notes_review": "1SjS0QHq7KhEIMXGUcrka-R3BNemo7YoR", + "tutorials": "1wdflSbxM2Eq6jR5XE7nT1qIXDkoEP6ZD", + "books_review": "1t_DLbTndsHfenDjRWe7uvN_Ra7IJUSD7", + "id": "1VfPyIJUJVhajN2-AMG_wlLdBwI8CuoPW" + }, + "ARN-603": { + "exampapers": "1JZcXOdgf8PJI4ohqmBWmZqkYTvEYWfIS", + "tutorials_review": "1m1lmEJ-YzipkFdISvSOnb-txYzc_IfU0", + "notes": "1ZfV8Kc9hsEvHPOXtYa6W6GHwdhdumaBS", + "exampapers_review": "1p9B5PdsKYpl1Yxnd28oNg5P28wJ1md7l", + "books": "1_HeRUht-3qv_7eRDQHHkFnn-u83K2ajo", + "notes_review": "1aIdcN1d4mpjcaH3uhEdS3a3xIoJHcCmd", + "tutorials": "1wq1ZaeNjp4DwIzJj_eNh5Hh6wS22Jl0r", + "books_review": "1DBNVsDHKOypxmBfMg6JgWt72aExnUWKL", + "id": "1FhrAvM9vHe4abNKvD8i9_OCnOL9Ynmt5" + }, + "ARN-601": { + "exampapers": "1r1be9hqBcUb-uRcdPsqFVvFh8k_aaw1E", + "tutorials_review": "1kKzgtI96AgwqeJu0QDuWJiLJZ-pVDR3b", + "notes": "1Fy_hWlrajdZcjO7FfHeCPBnSD2hEMo7O", + "exampapers_review": "137w1g2axKc040_fIRnaadrRWHz_4qGmm", + "books": "1QH4Dd2Y68zznlA3f9U1P_0j25qYKFx00", + "notes_review": "11LvIbRnOdEEUulBimUrKgQzcJPN9ig5l", + "tutorials": "1E2dOgTXzT-NQFxNI2obt9-63lQuxTeNM", + "books_review": "1AO1NTgDX5QOCOjPF9BRxG3erriiIZLmA", + "id": "1EA7lFMktopdVL-2Kmb6TT5Ex1ru0hDYW" + }, + "ARN-651": { + "exampapers": "11-1zDpgo_yoDxTXXqAaCSDhyeYyw2UUI", + "tutorials_review": "1LM7b1jxeu15QJ8LzWc1GPAqNQrsmolL3", + "notes": "1fLrWaKsJ5fOq4yFsH5uKeGFNISNfFcl_", + "exampapers_review": "1NJ412iljMKI5EUI95cmTrYdBW5VfysIk", + "books": "1GkzuUrK2eB1joBcxoeqnkqvcAzCWbvsn", + "notes_review": "1FbKtj2ytwsRDX_hNDqXEwsAL6G0Si7it", + "tutorials": "1vi_21Z9Td85p3jT3PIi4jF8Qznu1soWl", + "books_review": "11sCVje8jaIiys_p_c6T9dPYBh5HqDBK8", + "id": "1VZHiZiqY8dYx7doU3ECOVhk10esYLqH9" + }, + "ARN-751A": { + "exampapers": "1QHD9HNnv8A_2cxq9bVlrYdluQfUOUltr", + "tutorials_review": "1SQDSt7UABWi53g-TPoG4VogbAbRkepPQ", + "notes": "1wZ6kPiAMDeInJkaneWNWv1odfQ1_V6dB", + "exampapers_review": "1rxCNpw3W13Lk-zbhq5mm99C571xVz8w0", + "books": "1cYP6R7kmtyhoauuAlDRD4tL5k-CSmAJE", + "notes_review": "1Z4F0OF298YSx1tG4i4zrV5CuOkk5MV6T", + "tutorials": "1Cvc1bjHhQf05qZqcaIZx-NsgZI8ps8Nt", + "books_review": "1oXXk6MThDQaUH-bbG3EbJNF1w0Mrcnnl", + "id": "1znZ-xyCU9OipS4UWP750WVN81CgSRGJs" + }, + "ARN-101": { + "exampapers": "1PtunigTS54c4NjFAeQOJd0T70lu9hJyG", + "tutorials_review": "1kiBhuQbcbCeUrTSwcHUs8CRbPESJatQ9", + "notes": "1ozN0Q7PElvk2pJGACtd0rBjG3hzH67YD", + "exampapers_review": "1SCB_lsHmUr7KaXBMWDtTy79b4GLj0BaQ", + "books": "1mPnE-Q3wcGbPp-4UldY1FEt4YM2nRYJJ", + "notes_review": "1GTIaJNDZAHKajSgNoTspwhW3Bp3K-k3n", + "tutorials": "1Og9PNbgH-k4i2Iog98xPiF_vdTr71h-t", + "books_review": "19MUK2J-SfhYslOXi2Cek7CV-MQlciFnx", + "id": "182f5UNyF2G72n2qC2rfjH0ghzAUSA82B" + }, + "ARN-103": { + "exampapers": "1dW6zbengWTXRQDcuci-Nvl-is1SjlRkb", + "tutorials_review": "1cdoITqGANLgAjNp4SZdtEAH2wa_uqQLf", + "notes": "1oAexOKL3Kmt5gBuiFQRcfcliwFl684NP", + "exampapers_review": "1Ff1vfq23v90y6Or0sZAJOv-X7dkyjsuR", + "books": "1FTFp2Z23ZTCM4bFQ6AnLQH3cdYEWWP4I", + "notes_review": "1zpCm8FiDzRzlRzUwsJtmbvC2uxo3ZlSs", + "tutorials": "1upmmYq9el7TiHLK6EC7stXJOYnqkJWtk", + "books_review": "1rTtA4v6lniiI2FiEzBM0Rq5navnV5ZOk", + "id": "1uAQY0XVi6Q-UVrh4BYtinrAwlfusjZAx" + }, + "ARN-105": { + "exampapers": "1rvqOdag6gngtWl3BMuIbGxzofgGW0Gom", + "tutorials_review": "18VIWv0MSaI_Xq2PKcq2LQsUT9oBeQkXo", + "notes": "1cMlu78pDqp-vgt_vUIdSNKg8unJuWr2h", + "exampapers_review": "1phu_oIBT3VTrt7lf7s2pfVJKmfecQu_9", + "books": "1umx_1UG7dV3ZniZ951B3SZCmJYtFjn7P", + "notes_review": "1ma2EvkUAWhvp_G9ShNoR-WwJh-NFEYtA", + "tutorials": "1FjBOnVrRWnCaJnBVafqgzRJ81uBHG8MY", + "books_review": "15TdRi3Am9G9YF3yAWVwYjc-wlkKtLZF1", + "id": "1BS4FMJETWgUO6nTh39XNzpZdGW3mZxJM" + }, + "ARN-107": { + "exampapers": "1h7bI_-WDbgVMXiGhj8GFAfSB26LIc-d_", + "tutorials_review": "1KDPX8_eKhxyGiqJGlCIYN-06M4WsZHaH", + "notes": "1d_gDpxNz74cqc8tYaF0b7rnynDRIB8o4", + "exampapers_review": "1MIKzdh9m5udRZ3e-4sVCpFSFVNIWvDJl", + "books": "1vM1gmfLPsL1Pat1GdVUdgUuEFfIC7SjJ", + "notes_review": "1yc4SUrJlD-boWaH7iDeegGz79no0xtBB", + "tutorials": "1VTpb47WRp_NH10nkkrLLNYrXpn_chihL", + "books_review": "1xSciQzWNW0pvMnyLXWNJLSoDIMXpOx7k", + "id": "1T8s3tQbdebjwc560fBwYkjSLxvwDlLKk" + }, + "ARN-411 ": { + "exampapers": "1L953E5Q-akAWGVzRxZaxIluAHAscSlRM", + "tutorials_review": "1uroJVP7jYqDEKW4o6pJ8_xfLkkyJSB6Z", + "notes": "130W23fXtv8c8QNnYGJ2J0AsATD5QacfH", + "exampapers_review": "1emKRDNm5XUwyXy9RXVxVevCGXMjPJZB3", + "books": "1ir-k29FbVrtHQBBnIZjYGjXB04xuo7rS", + "notes_review": "1a9r7H3arUF8l7i-fW3ysTlji3FAOQu8F", + "tutorials": "1jfFAE_UxOGzOMWajQg2agYy3zjWKddVK", + "books_review": "1GqV7G4r-sWd2Dc2TE8nWekLltmCDOuR3", + "id": "12moqUCRPW19bEvEM9wnuTi2dcrVIgfDq" + }, + "ARN-303": { + "exampapers": "1osAKOR14RqTlNPEew5H02_dNZONuL_T2", + "tutorials_review": "1CbEv6HgE3cWIWdcodveODc3_QeIXWLsO", + "notes": "1K44Tf9OZp0p1WO1r7ICAJnJBFv1jjqXp", + "exampapers_review": "1Coo56Ffqcb2aOBOCYyDLPvwLV1o6jNsh", + "books": "12nTu7KyllP1BHFhbRZkTuNvmzPRChIoU", + "notes_review": "1EzsL33nL1cO_6JU08szTPt5Co1PqwHcv", + "tutorials": "1wf-AzxwPhinD9wOfIzx4hgytdaOnwdIR", + "books_review": "1V8S8ophh0TtMOKMNIx2nwuXjx23elzsn", + "id": "1K5z4gcmN1d2YSv8XeEI0tMkCvbVPHB4F" + }, + "ARN-301": { + "exampapers": "1zInXyuHUG8gSvM8WWJuL21p8SJqZ1DFU", + "tutorials_review": "17CCykT3yUMLAhK3HEr0iX9-_bTxtmje0", + "notes": "1mZZslgCY08hpLMg_qDu8fKcHCzxXUZiF", + "exampapers_review": "1q9mHVGntEPEIpz3OZoi_nuKE9BebiX5m", + "books": "1__6Nfi9RBp3DEsEssPd_3PhFSFN1RFhV", + "notes_review": "1Ur6Fsuw9BCoXj6eqkt_jCENRR7aDEVOe", + "tutorials": "1H6TJne5vAySqfYaWt5BlI3WQsQ6fQbyJ", + "books_review": "1z8JzhiqO7XvuXMjhFAPWPlVe3L51T-G-", + "id": "14-SpPFwRlmx4V1GKxyx9dj0Q7v6XHsfL" + }, + "ARN-654": { + "exampapers": "1ERfmvEFGpWn-vzd4jeTtdNaCZMC1B9pi", + "tutorials_review": "1xMqU9iLta4KLHlHu7CNXv8Pf2L1OH-lR", + "notes": "1VFHt04uAZbjDwjJ3DgLMoRL0LBKQ4VPO", + "exampapers_review": "1tTTx6EaVSeb4qa9phwTxDTUT0IH3aFDn", + "books": "1ild6__Fi5Pyemufba6XIHZEgwGw8ufVq", + "notes_review": "1uZHuU4BNayESn2utSY4BbGhrJbJ4O4pY", + "tutorials": "1t2WuzHlHXdd9KoOEc63U_IHAXyGcr5Xg", + "books_review": "1E6KMvify1nPji0qgzzv-B4vM69dpqCSV", + "id": "1kHEo_fp0YykZOXCwsMLV94jmdhuWzvqr" + }, + "ARN-655": { + "exampapers": "1S9BG_3xepbWABf6Y_SWeo0pg3RalqDzJ", + "tutorials_review": "1MnTxel4Yh4E5Vz7dMXq_7NAxzt_JmmVN", + "notes": "1wx-DjlS39spMmIi9J6eNBGib_p5s_3b1", + "exampapers_review": "1UPJDGJ8AhTceAsjcXm1Isg-iDghOMi0U", + "books": "11XgAozyuxpYpbz-v0FgqM2bmm5kB6aqQ", + "notes_review": "1YTSv9OGQVJw5X964fPsoxCxZDYzRq2xM", + "tutorials": "1_W0qsMondn5WftTDuJGVOM5JFZAqc3Jc", + "books_review": "1ACFHz4SeFm1sbwBmj9StmCf1Z-wN3owv", + "id": "131uVXEk0Iqd5Z8hY5tvao91IWgE8Ag9o" + }, + "ARN-305": { + "exampapers": "1idKjFpnUdIunzpIudgmOoK-p_Is_gxai", + "tutorials_review": "1NyqoCFB7KodNeRpQ-EUIo3NXB6LEqCGr", + "notes": "1ZfYKnvITK1ybi7-TaqwX0Rk2kxh1tZTX", + "exampapers_review": "1si_sGwEZPMBA_d3M2SdYjHo2ccQuGW2f", + "books": "1ZMQeHyf4HnqfRHq3eB15_hLZGAlvBwba", + "notes_review": "1KjIakVeR0E6pAClNp4F7MvEtcA6W6mC7", + "tutorials": "1GGE7AoQMhtsbnb3Mz74_8VsP_s2uRQGp", + "books_review": "1OqsePG8gdGnHHoxSISLtcWVOn3b0LqfG", + "id": "1FNeL5ICtxAeG9OT3xvLWEX7TQevEJu8i" + }, + "ARN-755": { + "exampapers": "1xv35mVUNp6XSkpiWPTXqG-ufZ0vm9gZB", + "tutorials_review": "12p_BR2JD9Tr_adnSTT2cXwMR-AfZYSoW", + "notes": "1gXBVRRlmaMLF1mbE1bLKzZn0nVJ7LcfZ", + "exampapers_review": "1wjcYGHnGR16Oqc3vUU1C9isYIN3ybDzc", + "books": "13GLQ8NsTiVvfDUrIquztikpdjG8WI2ej", + "notes_review": "1ETX0IZ0qf5rLhFXDNKWbMHoQqmMa1g4q", + "tutorials": "11cnpG7E0dcyvKOblWGV7qodS-V5d7j9H", + "books_review": "1Lf_vE8kFapii1u1sgLR2dwvCWRG3I-IR", + "id": "10D1tNldyE88htCTp-689_l_HxXQao4uc" + }, + "ARN-659": { + "exampapers": "1-JdJ9PGLn-coaHV1XWoJGuTlUDLIuD2m", + "tutorials_review": "1W1qAtyU-vFPouln9ycexMPvZ4IhAvaFO", + "notes": "1M9G1vfAhhLJYQdREMJsoTjZx908Xb-hB", + "exampapers_review": "1fuMBcDs74lpECLDSJGThZZ1CLRJEvqDE", + "books": "165gXRFALEkP4_g7rDAiezL5TmqWCjgNf", + "notes_review": "1j52W72vD-NRS_BMbR7_M2MCf0oDC1jYh", + "tutorials": "1-2x3h82wsgv142YPb-klsZ4DB21BpZTv", + "books_review": "1qYOKr5MJLs_OABq8zVHJJc4_hAoUlzGo", + "id": "1PsOiPfgWRDQAAsTPpak6tokHuJ_ssRqN" + }, + "ARN-657": { + "exampapers": "1A17dE3_R2lIkRnVIyA-Z3TGNQeZyeXKX", + "tutorials_review": "18tp7CuOXabOXD02kVZJdHUP20YwFs2fD", + "notes": "1S0IJKHhSdQgaLJ-1QH6uXjrTvDT963kK", + "exampapers_review": "1B-URrCK3fmKg7-m3ei01xjLqdYhaKtU9", + "books": "1lUZRtrTYsEKystLRum7sxvYwJAtjqv1c", + "notes_review": "1-keZmpP7NtngMH8s1IWCapMAyQEQZ5Yn", + "tutorials": "1N2rniT-PAyGRW86KOcY-xMRK7AW6w5gm", + "books_review": "1qmhL_CAilu65QPhJ0i9bRr723ADQqsKC", + "id": "1VBTC_EOCmc4nnRJPoKviVYxkmT89OJWO" + }, + "ARN-676": { + "exampapers": "1S29iyYEWiZbBBVrAc6eQ_F1Zd3EBjWTY", + "tutorials_review": "17id56fJrShaLn9PTGfB9JvmklUBPl0GU", + "notes": "1-iFTKOjHXt25RLXzk43jAOOKddcbCMUX", + "exampapers_review": "1VXOaxAQWTXxv8DR3yTnkVz1UJJM_oOrh", + "books": "1noDFNVqmMUo5Fh2DYUkSaPQYHYosW2jG", + "notes_review": "16cZwZVfCdbMMhi8i8CLiIDVJQnz2xBDf", + "tutorials": "1MJJXv4GP-TWhf4RZ34bPfwyXfBmAVm68", + "books_review": "11USm5hDa4OlmHXu6YzKsKWrtQSgUmTdo", + "id": "12WeVMk_c6tMfLlN3dD53jncO8HCD2Icr" + }, + "ARN-753": { + "exampapers": "1kO0udl08VY7748WeWXDTpjzHAi-jSR1k", + "tutorials_review": "148f5yiE0uSlKXZcjt0-N_YheHrI1701F", + "notes": "1lhw9m6Fp4Tll8d4Zse5NzLGE-DlVPSQN", + "exampapers_review": "1XXnKu0dap-axbi6oScUKuuOVQSmA1l2B", + "books": "1BgpSOhRBaTZ23x9aIJqKrByTqeiBllHm", + "notes_review": "1whUZuAfbab70bR-b6JyQQpqnS3RhetVU", + "tutorials": "1LmfFXqJiCZNOL4qBxLb6XkX_5QgahYUU", + "books_review": "1ojqLRk-abjwjpfMNePImgspJ5PSE61o4", + "id": "1wMrdoXOUTtrte0heVxV43zLY4ST8i9mm" + }, + "ARN-415": { + "exampapers": "1xtTWoiZFji69r4ZiyP2F8PnU_G3QzT1P", + "tutorials_review": "1qRNxfRKKMEe6AMP40xUWN0TVS1tp0N36", + "notes": "1TF2_tFAR8GhmyGw_1kqjy_xs7lMikYE0", + "exampapers_review": "1i2N8iE-pE1IWfFuIH_zlm6SlufKPPs74", + "books": "1YckmVlFiyjjYlA5JvxqinPLWuqe9ayah", + "notes_review": "1fXIKlWos8IgSM0Vqx5l7C-xCXh-QjxIp", + "tutorials": "11kPNdaQZ4wldY6ZlcH3lTjOilVNqOInY", + "books_review": "1JW9qZ4mhDd8hx0K9uhqRzHosbUAXu80E", + "id": "1YE7OiNzjOhqJZ2F-M_gowCkCVcBRDaMy" + }, + "ARN-505": { + "exampapers": "1_Sl52DVq4COQU9rQy-IPCSkxTEw8hzsZ", + "tutorials_review": "1iTFUv2Q2c31U72P3MW1qhpg6I6n38a4B", + "notes": "1UlZG0CBcEscaaZh3AnRPnyP8UhYUMk1P", + "exampapers_review": "1k9I_xlsURiNgfWA0kevc5qCtqA04Ko-P", + "books": "1Q3kunjTHTkgQWCrpqJFTISmiWU1xSw_O", + "notes_review": "1aNm3CMme0CbaGUWqkn8JHDQv3QH1sKi1", + "tutorials": "1dBPjpoVnLm1aQyqjaeMskyZglr-tKMCI", + "books_review": "1tyiL8h8myhiuJcbh20y_RCphweGjbDmL", + "id": "1HUb8CG4GWferNbWjpoRmrKNKUQKcOGQu" + }, + "ARN-209": { + "exampapers": "1KNyMZLK-5m1YKIw_Y4A2IcCFeUXAezZL", + "tutorials_review": "1K-sdHvVnCFVqgOwZUAREnx-2trlQTlvW", + "notes": "1Cf7L1i-9Z1cKHW1THwfdEXuOJShOUQSt", + "exampapers_review": "1bXxtluj0VAzbW6SD8zmrxhJQ-TnLg4np", + "books": "1PI1d3z8GM-S51WvTnJ1pM_LWZMx0SUrc", + "notes_review": "1Vm4ovX5wB9Tw8fPDseZ8pIIU-lcE5pHa", + "tutorials": "12IyUsccUTsKjR2VqIBaZR32aouG3CCUn", + "books_review": "11Vz0EY5R1tkitsqgV5zBpkGku8g3Zi_y", + "id": "1ISbJBSE0bTMviAX_Bkj2Tk1Zrn55eX0g" + }, + "ARN-507": { + "exampapers": "1Urd8sc9L0v6oSsU6w7WFxLdpwuNRO8fl", + "tutorials_review": "1bs9d628XbKXD9NguF5qLNx21TkHYXfcU", + "notes": "1X3NB8OBm54j2KSryeWNX8_bEytw18QYo", + "exampapers_review": "14KpNPxAI9ZDddk_n1VOBQ0Hy2P1QFPio", + "books": "1-eqdIBMLK4PM7leCnzOQrePcDZ8lCqGG", + "notes_review": "1HNcuLHY_dYRLTOk_T09JdQM44bgdWEme", + "tutorials": "1deMFvfg7QhCx5QGuD7jT19nCduiM6007", + "books_review": "1Ntfu6-zMmlbv0JKbBVv5JoY7ZUEAJxwR", + "id": "1p7D2SlX0pKE0X4mqEFP6Y3h0bTo2nVrO" + }, + "ARN-501": { + "exampapers": "13yrGHrT15q2YyQ_aO1_RNkbbnLrBj-Q3", + "tutorials_review": "13JwBcUesZAOIw_YwgPPVr_lROWJ44lmk", + "notes": "1NsmNfDsVfDRp3ni-DBQGcZkNdhf3pXRO", + "exampapers_review": "1bQ9VqVS4PltJ9weOyhJwo4OnDnKPwYrX", + "books": "1Dq8cKZjEsKoL4CbZpymrzEz0_43JHI7w", + "notes_review": "1Jm_PdQyHTVi-ureavyAFni9xrsFHigKS", + "tutorials": "1-gtU7WJKc7aNMWzhkaHpGSPDWxaxrtRZ", + "books_review": "1Ax57T2hjFvej_wegTPQyP9Km3dypiyzP", + "id": "13RSMawKs5QL-eShXGC5Z6RlzLPOJsWgk" + }, + "ARN-503": { + "exampapers": "1EfmLSvSIbYwmo-Qx0dieLmACrlUByS8g", + "tutorials_review": "122IbEvh4ocryGr_gSsC0scFk5KFEzzyu", + "notes": "1KyOBpFrkmnzcCpGLJ6_IqJnxfCvThQgo", + "exampapers_review": "1VevhkVKVIQ-DEM1St80Svoi5fjtnVuxv", + "books": "1o2HTWYXBSmqD789_rHQjYqjj29SNrxKS", + "notes_review": "1b7IeNMs8LQJYqzGVLqZcmHfluJBEdYBE", + "tutorials": "1P4B2P_4t7QSkzTnGelQUNHv5ncGJ7hfZ", + "books_review": "12U6nSzm_6luTMgmeR04OCUsKlTUblcEK", + "id": "1iQ397CpQh2unaSzFswV4rVyJ_MCsXJep" + }, + "ARN-203": { + "exampapers": "1O6Fm-XCcDqRoh6sq_UUyQW0jpn_07HgE", + "tutorials_review": "19mpXA4BQmxtQfB4-nyyz84L-EKaxqCtf", + "notes": "1bTc0jJI1Y5OQX7GD8AZiiNQDe0FJh4j4", + "exampapers_review": "1Q_3qjlgN1PQM2mM-nu62KZI3TR5ttqBn", + "books": "1mB5Pw7dZTzJ5ttM-LPueLKYE5Q_055jv", + "notes_review": "1u6ERuzftLqO8qjhxWXTxZ7-EzKhclCZN", + "tutorials": "1rZZ8T86S9EqvbtFsw487ij9Nz1Lyh_O6", + "books_review": "1b2Xowh6sVpJ5lixy_buBs5de8jVefR4c", + "id": "18Kh8-a_flPryjYMU5w1y9orzg2i94_Lc" + }, + "ARN-202": { + "exampapers": "14Ta4VXUppNHbmluK8fIRxHXCY656VC8e", + "tutorials_review": "1nMZ0pdhkZ2a6AryGBBMCavL5GrPjmB0r", + "notes": "1H2u42eBw54KxbplMPBx41Uano8aIUkmo", + "exampapers_review": "1zV7oG0gjK4-B8cecRTxEXHNHBqZKpyzs", + "books": "1xJbIQ364LUo5mV86IZZQGBDpbfKY96ZC", + "notes_review": "1BXdxojgyYlEyKpSMZ0qIs5e1W3IT6NU0", + "tutorials": "1JPKWtvEhF78m88cMlSYUh399Xjg_a86L", + "books_review": "19GJrqP75yeRfkEq237i3SHJRTZen4nLr", + "id": "1mgtNyA-lwbumd3ZCQJmCEz9T57KfuKwh" + }, + "ARN-201": { + "exampapers": "1eqk6_JwTWfeinvtfs1LetEL0maq_AaZA", + "tutorials_review": "1YE8nT5nfRlkDYeAmAdmhdriK3MAtSphY", + "notes": "1VQDVDvnM4T-Q-3fao4ew8Dep9Lc-zVlb", + "exampapers_review": "1A8rRyf15tKr7koPQIowVnU11J6pEchFC", + "books": "1xvECPTQO4xT5M6TqVol6_3-sffbDtEG_", + "notes_review": "1Np7xT4z3LnM_bo3I_Xcztnoc3jVIM9cH", + "tutorials": "1QoGI101Kf5bBn35kpMNIaH3jhgUv4INr", + "books_review": "1ODx09DmomoKhRSu8mtyIJ-W_Myu_AnQQ", + "id": "1nQDwVFqQliJ3o26pmy5Z4Q9JmJhLKIUe" + }, + "ARN-207": { + "exampapers": "1fBBhgh8xXnKCk4k7Dm-BR0PnVsap1pim", + "tutorials_review": "1YzVq56afc9PeBuO93epwuJhO66P0gf-V", + "notes": "1bEZIsBDmam8Bw6RxTbnN5xtqNr90DM14", + "exampapers_review": "1AbWA54ZS_lHydDxwk-rNMjQm1Dp1UZOq", + "books": "1CdydWJuSJ-5ECBrQXagV5EgTWnM9LHow", + "notes_review": "1ugvvgSOQ4Xo_6hyVGRQqQ0jMsw-ag7Mv", + "tutorials": "1uUyVtbcx69gP49wadS9tntH2AxNheg2I", + "books_review": "1DVgETrAsYAiYzzONWKlPu6zb9aKZoe2R", + "id": "1mGhn15L9w1kvH6dYIFy800kMmeWMH_Zq" + }, + "ARN-205": { + "exampapers": "1BA0tk_AODwEA5Ww6UJPZDJ3CIFDspN9p", + "tutorials_review": "1JM5X7jLs2b1FplWEX2SOJ_fW5gGlcQ4X", + "notes": "1DWNy3B5j4UcFZ_uDfPBUqaS_a_NK5frD", + "exampapers_review": "1u472ltvDRp5icY2mwGjuLp-tJlIOeDSu", + "books": "1y78kLVC_VFhhxGu5d43eB_qpWbfP0yGN", + "notes_review": "1JOEdT56rgiKLVDRYfXO1UgZFaUj2oxXp", + "tutorials": "1lQoB3ABlPiL2Vez0LD7F0Db6NZSa3SpT", + "books_review": "1ZxaxRVZDtwa3ervkeET0WhHjCTMbQoZy", + "id": "1zdw29jV0V079nisgTotA6LhbyIAhBvyD" + } + }, + "HRED": { + "id": "1jO_-At7rg4uZrxuJC51U8t4qJ9xWKK5G" + }, + "CHED": { + "CHN-101": { + "exampapers": "1gT1f5M7_wZkzS_AN4POyGeIhHohpVJzu", + "tutorials_review": "14yHXu31FcTsn_pD0xmcEhOOARZWolcMy", + "notes": "1BfQf2H9KRjBLn-1vu6Hyr73PWsqiHUHM", + "exampapers_review": "1ejsXgHLGPywVQ53lZvjcJPo34kTgsBtl", + "books": "1_-BtayavizV1Jzdky0EEDx-CL24yQTPf", + "notes_review": "19Ewv45MOmLzpED-xwcX5I6s8ujNzykVz", + "tutorials": "16x7BhBw7-Y7FRH6yRSmckPN0ktgRhmIh", + "books_review": "1sFGsTTq6qlKofcaCPZ3TsksAAbZjovrd", + "id": "1XXPfyokiGmsAlrtAfnbyVb2rGRvOainj" + }, + "CHN-102": { + "exampapers": "1T_iyVVrPIFFBi8ig0K2ma1bL1yUFy416", + "tutorials_review": "1y7xJCYOifMraBfUlyOHeRXsD6MnueD-l", + "notes": "13IB6dVsiDTmRkduf1Kd50Sq3FDzog8ot", + "exampapers_review": "1WLMo8t211dGflGDt9NmcmCsHaXrqsWbf", + "books": "1Hjr7flLJGqxYOXa01TCdMFXumIfRsT7n", + "notes_review": "1nLMUzcHtEmGJGU3gD1yoJ6car7RWvzf_", + "tutorials": "1NZ6Zw0SVv8OaqejJo2ayTlS6Vu5oz5Mg", + "books_review": "15cbE8wqnlT_GPWrQsW346fZf7Yah2ojg", + "id": "1ezOlPwiy1sMjeDvuDJp_JVy_sRt4cuyX" + }, + "CHN-103": { + "exampapers": "1a54mdVPsBEQ-Te7oGYNjqV0xqkMPLwn7", + "tutorials_review": "1FB7bT0jtP2Upb2i3rGSNApaVf7vVaFXn", + "notes": "1tXa4awAnz7k7pMzp9ybwAALf1pchNhUY", + "exampapers_review": "1ZBQAH5S6ZUaiFX0rooEBftVurlHiQS4o", + "books": "1E-P0cIDGDOCWXvkrgc7Owx7kzhnUhcrR", + "notes_review": "10xaSwURR0ARORZO7888oqVzb5Bc6ERxw", + "tutorials": "1HYdt2cTkSKSjxnVivtPJGE-UDESy8jPk", + "books_review": "16Vu7rxSi8UOfdIG7l0VZtDkTlZeaQfB2", + "id": "1i6INPs1hqJXh8lFXFn7apeV1h9KoacLn" + }, + "CHE-515": { + "exampapers": "1TRKlagOnv7FUgOksBSvfcCpSo9VZb85U", + "tutorials_review": "1HP9vsQAjE2ZQ2gxEbJLuLcZGFK79G8iT", + "notes": "12zVF22fAt7_w0x8_6gkfIMc5XjTRziYO", + "exampapers_review": "1GM9lV-ZRqxkT3PJbdDYElkEXUMa39GF-", + "books": "1dB84_2PrEnMv5cICeTapqcg4wiizk8yh", + "notes_review": "1R-q_yHo2ELC0H8nJobTlexprXEPoRkSo", + "tutorials": "1sL7GO4TnsnF8ca3x3ijqtxKgV4soXNYi", + "books_review": "1AN1WidhLVCrS5bXSkzJczOqqCbu78VlM", + "id": "10PR6XQycdKRZSj5DQHU0WeXcQNlnHj7o" + }, + "CHN-391": { + "exampapers": "1RmWNHbQSXmiku34mybLvvaIXB2V8__Zy", + "tutorials_review": "1DIaOFEbQjjjzafrAAF_vHQIt7mMDD_W5", + "notes": "1VwzSL4bkRIblfIUjVCcM3Fq-xTU4KSWI", + "exampapers_review": "1fYcp9UlsgpDSL9jEzX-FVGTxeYIXP9pi", + "books": "1gBUKg4dom5wxFP6bwiysBwv3bcxLjLwt", + "notes_review": "1RUR-ehgOwOUQgpb1qVesv7SzJF_sOVSY", + "tutorials": "1WwDwWj--aIjVQLaAHAF-10P-sLAoR_jb", + "books_review": "1cQHLNjWcEzjT0MILIziCa948Tr01om4O", + "id": "12xw5BI6SKBUFh0QgfSHUOOt5gRZdLU-F" + }, + "CHE-513": { + "exampapers": "1Fyq3awYAqY3vCtV4vo03quCm7RcSuAIe", + "tutorials_review": "1u3AVs-q_BcWdFeRwXuM0mM2aDgh3YARy", + "notes": "1PFFNU_guvtr7eLjzS_Z-hJnoafYdNQA-", + "exampapers_review": "1grmRhYeTCxBqde5Fkv1eYjBGZtKhBqh7", + "books": "1EKLjE0dQt2v1BcPnQSRSrCPdtO4h4LNV", + "notes_review": "19bieHKuNys0hA1OPwB2U_IO-5uKsP2SV", + "tutorials": "1UWYc41u01PcVjkJEwMkY8qJjHPYpPOXc", + "books_review": "1erSx1NaNQ_SHkPPFhQpaMcUiVu0T-BNg", + "id": "1fbNdsNbtNNAy1EENhnrPzevxtpCO0E6S" + }, + "CHN-302": { + "exampapers": "1LPx3yuN7_pY9bbzjga5WSVx50VEK-vrO", + "tutorials_review": "1Ub2E-CRTEL99pHkf47zkY-nCxwmYmde4", + "notes": "19nCxU63ClnqFcsgin1vWRhsEJ9sWNHfx", + "exampapers_review": "1jaDGS-SHsv1qlTq7INxKqA_m1HU98b2_", + "books": "1w0esV3dtIFXPqlTvFk2paDlJ6LLbDB95", + "notes_review": "1uXy-F3CPQhktADn63RSCSw-lYnWt8ZS1", + "tutorials": "1w05R4z1vYtzDlruivnMIiadf-vPvL4bY", + "books_review": "1U1WQRmipwAXjO9q0DW6r4lUULApDVpv-", + "id": "1ZdUprbyq0TD4qNy0l6yK3c6lb3cfd-w7" + }, + "CHN-303": { + "exampapers": "1EnSgXoKDDxY994zC6MBadXXZaQC6f9Sd", + "tutorials_review": "1v_2QZ1EY6pdU93XKR9t5tO4eC_nWfUsq", + "notes": "1dShEnQE1J6BsMAT_YoEINSu61ZJWekRc", + "exampapers_review": "1JRpS96Ho16UTXnma7YBK2lJV89OU9fic", + "books": "1-rhIzfbyFGdMCWIzLMl09-ocfgtKcPAV", + "notes_review": "1q3O9n575PWDGqD4lcVS1PwZVAQjM3cUM", + "tutorials": "1BVMVi22W3mjy5zknAiHWBPxzE0TlNUgD", + "books_review": "11pytTujGy88iSrcntju-ZNLXlU1W0i2v", + "id": "1S9IUP8beIh3-sSCsdL40KXp9u7NPnUbS" + }, + "CHN-301": { + "exampapers": "1rGWcMS6CmOey1vIEUm5cF1OA5_wY6gvj", + "tutorials_review": "1Aeog8rIe6rXUPAneQU01JODgdvEahde7", + "notes": "1kq4j0tHJFMVI99XDNh0Hm2ddsdhPlzY0", + "exampapers_review": "1m_cPM1h2q4gwhbEoVYp8RewX6QkDEsYl", + "books": "18qaxJxcWZ6T6rY_cujnhBqCtdPoiegOv", + "notes_review": "1zB0N9e_e65GtymQyCe8z5RJmQgyk9qRI", + "tutorials": "1AzS8GLffyAD-oKZmiBAEvQ-PjCGkcNg7", + "books_review": "1vaoh3KLlcJ0HnOVp3HDqRq7sL1Evatyh", + "id": "1ShJh43llLQtz0WLLfYQ7jXfv9y4waVbL" + }, + "CHN-306": { + "exampapers": "1uXrXAahOTbVPSfaxyKT5AcDC9IPdn-Fx", + "tutorials_review": "1TB1HsmoEzzV-_JClv07ItCIvMqD_J9Ug", + "notes": "1A-65BQu5YxE8miqYYw8i5T-6AX7GSkwQ", + "exampapers_review": "1QXyfwPd2qrdDrbXoVJ3tQGXwUStM_rFh", + "books": "1u9OP2zP35cO-W2yjau5QdisDkDSkfXvS", + "notes_review": "1tbwilA7GlmmYXQcEpDMorfGA_bN1NCR_", + "tutorials": "1EqTEoQJEpGPSVQbjTS86YMDTw9g_G_3d", + "books_review": "156mXQCjsFvOzs4PJRBjHGhHHoidlE0YN", + "id": "1bM01IVWGgLbkM_UCWBBmf3_drKNw7UrT" + }, + "CHN-205": { + "exampapers": "1qDopMcYaH4GJtmgnI4VjKJhB5m62GgRF", + "tutorials_review": "1-W4DYuzy65Z0zTufcR4ht2Sqy-5tjjuL", + "notes": "1_sh_YUzVA3zqeZkm_RMrQQvYArEq9PS3", + "exampapers_review": "1aW79V-TNb6p26bHRmvBMY_ISJjitA4b0", + "books": "1JrLErSH5qdERPedIOUtZQ02L0oFVY2W_", + "notes_review": "17tkLus8BuqCUjZGzOfvoNfU8FE0IgBnI", + "tutorials": "1Z9HQLZuuqcPtMwdUtylbCqHfyQDq9BRh", + "books_review": "1qmjwKfjmCC834OZq3MQHuCjgS3KI_2kl", + "id": "15LgKR7qCpUXjVYw5iIYYT7jfQBhpM8pB" + }, + "CHN-305": { + "exampapers": "1w9PPMpkIYTm-9oeQtjLXb-2hE9o4l3UN", + "tutorials_review": "1xT4MN3YODGmYxhbpi56iQI6afe1UReo_", + "notes": "1YMn-i2s3BviB5c0DAAICz0By1K7X8EYw", + "exampapers_review": "1iY4EOCjYj7C72zRlqv8xlUqwMfnqDKt0", + "books": "12HIvo2nMr-pClQwlMYCsPQLd9k5OyqCD", + "notes_review": "11c6BLPxk_7h1AzkuGs3iCMc8rcNpp0_W", + "tutorials": "1SlTbdcAWn3TFrwzPvQ48Mu1nNb5xr11w", + "books_review": "1xlK46vxMu5TjDWMsHGAXpxSpQT6F_Ra3", + "id": "1zlFPqSmqw1kf-0ujQ6LLuCRuNZpREact" + }, + "CHN-411": { + "exampapers": "1y5Fo0xFW_AkiJ8TkubfsYb6A5Zs38m8R", + "tutorials_review": "1780HdK-xUZze0QjHM0gIegkyyN6n1r_w", + "notes": "1Sg8tGW5U_QpRUfyhiB-fpb4A5pmKhpp9", + "exampapers_review": "1y4eefL5tZ3yrRCFeuV8bII4QzX531kS2", + "books": "1eurtM0K_nL0WuSi89kQKNACKPoeiAX4-", + "notes_review": "1bL3dsHdeqb6prgeazhUKZyN70-0IxLDL", + "tutorials": "10dV-DrdCv6gHGDwo2Wa3wN9hv9xE5Gm8", + "books_review": "1Kx6YHRcBO2kXK0yU4_fVdaDFYjZIM7Ug", + "id": "135UPS_-bwr3GfiF4chyItVWECO9jahql" + }, + "id": "1h-Y_HvLFjakF_185oEtYLZsYTJKOscrR", + "CHN-499": { + "exampapers": "1i6j6q6aXjM4ajIwvp-K-7cfLspH6tJHA", + "tutorials_review": "1SPJSdMm3CfqlG4gt_JRpCOU2ZHjGEKrv", + "notes": "1mtgSCM15x4yG2qVRVxycofz_yrQXEeVY", + "exampapers_review": "1ITHWtT-ou3m5ZJfwJCKZR6DzHTghTPzb", + "books": "1O52kooA85w-irhNneaJkuW6ET_ryArwU", + "notes_review": "1-szPf84i6ov0GH_P7KmI9Ue2_JnOyMeE", + "tutorials": "1JzgCSVuKWi_oOOKBrTxK-5KorbTGG6ps", + "books_review": "1ytjvmj8m6oJeHYmCn3qYNYcP1pRFHiEv", + "id": "13U6Bg4BMKwh_tvK1wdh3opqYe_cJukGI" + }, + "CHN-203": { + "exampapers": "1c0_3WiExNtRmDHlUDoUYgmlCRWKZ47hp", + "tutorials_review": "1AEKGBpMVMsoE0HPWAs91ytm3dwCBd5vw", + "notes": "1XrDFV-rmpb67Kgo3YRaU_N6EccPgUiSS", + "exampapers_review": "1qgtgEt6_l6sCsDnWpOHAfsoFr59QlRy3", + "books": "1ImPR5QCukDdZVq2wnsEN5c_lq7Kjn75l", + "notes_review": "1FvJKjKgmrn5D40ZhTWhRc7nNIZyXZdVv", + "tutorials": "1UgrdArzYtu4i2FApMIvw9y5Hkregy1O5", + "books_review": "1PsUG6OAjHKdpXM3NlZpN3rhkxu7qhd8b", + "id": "1aELBbLit3hRLBENhOK48J1pz5pjyEDys" + }, + "CHN-202": { + "exampapers": "1GZYTeoxK7jCcT3qtaF-DSNecdkJVfVZL", + "tutorials_review": "10XPSx1APQ6myeioLQCVS4NV97z8FjM5Z", + "notes": "1lzmxTfSe_FRQzMfUZUcbIxZZUSPt1aVY", + "exampapers_review": "1cLXnejQ6Jy8AaJ54glrr5RBcC3ws29mH", + "books": "1W16MSmdZOXk5JzPM-GcqO2s-tXVUs2DG", + "notes_review": "1oy_lEESrbcbtiRTFKa1TGiXEU4Zbv4We", + "tutorials": "1sA0mcYEVksKhxLsVPyOH1TarHrnHzeot", + "books_review": "1HRc3xZvd4zN9SnCGa5mnTiJnZsEg2Ma0", + "id": "10A4u6Ebhqsz5pNlg_ikXEOq25viRwrZ4" + }, + "CHN-201": { + "exampapers": "1jl1pl1Toa0XlmT_VOgh9u_IFPnKNgraE", + "tutorials_review": "1x9lVauD8PD-HgP6JfPmDO1DNv4nOG556", + "notes": "1m1UDYqci-JcXL3CfI4pUusuSUefBnx_S", + "exampapers_review": "16xGbJbtcU4Si0OiYilrFvm4L2FULFXNv", + "books": "1xlWlji2QZr6lvJrouaKcPt2fuaq0jHkQ", + "notes_review": "1fiz_Y9D1U-YWvRZ6aEIEd7-Gc2jJ_ilS", + "tutorials": "16dMFeRTVZtMDRvmpOP_3ttaEBgMa5Ii0", + "books_review": "1dHVN6YdHiJl8hM2CeCUTlxiFeFMYY7uh", + "id": "1hDDkWfSYRU5zOMO-xGSMFM--v_c2Esx-" + }, + "CHN-323": { + "exampapers": "147oR4CCoAyuOUtp5kaQH0iyTbIEABhO6", + "tutorials_review": "1lr5YInIVmu2xy4uUfLzQW7LCnCm0U8-_", + "notes": "1lf1Q8B7SmWLxKqPKY8VhoJ9oj4Q0ZX8d", + "exampapers_review": "1q0EIy161TL49b45gvjH6uTG-dK_i1tic", + "books": "18IMTubkKoShc7l_I4SP1RFvmo9VPQAZH", + "notes_review": "1S_bYDvcxOTEaMziIsZhDHl_0X1fjgA2c", + "tutorials": "1XLOCzMlmTlxi2jPzDf-IE7r58lGfvtvC", + "books_review": "1Zqnze6WXLKtI-ffO-MFjEYa1_MZ3RgZk", + "id": "1erem08zgE6k7fs4zIV6dG5AEJe6MzJGW" + }, + "CHN-207": { + "exampapers": "1ZEXNv2CtIuugDRiqjKBIJQ3FQigyLGPN", + "tutorials_review": "1o2_PZkVTCiunqEJGztoqnUIItmV1XdyH", + "notes": "18HSxT4HXSmCHd4uK88ZBL3IL43kx02gp", + "exampapers_review": "1LN0JfeQbSaR7lKzof76nhART9d227oXG", + "books": "1uyRMFvOZBH-AjQHrMdrCd954m89y3KcH", + "notes_review": "14zbi7-JWRH7KiwJYdR2hcThU5O_MTusW", + "tutorials": "1C6XLNYMauNggIEA42pO28TBU17gJzaDW", + "books_review": "1wlS16Jic3eZXfsmEGV7FFZcyZhMj1h8G", + "id": "1gF3kzoxBOY_NoqQ7GlAeVwQx8PtSCICH" + }, + "CHN-206": { + "exampapers": "1KadR_s_4v8xkFQcTuCJCdxAAF-CHtILT", + "tutorials_review": "1huOCcn7yDciBclBLbFWNqez5qH8abuQU", + "notes": "1ObWV3Uj9WsQUgLgoLPp2vRQFKqm6dLA1", + "exampapers_review": "1mTUMMJdlJOubZMh9lmADJblYbb_EYK0Q", + "books": "1RSDJBD-PjjBfmRhgG64UWDs27zi0UlfP", + "notes_review": "1EGMSk8ILEacf_9-RzuOektdN6leUXhE6", + "tutorials": "16g3-1rarrFJnV8sbLeLozTB62-q4x8Os", + "books_review": "1Tv6JCxJaGPD6YRS-C9xeWGrc-AIvZhx4", + "id": "145HQjC-RhZppeYZZsozWg8_u6mE8Qpm3" + }, + "CHN-326": { + "exampapers": "1R01yCpnzGFYBmGVZFL0T_ZUSNHCzodpm", + "tutorials_review": "1bTB3uKsPgC8O9es_dfZxEpwCbPSSYEQn", + "notes": "1RujczB4B5zHhDSKB4AmxbQQV8TtFnvy7", + "exampapers_review": "13PmdiG31ED00W9yeg3bA_7GshnYkib48", + "books": "1PHfvnRK4bJ6xzkiUSKV4GqOC3VPZasc1", + "notes_review": "1kqU8wTRPS4_754zHMlXvC0OJR8V-E_qu", + "tutorials": "1RWoPPcRGK7UD0xlkghh3Gie1tP1X3tJs", + "books_review": "1-uTBwxVPU0Xd-u2EFUmufuPBZq79GcCj", + "id": "1WMBQYHes3ifIDnsgz-lby4CnBjNPEU-h" + }, + "CHN-701A": { + "exampapers": "1KJhgUNCbsk0AkVqyuXwtUaVdGBxpyPAA", + "tutorials_review": "1uYkSt87IHaS8iPT65dqOKR_1Um8tXzCy", + "notes": "1Ui6NHuXiDa5IG14ra09ZC_jx42FmwMAX", + "exampapers_review": "1DLtgGcmkMk6alOVEvFlEjo4IkNATpNlM", + "books": "1y-_VIfOkVM77BAAAejPfWOZaocW0zEUf", + "notes_review": "1Ld2ylFcFUZ0BD24ij5-T699mK6xBY9Gx", + "tutorials": "1CPGFwcwQQ6Q_sGjyATI5PPJspBsgqPQI", + "books_review": "1vnE70ws63LYewtpnkO6rMVYwYNWkfHDS", + "id": "1BeM2cGb82KXDBcgNMJenGWUUJFf1uzY9" + }, + "CHE-700": { + "exampapers": "13dtj-5_AEuGQLSEZT3vpfOIaRLgxitSA", + "tutorials_review": "1KjZJBfXUP9Bg30801g1wDXZCWT-c0hSI", + "notes": "1lWTJvMkRmm4R-y6gPoybpsGMv3p5ETtt", + "exampapers_review": "1GJAjL9pRCeznPO99IvfK4ZIjD3gT-OU9", + "books": "14ki7cYiyZcVBWz008-P3cLhOSoDjuvqg", + "notes_review": "1VIROeNO2y4WZ2ANNXISlZCGKKBDXV4ix", + "tutorials": "18PvDBSw_vO1jR4wFTasEm0Aa35QZ2gSR", + "books_review": "1ydwCpTlyDNbcvybOHTTJmemXkq0hEogs", + "id": "1ydKrm2mxaZ63otHVLEx1YqhZ3bWbrbok" + }, + "CHN-400A": { + "exampapers": "1yg2IRh6cRTCUD-DySvao9VBkyAlqRmq1", + "tutorials_review": "1SBki755O4Ue4R_7IJCGwl5CoEnm9wouV", + "notes": "16jvm9Fd-J6R2F5Y3oRpF3SvZmBsJH-4Q", + "exampapers_review": "1v79OnYWtJdG2qOdp-1fDNBUwdgic-uH8", + "books": "1351qzJieA2PtaU7oeuvFULWQmehtK31m", + "notes_review": "1nrerkaF4Fz0mh8X34rYc-9UhqZcIPFKN", + "tutorials": "1T74cEGfb74kBqvIiuJ6-wTEgzK2-KA7I", + "books_review": "1Nl7o1ICq3-2LOyC06WzG66UMdTh2Uwi6", + "id": "1raeKQB72TysQ9whpjuhC42J-9o5x7nnD" + }, + "CHE-507": { + "exampapers": "1wVC2GqjBG2O3ZFq7ox64Q8bJIf5lzfJF", + "tutorials_review": "1in8kK5pklF3m3B2KT678zh0r-KpHdC_7", + "notes": "1GmrzBsWvNB3jrRJ2Ry4k5XZvWpZFdiNz", + "exampapers_review": "1nJTwrTtznpqRXB96keXGg7EvnGZtlUbN", + "books": "1NlLdjxdspOES1PL9PHf99mo4vLUkmfNw", + "notes_review": "1Am5usDCPx4him5gvYE4T_cQWWUpyEu0-", + "tutorials": "10hUjfIG66NZcVLOcVpQG28vMAQBu3jta", + "books_review": "1Py_N-l6NkJgdBfxBH4qZUx9p9lLvoD4r", + "id": "1qKqT0kS7FKlDY-8mANRak_nLXXLm_zag" + }, + "CHN-325": { + "exampapers": "1BaDv8aKH4WUNQ9AiPjqR1KV5DaJUuAEc", + "tutorials_review": "1R96m_TIkSjTpKbPREEG0edbHZ-ndXsrB", + "notes": "1kas6gPDNeyeM6KBE7TDZK-VMmDaAsv1u", + "exampapers_review": "1qrZIrOWWPB5P_G5hmSaSX9XaiuhOdtBl", + "books": "1LvA4sOvQfdkPc2KmMXIpuVEnVs1SAQlS", + "notes_review": "1eHyueFqT7usC8-wbCoQqVUk-FNGPV8JP", + "tutorials": "124VF6thEg5IviNRKU_SVOzm39wJhiTI_", + "books_review": "1u8gP9CMEkGSaWwXX_OP_AJs0_4RJYqvy", + "id": "1xsqG1qfC0v6_yAb4LJqPy4YPviBo7_s0" + }, + "CHE-505": { + "exampapers": "12-VpD03C83wmfk68XLC9oQBPi048SBWM", + "tutorials_review": "1Cfkq-65obVpO7d_lro3mCX_c8nBJ333T", + "notes": "1rHNURRWXReTfvShHIjTN5oYudxyuO6eU", + "exampapers_review": "1x59LePRfQwwaYQzroRwFKdvuSHR9wTaV", + "books": "1kjcPte3Vu2DID1SNaCe5UiObexLdeLi4", + "notes_review": "1eydjrOqyLHy24dMvMhFSQq98w69JnkA6", + "tutorials": "1zzB82rzjOM29NeofMIMZxRSaYAvbdJk7", + "books_review": "1YPncEZhutNZa-n7ga6QSCyIGU8Ul4Rwn", + "id": "1VLFKE9hqs2uYvp-_yUIlM3uAXxCsahP2" + }, + "CHE-503": { + "exampapers": "1WfAbFsKmanTS7zY2EvmZKFsyJi5kOhlW", + "tutorials_review": "1lGDHNoOMEKo2q-d8Vqh5cfORcTYd92-j", + "notes": "1KdcJZ5OpzretJgy8CgAmeoWT6MrgcOnh", + "exampapers_review": "1UokQXm7eFlT8AafpezAvwcAX6xoCoGiW", + "books": "1L0DJTEwJwbjviYkH0zngKiecZg1bbzew", + "notes_review": "1LibF3nnDayFR0rF7VrtdsGRSH9gSEFZ7", + "tutorials": "1fUDP91yCrVuacK1AGoTvk1mNqjTPYJF9", + "books_review": "1C8_FeLn4X0-3PJeGyWuTvdXNk211ixrX", + "id": "13kcw0B1BXQmh1JUKN54ucEle9_a8zH-l" + }, + "CHE-501": { + "exampapers": "1GFaqILoP5-dHH0LZvVh-8eH8PTsvPDmj", + "tutorials_review": "1ehJtBOncHHpbHGf9zL7TwqKvudyH6hDz", + "notes": "1vrk6kpAMsbaoghYg4gDkOGPEh2Txpc1O", + "exampapers_review": "1utDlesBh_FzntGex1hdcNQgZDB-3fRCZ", + "books": "1F9iP3JC7qRoJZhCNtODXb2Bo5PmwRgD_", + "notes_review": "156v-A1mdBza1XiyBHy81-eKInhvOJW4V", + "tutorials": "1pPP2n_YnwtEpWuMkUB8zC0eJoF41d-9y", + "books_review": "1J1SsnHYd_1jzcXiKO6fsIHpj5zPhRL25", + "id": "1fPhYOCpnV5Sw8KLFR-xY19s6Dts70FKh" + }, + "CHN-700": { + "exampapers": "1MqBeN8PWtCS-hmidKGT9isblbUZulEiR", + "tutorials_review": "1tRmtRn8EMIgYiLEpb2axVI0iMbq46XPc", + "notes": "1kuM6dzWs6PbKslc0maq2xKsuAYw03fkp", + "exampapers_review": "1Rx1O9iGfio7UJDXFTmUUie3kS72TRPq0", + "books": "1ddp40O14cuRfMXinOfY60i7HQkRw9F1J", + "notes_review": "1nVcuf78c9Zo11IcSFZtKvyHn4RgioZbU", + "tutorials": "1mgBK6Bwtrpt_2V_e6kUpRND5eov-M40G", + "books_review": "1cU6tpoo7eHSHJYV8k-rlix8y2J3gXP-E", + "id": "1rmE6ZOVNzffmPEJTkJ4GH7yevJFWASjl" + }, + "CHN-211": { + "exampapers": "1tktjeet6rf0BGyai7oxFoZZK0MiL1Dvt", + "tutorials_review": "1VVaEU6l1z5yz96YsP6yCryqVqCJKPcr-", + "notes": "1JE7b9a5Iayb8Wq6VhlK8w-b8kgjzGrdm", + "exampapers_review": "14qLKiVQTeiCNOFevAfhxyPhO8L8viqYy", + "books": "11_d0rbW4nIVhRzeJaL5qS0fwqDNdLh6R", + "notes_review": "1R-BhBRhwsG86h7fzs40dixSUMEp7eWBt", + "tutorials": "1IGUwK0F3uREzgnb2hbWYfqIlF8NicD2F", + "books_review": "1iTteTB8CbVoEVb2tuv7JHu41mU7qW24E", + "id": "1-cDOt_njqjyT6k4wxsNJ7tiEMfGg746d" + }, + "CHN-212": { + "exampapers": "1V03VBbQ79YdHEbAWIx3xvgBY_2inGH6N", + "tutorials_review": "1EzQU0FZwXfSst2hNMMYpALmht7sYc1wi", + "notes": "1ozpFuc1B13hDmVOvzT_aihbjUB1CHKT3", + "exampapers_review": "111gyYL1tInik0TioxO30kYrzDr2RMBPF", + "books": "1Cu8ieFSG62TyY2I9FBI79xIqWAGYC233", + "notes_review": "1XEyAfy8X9EeH4BAdLYv6-lrj80o0PK17", + "tutorials": "19P-f9UROFuowgz8vafHVibQvbG5kLqif", + "books_review": "1LgArq7jHyciSsyyn-4wNC0KIk3YsMuCG", + "id": "1dcTe3atLF7seNF0AHk0bpCsBqXj9inz_" + }, + "CHN-322": { + "exampapers": "1dxNaC2Q-vqE3_Q6QWe7DM2vDOAMf0u_N", + "tutorials_review": "1NLg-mapatme59aNOKLwyvd8rRd11UCY3", + "notes": "1W--1CJhkZRsV965quaeIHas91LWgmSQH", + "exampapers_review": "1z0FcC94dfYedwKuFBBzJ7-ZHEQSgwZFK", + "books": "1PFBVgxV_yhnrFYLnRPrdAQbE0g759Qpo", + "notes_review": "15QaHELzQ9_HJhryCpx5S59xenKHX7455", + "tutorials": "1nDeFLxcH6345ZzNZAVSUvup4O5QzA4rV", + "books_review": "1yHuPjMdp6kP6yPEorobHryOjiqCCGF5P", + "id": "1nuJpBSVxrMdD8Et_osQss9HtYZhnwRbW" + } + }, + "DDED": { + "id": "1Iyw2cZ4GsmVDsMbxFRsZvkWvbtS0D3Se" + }, + "EED": { + "EEN-358": { + "exampapers": "1ag13XK_r0OoUhQnj49PxjhUwXMJTYXjQ", + "tutorials_review": "1je5lcbt_cHkOOVbHQnyMGzw1RVqW_SRy", + "notes": "1CkOntw80wc3JKjFNUoKV65znszbEjNM-", + "exampapers_review": "16mg0eQ8yadY2Xiv0iZKVp2J17WmOJV17", + "books": "1aJJ0-GyWMOS_dAwvcUO31cCV6BQMOiuB", + "notes_review": "1nWSRPm4XCXCozY-N9__gmEdhUy0hI93G", + "tutorials": "1lJkm-c-O4GFzJh_MhHHi7zEgD6vY-fhc", + "books_review": "1MJDijVpcF_eTqyhl10nvil6WESgbNaUA", + "id": "1ICRobG7RbPmv6fPssm7FNHwL2QBgYAAq" + }, + "EEN-391": { + "exampapers": "1NK1p8vRM4zE_q4e5zNUJ4QeFWZkdNYmZ", + "tutorials_review": "1n_1Zh5JUv2mDrLr8f1jFhidLRk2ErdNi", + "notes": "1_o-BFdUtEZ8ubJMwdVtNFZRsV8hBeKXG", + "exampapers_review": "1DUpRP7dE2QE9XptAe0hS8GAjnu5nYLX9", + "books": "13SwTH3FfhD953-XI8IuIFJNQzlmXwlhx", + "notes_review": "1yaHKBVJVgwAo62DA6KXwnCzrMi9nMQdi", + "tutorials": "1Wv5lM19n59ITL0aZ4AKvGKGuk5wy-z0y", + "books_review": "177HmExHmz6yusRA57Cj1Hg7YaLCRMhnE", + "id": "1XPmiacn2G0KtEDTrt9QwWbR93-QixxqE" + }, + "EEN-499": { + "exampapers": "1ALVFnPr8M3LjxcCbcy2PYnfZNTG1mAuN", + "tutorials_review": "1MA2BN6OlO-7XClTn0UaF4Y59BhuxMD1B", + "notes": "1sFEKrwu4MnK-9O4U4Tu75PrDnWOuGIol", + "exampapers_review": "1auTeQWL48rKW7vmfvzxfjdyQKb6wY8e2", + "books": "1LB1uSeHYCy1k5XZmeZYUGNZvRhrhdjyP", + "notes_review": "1cak8zn7uhMuyC8esaUCRY3lR0PpobXhz", + "tutorials": "17X6Mzf8yyHK3hrx2HxShvTY_fxrwxJlK", + "books_review": "1WTpeSNAPe0x70V8AE1WFJPeNpUqsEn5_", + "id": "1U7C8XWhaWBqwp51Z17zTJ7AOIDq8lPJ3" + }, + "EEN-582": { + "exampapers": "187qTEj4nDUiBvSMrLzR7Yr1u0UfvZ077", + "tutorials_review": "1Jgjic6qzghBgE48ebqWK-TquTITHLja7", + "notes": "1E8WHxTxk26uK7Tya-WvCjEgQuM7ChfPz", + "exampapers_review": "1N7D4vjWpf4gI-WchON3uQZGJJIKr1mVW", + "books": "1znU49NgTGdiyvZSl9k5gR1_mDx9BY3dr", + "notes_review": "1NTfeAVuHsM8I_6UGgqVRl5MFE8BgRSSl", + "tutorials": "1tqR_HSLMYuifbQmY3R-K6WYN2omrFZta", + "books_review": "1PT7nKrFf4_eA8Sr6FhOXr8uuKs7jVVzP", + "id": "1ZniJCH19gCTDpGfNSBQQ0N-q_WJ47PL2" + }, + "id": "15t76yLFY_LPtB9soNIhnmEympCObDn3i", + "EEN-303": { + "exampapers": "11vecg37XQnfYb7B38D4gHMBIfbTQ6uZr", + "tutorials_review": "1xJgCJ-aFNqRzXxMkWv6tUPJitJVzAGA-", + "notes": "19GS_vnTvfApk3HfM2T5Nt-gfN8mgIMim", + "exampapers_review": "1Mdur6pxdhzwhnPjbLH2n5bwz_3X8pFW9", + "books": "1Y4Vcmz2aqT2SgY3mP953P_fGMEWkHXwE", + "notes_review": "1Ul4oU7foGgOanR66C0iQ2YPKjH-tPvt8", + "tutorials": "1ctGxYkwIJvOrzjhOGA-qMfB93boaHqtW", + "books_review": "1AAixEwzsWPTuu4DBPNR8CHM4L6UCvolv", + "id": "10FtOaZ62FjjFI8Ca5VL-5J7AX1aaRu4v" + }, + "EEN-301": { + "exampapers": "14ONhR9aPrv2vdoWboogSLcRBVRK7JYzP", + "tutorials_review": "1Ec5H3DrJzubOzZoMGKl21OOP3IJ45Khb", + "notes": "1vq5sxK3TduWRAZu0gpJ4zIJFHSGebghK", + "exampapers_review": "1-InLFd3PVYRcZ4vwWc3SCkWXARLTkbgb", + "books": "18FuuVY39xOUrWyABr3uxRp748LmQDJ4U", + "notes_review": "1SaIRZQmb_WbVsb9HecIt13BbvkRBkOBE", + "tutorials": "1W2tVg-60K04-MaM8QAjKtO8KP2iTkFhg", + "books_review": "1swXEZqQMbh5CLHsl4g5BZ-edNPRCrqnn", + "id": "1PyibmdnF8YYngAYcmQgTTRrnNBKJ5HVA" + }, + "EEN-683": { + "exampapers": "1Fr3-QO3o7IMfhyn03cW501_ntD5Pb0mR", + "tutorials_review": "1d4Z15oFg1pTAZ6I3oEWWLyC0Ufoz8usd", + "notes": "1Qv_O_-QkTWLL02xb_1wlbFttBAOEA9AN", + "exampapers_review": "1kCOzvqLl6YbJvGItcIABDqEnFnA0tuWM", + "books": "1y9sJ7CWfgxZlxE4ZQYE4MPTr31YinFxy", + "notes_review": "1X83jLA5tl5n-D4evgCH8rd-4bSp3ieB-", + "tutorials": "1J6wW1vI2hkWD2FiweYpR31Mr8tzOG1Dn", + "books_review": "1G3nP8BhVnML74TSOArV8cS-khg8Wtz2N", + "id": "15M3fPMBlP6JwzRxE6esLuUagymP7Zq2F" + }, + "EEN-305": { + "exampapers": "1EoQ78tYmFL2fGpTu23noinkAtY7MVl_E", + "tutorials_review": "16WyNlsEju9U_3CmY0PeoRha31cWALiFp", + "notes": "1uQx1EdvfYbIpOED6iyveB6MDngC48jCs", + "exampapers_review": "1ysX4iDWx4EO7NGmfyp7nZftm0jw-iXLP", + "books": "1hMfaLvZMf9-sxw3WiL_TRCzRUgY5kW5g", + "notes_review": "1_F-C_G1xy5bP2LxlK5zJMVRRX6E9AfIh", + "tutorials": "129qFHr0Vgoka0tHqbImzW8WngbqAdq73", + "books_review": "1qqZZIBMgRX3O5o6Ug3AQ1A5v5tut_vbe", + "id": "14-jSqMuhJ4nl0qQW_CnpZzR0_dBkWztE" + }, + "EEN-203": { + "exampapers": "1i8NLotce_RNrY7CPH4eG-PVUd__LPZ_g", + "tutorials_review": "1etfNCgvgDPKpRutbRF8Gy7HCX6otJoLD", + "notes": "1JTHzutSyDL706knUD8E4toVF_-F2VAxL", + "exampapers_review": "12yrNYeg6rwSsN7lqv62L9bJRrZjnmm2N", + "books": "1vIVwADsNmJvm0snbN_NhWU2QlVX1QIE_", + "notes_review": "1n3PpoULpoebFprVF3yxi9sn_NeYQqv-D", + "tutorials": "10ZKsEVqICz5uwprheYgWMIxgmo6lHMt0", + "books_review": "1Y3NBwmOLy5VRlE2GZHbqktJt8K6K-uqK", + "id": "1uT9fFMSw3kvER9jiEleqQkdfan1ofW8P" + }, + "EEN-201": { + "exampapers": "1z3mt6K4szYvBm_Q3uaCZJRUKo2y0h2r-", + "tutorials_review": "1wQQOKuYUYhyHPHCgQzzeDBGIrc57WORB", + "notes": "1CZS6ri9PXwvB9bMyvEKjFcS8pOWRzEQt", + "exampapers_review": "1_L_9gr6RNPSxBru3w836YXmWAPul5OWx", + "books": "1h2y4lNp9wTFGSavNvpp0nGlkS_ZByB_t", + "notes_review": "1xJ2yNpzOiWsTfVvYK20Z4CE_97Sb9hW_", + "tutorials": "1-H_AbJKG4g7oSJD_gObDJ6dP3ukS8q9D", + "books_review": "1TLXeHcNk_SBPinUq4XPlikSWhio9Z2xd", + "id": "1F1h8Gh2WcEsv8-YT4nZqz9NFFOxfcooD" + }, + "EEN-581": { + "exampapers": "1NgNse77GHWSVQai9vrGj9KfQSUjuFoZO", + "tutorials_review": "1agZCIatSW-_skqL_Ez-SR_WbDmzBj_Lo", + "notes": "17a7vvRkuIdQ4ICqzee5YJqCx8-ZNb4Rz", + "exampapers_review": "1pw55Jgi9Q0qhGJWnTSSh18gP85v2xpJv", + "books": "1-5HwobqTYhvDSFID1QL2wyS219na0GNP", + "notes_review": "1TDC8gIgLPTflWPCXXBp94D1DI2Gpk5Wc", + "tutorials": "1LhlSgbB0PjlG0yEOGI3LysCx4cl4Rs1C", + "books_review": "14P4n3nYm_3EfPJRhkbevsKPQ8uaG3jGe", + "id": "1WKOAuVVqZLWZDTAtyzOHcLKjOpePFYWr" + }, + "EEN-580": { + "exampapers": "1d885grbdWK8GVJBb7QmriueTdcRbFYjj", + "tutorials_review": "1r0L2yfqBgW5KCXm9HVS_ZnjLO6WoeKpR", + "notes": "1cO0aBu_x3LLijoKnQkY06OnkdLsozRFd", + "exampapers_review": "1N1CkQcXSHwugwZxTb2AJOxW2ZHs1q-6z", + "books": "1t-GYh8vRFLWPL7TeK_ypINJEAPxH0OCS", + "notes_review": "1I1WKeseZIc5P8RMp1kq7NiUxDdkJwDc6", + "tutorials": "1xGeUskApjb-bg9MCRCS6LtdDEubN0AkR", + "books_review": "15_8FX3J0OEO8mg8cO2DAedtbUuizgE9s", + "id": "19NDKgbufhvYBCvhMFfmwf1re9c8afP6f" + }, + "EEN-205": { + "exampapers": "1kiZTFsKg98wvcNHiB6pqEqxjRWYWX614", + "tutorials_review": "1t9HKWD0ObMfFGscUzGGBDvv4hgKL33d2", + "notes": "1GLbzFEafDl4iTyEsp60jf2aBYcrvsC1X", + "exampapers_review": "1Tol-gRN_OZ-NQtWQHeg4flu9v_-SMgJv", + "books": "15vG2nd1wKiPFNxYDfjR-gnWfSJXtP_v-", + "notes_review": "1OtRdhoubNHwKNO2ZQMS8QQ6xT7edJdzr", + "tutorials": "1aJOcZDdwz-g56ClcYl21yS_Wd5XP9dbo", + "books_review": "1XlLNswwVIUn5xu6beVU0eIgOUA79eloI", + "id": "1QZQk83cIjVJ2dO2SnrPg0cUz3fJh4smb" + }, + "EEN-661": { + "exampapers": "13qd1RFQopDQMI0cD6jleOsIZ2VEQDPa-", + "tutorials_review": "18FnErAdtOWY2ypQao2x9MnO2_v-Lr6ss", + "notes": "10W8t_1BdaYyXjE6Lr8fYX70G1BPcsG6G", + "exampapers_review": "1GF5y44Ge2SInB6yeres4cDFtoD6Mkryr", + "books": "1nBv9xbKn5-YWnjk2cFxwB5p-wEmsruCK", + "notes_review": "1LR-Xh4N3E8zg8TACHOG1BkD168DgmLdZ", + "tutorials": "1S3TFj2Du33SVpLcUzEdWTpb_GVLyR2nj", + "books_review": "1vWW5qoyFIH20hXfqi8gFTqhKIUVupwb6", + "id": "1UdofG9r_wki-EQbCmYksSr4g4AxqEC7-" + }, + "EEN-400A": { + "exampapers": "1ueoo4GUBveRJxtP6tqCQEA4e3vWCFm0d", + "tutorials_review": "1WwwIoqoc0N45YnaGD68G35V78rMbPiOr", + "notes": "1Z3eWMebEuHL5buqQz0E8lc4yXUiM91cC", + "exampapers_review": "1spr86V6kVmlLq66Xnvv2pNt9z_lwCBR1", + "books": "1v3VAToKYl5ZwJB5IrWwhXRBQ7m-pTfsA", + "notes_review": "1ybgHcfzcdGdCU5ZawdVvfxaluklPenp5", + "tutorials": "1jrB-tVrI5skFKI90IhDUXj8RXxdoNLAR", + "books_review": "1ulgNSoo8hmTv8o46xc9ra5CSJQedYjjd", + "id": "1Sdlpr-4YtofkJhT8vKdZVe2QHpt2egBX" + }, + "EEN-360": { + "exampapers": "1H_fPudgreenkS9KOabg9JtHYL_GtFrSJ", + "tutorials_review": "1F99QY1Egi7v7_tqz41H1mWj8Sq9ncuAs", + "notes": "1LrWd2aAe0L7PLcYm6ijAksCxqueinYbT", + "exampapers_review": "1-gPXDUeSYCLXv5Pu-McQIvIZZRbe-RUG", + "books": "13aUL3G1CmUHZAO9PeSk9udQa5pQjs3z5", + "notes_review": "1P03UqswBcwXKZh5Dt0btReuJld3qrECf", + "tutorials": "1WRBSpysL3b-ykKU0PMLDnJAv-flXXEja", + "books_review": "1_xiOz48SER4iEU34ZIzNxn1cqDzs-e4k", + "id": "1r2hIM3XCTl94Gvm1_-SijKaCBiR1szOZ" + }, + "EEN-649": { + "exampapers": "1VhlQYwX71x4j65H5IKcifPHuU3fx6MLG", + "tutorials_review": "1HuNV77XYuHfggA38Eq710NCDoIvH8Aqn", + "notes": "19lOUJgdt9WH2TLWFECGzmalm0tCBBk2i", + "exampapers_review": "14FfnND4OiqY-SbzfZavlm73wnjwhiHyi", + "books": "1jLJYhMv8GGyR1UE2kdzVyq4I5QT9NrU5", + "notes_review": "1zzF3jMSzyd4YXSO6K3LGtQr388buDkSK", + "tutorials": "1mV9DKTGFIZknGF9y0cUvSxhf2zl9bsPK", + "books_review": "1qEnWadRqfxnuwS7LaN7eHvU5l6r5x7h2", + "id": "1hjM655CWLcM0oEFvTK_QPk5IpHmY8nxb" + }, + "EEN-112": { + "exampapers": "1bgwu7r43mEuThfujZVi3tFwU-HeBki67", + "tutorials_review": "1ZCQvHwrLVcDDs_W4SdK_4A6XhDis7NCu", + "notes": "1gRDlTCNCZLo-VFbjINa15b5EIh1wTEuI", + "exampapers_review": "1qNR2tegppQaa5m4FGGi3D13BE9iy1O-v", + "books": "10VStTNFJ3GSGz41hR1X-TQ5kCpWEdqC9", + "notes_review": "1em-UvxzhFeVNDlY-f0PtWs-_RQgrjH1o", + "tutorials": "1P4FkV9ASjEl0uT-If5eNHKifJvyEmVi0", + "books_review": "1GrCl5ivvzwy8nkVh9mR4h4_HO6OL_8xp", + "id": "1CfTnMcoYYCT_o215vUJbqh-rop3zon_S" + }, + "EEN-701A": { + "exampapers": "1YwCRTVywcDYvUw2mTw97Em5HD1s22b5-", + "tutorials_review": "1Yktgn2zxrDd2z0wLJVsfAR16NXfHzY9T", + "notes": "1Egu21jH5EqD74aq2SUu1cydHeJlQ4W2d", + "exampapers_review": "1UrD9T7M85FFPb9bJe23FYv-JNQNl43eL", + "books": "11ZFyctkkouO-dTNWx0wyFvw4q-o-8wnF", + "notes_review": "1xuyC5WDIjcTMlfxShf4JxuB843g4IMPd", + "tutorials": "19dciqorCBisFEX_usk5Hs6WAk4okEmN1", + "books_review": "1GyqSIcj7bwqsmjumFufinIUBBy-XtXJ2", + "id": "1eLpI9Q4ACScPbZOYJ9pTDruzCp6gWAUC" + }, + "EEN-700": { + "exampapers": "1mEV30X_YkMJ3xBzO4aDCFFk_18y-q9tr", + "tutorials_review": "1TbHcyS5bHpA9B1x522LVxzwovms1XIrO", + "notes": "12TmLUtNHzSfjJCKHn0GLzjI5Tggo0wZk", + "exampapers_review": "1vtIUzMWRaTSvGfdOXTVX7kR9R_bGFbEA", + "books": "1DLFDDyP7dEeVqASOcAM-IlQDAooCK4I0", + "notes_review": "15znNt6qr7lqd9-komToryug-aaLzh82s", + "tutorials": "1spWggyJpQm_AF5muzDuf-hyDMbtjev7S", + "books_review": "1AQzQhB7gA3yjpk2mV3MKNSEN1vYZF0Wu", + "id": "17E08RRTZ-v0AuKIOhMj1sXk7n5B83hyp" + }, + "EEN-541": { + "exampapers": "1aGA933tbfThme_EdnH0liRGFAlYmoqE3", + "tutorials_review": "19UhZQ1Z-10oreEtTf7CqnufUz0jBMuZz", + "notes": "1l67HAMcY8_Xp7z0sYgfMUe9QJ-JK4O_4", + "exampapers_review": "1RgFccclc0BhxHmgJwvUpXpi3jNSxrumC", + "books": "1nPOS-MJ-PmOtKXR3G3yaE9qCszmTp-pc", + "notes_review": "1CqSuyoE3O6QplDc1Ck0MAO8JhO_4NKGz", + "tutorials": "1S7GwHTRXoM5MRcQRENeQqsaOuYIXJVIJ", + "books_review": "1l8F8E0RPZqULkWWvY2DYqhMdhUXLsmve", + "id": "1D30iMlCu1LTBQVolJPAXB71ldepVGDze" + }, + "EEN-540": { + "exampapers": "14a654pCk_2X_sEcrY8mbHrNFMZq7GRU0", + "tutorials_review": "1vZtK3p0lIDgljl9G-uEOo0CbhCD0QAP0", + "notes": "1S1cUSCDDItqrGdX329UCoHoE80Au0rDT", + "exampapers_review": "1v767xObxrCfOeRc8PxNM3hhqut7jiwhI", + "books": "1mGnmohSr0ehPndyQyUKOe-syfggvvgTE", + "notes_review": "13NbyiqKDISyBcPGA6m3d-eNmspQ8hPSK", + "tutorials": "1iGi-JavSiq2Zo0TiHezjU3tKq83gSrcK", + "books_review": "1-8O2LWvPqzn_cBM7rnunSj3VGEfh-sUX", + "id": "1ZocV-xJDiBBUQ92cCiaC_wdJT4YFhHSm" + }, + "EEN-626": { + "exampapers": "1CcN7MQS9wImHZ_Od9X5z2nGbK2NhchM5", + "tutorials_review": "1HgZGoQk1Ovc-KUbRNHV3eDtWuBCxApcn", + "notes": "1n3-SJW-Y3qjnl1EzictYbW7EdF2BkpvJ", + "exampapers_review": "1_ivkY8rWBfWIW-FAGIDNta1oMppbHuYa", + "books": "1vS80PECrdBhq8YJg_iJs72X3mJSTMhYf", + "notes_review": "1cxkTPBxYbtSJvmktwqcp2nErwwkD6L0m", + "tutorials": "1r-FVDtrbshzeci1B6KcSUcIJyAAq0al0", + "books_review": "1Jj77mMX3ISHrCBhJoc8pGRXepxW6aQRh", + "id": "1vY6OtKLz0rn7_LOMuLekX1kT8ws2L29A" + }, + "EEN-542": { + "exampapers": "16TPZcNCPqq2tDJYjEg5LX2HQdOSCYajD", + "tutorials_review": "1kVifVJqwSvu1qkw3T2nCBWlTxDoXaxFu", + "notes": "1VFnBLt8IfwWvJsca53OneppUMeBS_Jw9", + "exampapers_review": "10Sp8kraqvce5pkpilrdMEYzIGnuKYEC0", + "books": "1vk52vah-WZOUQU2wiapG8I6Ua1SBr1l_", + "notes_review": "1vSUOO7urrEQmNpDUTTQ8HvpmA8AYy2Vx", + "tutorials": "12tz0MJew9CwR0M1bTNhg64bb5DnzMLaZ", + "books_review": "1kq66aiE95UbBKcxjDfno0zm2SmmuQXM3", + "id": "1W-cFo50qh76YTojvGG85kiOch6LlYoBd" + }, + "EEN-563": { + "exampapers": "1Tfuv_3I36UOkwEOSrr6sqcCTcic8zm74", + "tutorials_review": "1smesFRPxptGixaSVq59mSZz1a0L8wjG3", + "notes": "1cZzOvEZDIkFP-3mTv6q0Yd1ZC8q5dLsj", + "exampapers_review": "1iikrdeu2sIxEwzX1zt7dCZDIDtY3SQE1", + "books": "1cge6_OQJyZcedyRsX5oAhhn4jf-Ck5AN", + "notes_review": "1IM6r7yJfUhP3nwO-P-F4HVjsHpGCsMv7", + "tutorials": "19rwABI6Op05eCZ0XxbPYP9O43oB350Lm", + "books_review": "1D5N7zUQs64NHIRZ3YkXI_tJCk6du88bw", + "id": "1dQ9SzjuSzFz8IZw1O7AowyhWn4rANr72" + }, + "EEN-562": { + "exampapers": "1vbIb-Ck17K0HibF3RWCuXNgnhEt4GdDo", + "tutorials_review": "1cTbltVjEV2n_WXs_jRuMk2raWfenQwUg", + "notes": "1XU1YQREmWoziLx8dVdNXKsYLUPR74RPW", + "exampapers_review": "1qgf6nocbKPwiVXlC8-p20Yojj-8xMzm4", + "books": "1iX0DLf5i9eZY_1As_9gdAtReupPtyfq2", + "notes_review": "1lHfpaIR8E1ZRXKyvkLn8he4IKrf6-y8M", + "tutorials": "1_h_FojmJ1rRAUq1EFl1vQ0qw8lR4JJs1", + "books_review": "1OTcxZZ9Z_bHX1skleRz0vLOYv5ceD9Pm", + "id": "1WtACvelSYREsEXRbZvHn4UmBSrAySLRi" + }, + "EEN-561": { + "exampapers": "1lVMJ-uHarjlwef-iqUlBQ9eNMBUQDyZa", + "tutorials_review": "10NuONWJzeBCwjStuQtleENTSV9ZK79Wk", + "notes": "1JvNbBsYjf6h2b33IiIrZmBQMI1W8gJ5E", + "exampapers_review": "1CIUwGTPK9VPsHVo-AbuImmgcLIhy-Un-", + "books": "1s7RN8KObFCKlcRQKmJwEpB-Yb0OkLzYd", + "notes_review": "1m1k48eWA3OHaOHadQEGGlee_EY8MA07b", + "tutorials": "1pkcC3JpHtObNQ_LclpjPZYiQ3_HW5OCr", + "books_review": "1PzCQZzhBoOw3Uj_tYaa9_q1D66auOQfV", + "id": "1JN0WarFBIjr9t58dcypqHJ-EY8e5lCzW" + }, + "EEN-560": { + "exampapers": "1aIqrSPRVx5U8zHkOdaTTTZyEvCxfy0xp", + "tutorials_review": "1jSVzAsQql0tLWY1ZPo0LorGYwAMwG7-Q", + "notes": "1w0di-2uEPa88Bzkjeg6fBWBYQqwq8F4n", + "exampapers_review": "1Rf2fUgJ5H9ExMkjph20uhB_jaFKUUd7v", + "books": "1XEBqM8SM6WjjFsYrg9mQLTuqnGVKfOJB", + "notes_review": "1R_M7Y-ukaIEcQmMnKqUL_tX2Q1r6iaKX", + "tutorials": "1ylPFNWoqO7UNK5S8zPJ480kbrZ5CS78_", + "books_review": "1sYzSWkLjzoCLqCWTARjmPIN4L7e4lEo6", + "id": "1JNWcIT_vlNvGKyrkAsBTWFBZSPKfvSgF" + }, + "EEN-523": { + "exampapers": "1v-bUXt2g9_-KGmQuRmjwVJt6GthDAHmU", + "tutorials_review": "1iG2Xw3JTEx8plbYNNFaDmMHrZrQ4N17x", + "notes": "1M91IKUgeKYD403yLyib5Zssv2WGK39wv", + "exampapers_review": "1leO8z2ytZ23GI-Dqz32s2FKDAhGLgJ3T", + "books": "1rIuYkkWLNnh-Zk4kZWctGxG2GYcjr_-4", + "notes_review": "1UAN87d-lHNgpAZWaH7C1NdBNKsxv3rpN", + "tutorials": "1BoJ_NuCMBW_YL3iEl5108uw5uFdJbm46", + "books_review": "1A66wl7tWhjlUKF9O58hkmEvdcgAQ-geJ", + "id": "1gdmOk0so3NggU4wbehk_l91JvUTy1YLU" + }, + "EEN-522": { + "exampapers": "1ZapCzTPWX3Gj0O7Uz7K7rfhPbf_QnJhy", + "tutorials_review": "1SvE1k7KfBxtvL6KjchYvVVLqPDOVligo", + "notes": "1B2--0kocIwWsskxVXt_Xi4tc1fKPRDcy", + "exampapers_review": "19ssP3PTWZk9MbIa1D1nbZC52Ypnt9Bsv", + "books": "1YGun1QwwDPO5PRJtN4EYoCN1Rf7ESKZa", + "notes_review": "1xiQWeX34EYBPelKxbMFbuo5XV5Fwcapn", + "tutorials": "1a839O__sICqwq8LzA4hGujrfIYHK_R7E", + "books_review": "1T75OdtHjZeQQVWf293h4PuG9xPJdZ7rl", + "id": "1r04Jogy38FoQS_g-O7mqxbRrDxh5VUF2" + }, + "EEN-521": { + "exampapers": "1Z3dvMI1xdYf4kVIah0xVUviU7qMZzkjl", + "tutorials_review": "1_r3tvb7GJdclMbbxFSkBpvNhVth1Ezpi", + "notes": "11kyaU6bWuytQMW2Wu9stpLUTIk0Ezq01", + "exampapers_review": "1VVczcaPZykDAWcGJHwt6EEPW73O5yAuk", + "books": "1wfYmF4FuE76I8sIV_GC_hkJmpwmbQ-A8", + "notes_review": "121Ekwzphx1NuvEQfCPq-Mflz3AJTkyHh", + "tutorials": "1CAxOutEBDwvY4J29yr7OVBQdaqEaPffq", + "books_review": "1Z0KA-6r1Nv8gdJd78I1hQbzL2YPgVMge", + "id": "1CQmKTNTAvmGkk0yQJ_ipMvS5TSz1-1l9" + }, + "EEN-520": { + "exampapers": "1Qd_00i4gF8YzJDsH3yHwAXNPaiI8LqX_", + "tutorials_review": "1BHKSaIabzQ6l4pH40cJD_vJu_eoBNOt8", + "notes": "1OD9qUxjrYehvv41uFsFg6McmXz250NRA", + "exampapers_review": "1IyTYF6uZoVshttD6CLLfNuhW_muZzmqd", + "books": "1cIz3_JKwmrFUesLVmUhihu_V95Bl4YbQ", + "notes_review": "1p0Uf1sDIrdHGkCByogIb-F6KMXUwf4oP", + "tutorials": "17iuzAXYBn-DuDdynDWg8FVg5eE_fkqGu", + "books_review": "1tCYWn-T9CbaRk4ytP6rA5WDnJ7UrMVKZ", + "id": "1zb4C8FRXPG2m7c9kONk2mTZfXxOLzthB" + }, + "EEN-689": { + "exampapers": "1Pvquvm9I5ShAB3RgvdPb2ULH4K9FS_D2", + "tutorials_review": "1hsRQhFIID-mR2-JTV6NhfCYvRoVIjnjx", + "notes": "1LsX-frEOvqMV7EK8XHXyjV1CDbZ0COyy", + "exampapers_review": "1lguwPHl5DqwEH6y2bqJAALT8nRqxMmQY", + "books": "16qnhuQF1o5-v1HcZron-uuXOyE5tLr1y", + "notes_review": "1mtPJfu6T7wm3VlZXg1i3mr02pA9S5rtA", + "tutorials": "1DqgdEfyBCpLkt355aAPOdRjCyBV38Ft3", + "books_review": "175ep38znOWj7sTIZaY4xbRudKhPq3PfM", + "id": "1GLUld9uk-i13O_rbyCZ7obQLHN00hb0o" + }, + "EEN-101": { + "exampapers": "11nNQMAPl-s4GY-jfMs6Ulg7rOKkUNpuQ", + "tutorials_review": "1-BJUcUo0s_Lm3hRqFqMHwXChiSfXrEZD", + "notes": "1imIV0KxMM7bw50VgBKiZJs8B0kurCS7B", + "exampapers_review": "1KqE44YzqlxUah18LGdDLlLEPS4lLBrcG", + "books": "19AeL2viuT2NPTaoFbxLgdPlHdPgI5qPf", + "notes_review": "1gZTbPNty8NuH9LGWUUy8wHSuEi_kbrrB", + "tutorials": "1HVxBEZhZspN83LplXWH5TMV66_FMbsSx", + "books_review": "1K6VVbtEwY75TGkzpVrFvVN0OXT1eMn0s", + "id": "16sU9v8s6s69ExP3lDOJpAf_P86qVquFk" + }, + "EEN-103": { + "exampapers": "1d7dCr0lipZnZL9pFzdOmqfSSiBpKXnYk", + "tutorials_review": "152w8Dbx18Gt9oagYr06MTnOhhRgT-4gU", + "notes": "1hZo_NpultuRBXRjZ00R0m2Qf8u7H1mCG", + "exampapers_review": "1hXeqe2ZJW56jZWE_7nQAGLGbyD4zfDcg", + "books": "18ZKm7GeirIvoxV-E9-zy8TRtkyXdG7kX", + "notes_review": "1jdTnOsiM9aZNZlMngj9NnnPTx_TzA3cn", + "tutorials": "1-MHTGwRjHa72cOSgMJD623wxP1uUxhq6", + "books_review": "14VfRGeOBOiObnaZtaLQ0GbG1e-WnmJN2", + "id": "1iGz80bwKzd97n5O2Bwyg2t_Ee2k_a5lJ" + }, + "EEN-102": { + "exampapers": "1FLgjsRUsfY7KjHidwDGA_x26CLaru1ig", + "tutorials_review": "1-58POViruZB9QUXtNpcN7Qhdl5nFczkc", + "notes": "1Sx8m-hx-pHAA0olTmAt2Sbwuq6fS3HuG", + "exampapers_review": "1gDl1og_eoqY1fIocrUYIqaAF-zwPByaN", + "books": "1y-KMfpiOiXX8stJU-Pza1x02wCpPOvTf", + "notes_review": "1rXL_le_FfeGCNDLagqkSxlklUMn8dl0A", + "tutorials": "1rCnRd0E3rvdjDpc77mZgvKINKkeDlDy0", + "books_review": "1j0TmYAKk9mRyz8nJTQeX4Ff8qfNQcNWz", + "id": "1GGykCzTkVpptoxgqWcadO-tINz1bwcjX" + }, + "EEN-291": { + "exampapers": "1wbQS9i51V7oD3QEmTRHZzxkM4PloWXiT", + "tutorials_review": "1PTDbmlZZMS8agl6r0nuNYTQE30tglmDn", + "notes": "1qfIIi7P2EUOTuU5fK0PRL1lwxn2LTFSM", + "exampapers_review": "1Z18hqEcEExR6TUN0V5KF6RjNGeRSOoNC", + "books": "1ClxjOo5JYd0eLSq52oZ9RJL2paAaosxG", + "notes_review": "1xwRZXrrGefrseGGMafbTUHTY-aul1nsX", + "tutorials": "1y3lwh93BLF3IhN99l99PCEDWEDft385w", + "books_review": "1wP1nMpolKW7hpZKVGdKG9imfTkpZcI7R", + "id": "1SbPBRw5X9Ls82t5XhUa4pBCulXf5p7Uw" + }, + "EEN-672": { + "exampapers": "14xJUGwJ3PrPCKkEkCp4ZVVsylwyMs957", + "tutorials_review": "1bQ5vJfIw1Xckppm6wFQKtKp44eX-tZp7", + "notes": "1L98BECSYyahJrDNRfsojOCLocu9Lcv3i", + "exampapers_review": "1Qfmyiw_SY3bA6qvDPnIyzC64Hs6AYhmy", + "books": "1KxWJB0POp-s4RfG0LyUg2RtVRQ5vyGw-", + "notes_review": "1O1jtilgzSa3DdYIoSXXVNXOUd2yUHUtm", + "tutorials": "1zjU23yRhJ8RIZ21gYOFzxH7rE0WfPsDk", + "books_review": "18TU3ruKET4wFCH2SjtLuFLhw-vX_-Qj_", + "id": "1qQZSu8t5dWg-koTD3jmJqLVOMjpc1iD3" + }, + "EEN-356": { + "exampapers": "11ZB0Uhh_IAbCsyFvpR3CNjhey4U8VVTs", + "tutorials_review": "1TkrXX31A06im8pqW1qsON69pAk44Kari", + "notes": "1GtoyacIrLKlAsMaDoihl7y0Mu6_23mCo", + "exampapers_review": "1KrEX31NsMQ6Fcg8igLGgdgQlgaI6gSIH", + "books": "1zns5p0Vnlvh0xJ9Lr8IhV52itu-kxMop", + "notes_review": "1RcPglNlCmF9bGFaxAOHFrkm_5Zsgg7Hk", + "tutorials": "1R5rPvoqQJE-gxGB4QoqK2w6rPrk_pWy_", + "books_review": "1FWacdun_KdpvaNt-D5dzFnk21IbM3rZJ", + "id": "14hrx-y_JJ598b8lR33f9bBwJMNSUWAK2" + }, + "EEN-351": { + "exampapers": "1WE1CvQFu9MdO215SDrkouKhkD2o57GqM", + "tutorials_review": "1CapjuNvKwVlTjVOte75aV_DN7Mptqmg1", + "notes": "1aFbGbD4dsLq7OC-s0L_rDCI_SHrWuoqS", + "exampapers_review": "1M7w5M2V6Y_fCJfPhR3swor1vtBbuAIwq", + "books": "1jjD53rzb0ZLjDgUjR22zVMhT0j9H6g_t", + "notes_review": "1MUc_5yS-esil1U2E6w8Gm4tO1HAPTwQH", + "tutorials": "1ShEZsDU4JOxU1kJjVqOY12DqCPmHhM8O", + "books_review": "1DodSaSq2UyUAGRMPF6f8MQPzGaKPs1ub", + "id": "1iXuTFkUlCszyI7HtCel57PoAIh7VfyFQ" + } + }, + "PPED": { + "PPN-515": { + "exampapers": "1BT-aNmDeNyR2BiDIAs8FdfV0gaeweRm9", + "tutorials_review": "1oh6V25XTuZHlIiafSWMDulcbzABp1A_e", + "notes": "1NS-FlLHpInzhtKX_ab4M72CoNPJ5rbA6", + "exampapers_review": "19uZ15sxKxwMEEcrMiBhkDlcWfRGstvhU", + "books": "1OIPZp63dcUgYuNjf96nw6p4QwiCwCIvG", + "notes_review": "1CtY8h-muJdGD_SKGPqgcYUwbs6lAh26h", + "tutorials": "10bEEnWBu9lsPOJJc53mn7jsr2q3jfUAY", + "books_review": "1WRGgSH3rgMdqbGORBH6FCp9cvE6j5C4n", + "id": "1aznoJaIaQludSs3XJMRJRwl9l_WOvLhb" + }, + "PPN-505": { + "exampapers": "1ECEqvB2WI7FDCfHGo7NXwKmAiryHVr_Y", + "tutorials_review": "17GewaN6xPm5LT6rypIBpKYQ9SCjcIllI", + "notes": "1hGsxanQxQ3wmYCec2Is7zypoVimeXn9O", + "exampapers_review": "172Q-OS7iKnhz--6Brp2jPAIfINnjzNdi", + "books": "1wMyTC_c4Yulda1r9lAJJ9F3yxWiSjQiq", + "notes_review": "1hGJ1K-Is3e4BEp6kjqh0Y-j15aRyN96D", + "tutorials": "10B7oFPNxX6VMRpfSZlCJ43zP-W7F9mOT", + "books_review": "1zIiPtKmzcDuKbKpI5zodUp3nAwziAac4", + "id": "1vM2_uBt0rDAL1AQZPwrR_k6LbeTgUplT" + }, + "PPN-503": { + "exampapers": "1g1Ll0aR3tttrBqPrgpbk_X96jSICIJCq", + "tutorials_review": "1kRvsXvAfW7I3FGRdlrVcl3y2mS7YM_wj", + "notes": "1uHwfk5UnIlvYy-geSXV63y76D0MJ_Vor", + "exampapers_review": "1BORfx0TrQ3bWdhIFgrhsq2ryt8uwFhdS", + "books": "1Ivr6pB1y-jbt7p6WECPkgvC9DdCrl7jO", + "notes_review": "1Knlj8EM-1i1XjCYVynKyOXLOhl_nFIJo", + "tutorials": "1ts1LRyfYC8YJIkvmHwk0acjQpHfSBHpY", + "books_review": "1l9Y2cRE-icjOAg90hDWze4gYL9EPxhlR", + "id": "1aU7w6xI0wyNX8AD_Qr2z4F6pC2-3fsxs" + }, + "PPN-501": { + "exampapers": "1fOz1Mps4qG5HVFHudZAio0hrwfwFd4vz", + "tutorials_review": "14U1Di_VxWiOgS0eD9zX5k-lyIUPywi_J", + "notes": "1HF2svO7qG8Cl0wzmXKRcmz3OHQ6f7m6A", + "exampapers_review": "1SUUjCIx0eF9XsZMd2efvtf7UOHpWwtGp", + "books": "1JP_dnGLZAH-SMfGsucYIS481GjyRmY0z", + "notes_review": "1_Y6LvYeFQyyIAdMuYXxDOZ_IQkk_YVH9", + "tutorials": "1sT2sJu7sdxJMSfCwDJdlRAoV1G6IHpY3", + "books_review": "19CsGTeinE1zToUmggVZ1kP8Q0RZXNNzN", + "id": "1kKsTO-6AfG3rXwJbqYCkJp83pIjvldjg" + }, + "PPN-543": { + "exampapers": "1OJViU4cZmIf-3xK_zewVYxnwgOcTtjPT", + "tutorials_review": "1MS4tsXPmTCEaV6qLrqiMCsmxmtkLWt59", + "notes": "18C3aebGldRCYFU41bYwYRf8mtfw45LbS", + "exampapers_review": "1hAdZtPIQk-BsCWCi7twMz3vW4hAn7cAQ", + "books": "1zEyBOsUZ7HOxsch8V96mns5w2k5VIMyt", + "notes_review": "1IBYE8PKZNtt-_spUVdtGim2qPv8r-sAH", + "tutorials": "1MKM0o1gtyY2JbTI1sAmBoNz5oLLKGsyL", + "books_review": "1Lvz2tfCZYuJzU28AFItdNEMQ6fBSKNSw", + "id": "1nu4-PMrkGo_z3yK4ZtoGRIHIXc5Mds3e" + }, + "PPN-541": { + "exampapers": "1rW_HOoLC3vK06nY7m8UuDwelNgrM5vw7", + "tutorials_review": "1pUQgIw_Xljjqb7u0YmuCrYGTg2_HBQen", + "notes": "1Zb5567awhss_QYW1QLlj5xeg_qCJpfmd", + "exampapers_review": "1I5Hb7JD99W3p5LRopjif5t2htRJOBdB6", + "books": "1MVz4JPI7cP-dAHaWD8IjmQyxHcjy46R4", + "notes_review": "1nTUt_Y3Cxl6lgAX8QzbZxsdTki2MSySs", + "tutorials": "1TdWhJjIQlm0MqZjD60mHr2ijHzCHsrAx", + "books_review": "1Z9B9PVP_1c7I0nwTswUQ-A69Aiahg0ec", + "id": "1gAdhEt_QtHe3L08YouB184cw9Hodw_SJ" + }, + "PPN-547": { + "exampapers": "1UFjFiSY5TkgCQN0wsTNro-H57PFqd46G", + "tutorials_review": "1AyhPx2vI_23FkMX3eahg7m8Tp7a1YmEl", + "notes": "12V7fhVmBaFzMfaq8wgzrRzclY9L5rR1o", + "exampapers_review": "16JsnHSHuL7OV2XEUxWcuDvaxRAZDjUnR", + "books": "1qLfLwDZBqq6xqO6inAC_GsCMjyA_b5tO", + "notes_review": "11IOrMQWq-NX8MCoRzRmb6idWaISTqSdV", + "tutorials": "1ME6tVkj4DQoyjDgBp0TIJEUzSGSmm_zR", + "books_review": "1SXrGYS2wRukdu98Kmc0FKBFbmWzk0rI6", + "id": "1prfjlcOpHmkOVyPQ2UZepD6U1VyD907K" + }, + "PPN-523": { + "exampapers": "1_QVcFdmRquxnAvzk3zM4XO1mNA0Ry2ul", + "tutorials_review": "1SnW7e05iYffMC7bvsOXyDAr65Z8ntkOo", + "notes": "1kZLTjv-xRIaKbnitpyYl3Puv_sBZtMpF", + "exampapers_review": "1ASkmlDSdBcVM_ZBT7mrFxS5_uGYNX2B-", + "books": "1RcfgblqewCJG-pYgzxwfzVrc1I0nXhwM", + "notes_review": "1qzo6_nIIToC_ggZWL1kqV80WFUwkpsKA", + "tutorials": "1rrBt7YGjQZdzTXSqKxc3zjfCfPFok-u7", + "books_review": "15QPtgfXCSqXilksLdcWvO5EoPtNVxwRs", + "id": "1me4ZGItjUpA4AqfpDReuDLDsZ5DGAkRP" + }, + "PPN-545": { + "exampapers": "1s2OWvKSUY8zBRBqciHvGt0XPCADNG7VU", + "tutorials_review": "1-iZJIesXRiOcfydRV7WWbufPBJX-QmXa", + "notes": "1WsUqUY-gy1TyEWEu9MCDoGpkqEr2Z8tx", + "exampapers_review": "1owh0GEiL18qo7_3ViBaJUDN5yKvv84mP", + "books": "1YSHqZeIQw-G6JnHtgiwsuWu43UBjZ6H6", + "notes_review": "1TauxBGbV87uo8-HyaCi5NowHybHwC_F2", + "tutorials": "1Soby2wlQ0zs15TN-W7dGuEUwLBcxUNWW", + "books_review": "1g97KAiwROhJi8TlRn51ZJZB9hsfsQJGq", + "id": "1cIjbS-9tRXxWU5yyW70EJseJ6tNou0WX" + }, + "PPN-701A": { + "exampapers": "1B7UezfoWk_oKrqgl9ZfHB1iOJu3WPIZT", + "tutorials_review": "1_m3MQtXga9P1xU068uSycl0GW-vk9W0j", + "notes": "1qOR3rO6WPYHLBFM7HYFISLPd0shg8ZGA", + "exampapers_review": "109G7zS8MkjoYb0AcG2ld2nvX1Fo8vrK0", + "books": "1vtodLU9Fjq1hQFuqceAr8dTxsaEirzL8", + "notes_review": "1HddTrpd468IayDvR_Ti19EJVgLA0j4ew", + "tutorials": "1O1Fy-33nimlSNZvNa8cOl4o9MsDTri3k", + "books_review": "1lyCmrEMni0uoqdd9QLKGSwomvk5cty7s", + "id": "1eAYKtfGe5QxTpuLsyO9D2cuFPb4kFTSY" + }, + "PP-545": { + "exampapers": "1gfgMDrAFTnuNK69qunfVsw-BWCgCCTBK", + "tutorials_review": "1ujWSYSFGYtguc244CEVhn_BVEHvHBsbp", + "notes": "1qEBLIWYgOwYvKJgElb61YbKIU5HR6lJs", + "exampapers_review": "1Zn0NFrvPCvs9mPjbtn3P4zmgJW9MMi7Y", + "books": "1aw28U9tUfS562z32u2x_FZDn0g4KbDKS", + "notes_review": "1qtxaJ3hctoPuAKEERELV0MypIdIuzti-", + "tutorials": "1fVP7chHofBGBzSECAlKQvPN7Z5twVQv2", + "books_review": "11p0oJL6oz5FaktWC3joXAvKA-X5WK410", + "id": "1LnPz-v-kRAoj5bzFJM2eiWhUglbRV6vV" + }, + "id": "16GHjzR2jz2SGAeM_YkbQ7CqVXIS0HZcz", + "PPN-700": { + "exampapers": "1ykMUgi5uKoL6wq26JRnU07ai-GPO17fV", + "tutorials_review": "1f9IW-dxzzajL7dJBIA1A2DdJA0tINOd2", + "notes": "1Qjjmdi0CGTGTkg8IVTgyCihgLRKAnEyy", + "exampapers_review": "1gSaMpRKN-CJsSiCD0kcrHDj4oaAjtWW_", + "books": "1-2oP-gAzaN3DgAiSay35INREK6h_nPFG", + "notes_review": "19gBMRbFiswj6qH-t-4yjm-UTfNsugXK2", + "tutorials": "1LTvALwIl2LWBx0bTKZRuOF04Lt9Dz9Wd", + "books_review": "1aOY7oPr7kBggZjpP_5h8TWIcneElaPk1", + "id": "1DExtxb2ZyF9kehnlP3GzzBMuZ3NrHIho" + } + }, + "id": "1cAvSUkbwjLP1uSbA27fYQR6QJf7eIGx6", + "ASED": { + "AS-901": { + "exampapers": "1OvdRkgdRw7_Rwjvjd1yaSh1PlP-srdR8", + "tutorials_review": "1jF0LIA74aumhPTPpZxZoGIcc4IFxM003", + "notes": "1tVa4k-nikJO3i9B0j97d02TJKB5x3ly-", + "exampapers_review": "1hRrC-GMX3IZzKHXc5EHcCUyb_a-d94YU", + "books": "1hXkfjLYtSsyuYFO05R0CaUW-wv_JitoS", + "notes_review": "1LiWsrSQQC2r4PneJAS1PswC27TFBp4xr", + "tutorials": "1y6_cT7nXVVNkgP4g_wa5b4ckZTU5VqpO", + "books_review": "18xh50nS98-aWZzY4tCb3GkwKQsZA0B-r", + "id": "1RsmzF_Mvqt2ztwwP1Hyytf5wNRevx1aL" + }, + "id": "1UCJMFY4XLXk0iWKNCc7FBqmVhgXdgz0B", + "ASN-700": { + "exampapers": "1USscuaiBk4FV2dtrTF4qVlLD0eT8aPYh", + "tutorials_review": "10_jinxR72AICxTBNtKd0-XTG_wkTuR1H", + "notes": "10kq9gNp9ITzMgC90nS80lGhwXVgKcBiV", + "exampapers_review": "1mLjHeq0g-ncdfJtzSLSjU_Urk_HkxueA", + "books": "11k4ux3pi_Z40Zr_RXXKeAn_NFssLRlv0", + "notes_review": "1MDeARYdOP6D165ZEmvME1-yguZe0j6N7", + "tutorials": "15WGYyIJgZYbd0Nrl30hgYT1KlkDv1LNr", + "books_review": "1Donu6a9oDjjc8I9GV_Pz7PrdR4wRcxaT", + "id": "1Y2KeFidnqMMKqDNO63vVBqGsPk4v8nvK" + } + }, + "CED": { + "CEN-392": { + "exampapers": "1ypZB-385vP8XQeME-5gVy2ZO2EI-fHto", + "tutorials_review": "1fmo1GJQS6oOQEtXZAWF76dKoS5mhZpKb", + "notes": "1cL000Wcez3mnBlS7ugOCnryTBtXLuzfP", + "exampapers_review": "12gj4hta7WXZfURrhfIUVXVS3Kp3fzNDP", + "books": "1PvyXcyh_FcvsnS87QhZl4xt_woN8szT9", + "notes_review": "1d8TY_0fpooaukGnOhfntN0wVtGwNvbUd", + "tutorials": "1ASexJfdC1aGhhUU-weh6D6iQ48Dn-7MN", + "books_review": "17rZvgn-b9nyHd-Cp3XENGco90PVnYNi0", + "id": "16Z6jfBIXR7e6MiMlnDftLRuz0HhFKIJY" + }, + "CEN-205": { + "exampapers": "13LckOie1mQdjxhpSRy7eT4W9It-K10wP", + "tutorials_review": "1cga4vWDIKhXIdLAMOK9l-7e7xW2a0beH", + "notes": "1zBj5Bhg5GwwNA5XPshPZJqDphB7YlZ8_", + "exampapers_review": "14ILFkYaYsCIanJKJkQdk3w_R4LOHEyAg", + "books": "1YpjAO-9sef9zTrjKA-yJKOthupQWD9l4", + "notes_review": "1-m6UJbyF_IrpHZoNrJAlu-gsbH7kOY1B", + "tutorials": "1aUETmJ-CNeNYVNM4wDMVkGnTF8maRK3C", + "books_review": "1a1WotYKr9u8L6RXWWeId82m7dfL9jFNw", + "id": "1rexbBRClRfUHfRgGRK6N322Q8it2kWMA" + }, + "CEN-545": { + "exampapers": "1i7EVVmEwf72dhF5w2vdEljhBDxe_cZic", + "tutorials_review": "1kJxCMTTCKJrCJHCQfqg_BeKg4Q_SZOiP", + "notes": "1hTf3gX1iLeXqbfAhC5rsV2CpwoUgvOtU", + "exampapers_review": "1nr8WHyHiD0ZbHAYpqXKgyxSeq3l6fL_h", + "books": "1Gpewkwps1JDUjhfbOE-dx0gGg2HaGnjI", + "notes_review": "1bgtK7N8Nu_dqiDcWWjEY3FnMr3dt4oVx", + "tutorials": "1Lnv0g0S9-OzEt4RCOzwZBWR1XougRGak", + "books_review": "1cLndWWY5efeFd_SBP8aygFsVB8S0GGe0", + "id": "1hLkU7TM5RlG5rqV-nXgUVBpJB04ps0ni" + }, + "CEN-544": { + "exampapers": "1H7dSrqoO1ZUpEI8duS0RENdtzQ85uHzg", + "tutorials_review": "1L9zv_F5hv4QXbTlkyNpR3zgn_AeYV4db", + "notes": "1bLGssFKwDruZXUv2qpVhQSO4A2uZQbOm", + "exampapers_review": "14WABS1Xwhxf1kg-G8HPZ7edDj_sSI1RY", + "books": "17kD9DTpMZ1gY9Fk8imxhKTrBAJGg6tHJ", + "notes_review": "1cCINBYTTnDaf9Eojb6VS-2BF38nsMzDz", + "tutorials": "1Ku-_IEkaYwPYk1NtsKd8u4XOtccVdUb-", + "books_review": "1e0gOv2HXcusDy31eDEgq_4ZI6pxk04JC", + "id": "1Xq7ZoSb8MFq1fyq94C0lDobiS74kVju6" + }, + "CEN-543": { + "exampapers": "1UBbEo4R65hu2SqcfZkl3pZtAGlIshT9H", + "tutorials_review": "1Y9v3qQNUTjAXTOczfXK3Z9toHo6um05m", + "notes": "1YBruIBM6nFPYYs75x59oul9PdDD3JwDQ", + "exampapers_review": "1xQYOj0vaM0PCTkfPGRuy5d8DkvAMaeEF", + "books": "1ceH9CuykBZZhYgxuzxHzJeaso05Zkim8", + "notes_review": "1ub42gc3MBNLtNFvTKHglWSzXJEzwWMeW", + "tutorials": "1q4yp1Eo2Wrjbmfl70GVI8lYu-0aMhjyJ", + "books_review": "1hlMXPnakrVhGDKmsnOuy2l-d6uuWfH5A", + "id": "1HykUZJc1kksOt3DYxvAGVvUP4v67rQHJ" + }, + "CEN-564": { + "exampapers": "1MDT4cADtKm128pVYmZpVvDaBNyAteNyZ", + "tutorials_review": "1Vhnl7FaDLdXhFz2Wzw5f7L8XTnFo4dEP", + "notes": "1tUvGT6SBzTuLDLQ4uaDVXPTnbo37OOky", + "exampapers_review": "1F2OpTDka9goxIxtTup29aBORaoo-jzac", + "books": "1qFNS2ItkO1RbiPo6lfWuPiGnGhUJ4O_F", + "notes_review": "175sLiNAvRqqOQsjq2qQhBZkTDk9SIIhb", + "tutorials": "1CYlAsGRhV9WDG8dTP0B87mwUpuO4QrvM", + "books_review": "1Kf_E70q9JOjeoHbm5q1JgfDH5llvkr5M", + "id": "1vnj6XpePuR4XNHk2sy0w5P_lNETw78qz" + }, + "CEN-541": { + "exampapers": "17MQs1elseSxgkP5eJieqDB3J-7jNw-bX", + "tutorials_review": "1REU0cAamsoKMNLKdaso22q8id0AveZEa", + "notes": "19NymHJ-anEbWgoKBtEutsW5QFjrhbfcd", + "exampapers_review": "1Cq7cfp7ngQRHElE-tJTVoFi2SLhzT1Vn", + "books": "1ASmQCN3Vq9TJQqkz8HPmW0WUPPlK-WWu", + "notes_review": "1zKuHV2XKIQGtaE0gIHD8VKknhYKIOdR1", + "tutorials": "1OgbBw5ttHCScGAolsXzxTBa4t-FhNW8-", + "books_review": "1g1j8pMv9A7m23x_9JBC7YZm5POKa6xuq", + "id": "1i754QeZZz12pis7KdzdXxpN_dwLuq9U5" + }, + "CEN-203": { + "exampapers": "13KB39dXNUxXUXcJPo_Z25cJRMv0HZGti", + "tutorials_review": "1nGQyCuhg9ppUIhwwhxzRLbWLI_Jr6Fn0", + "notes": "1wnWjVzHZs8CF_jBGt6lNX5ftbSIgeSNL", + "exampapers_review": "1bsWpz2PUMbNWAEx_El5VVQxktF5E87e2", + "books": "1HYezyu3nnuQ_k_qx9J9NNlHJCoLWDj3j", + "notes_review": "1p1NT4iXqZ9SlTy1P4K2Tqf-baZU5PVwA", + "tutorials": "18Lux76LONHp3-RZBdIB9AoGDTjqCATSF", + "books_review": "1cFptCpXcVjlhyEb1cqJDrYBKsgt8DLUP", + "id": "16-4eKJTSnmzAW1cU7n2DV17_30LRF7H3" + }, + "CEN-503": { + "exampapers": "1qSF7VZSzcq2SmwzBNFlKWwJ5q3JpqGWB", + "tutorials_review": "19rbAzrqQ-NwkzbWUrm9YOHqjBgoRvNSS", + "notes": "11YjDK_Ai4-HFnHO0gtj8UvktAdYvG8gR", + "exampapers_review": "1Iqwiwo6tphJeQFsS-J5XjZjrAqCLyBQ5", + "books": "1meZP-EgQ8lqOILm5CT-8wc90UqtPlels", + "notes_review": "1MCPJ_XG0gK91cv_Y4-MoV0zLiwAHbuY-", + "tutorials": "1_tfdOvRrlULi4Dc5k8-3s5s5c6vdwwxG", + "books_review": "106JRgy3NxaCV3sUULRAOvaaJd_LPjQ9T", + "id": "11N3TxYKK_lG-vyfn-7wQHgkbCY6KY-UV" + }, + "CEN-421": { + "exampapers": "1sIoXKNnxLpKOnhsFgueuSKxPmLog4ioY", + "tutorials_review": "1c68v6AEzGTKRRq9uBgwW6ol6rk-vi5Uv", + "notes": "1Utd74NivLWkWC0sUnrVSy9amhyWGTNs_", + "exampapers_review": "1VmR-VLuaSyU60ZHRQHvjg-mqSdqqItNI", + "books": "1mIv5WqAYU_L_a0jMJtHa7POrKt9r9Z5y", + "notes_review": "1lgve5AAi-7CZdw6FEjUVJUzkb1yr5zp6", + "tutorials": "1d6-vE74l7X95Y47hDLLXXdlvWE9nNgv_", + "books_review": "1Zh7v_9Pf7xc2AAvqFAkVG2z5aZFOQgXj", + "id": "1JlWJzpwvivzREOuQk96uQqFnCK0rmGnd" + }, + "CEN-501": { + "exampapers": "1btVis4qJPs7qQLcxOZuj7szjU7MJgjwh", + "tutorials_review": "1tev0IjdxlO-VrH4xJNgrYw6wmp6uZa1M", + "notes": "1kr5mE97z1Blgqvq1NwHnJJLr4MA09qZ9", + "exampapers_review": "1RBWBmfwdwPsbXfvglAZNEZXFpsMI869B", + "books": "1_T-zxZrRvdOQXc2DUKwSOOMhE9oF7OYo", + "notes_review": "1yCV8UCexCIYgyyTbpbcPU4u_LenaFMCN", + "tutorials": "1ydcCNchG0HVbGMwL16M56PeUyknqoNkt", + "books_review": "1XFJIBXmXmggeSOLy4Q5AFg9rWqSwxcRz", + "id": "18r2WSddcr-Ni0VRcsC503kxP0wBY3N1e" + }, + "CEN-563": { + "exampapers": "1EOtM9rXZSHtWNSTr4X_GapkeMQOcBq_s", + "tutorials_review": "1b1akY7zZPE9a_33y6HlENy2OqCetnstH", + "notes": "1CZhgxyFo4liH7FELsEszas5uM4BzH9I6", + "exampapers_review": "1mRWpuVuMThCP74JrPsIOOSiINz89u4um", + "books": "19kSd-KW2AvhQJfX4ikLgpCQusozcdJUV", + "notes_review": "18RmmofqiSlmg5yh4dQHuPyMa47ITNJOO", + "tutorials": "1N201yWc6z80DEKT_XezrTFCsjNJp_Oau", + "books_review": "1gvJ7RLfNGkQY1zwevnm3GM70ybJhsUba", + "id": "19ZSGouEPsH-4KPyqJ9QaEiVrxoFuv1sQ" + }, + "CEN-505": { + "exampapers": "13gKRdwFie9ETUl9O_29n9GAeqiHrHUfV", + "tutorials_review": "1RCWVKwppZd-i7Hk_k-zmwGFJahi1qjuL", + "notes": "17swZwbdEyF-e3Jkczc1Ns-IafrdjEcnm", + "exampapers_review": "1FDz4JGQ3UgSFMhdfYtGPEhXzNYTkGcvP", + "books": "1tQ0ip1gdHsdQUUsoAn5wbepbrEcbwNSF", + "notes_review": "1ac4N7QdUo35TfgeYe_S5j9LYz99p6e-8", + "tutorials": "1tV6H8TwROTj3v9M7K3KM3GrMwcVek6zT", + "books_review": "10As3Rpm19buIk8ER0ZYMyRkir3WCVEZH", + "id": "1zu9023mShl13jJLw-85QTyVSRCygs2vZ" + }, + "CEN-504": { + "exampapers": "1XyRbkY1rOVvQyQrGE-ZZvavBfJFJUUNi", + "tutorials_review": "183zNXtIwTSskqQtlxhJteXlF1iM_LOZ-", + "notes": "1hxRkT6RKs0amE2AxnE9Pc1dcWlhBi0Q0", + "exampapers_review": "16pr3SzZLDTLP7gmzKjRWn0Vazgfh2V5V", + "books": "1CjjeQyh2YzikumxLiLp-aevvIh0BCRf9", + "notes_review": "19Zx6MWD8EOuUuyxhNceixwjlDiFjW_Q-", + "tutorials": "18bmJSIQ0NGOUsEgio_YNkTiMx9fKLGjL", + "books_review": "1RMpqyhFf8KgdofGD3MeiDJInP8BODpoN", + "id": "1HADTP6PPYjS-s6PdV7jTSwo5fsU5GAzS" + }, + "CEN-502": { + "exampapers": "1D9g6TBkaxRQ4pcH81NRfgtHVyo9OjLoL", + "tutorials_review": "1tlaIavpT5dXhMNmZdSnP3YVc2pUncg08", + "notes": "12bysORbsOAreoBbXEefIt4H69U47zrzT", + "exampapers_review": "1EqOMAncfvUgEd_wltgNol4gK55zx95qe", + "books": "169X3w-H5GRGOq4hPvPcYZRe7cnQYocTB", + "notes_review": "1si6cVYuH_clU6IjaXIX1qWOaMwDG_Ir_", + "tutorials": "1ut-y3sgXaWA-jmu5DTpKXdgAa7NmwAtP", + "books_review": "19OnnmAbhf7ETYaaDzlmfwicdhswZLBqN", + "id": "1pzNQzzDDVRJ14z7_xqdXmLEvUcnNiRTG" + }, + "CEN-207": { + "exampapers": "1nWANTgjnge6JttIXdnWPYkmFNOyy7H_X", + "tutorials_review": "1wke6uB8rtyAa5CjMyj3C__PgoPx7JCga", + "notes": "1ez3uas0tGCpBfmahDBoPcQL4EE0R-hRF", + "exampapers_review": "1QFT0PDFi46yuaneBnKtzdeSt8OhvCGog", + "books": "13IfTFY-7qcUC-U5DHiInqMaKA2JusK96", + "notes_review": "1ojtcL9BzMrKyefSzihWSfkbpbBaHn0lr", + "tutorials": "11iY6PgXj72ojY3Fiws2EOA3SiwUdjjvB", + "books_review": "1j_eNKiw7BI-ZBoJJ9El2ejiiY1gOVc-J", + "id": "1sS4H9ZNVv0aWxJXF0sRw6mAIqCINwOQc" + }, + "id": "1t7B52ozQbRwk_QpZCKYIu_Ivl0iJkADu", + "CEN-542": { + "exampapers": "1DiYGfhNScHJDWPjUelF74SOvPpX6XTgN", + "tutorials_review": "1jHg31kKE95SovYBuXyX5DQmk_Bn59EGv", + "notes": "1dubCKDMnZEm_ubx-zyBbun66Q_bb9XNE", + "exampapers_review": "1gFla6sMVY9AEX4iIuKcwdALy-0aESzOo", + "books": "1Msq_PL6kE3cQYN30MKB8OrZlEQK5rLZF", + "notes_review": "1zvQ5_cOH3eOQQNMY5YnIrYbRZuhzROIm", + "tutorials": "1S4VLHMD2PEdocWtFkfxczKUvZI8JnyhY", + "books_review": "1tmmYFOwHWwZ-oDntPo6tZyD4ZWWfs8aa", + "id": "1BbGvVBRckBF1moGKnYVF9hv8Dv5WD0R5" + }, + "CE-664": { + "exampapers": "17kU48K3bxQ2Jt8u9xUpZAGO_2FtTKlcg", + "tutorials_review": "1xMrulRQv0XTb40F2gRS-grD0tf3iU-HE", + "notes": "16RwOF7fUKk9_xBjA1k7ALj3UYmkpHEOC", + "exampapers_review": "1Zv2TlYTWr5ZSxYnKToscINaJTOfQTIDj", + "books": "12dGHLN3uTxrFWbExawEVH314baueJyIm", + "notes_review": "1b8-AR-veXi9z-yeaR2JQR44tYObZCbs_", + "tutorials": "1KVej6Kd5LQ40ykideVqXSrE0zpUgv4wl", + "books_review": "1bJTO0bg7VM54q2iN0-TkVwoF8Szv0pNl", + "id": "1Lf8n3235OuZBIMo7Dj4q360ILb3PEYZk" + }, + "CEN-511": { + "exampapers": "1FV4VhCKpLMNC6t4A0Phr608BknIcESC6", + "tutorials_review": "1od-R5zwg_bURr_psVxETOPL0sSRgeqfZ", + "notes": "1zV2CCC5_KYquAJOfSJ3kV_S04mIlrdCi", + "exampapers_review": "1K-nRoCnoPOG5aG_OeDdsKtbUGBi9yxG7", + "books": "1QU_29SAIrF8EGHecvjUEVYvnF9T0PlSC", + "notes_review": "156jNEnQvx1Zx2uviVl2UPCxRR720ylbN", + "tutorials": "1SGUO3Tcdyq5PlHf4saKcfJHHpD7SN6sM", + "books_review": "1wvIur4CWznCnHhh0Khr5XerwTA7MJZjk", + "id": "1F_XyF-Qj1xvJeTQbuM8QsKZlkNpQLKXW" + }, + "CEN-499": { + "exampapers": "1kjh9DpI70iUzpC4jijGKva0T2fNoQXQx", + "tutorials_review": "18rgZzQHP_NLecKnSUyByqkwDrtrMnkiS", + "notes": "1dTWl4_x0ZjXPxMMBH_Sx_ePb5C9Cxvuy", + "exampapers_review": "1sU5FE9gitbaw9Z8QKqHDyZKhSowGvgcj", + "books": "1H5ItyZSdZW3WqZ_PFSF74B1UhRNvaPzs", + "notes_review": "1TIOg5EON11yw7JLwroKfUI5RUnFWZYK0", + "tutorials": "1m85J2WO4UPKZ8Zcpkn1FTjTECi8NrO95", + "books_review": "1yjuREmXrrkDF_KXtUwFYZzN4S2T9kuMi", + "id": "1JCaKbhDHuSfqBgsTvtaw7rpy8n9UPWpz" + }, + "CEN-202": { + "exampapers": "1LKj4ppopQW6o721gRqI7tqOiqmIB59AN", + "tutorials_review": "17D9HpqiOOCn6SWE1uZ8m-JO_oeVdkOQv", + "notes": "1qzldfjbLOC1i1ledIy3Ov_v4cbvrZGo_", + "exampapers_review": "1PguDeglzmvf5NrIeflV6hbTc777YrCx_", + "books": "1F3stP6p8gxD0NC05JOyy55WoFAoesQ6s", + "notes_review": "1Txn88_uNu9odoEyLVngyXxJ0mgrBJRIX", + "tutorials": "10r4Vv7i1OooGWV2A2Id7J2Kec0N5sd4I", + "books_review": "16xXB5PaVDdHBQiG3EujBVEAib_cLqta2", + "id": "1dtNSWs-5GGu8PuBAqIywyhNinQVzpAUo" + }, + "CEN-532": { + "exampapers": "10AIcqIRSOA4-5JuucOloRi4zHjAWflZH", + "tutorials_review": "13YLgVQW02nJxQuLWqpixFM2AwXga_RFc", + "notes": "1Z5IBvtEOJXk3uJwmEpoSglF2YweXFPIo", + "exampapers_review": "1hoR-jRpcLpMt0LDrOuUTPqFTTpsGhwa-", + "books": "1SdG2Er0e-KAzzKv_YbrTdVmIWQGSa1ww", + "notes_review": "1_OkuaGG26u3VJwlYvjtJn7wjm6i0pNev", + "tutorials": "1cWBOI8sJLVnCwBJxihBOy58fzY_NFsiY", + "books_review": "1DJ1ZYuVYNsiWz3HM08k253ShO7zOqXd1", + "id": "1D-28bbvigsC45OWHtUvvhiBi77Dr1si7" + }, + "CEN-533": { + "exampapers": "1MLJi_gQ1iRYCrbgOkkh5UDz--MU0gty8", + "tutorials_review": "130cyl-92REFpneoiMgl-O661CFYHvQLs", + "notes": "1jTF6CJvQ1omOS3uJoxFlNpx4vCvIEKli", + "exampapers_review": "1iWQydwmf0KwQ1vC6WfBbHCjOKLOMQTZA", + "books": "1wtQBIfsJDkNJGPGGiCFx4QJnirpbMumx", + "notes_review": "1yFpDScrV1b2K2cCFNJikVJZ9C5kDw2a4", + "tutorials": "17v-I7yy15yjW43DEsXNqeBwxkb-uzeJj", + "books_review": "1_NYUjuZeolwDEh6yMcS_Eky3eOrb8RJ4", + "id": "1gPhjz6RVXUMG5OcME8jwwcoUoEhWkjFs" + }, + "CEN-531": { + "exampapers": "1jn7wmzRhudTBaKjnIOACS_RSd25xK5qA", + "tutorials_review": "17Ok63PDu-IC_82vci5Z87jGbLdyJai1J", + "notes": "1ZI40hX6xqvyDh0_2qqObCZ_nUKZNnhOd", + "exampapers_review": "1MBQheP4vxu29G7P02-kKPFhkBCpbW7-n", + "books": "1Knttz5alEKVOMWikmXCDYZcCVI1DMYY-", + "notes_review": "1mR9jQKn48a9Jg6qowUzTfP-Zw2p9GTk4", + "tutorials": "12X0VDQF4tOmDhfldt7sdXp69KoMzRydH", + "books_review": "1eFonD2K6eBdzF47fImPcwSoLuqDzNdnW", + "id": "1JwAgDWEatUQKC6zmFxsiKQxYojj4lGYf" + }, + "CEN-534": { + "exampapers": "132-CV-_jnTzgYcja8IHj7khHdx1xR6eo", + "tutorials_review": "1Wvdv4BZdw5aaARIAskx-93TpGzw76KtB", + "notes": "1dVqEmAwIAJTkOX87D_eCt2n0uehUWmG2", + "exampapers_review": "1x0ec3QFxUt9dMqguqyi5WesN9_5iHZye", + "books": "1YR8c60PDYFrg4qMM7Qlbo4-U3deRbeMl", + "notes_review": "1l_R4jVpvnMUYKm32aHsNd9FQ-s8Tbzzu", + "tutorials": "1ZUh9cot2K-wm2jBJD26KrSVyjjavS5fM", + "books_review": "1CikskFOgvRwLzY9bHPZqsPUvWOnidzDR", + "id": "1SEWRwENOfuCRz_EQd_yZH_eJHWT1fY0L" + }, + "CEN-412": { + "exampapers": "1rGTn1qwTylJDfnVRBa6pmHGhG3jw5e5q", + "tutorials_review": "1SYr37_RxxjQubsnIVRq-O5gZiaiv_Jl9", + "notes": "1TZb70thi_F1KN4FshnD_JX3D7nmPqrnz", + "exampapers_review": "1QR446n7hqlhf2b4lfzsmZ8IWx4GtlslK", + "books": "1BmBc3WHkPadbxlEbURLBMMz4IoTK5klH", + "notes_review": "168pV2TA1lnrtaL4wNwhgSlaDW-klPWZb", + "tutorials": "1beb7_oK9DYZstI36azg6mEOZRq8VSFnU", + "books_review": "1HGgByVknh68Q5T9Ue7_MWFt26esiv4nr", + "id": "1o_obn_c62EfPURvMmZSOl6Hoo9i7qc7s" + }, + "CEN-305": { + "exampapers": "13HHmG4AdNlXIoloQGZaSVXxAHKGtHXL7", + "tutorials_review": "1wLOGiv39VBIaitnBEG2fmK8pYYrfU2x3", + "notes": "1YqqbG7holyrusdYTJ4HzpSqp5vctKb-A", + "exampapers_review": "1_OJLxkR1w78oRhtmG4wOE8DZTIhJq5en", + "books": "1eI0Y-ytxJsHfJ-s0L1pij9uUz6AK3lds", + "notes_review": "1G9Bv6aZxHnNFUx0jxRY4MLLJCPfTiokr", + "tutorials": "1raI7H06TybNnrupArDu-qE7D3Hmfey62", + "books_review": "1wUlfWkz-cNT7OWjsMoeWWYM3I3f5sqFP", + "id": "1VVr4xFBoi30mC7v2tzHRjAX8hx4WhjrV" + }, + "CEN-701A": { + "exampapers": "1jT5r6eKqVK-XGU-9fiznqPNTup7wSkJL", + "tutorials_review": "1lgovoddzpugYFh7j7Y_GismHBioHoJqY", + "notes": "18AJx9XD_t9a6eXE8YqghKnTbkClygtAv", + "exampapers_review": "17YB7fFFLfD8Z8gLiq_Eb6udeICmdpcHP", + "books": "1GChgsS5M-CN_4wVMwBCtUG4WVfMZ3848", + "notes_review": "1y6Iay7ks0Zm1JPVsi-HQRK0uulp3M8gA", + "tutorials": "17BV20zMLhuBPcaAlWviPA3qiXOpWMwmD", + "books_review": "1Lq3L_BWEd3iYyN_F3LsjCvRGMRTkaTty", + "id": "1dYc6mfKHtZ-zXb4708R6_5BZZ156-S6U" + }, + "CEN-307": { + "exampapers": "1reff1UO3Pfib2FoAQJcDnAxpe3Wk2VxI", + "tutorials_review": "1Rh8FOnaBKQhgr_LKYzhZlBXC6zOqPy9M", + "notes": "1-O0YkgZDDr0WSm90zZpVztzRxklQOxH5", + "exampapers_review": "1v3hw5q2wPG0dNoL-y1IgkYW0xkIUpID7", + "books": "1XEdkCxMr371dfZdfPjQjzl9ns3AZp8r7", + "notes_review": "1TMxOFQK3cy22diNTyztCQVo-F2gifX98", + "tutorials": "1MyFqeLFVv7MTsfz-bNCqRMh_1I3V_Xau", + "books_review": "1NLlhEImdYzALsPvKrxqVnGXzT_yjKNZS", + "id": "1SmrisHCGrLI4DUSZTpNrWlRujpKsi2Az" + }, + "CEN-292": { + "exampapers": "1amcDLuwigOPRCwrQyRZG9rbnDcrfEL1e", + "tutorials_review": "1Sevog2O12i90x4-T0uQlxGaI7xkMEDTe", + "notes": "1Ea0PrzlvzphOYsFQhBuLKu7K5YTIqjg6", + "exampapers_review": "1vBo750NoWnmktAxkO5K5bl_ka3-hvILZ", + "books": "1njo5gx--aPJFIPsa4VtxB2d4gXVarxBU", + "notes_review": "1373MvtE_5JJelpTxevjlZ_52E65XWQau", + "tutorials": "1RRUQREYzLkxMNjb2gyD9Lss-0q94lgWo", + "books_review": "1NwsyBxII8Dk5iVu8zlvAgJ_TgOYLJcEm", + "id": "1L531gpxai3oXUeIczRvKSRijZHD7OmaA" + }, + "CEN-291": { + "exampapers": "1inmViCxaLSYu3vuL0rBADP1R8KxOBkA9", + "tutorials_review": "1LkGkgEWYJDpuQIm6b8eF1XEltu_TYttJ", + "notes": "10Cikka7TMGyoC2Y4FjwmGhWU1kIfEdxu", + "exampapers_review": "1QuDqeJFTF9aGL70qC8woh5k3YNm6AZti", + "books": "1vDVn25-Wo8fimwohdQCKBe1MXfzBR1dN", + "notes_review": "18HVQC8XTIOQwbjKI_PUsv41s3_2rBw0A", + "tutorials": "1567lCazY-os-CbzRiFhrk1FVEhLJ-yM0", + "books_review": "1KjhU7NVDUMZ83NRZSZxfq5YFn_5yevyA", + "id": "1sQhy5qbFpxhGsDcA4VoLbtcZMkdjB9pp" + }, + "CEN-512": { + "exampapers": "1B-R9WsNGh2xBvdwJ7TI41QPa1PFakBnf", + "tutorials_review": "1NNXRYgRClL-LOOX-dQFdLONpsHWmQ1zF", + "notes": "1uMQxm9ddpwNgy6yBpMurIYUl9cD4rFMr", + "exampapers_review": "1ee5jKlAINpJJ3gaJYxeO0CNF3nK9REKd", + "books": "1x2A9hRErsKhhj7gFIIFRRWYFzFvKlqdf", + "notes_review": "1qM_ToUi2CJ7VpaW5OiTpWPWIurtC2ErT", + "tutorials": "12ApqiohNoGYIneGf3_k904dDQRMYY0nm", + "books_review": "1v9RhFJqrK8QJ4DREKExy8qzCblZcGqQC", + "id": "1gFl5j7vP4NuzCBq0ku2C8EYuSIrpM6DZ" + }, + "CEN-562": { + "exampapers": "1hSk3cfoi3vj8qt5jYRGVKTAMlt8_-k9t", + "tutorials_review": "1rs6uJVtKj8Yp1du047YOsjTKBba9nH3v", + "notes": "1mX0DySrXlth3-7q1h5iJlDY84235cFGO", + "exampapers_review": "1bhepFD3UVje99mirTbdgQJxDM1MuXkKE", + "books": "1F_1Nr81NMXpcJmE7bbDNwwmluWt0ma_e", + "notes_review": "1TmWJy8avqG_NBDMVNa4gYqtDTbdvC9qh", + "tutorials": "1if_WY6VdVYMBo5mGFppy6rEGeuABCsTA", + "books_review": "1zy1RyAsVPOmnWXqiUeabDx5BlAWMjSz6", + "id": "18jU07j7WCyvKe7_BKjt3Tu3cybkINjwV" + }, + "CEN-381": { + "exampapers": "1M572Ux_CzSsRkz1R9j3HmDgjLFRAznRy", + "tutorials_review": "1zE16bHtjwa2SlGzEHEbBBUYw83TEHe7m", + "notes": "1seU0y0DhsL-uGTB-loR4h1SLifb-zNXk", + "exampapers_review": "15CSMQT082647EVEl3tf7h_jwg92H-SQj", + "books": "1g8p5yENvxNRyscDS4naobpqduzW4UARZ", + "notes_review": "1GhQBSrwLQre2bFCpAvBwuV-TH3K9m0yt", + "tutorials": "1SZShSOa95HipLTTZZ_ICZFgNTQC7Hzaq", + "books_review": "1SmB0PWcq6xi_K9k-J9rjIXbXjrQjS9xa", + "id": "1x9FvRoq7u7Lcj14dL82Qp_zxfRqj0FsX" + }, + "CEN-210": { + "exampapers": "1wvacMnUvNfouMBV2qDQJpQoDb2dWSQYW", + "tutorials_review": "1P36OwrgrUayXomxxtn_EA4yd8Z3amaTI", + "notes": "1wAPP5c3NudkY3QDuvOZ6LvJk3mDnvslb", + "exampapers_review": "15dwVRbUS9lcY7JGpGKsSOHvROWMTsUrw", + "books": "1mUMXMP2lrJSs2z6fO5PirmJJeB8Ca-as", + "notes_review": "1RwiJMYq7dysKtidnLqcJ73e-H8VpjVDN", + "tutorials": "155D-fqFaqNBpOFzL_EmCxqMHKDpYAspU", + "books_review": "1nBi8QbX4gfWKd8U0-nbdux-2MUZ4XhnH", + "id": "1s98PvIFQdLVQR8uNcafGqNiDqMr9SRG8" + }, + "CEN-391": { + "exampapers": "1wrv1rqtqVlYD_m7lHRM-3Dav3XE3pEPi", + "tutorials_review": "1Ke6zGCrejaHt4aOYK-7Mq5mzboTZf-9h", + "notes": "1x6hDfHt5iWtpZsUonp1lf3U8AfhTxVPz", + "exampapers_review": "1OmozW_fg5G1saFQiOy1Y_CKoQgxMoCW4", + "books": "1zBeZk7hlxNtQVskVlKMSpFy0b2khNpGO", + "notes_review": "1mVj0yTCSJITVU-VL-EYDFr9DthlxN-e9", + "tutorials": "1mDfBh3Rt89skqA0tccBu8fe5l5PGEBLM", + "books_review": "1wcty01hZUUGwCN7GvrnN9tWdoHpo818Y", + "id": "1NWYwbWoFueDKBo05RdosoLpyrk0YfDDL" + }, + "CEN-106": { + "exampapers": "1v3SpQ4a3sCmKaEWgxg7mkXOtW-17_W8F", + "tutorials_review": "10dIqrwzAd7k1q_SP0IBJkJ-OgKrXWYiH", + "notes": "1GOCy3-dpt4GBirXDYTgqPZtmk6N4bhPY", + "exampapers_review": "16WX9VAFHqMRaEdPNGRbioKOuTeKv35M8", + "books": "1B-UFscs_Zp0zrmGiMBkjI8CdMbLdTb0U", + "notes_review": "1sMNuemddcMe7AdzgA7C9WDn_p5Hr3PDt", + "tutorials": "1vrZv5RZHU9G7RVrTC-oL6JOmV7iGbYI4", + "books_review": "1wM7Vy0Qbwfbp_uFonl7EwB1OO858_Ma1", + "id": "1LQ3r8Y1yISG7q2_8G7JzuQgY7r0554GU" + }, + "CEN-105": { + "exampapers": "1W-WlEOfu3_qk63y-8Bi1X5Hz__eOSiln", + "tutorials_review": "1LzjsJp2rxZeL_m-qCSEDa_7DYzzVV8SR", + "notes": "1oAXS5I7H5799khQbBw18V1lbkL18aSTS", + "exampapers_review": "1t3sG4H9F2qy9rrep7h9LOikMqJE7o1fw", + "books": "1Mbyg8XohnbQt3eeLGa-ZjQHbhOluxM9W", + "notes_review": "10p9tj09qeb7agsv9jqPhe5kwmUptrdnt", + "tutorials": "1ui6o3YEiqMlLheeYU_aCZPkYWKIFPU3U", + "books_review": "1sgj0ILcVqnH_O5y-1lbBesXIr9RGh-jj", + "id": "1SNbTx3FVnX1ZS4nLmswL6ymXx3gRMJwM" + }, + "CEN-513": { + "exampapers": "1Mll7bhyL7Nmlbk7qv8r73c3zsEMru8vz", + "tutorials_review": "1z5OOX7gc1KIUnKcyxuz6djUj8TB65bbx", + "notes": "131RIGtwjUPdsJjfO3n8IRT-yOGqrxO9c", + "exampapers_review": "1hgbsO4cIyyzQlPva3OKj2giDtyXLHZLB", + "books": "1UoAw9uNu1Bxi1GuewKduZ8uJ0IIgmDM8", + "notes_review": "1_B-n65LE0RWjGpsLQ8s3RMzS1blu-CPz", + "tutorials": "1ucjm8kYbPfPFdyfaBvCmkCcdZucpupas", + "books_review": "1xkwREEDL9l-VMdlWIl0De79xK555f2J-", + "id": "1aW7jIGZX93MOeiJ1YK6-YhP8Aec53NKE" + }, + "CEN-103": { + "exampapers": "1fgGZwp0qZhu2WzWlSD24mTWijDcMe0Mb", + "tutorials_review": "1RJn7iSVZPGUND4t5Lr38s0vQJjtXEG1y", + "notes": "1uKvZAofAS6DFOAGdc14RAtN9ZCzSLNKW", + "exampapers_review": "1cjxppEU7iFpucJzkpOlY31bZ79LGgBuJ", + "books": "1KrdvGh7NhpcmY3gIw9C7W32vLgHn9n31", + "notes_review": "1-nzq5FILpRSBJ-KYTSG77EN06vVT0Mg4", + "tutorials": "15k8i_PsZetmr7hyF3LQ3BIkzYiIQcfzX", + "books_review": "1nqXMZhHfPO3jnZN-5chImg71WxBQOPwe", + "id": "1OcFEsWX_5m8G5VjumbVtKNbzdW5khBlu" + }, + "CEN-102": { + "exampapers": "1kHmprttCPmMbvwdzHLp-C_GSTWCykbsc", + "tutorials_review": "1tz99xafuE65eFWeS9iHQP5u-b4vyZjR_", + "notes": "1tcf1D_IyXg6hWTbnQbMMlbFOjRXZf2Vc", + "exampapers_review": "1u3Uze1W8M6vAG7WSo1EFh4sfY4S6PbXT", + "books": "1sHNFl1GirQwoOr09jyrbdGQ17XO2rs2a", + "notes_review": "199Wc7RCO46l8leXOBJ7_mk5mfhNJyC2Z", + "tutorials": "13l-SaAiJXCZuwQgjJrPm2pPNY2XPq0ZY", + "books_review": "1GrUEn64Y7She1AYe0_tcm2enVQM_7OEE", + "id": "1nfokioApKGVvYTZf8AhUYVbzPEG1PUo3" + }, + "CEN-101": { + "exampapers": "1k1mqgI4YZJm9c2vFDkbiLVNKzEWw1Hdq", + "tutorials_review": "11dAa3pMULtwppZb1eF6Ehke7jxBcI7SG", + "notes": "1d_idKqwAChQUp47AKpWPw6eAtjzTsOW1", + "exampapers_review": "15GBXJ7HSrokv4Q9v6FPBoeSlvAAO8WU_", + "books": "1A51uJu6jPEAvRbGMf8qQGKC4aR3FHjeG", + "notes_review": "1rHjQ8424UA0VfqkGXTXaRhHXvg6p57ZM", + "tutorials": "1r6CjW6XcIyhC_ljStSCN09RP04vtbNNG", + "books_review": "1PIUPBrG7EFoQnFRAYB4DFYW0ZSEIZ3oB", + "id": "1Yluj8K4dU-iEKkZ7JWqmhSHzjgOmrGqi" + }, + "CEN-515": { + "exampapers": "1rWGrBebLPKz1fFq5QcwehEX6rGgOCMpc", + "tutorials_review": "1UeNRgcseAnE_-aiI2QiEIy0K_Px8t_8K", + "notes": "1hcgtpfWpBcUT_Peiovk7n7BhA6POHnID", + "exampapers_review": "1uZUHzLErKa8IS1Xhn78w1xWtaA5ACHS_", + "books": "1-nWfYsRVo45LZfLhLFJzFBgdlSegJIr9", + "notes_review": "1jOdofTjlMLOQ4ZU2zoErygCHv3VQWiR7", + "tutorials": "1K5zif3X0xW3LdZLcxDTYb7ns8IP4NhnK", + "books_review": "1L6YQnBXjsQeQLZ3w8FvQXAvsiAHNCAEs", + "id": "1-J9LA64pUtNSHRbOlfUeW-vYI3fHBqA1" + }, + "CEN-665": { + "exampapers": "1lz4EsX4J12zRODr9RiLNHss_Hfslwi-V", + "tutorials_review": "1cRW58XbiBbYJpDsT_iY_JHxLRBuqe6AP", + "notes": "1RevZ6g3ZN7ItGULTt1RfrjKaeG6DKumG", + "exampapers_review": "1p1mgLVr496vCPqa_VueFABBli2zciX4S", + "books": "1_HyeHoAcDzeCuNngXBuLzC-ozJPaiRXX", + "notes_review": "1l41Tki8jt3ZY6cdAyM058NEagtGNij0K", + "tutorials": "1j-xzIkoyBlWDZ2BxO_HaoRbYOJMDa9eH", + "books_review": "1D1TNC6429oUHMoWxJWpuvYx8ntG9ciwa", + "id": "1fyCgHkAmCAVk_f8kPIHI38zmnJbX2lK4" + }, + "CEN-400A": { + "exampapers": "1-WS4TPXdzw-iWAhnrA7hSzB5Cgu7qN_B", + "tutorials_review": "1zeS-7EmrJbeL_ALemRgg7fWmz7WNcg1j", + "notes": "1kDYZH235WI5jOLk_nEBnounqBzF9EpRb", + "exampapers_review": "1gQrjMo8hsiP-LBmKY8r3joN_obB0dMyt", + "books": "1-fetN_rccaNXhYqBrfncMzFunukoO7qd", + "notes_review": "1Y-hbn65GHGgQEIcWxF0nDpXTnuk27EUy", + "tutorials": "1EwzxYAeY9R0Up6gDvVq2EmJJMUaWmfyi", + "books_review": "1P0M9elub0knE5gtOdra181BuJDQKu_nJ", + "id": "1bl3xf_tXAVY2Q4rM03m5TWl28Qk2xy-J" + }, + "CE-104": { + "exampapers": "1PYBy1ORKPv4VhzZ24MViQeGR1acI2yl6", + "tutorials_review": "1ebqQBM2YJIerv0AGjmIiH-P6i-vLrclh", + "notes": "14yyW_QeGJBlSTPRDbZmatHCbPA1qq8l7", + "exampapers_review": "1LxmstfzF_PQIvlLiseN2McYMNQojNVcP", + "books": "1sJANqQREXBgs_1SB8XeeT7PuSG2HGMp7", + "notes_review": "1nrBSYDnqrw5D95DGZEjOxU9KwpFoE40D", + "tutorials": "1ml8xmJjjsPxgUYmdBykFgrf4hOJoEaaX", + "books_review": "1qdhLBr0q6dHLEYwBb_ru7NRmz1msGYkX", + "id": "1PfCee4s6ANy-QgElJtYWaHGG-iJS4Bit" + }, + "CEN-561": { + "exampapers": "1t0YH-fHTd6mvSddL02ZXWwGVtj3kY7TQ", + "tutorials_review": "1efl0ibNb8O5G_w09ehwyQbfQV2gx01gm", + "notes": "11gZRk3zZDb8n8i31qk1ottOjx2_hOLeJ", + "exampapers_review": "1Urhupyz6qGoBAnSaoet8CejbEx7LDoCU", + "books": "16QBW2_3AMxeNURaiwpokyeZdeTZsPFd7", + "notes_review": "1o5XMEB6qbkoT41CHxorE-SS1WgZ00_Td", + "tutorials": "1W7dOoFz1Zx951swbPE3Fs3xdy8lWteaW", + "books_review": "1wA3i7TBE2OmdDGDJBG9yTG8S9yiN0X1o", + "id": "1DeMwjWcMyz1ixjIaf6iV3UBbTS-7VUrq" + }, + "CEN-616": { + "exampapers": "1RKEX6gb42JrcWWsKu8yPTNM8C4QyBNGf", + "tutorials_review": "1_yiQPYDK5CILz1xSVcxt5CkvTLh1kP35", + "notes": "1SMMn1BoSB2eUSzWEtvRJGqZ6Km69HutZ", + "exampapers_review": "1zhmCAvpgQWZiAG8O9mVyIiVMNcDOjRyq", + "books": "134CCUIqMqJcmK2s7h-mPFWw5Gw6CHkCk", + "notes_review": "1tRNdhodIxxR9lIJYG2Yz7i2NicuLMk7M", + "tutorials": "1lpE6zcgVnB6k5USlH9cwCVdsoEHqwtrZ", + "books_review": "1S8MySIh9LnN1k72KCwrK6olxCnWZj0oM", + "id": "14sTJ3eCtaE0IcO9Px0kvVfzgQwms4a-R" + }, + "CEN-603": { + "exampapers": "1XD-AzJY_id_MUoyCE0b7skyypGriBOQq", + "tutorials_review": "1Tw7lGbTgbEyLqWbAFAeARm1RxqEKLU4Y", + "notes": "1aQnYr_6TWYFE4Lr9bO9qxRy4hCO3Gcbk", + "exampapers_review": "1RUQlBWgqO0-cY6I2yh9lG1JSx7Bd9itj", + "books": "1pDX1u39s95XCQOD6e6pFy6b_D2mG_xTE", + "notes_review": "1WGgV3oCpdm84vtF1TWVaHijs2iY-k4ku", + "tutorials": "1nKeRS7IbyeSBDb4zMsQzpLz9Zubu4DhW", + "books_review": "1I5MWyzrziufiTNo2ZD1iOhuIIV-nbIse", + "id": "1wp4J5_T4tBpzK_ODj-NYTlXjuJRK-qo6" + }, + "CEN-431": { + "exampapers": "1E8bXf9njRjSOYbF6GhZxSinJCRvcPKUE", + "tutorials_review": "10EHV-jz6D3oFTTwDiXPMGhGkIbh8MSZN", + "notes": "10hJxC-cFBHalAH6o0zVcFe7sESzXDZm8", + "exampapers_review": "1cjuws2ZSGmE3wQSok-NTd6EffI-cRYBY", + "books": "1W4FY5u0sTS5hNOJFgWGq4GSEwblSS2GQ", + "notes_review": "1wdZTKoOX50joLoe2jaaPJnmeC-LVF5yx", + "tutorials": "12k8lMZz3hzHNdajSg15sL45k7CU-y5ts", + "books_review": "1hh50VUnoSUZb0hpOes9Vj0iKQdtRz7mg", + "id": "1kKwItP4_TJTbkwYR-jtFWiVcqelwFGXW" + }, + "CEN-669": { + "exampapers": "14IBUasZtPfd_FTrCyzecJQTsiHvqPRmi", + "tutorials_review": "1il3UmfD1145hx0cTCItakTN6VphsO9qM", + "notes": "1lecDNXjVu8MpdzqXt4rWOsvZ0nZEYG0r", + "exampapers_review": "1pQ8tLQNDFdpnplFXW8dc8nOShb4AoQ_h", + "books": "1SxWsRN9hMl8J0tVu-quOYnc8nQpsPY-y", + "notes_review": "1TTVAHSsS0yCqUT1CpuV3WtxiVqd-IEfR", + "tutorials": "1FcFb7_3chqFxpNgZDLxHhH9bVJCxlrNt", + "books_review": "16--JygR53c_A5-piWKVDUnxIT47TEjxz", + "id": "1VHK1ZXOiAUfPJZPNyavj0DaHCBxCjjkp" + }, + "CEN-524": { + "exampapers": "1nWLKnY_0Cwfs64YZWVgdtl1JI1nEm-Kk", + "tutorials_review": "1hco3txh86YQNfpiPkNuq8vOm0v-ay8pQ", + "notes": "1BejpnkH-ICAZfwHf8sNk2WPMzRX6MCue", + "exampapers_review": "1THOig9SKRzi13x1ZcjpFM9HrPx4chvix", + "books": "1MZj2z7tOtnhKRGBfGQEIJbIOJdYABFAZ", + "notes_review": "1YzZf0D-MIbtoUPf1xyPKJwliIOMFAbLP", + "tutorials": "1qL1Sa2ZABVlovQszk7w18UNSBt9UyL8p", + "books_review": "13Sm5OzOpTqLRP1XdOLJmftkwA8BKIbn5", + "id": "1dZ5WVvC-YhL64w3E8IQ-fmgSdtTH5N0W" + }, + "CEN-521": { + "exampapers": "18_aWclLIROYuH3M0eltGmgYr_EafYGuq", + "tutorials_review": "1bk0iT9IJJQek89Re-u5SJFZutlPVcSsP", + "notes": "1G55TyZnNlD-oQug33WUY-wDRdlrVCJeQ", + "exampapers_review": "1Uc9uym97XAEUXs_2PF5QRG3WoYHD5k9G", + "books": "1Gl1_WXpC3rgRnHDNeCpaT6ttX7kJzOft", + "notes_review": "1qp8IDYWwXH-24yvNUnWp4JM8SzHBU-87", + "tutorials": "1j5tKgU-k3RV_olM2AiT0IdFWf8SHARS2", + "books_review": "140YMaDAHCUwDNmIm1Nhk7lMvMyBq53-g", + "id": "1q9mhmiGybOIokpTYaJgJPbrXEsZtQTw1" + }, + "CEN-303": { + "exampapers": "12F1qO0l6Hc2xdkNIG6Cm99cei6cQjkOr", + "tutorials_review": "1u3KWrLaEVVvUGcfzPJ_Ycey3unnbw3mg", + "notes": "1mgr5q7AN_rItDXbVlCPNs7miH1AEZ-8j", + "exampapers_review": "1oGO9qaCI0Co4REd8C0XlklAX3_ah8NNA", + "books": "1bU3Q8z3XgqC895oNizMp9zvdQZL24msD", + "notes_review": "1YaQiKwP-srnWuAAYABvfoY-pQPv1moWR", + "tutorials": "1ioSZQPpbgx3GdDkrxHiyPzOH7W5PzLQ8", + "books_review": "1iRLp-Iv2eEIAWB434FPBQs_tpsQCfGoI", + "id": "1_6kTeW7BIf0PriGB52SRDTIchscqmd8l" + }, + "CEN-523": { + "exampapers": "1PA-thIpY4_cpsxGD33E5T7XDN0Ciu9IO", + "tutorials_review": "1GN6Y_fX_2iCm2Zwm6Bt24fbvMER_v7FI", + "notes": "1dZd1B4lmaRGmFPOzcOxZCRV2tF2F4qbP", + "exampapers_review": "16K2R3Qzui59a2RLvsUZW3miXvKPK-0mG", + "books": "14fl0kXIqrXMcfk9gZBd0cb5pSIoK--Vx", + "notes_review": "1-JIDj_5DXrlYBo2DfriAPXLUAO8FKoRI", + "tutorials": "1MfSxgk8V1XcYzT9TUd7e85T-Suqg1N9F", + "books_review": "1sHiLyGN6DELAYKqidzAq3Ho-sf17ReFw", + "id": "1bmJrrd9h7vK9X480L_OKGM9uR3-fnlL8" + }, + "CEN-522": { + "exampapers": "1seBKCqJWxkaJUTyhSrfK-CUFuD1_Ur-l", + "tutorials_review": "1s3Yf1h87vUjhYyzc3btgzubL2TY-H4Ua", + "notes": "1uoWGNVMVrRKa_aU3Kpeax6IeO2Op1rby", + "exampapers_review": "1BFZf1AoN495ssV22oTUKlzL7C6y75Ki-", + "books": "1ojsLhS3oVPjDZk1nonQ0jQrETgjpK2Ss", + "notes_review": "1abc4P76rmjFl563pFvsKmXWqSE_sgM2M", + "tutorials": "1d408OhifCztugfLEb2cbgv_2diRBP_H4", + "books_review": "10PX_6b5WHf5-ZKBC3klbpiJl5U1He9X0", + "id": "1iAFvDFmT1cNH9ZcKvVWKYZiT-rlYNZyz" + }, + "CEN-644": { + "exampapers": "1qIdcFUxTH6IbpzTxMhmjkjRqMuuNMawH", + "tutorials_review": "1E12xCRPacBbfF1gREc5G3FqW6QvG9zI_", + "notes": "13alkRyiE5Ut8ELLs-zqSW2UZBXtrzyzW", + "exampapers_review": "1vjReiN0_TZu1yaWN_pALIihMc6KJzylN", + "books": "1pdmxm2_OO1GNjI_0RuRHPtAKcR8zGv0x", + "notes_review": "1zXQ1yuxd4efKD040c18T-NV8VijpPGxX", + "tutorials": "1SugxGToQJ5ECqEGzZWFffBj2i4Ahk5Ar", + "books_review": "1tZ3q7DXKCKu3Y3bPMdb1wo6bQHMquJiY", + "id": "1_UzDISxqeY3yFSSIkH7LqRJiOqg7aRdD" + }, + "CEN-700": { + "exampapers": "1roxvdQbUYWH_Wm1is_Ii7L6UXMeLJNZf", + "tutorials_review": "1fBGDMtpaY_fGKL-lRnWkE0XJOfrcBK67", + "notes": "11PutAmqPmfjUJRMdt1ujrnglKXJweH9m", + "exampapers_review": "1bX8WqDpgOIcu0Ylhl3fWukbAPPoqBapu", + "books": "1vFl29W2Za63g71NyKWfDXC6hVGrpr322", + "notes_review": "1eX3GvOrb1K3kIfanSSrUptpycwfwVTB6", + "tutorials": "1LNrRCBy8Q0NHZatv6AKIoxKx4vSLm-tl", + "books_review": "1gUe2j9FdFjGtJCssYWs40x6cdvtCC2Px", + "id": "1reKl6j_cbKrtEFEOfLVpQAfe8gvZuvGn" + }, + "CEN-514": { + "exampapers": "1A0e1SXOCWz0MTdTWZKtNStAIbZ_j-mje", + "tutorials_review": "1DQACwRIoWxjFAtC0MXtYpStoiubHyfDW", + "notes": "1dxwZVuDWNWHgI4TlesesK3xzThdoLjyS", + "exampapers_review": "1UEKr6FPIiOX8jFea27y_Ral16qvhqsyl", + "books": "1TLvzqOyHgJoUBUs-nUrcaeqs3FSsNxBI", + "notes_review": "1nA1E76GPn65LLSxBbVUU4_GhAZkMaXPd", + "tutorials": "1BmSftgIKK0tFz7V6cQyur49J7ZhypY68", + "books_review": "1YbvneGV9O3dSLMuRxM-ewjmhh0uYvEgn", + "id": "1ScsWgvZDWb_k4AQ4qp4SbQPJa-TK8XVF" + }, + "CEN-641": { + "exampapers": "1zQE7UdoWgu1zBFEDzqnRI-f3qNC51rYq", + "tutorials_review": "1v9cXSW4bIkRrhm06Q4ywecrJDxrtrnCl", + "notes": "1kQxs8_pbG1RRMlqrNL0PH7bD4a2Oh2e_", + "exampapers_review": "1TIw1B_yak7fzbWnIr2qMlEi6Vp2SUwHX", + "books": "1BSRiR-Hu4rJP_JR2_XH3SBdhdGG9g_OR", + "notes_review": "1m1kWLhtjH1f0u_ugyQxO5jtU-AY4uDM9", + "tutorials": "1CDYx5ogGUz-nZSJM-jXUsJp0nuLRk50a", + "books_review": "1HROkGnYE-7Kcu50LRDzxLPFjnJ40eobU", + "id": "1madIpkiAF5aWCro0RPsEUWD8IJ79vzEg" + } + }, + "HSD": { + "HSN-01": { + "exampapers": "1TBd2_VUXzVC6Aq3LMqA9ugSkWQzioXLZ", + "tutorials_review": "15jZ4_fNIy0XJbqjffk-ItvdPunQrFwxZ", + "notes": "1F2QirkU7C68cPjt6pQDahD64XeXNTwtg", + "exampapers_review": "1hqU1GOgIWybw_3NXjeQjg3BpimzfDMlB", + "books": "1RYfA3luGbt2lRAUDO827KIecWlzXRAsY", + "notes_review": "1taJCTM9icl4MF2-Fd9G0VtFx9wKbH3HL", + "tutorials": "1j3WIKHt_j_QNnKBQnAqoQgSOLHk9Elvl", + "books_review": "1jIsrj_4VYyDqF9ixOlL_3vXaHMcbC6lV", + "id": "16UdEsKDUSpbN1xVlY9K_0lU5_vbxX1xG" + }, + "HSN-911": { + "exampapers": "1-141ZgkjzPzTm78Gnaz2F1nAp8nkj2SN", + "tutorials_review": "1Ij2wNyyQyFEmPjIqBcsdhmRrEofcB_o6", + "notes": "1gl6zAG5JGIel5XlDDEc-E66mddMuIh3i", + "exampapers_review": "1M28i4Y4Vb9e8t_vwQqsekowPWp23pNGK", + "books": "1EUH32V4ePcBK4omehVqRlilBC8I2KtVp", + "notes_review": "1M-HrnW0dwWZvOZTq95ETqzUP-LiRZ-Kc", + "tutorials": "17e0a7MBP4IaKMqYT1CpJzHMdPx1sRTKy", + "books_review": "1thV5fYcSyUoEG7FSGdN_CoQ22ToWkq0b", + "id": "1XF0-F8fCu-oYewuLbVAtDIbMdbbYrnrv" + }, + "HSN-001B": { + "exampapers": "10FEoRmlqA_NSmDktZ2Bb0eEmzmUFIxM-", + "tutorials_review": "1YQEBSbvUROTn4tiExCfLirfLntlz2eAf", + "notes": "10FLjUrMH6CosWzFRLBeppmLeVUpEGERo", + "exampapers_review": "1UuKyDvPp37TNMFcLthjILEsEDIymXFEs", + "books": "1Qfyhdit00_FQ7S2QY7J8lY9KXDaXlf1L", + "notes_review": "1tFwMWbELUjC4Q15n7ItWGtl4t1-NV9eh", + "tutorials": "15N_Q-oFO5rGxyAbTq9ndAa_Ooog4VE6O", + "books_review": "1HnPMZI0CfOoXvAB-E5Tb3M_JHBEhfHGt", + "id": "1p3F9o3nAZeJIEnSw75UYZUoh1jTJ1L6w" + }, + "HSN-502": { + "exampapers": "1snD8XCSA-X0YrztOQ3nHQczv_8HtICLD", + "tutorials_review": "1PFHsNe-pOLHeRc16yeyqFjESeOdsdvpG", + "notes": "1IOYIQBT2p6_HefoDhlMI5LNlkOCduERk", + "exampapers_review": "11tL7LyxUeURZK1sXF3ceHW0dOXRT5Wsl", + "books": "1vwkP-Mm69_e-_0WYho8SvBcFEN9xsLSX", + "notes_review": "1EyqOIJulpiAoRWbO7IBTTrklZI-LpERY", + "tutorials": "11oWDUJcwGuAvL6NeHjXYUQCDfRMZn__-", + "books_review": "1l9e6_tXcQIsIseGltf2xPerWFxD1i_Zh", + "id": "1cgNEbJiZZGlldpHpjfoV9DxED68eMfyz" + }, + "HSN-503": { + "exampapers": "19SYT0_-KjVblKBldEe8DCLK5jQvm7QVS", + "tutorials_review": "1gpFTHz86q315ouwB7oAuuoYd3hJASJPJ", + "notes": "12YVhZgMEzyNUGmpu-ryUklqfW1uoqNgC", + "exampapers_review": "1zXs4Q5y1MC2G9B0WGBQa1-5IZYcDFhnY", + "books": "1aTwCuSVNIrhjlQIWP_zAK8U-yGQSBNTi", + "notes_review": "1aZ6Oq6AZGMzdQyRFLcFtZ5XG2uGgS7vt", + "tutorials": "1a5D7D2-dEwZ3bSt9TNymewrUB8K0NS8o", + "books_review": "1p1-PTabaHyBo0GJJofZOg_ykE3oPse3z", + "id": "1mA5jNKa3C5qpf-HnLZCh_Jq-uIjjY2FD" + }, + "HSN-001A": { + "exampapers": "1D3Edi4Zxg2tKIVI22R_VmWXaI8UtULaG", + "tutorials_review": "1VrcikWpkc3pXZ5Zat-Hie7QZF1vs69_I", + "notes": "1W-Mp_rP_igpUOnn085N-s7u-TuSs2GF0", + "exampapers_review": "1nLhLU1cNF1rvGz15m9GLvrxbHjhLbqFh", + "books": "1Idljltub7sup5oV2Ejf_ULVsFeY97feV", + "notes_review": "1Pk4N5LUqH-2AC5eOzMinZFc8pdl_amgk", + "tutorials": "1RYxGGHzp1VRpKoHCFmcPzH_mMQjeZI-I", + "books_review": "1v25TW5FsIex-zNkI7vkVViRbocHZq0Z-", + "id": "1J1KctzcxxEufHoWwOzmWjqPINZeD_L4w" + }, + "HSN-501": { + "exampapers": "1QkcwM7Mk4-dWpgi6O73YgiVQt3c7MI3C", + "tutorials_review": "1MIkuXNwaBgpd70K16eAP3d0o8lnHfaPB", + "notes": "1XWDDl3x34Ft5-aCg1t9-lyv2DFUeI5MK", + "exampapers_review": "1O40kVEzqLuiY_u1pCQbADDIFwQ_uBImB", + "books": "1RDlo-q1BzFIqh7pY_rADAtCAD6LIcdhr", + "notes_review": "11XOA3fnJVAoUMYc3EcwO3OOhGK-YJKtq", + "tutorials": "1HIEE8hydzabT2adSDX293MeFFJofr2mA", + "books_review": "1EeNHucJ4U01TFDDyGwylSPT91RQ3mKYt", + "id": "1aVk395-_fCyoRK6ZFJUtvv7_Ws8EDceY" + }, + "HSN-506": { + "exampapers": "1at1Erg_YoFtMdxUM2S3vJNHoa4PjbAWv", + "tutorials_review": "1_VYzj15aVCtUkIXHmThNFmmrxsvqEDQh", + "notes": "1fERCH5uU5ajQ9DLy-CCr6D1zDQfWE6N1", + "exampapers_review": "1MORM_sAKja7-csprqulbWa__jRMXd1tn", + "books": "1GeXYRIVgp46bLuGFxgHi7OwaxY_VjLQk", + "notes_review": "12JCWH4LC-yeliF0a4z5ltJxzxQgDdh8_", + "tutorials": "17t8MNrhXMclia1IkOCq7oYhk2FoqqQvl", + "books_review": "1kTOmMCedC_J9KQiO4owPUH70iP85lQJ2", + "id": "1BL4eS4EwfZ_1DeUVspXbU3Oihy_qJLI0" + }, + "id": "1wVcCeSEyih7wUwNPabZe7ckSKQi_sOiM", + "HSN-504": { + "exampapers": "1vDZhJjBUiWApfMwhVZxiezEkeB1ioJHY", + "tutorials_review": "1TJVwTu2upq2jZwXJN_0mREhYtrEycZ5X", + "notes": "1ptbNYUgYuR-J09jwhhipdVGPqb_uqXit", + "exampapers_review": "1cY55uyyxg7GU3kgXyvyALeRaxYK_DdIh", + "books": "1cMkIdMTvA8OYQj_z7dU9__v23WM47rVK", + "notes_review": "1jei_iSedWy1quHxKm0kqQLNgy0kMzy-9", + "tutorials": "1THrqlUfFebfX1H3D9IgY9d_LwFZI19Wk", + "books_review": "1RVPKupmvIaJ4aIj2alWG6uicpMRS_m0a", + "id": "14h98vcvfCNkGCWHv1FvbVgCGp7VM0-b5" + }, + "HSN-505": { + "exampapers": "1Kme9y4xOb4qB8aexkNmdrZ8V95Zso1zr", + "tutorials_review": "1p2Mz5rhQeebVGRyfCatGHA65s1vkutlR", + "notes": "1otNefk-YmE1nfgLUwF6PgGr5EHiAaC8d", + "exampapers_review": "1NHM6_qWHePLH49oyu9WGTbAYe3bCV4LY", + "books": "1CKUYBV-cZ94097ZPtr1cRcSz7GW9TcUZ", + "notes_review": "1wscaL8BUN9c6vlYu3mPDZ4JQrHDIF0H6", + "tutorials": "1eHym8ROKjGl-_J8yAaKPqmpIPdUuCeSi", + "books_review": "1MULOp8G4L_YOGvteQdNplzDJp-lF2ig5", + "id": "1ylvcYrvuU1ggRSIiLh2YYnhS7p3dSiI_" + }, + "HSS-01": { + "exampapers": "1uuNazIlf_OFH-wOslc7I-6Y-EJ2rXMx8", + "tutorials_review": "1xcKTIbCTJn6K65YnQqTziPY9cShopJaW", + "notes": "1pkmibaJH7EMhEwXTNiAooPDtTTmDYoUD", + "exampapers_review": "1RLavv2Jk3-uxE1SZsB_UEOQSQPjkp6ML", + "books": "1zXzWAJvyYbik5jF_9VDmypg2eQ-qURkI", + "notes_review": "1bULHA19mLIOwi3_g11Mhf00HeSE33gKE", + "tutorials": "1yrOmIbVPOxhOD_TtGOL6W4DG4ZL90AJY", + "books_review": "1ODcyLMTAMv7iqW4l_XsH-XUwLEX_ofzE", + "id": "1ljFsW1sa_sppmw7DmwAP62e32QKB8aPA" + }, + "HSN-002": { + "exampapers": "1fnhJXTi3vd8yqdQI3TN9jvtBp_gx8B7a", + "tutorials_review": "1vnbbWysVMmYj-s04HdUL29dKw1aBimzp", + "notes": "1HCCasUCw44XfMxpOrFB7zP2mYUGalmaO", + "exampapers_review": "1ghdBuAIuzb06JmLCvp19unXLHlHdXST_", + "books": "12iFNw9ZNNBf__zMicSp1JLsSUT6k6pxb", + "notes_review": "1DsZEWWgID9jWfSyargnSokWLG3cUbniM", + "tutorials": "1uBwNhrscAvqLm4u6uin6vxRdBWncERqM", + "books_review": "1ousm0OXkx4MtSWiX6-bfkjE_dCAoX4DY", + "id": "15BTtcs2sa79daCc2sH-WUt1Y0lVESZgC" + }, + "HSS-02": { + "exampapers": "1zd3L9Gtsk1n36CK8xFhE-WuhttRDebK_", + "tutorials_review": "1RBZcUSjbs6qg1noFZEa4RkBG5CHdEU23", + "notes": "1UmEtX1ICrLxv80xJNXjRPTWLgUmpdwwP", + "exampapers_review": "11Xfa3uppUbMX5RMs90kdkypyYdSRzcqZ", + "books": "1zTqyWC-wP_nRrDquMAvlP8Bx_k1KpzmM", + "notes_review": "1_yP72oX95HJB-5lQx6hiHRHEHaA_Krpv", + "tutorials": "14d82S6_PKS3sXKsPMqDLubTJs6ZgAQBQ", + "books_review": "1eqM_lKaFWawr2itRLCya7tBIy-xIY1j8", + "id": "12g6BkLz3mxUd5lFfuXdJ_mYI3X2qcVyY" + }, + "HS-902": { + "exampapers": "14ueOtrCR3N_ESM476QXMaj6Qk_oxWe0h", + "tutorials_review": "1S-LSfe_-e8ENfVaKT8Aw1P6bzW5lV7eW", + "notes": "1WMd_stnHcKqPs8y7BL4CVtvdedpo-7n5", + "exampapers_review": "1DtnNPUwKp1WnZAS2yG7TffH30NswT7Ul", + "books": "1_P7R3PBuCg4NWheth0T0fQmyvIix0JOH", + "notes_review": "18eOQ0yx2cArBz8xJr2GxsskAKxGhhzv4", + "tutorials": "1UxULINvBU2CJwcmjqtSmd8cMubReiGPy", + "books_review": "1ibdzxbumyX6bwnnRd8Uj4-jRN8Sylmky", + "id": "1Exs0cowOe2jKljka9NvgWyP8do0k6OTW" + }, + "HSN-902": { + "exampapers": "1fSG8urS9t30SJxCMK1kXhVkow1I5hWEH", + "tutorials_review": "1mPWsbUZYkqooX5f0sqYeb_NbY99K7D-n", + "notes": "1NMny0d1YBzUzV4CpUysXHU7IxWXzftko", + "exampapers_review": "1AO9f0f4ZostHI_JNel-pIvOutCFM7Om-", + "books": "1uTRQARq-aA3ib0ihyN1ojP-gTD6er6sz", + "notes_review": "1dHcAVvzJGxz3MLqIfFirsrphG-2tGQgl", + "tutorials": "1tLRs62AvbvLp0Kp86D5JIIi-AWs-ucT6", + "books_review": "1LLQtrNT9zag9a4ORUdiUdZdf6KEn4gbK", + "id": "1Lgf9XTzfVtVW_1fTCnwU3A3a19Vd9NrY" + }, + "HSN-908": { + "exampapers": "1KfJlaIll5Zmv9hfs38kUIdwEaGuzWyhY", + "tutorials_review": "1FiRs6pPPAEsMA_3NpD5uR9fMNqMul5nN", + "notes": "1hv7XxHihj3cnqDOII9hSi91E4ZOt_yda", + "exampapers_review": "10ojPLeOVj5-mkz3JUatEm8v1DN1cz4Gf", + "books": "1l0g0ivV_BmvYlETBJ_KQxgPqDpTuRfps", + "notes_review": "11aJZx1n08dsr9y6EbCE939Eb59O2feed", + "tutorials": "1teSiaMNg1xuQBQVG4XlPZ3AcSuHivdYU", + "books_review": "1JtdUfAWD7czODw1GqOio87TwSsyrY8UZ", + "id": "199kWdstS38C54Cait4GjIetLNgpTptFm" + }, + "HSN-351": { + "exampapers": "10L93LGrlJ-p17xi2UmJgPoWb2lW0xHCe", + "tutorials_review": "1Jnb0V4PZFqN_Y-SaP4BRX_taRgxef6j0", + "notes": "1aRZRycSycOutdrDJJBX213hZ4bJoTXMR", + "exampapers_review": "1fiI3ryZSusC36ot3FreNMySLL5yhRm-T", + "books": "1MoDKdIXoKlYGUco1naOAK3J5MNE8qzjl", + "notes_review": "1AYV455CEYKaqc8wWrIZD6IEuMmooKb1D", + "tutorials": "1Vt6UU4dyh0Ai8Yz436yA0Xnw3QR8HlJU", + "books_review": "1Loa_HRk-6F73tSjEVaLIRg15099JZ1Wr", + "id": "1t5ptQNQaAq1lIvimjMwCEsNwwx-VFYU4" + }, + "HSN-513": { + "exampapers": "1kND6rAo2SIYy-rzYEl33GgaJjNTpfL56", + "tutorials_review": "1OqhbxoC_ynEAjGkEuHQbGkC47ub0N81y", + "notes": "176m_RkhwtwmxmhjCuRLOSfncVEZ5EOCu", + "exampapers_review": "1qnQeR01l-3FwjXG_wNd_1QKi1VcyQDp5", + "books": "1dB05ylVqwzWaB17c6jI7nq_tbtiCL3NJ", + "notes_review": "1YfRBH-kc9PUYtjsmySpziVNIqDCI_PuC", + "tutorials": "1S2kDhKyQWu371f4wQvF6h2Qwlo6StqYO", + "books_review": "1RpnOYrno0mvx8ZFOVTQ9m9j3VsEY3sKn", + "id": "1mHQinrG7YP0pdtlQiecrWH6t4wB-CfSh" + }, + "HSN-512": { + "exampapers": "1li57GipKljoCsUYjtNirt69mHbPqlApW", + "tutorials_review": "1gzwSrvTyzxqWTEWoOVn9U23H9ImbIqcs", + "notes": "19IJI4QMhDoKKQf2OisGhOJ9oOXm1dkwu", + "exampapers_review": "1Cw4rgZQnTkNI8qYak54nQl-oe-S0H_eh", + "books": "1Me2JFudik9CHOf08iQEGbRBqL-62tgqV", + "notes_review": "13U8vbP-a9NeYGMxuzIgD_Szh0TdMSb3X", + "tutorials": "1opHo5BOdEXtkfoHM6I0WV858OZDrebti", + "books_review": "1a8d6_u1kBw92rnheHU2xNvO5FJU0jZYW", + "id": "1MOBtDLryeGxlkqUzJNGdnNpd3X9krR9k" + }, + "HSN-601": { + "exampapers": "1H1yr3MnjUAnO1GR5QekBLSeMqc9kNX1G", + "tutorials_review": "1hqfw5IpDfM4z0qShYAvJ3xteLrCTBph4", + "notes": "1koWPh5Jinlgh_Lc_yg1_srtmyM0nUWE_", + "exampapers_review": "1MbQrT6G9gC15aQpEzM4S1d6L9-imO9nc", + "books": "1GvdbOaTbjGZvxxCZ6iXH4yFBPowFZbtR", + "notes_review": "1k_b4O-HJFQQLAA9y3y6hZ0GNEDUPuDx2", + "tutorials": "1GQnbxu-ccd9oFcPDqbBw2I49c2nVaRJj", + "books_review": "1CW2x-aBmk2mFWh4BVide_4cc1dqB_ShP", + "id": "1XEGNclXbSROkFXRvDa4MRkJ6GDBmam2X" + }, + "HSN-602": { + "exampapers": "17dMcDD86CoV5J2kaeTiZwGRF1H_MjFvy", + "tutorials_review": "1DIE32XOenuMlaoVOrDtQLf5t1G5IiqcF", + "notes": "1GohcQTmPtZIm2ix-Bi3f7CNQNDvj_IZs", + "exampapers_review": "1WpZa7fZItDWH05mEMwYVKteh3kFVAWyW", + "books": "1iE-g4bSwqeRAW0MRkbPt2XPpy_n7cTVm", + "notes_review": "1VBNRlc24-xGWpFx6wvsUZ0KCnTyWmdBI", + "tutorials": "1VAJpcIkKr4TdkMyyTbPIeqY2v9aXM-8I", + "books_review": "11bzyhOL0I-NNkift1w7yLKuxlwCp8lHH", + "id": "1LX0iNr26FuykwI0niLEOj2xQ0ibhbu4u" + }, + "HSN-604": { + "exampapers": "1qL823SAIbj0j5zL2jslCNVaIzumi4ER0", + "tutorials_review": "1hoiLFKaQPK9_B73df-VZxzoIAMGNOB2V", + "notes": "13-odkw1nnacaQIXS_hHrXPZ8pYv59y61", + "exampapers_review": "1X1JFSYo4uulu9Q4IkACdAY254nwNQXR4", + "books": "11o88v46rAaruyJ9ziB_V3CMX15Nakp4P", + "notes_review": "1Bme__Bv9ccCpbG3BO_WIQVBLOuxaCNiv", + "tutorials": "1j2kgWQ1XdBKh-CMO2yBt_N_g5mtB1w1v", + "books_review": "1e4Spx1WomiixfX6SkeLOdEnxEi-1Kh--", + "id": "1UDcGfK9cQJWTnI0PQPNdlDnhlCQ7zvle" + }, + "HSN-607": { + "exampapers": "15ltdvDNEqL0eCvxdEo_kk2jr416FQ9pG", + "tutorials_review": "1tH50xTZ60DjUMdtZV-lXIdnWaaTOXD6m", + "notes": "1NJ-m4kpACeH8_HHnEu7e4M-fd4jf5Z7y", + "exampapers_review": "1TIl5SXU_YwHUwFfIj7ZiCMAEXyl4TyWv", + "books": "15BlgKdSMbFxoqBd4-MXe5q_IHPArEaKq", + "notes_review": "1doi7qNZGPKzef-Fa8THyFqwngxNsoSbS", + "tutorials": "18_hX0ze5p6t0HvRz5Pvf5FuXpmacSxrb", + "books_review": "1HEpX1eP_A-5QQMhxvYhrmnG-eNhYYZg9", + "id": "1aeaV3mQMD-k0b3C98TpZN7Q2pC1ePiVo" + }, + "HSN-700": { + "exampapers": "1bim6gbkQ4JHCRk3cc-iVp53VXzSZ_fF9", + "tutorials_review": "1THFxkZpImVQDMEbeCp6y7uHbH0ZyICP_", + "notes": "1_eRbO0NJwFvITcAjQtA56jaqGHPUholA", + "exampapers_review": "1OMNZewp_nZbLQO_D4wR8wAi5j-3FedoF", + "books": "1aWeJgWiiXN3ZCb9lY_1u_dOOleDdLmCy", + "notes_review": "1DuzI8LvUKCCre_hcr0PIBKxXr1Xm21iL", + "tutorials": "1kSqp84Cju7O2cs2snNIfDfT5pTVT5M1C", + "books_review": "1o3fW48KTFZf-LNVLzvLPb3_E1ud84AgA", + "id": "1PjNu44t5s6Pq-EqeVSNKqcO3KkujdKOG" + }, + "HS-001A": { + "exampapers": "1WRNMNZgxI704AhnQHaaaL2ndBWLXXAvX", + "tutorials_review": "1APT8xX5IJzkBnmW2abPHBn7giYYrAhzz", + "notes": "1j3ptfLRdYx6CxGI7rAUpIXlUObNZnvtc", + "exampapers_review": "15TwtLuNPdRNGifRyQ9meK7gR2H6lcU3g", + "books": "1blqQpxUKuOSetgauv_-1CV6jsZzchDRi", + "notes_review": "1OoRiNUXbHP8dftD0DRRlvFR_ZPnDcMC5", + "tutorials": "1OyDN3aVn89B-F5sLeFX7i0ZQeVDkpuv9", + "books_review": "1FcDacqGVyFB-CkAnUrPH2E0PWFXzYLeF", + "id": "161nLxnqKHj5MMzHugQcfjPRt7UGSpF8M" + }, + "HS-501": { + "exampapers": "1LRlVOGF-OKWkDw4yvF5TtHo2syF5iSz1", + "tutorials_review": "1QOnFQycS_KO8GGeO94iBk11Uw_PiSqf-", + "notes": "1ddvOPgAKf2Qaz4n2T2MvvZHdcZ4_PSr3", + "exampapers_review": "1rIRE6uGC5GjkBu8wZwJUMu6GY9QS6vhK", + "books": "1YpozFtQsrMmQ1P1pzQ-ts9eUvlbBkfvh", + "notes_review": "1-RB9BXJKU2wP7Th_JpIEhjPckR2dzbMd", + "tutorials": "1kr9cidIRnETm6728HzsIBNL6egL192XQ", + "books_review": "1FCIaWXzx_gMhx7YalNf55vtSZqeAwwDY", + "id": "1iON_iuMuynU2S-bojWaMr7W8naVw-BGQ" + } + }, + "MMED": { + "id": "1GHOGuDEHoGJcYJ6od8RvsjC6DOYNERlu" + }, + "PTD": { + "id": "1B5DMVYxFYKxKeB62oLbooZjKQdZmi1Vy" + }, + "MSD": { + "id": "1z1RaDMQNOBXTZSERJ8CWbis8vS_viPv6" + }, + "MIED": { + "MIN-593": { + "exampapers": "1cQoKLwOZHjHH8-mWe-yNlmw5YhtjilIg", + "tutorials_review": "1N0W_TzMtcTQ3nw4R7ZMlbX0uEYYi0lUx", + "notes": "1sWprJ65Hwxy1WwsK-rLfPyJfWF84mewz", + "exampapers_review": "1RffvvRhhqjwdaG6b6LTDuIt3TNBYVG4z", + "books": "1SeBwAfSOOioPyZ-uY7thYVCEUba4br25", + "notes_review": "1CafY7Hf4NAX1V1tdpGL8G8CDD9l8megB", + "tutorials": "1Higc5Ttm5UxlpWa3hYOZuNuyYXDrScJM", + "books_review": "17S8EJqC3-Pbyxk8Ie51G1TugN5qp6GLA", + "id": "1WZgNu1BhgxUEKHcFIby1DefMN80PACiW" + }, + "MIN-499": { + "exampapers": "1w8P796-Q8Kz6l0D0yLloUsdaRagss-YN", + "tutorials_review": "1f0f_y23G2_beLOObW1xo9GNtjgoeu9eP", + "notes": "1c0aodGdZhI6c-4DyJ7G3mJauYoBhXa6Z", + "exampapers_review": "1CwEK3JrN728EjKfOR7WsAJML8VFoh23x", + "books": "1KkesWr6x2fQoY9RzacuNKMmzQhflhlkB", + "notes_review": "11oC4C9bxZ99wN1vjqkIRzBuiBHYMQATG", + "tutorials": "1GBGJIw2ATffCu_WJcXbNxT9OV1Wxgcle", + "books_review": "1Av5fEQPqvdtZvdKQUT8wJWGQA9QDeUfD", + "id": "1q3R6My3KCE2PKrraDSfejriXXLD8B5jd" + }, + "MIN-552": { + "exampapers": "1anCwLIIEAzy0P8ZmM7OkheVy8xCQ3-gv", + "tutorials_review": "17KXTmsbp7AL4ZYRegwuKx7uEclQznhAA", + "notes": "1dNn7yXlwg3jmyXIhObgzR-UHy4eWY5Ke", + "exampapers_review": "1ybTAeIFDB1ldKMVy-6-6QFEHv9Css-Zz", + "books": "1jSmwnYCeTZuEdtla0fZpn5STRnovsTjD", + "notes_review": "1k9E99DNUKnpLY1fDThBzTNThaCOV15bZ", + "tutorials": "16CLLPcoANQoT3TLPRAo7sVBTBw8Lyn1i", + "books_review": "1eIgtN8aZUXX5-uotf8R20pq8dx0hO1EL", + "id": "1paMkLIbg7NBfn2PNqQ17HQmXasmI-HhB" + }, + "MIN-539": { + "exampapers": "1Ayd4t6aQYCBirU6M1uhTYWwmeF6pNj2d", + "tutorials_review": "1yJhbOFdaGST0NtaIydmfwEZ5e6bxtQe0", + "notes": "1loJ2JdV8MiMtf0YE1rbpLNaEeMEVZI8w", + "exampapers_review": "1UITgF7PHyo2gyDccVielMDhHv391avyS", + "books": "1U265zL9C8xbV9-HZZ7N4EGmPeE1UH7qA", + "notes_review": "1syITGlzIyEKZwfTIXgFYqZrSbHLGTbsJ", + "tutorials": "1ttB5I2AHBbpTI-r9mj3daE-5-_d9XyX_", + "books_review": "1bEH_dX7jtYWtDxgBhFhzKF7jSvh6Kr6Y", + "id": "1x7dXAbUyV4SyVqL11Vytxh2cPa2hgRXv" + }, + "MIN-340": { + "exampapers": "1ZqhRzxr2w42BOV37dzx-ra45Q6wYZm58", + "tutorials_review": "1wwy-q6n7ztXI9i9YsU4kl_2BERc2_Y7i", + "notes": "1Kt2kqiXgp_Cvd1sI3Ra7g6n2sY1AU9ud", + "exampapers_review": "19nKIAMXIasxJ_ff-qXahU2uDy43m4UwZ", + "books": "1GpvXPYBKzYpQwBQgukMgTb1_Dv_bCIWq", + "notes_review": "1irbNGaOeWc5z6yOQsdb_HD-9xfbTAf27", + "tutorials": "1OU7Ea-bigAv_gjUcwdnwqx7TYgRLl35w", + "books_review": "1zm4ZC2JqIcstsKHFNGV1ZQ0cQVbAP4iH", + "id": "19uGsj9a186vbVb2SIu8pRDSWGe8pw3Xk" + }, + "MI-572": { + "exampapers": "13mgGq5MDFGxrDMgvxABtp7YcD2KSwX5o", + "tutorials_review": "165HLUO4LrJ2Rvd36zlBvtfcbpw8MVdbj", + "notes": "1C0DpKdVHNPntT6bXW0AC9YWt2YP35waU", + "exampapers_review": "14c_vGhkWGXcZB3X7G-ZzPD9BQvkBh6M9", + "books": "1mxcogbKRK6XIcWebB4JTHX__TLAuIhJG", + "notes_review": "16d-NNPMxpzjszYLKBOR2z02-_2K12SOQ", + "tutorials": "1E--iUOORg8MyA4riQGie7VygmlgU0LSv", + "books_review": "1vtBOH4LuDpD-G6GcLJyYzjn530wJ9nSg", + "id": "16fl2rg40gQYkx5TL0Ik-ObwtYzGuTvlB" + }, + "MIN-551": { + "exampapers": "1-L2Eh1fiOtGpze2MozkxrlOYDn35Jzih", + "tutorials_review": "1YBdkFIHQ7Llu6l92mzvxQi2xh9XXFzhF", + "notes": "1A2hyA7S0wi7zGJmaMaxzSlTu2SV3vvE2", + "exampapers_review": "1M4fAQSGussQEhPAOtOnserWX05dFLo-f", + "books": "1wUXITrysOgUEj4Y_MdpZf08mkIiw_0kL", + "notes_review": "1CYFY4WSyNboT3znyizgRZqU0Wc0iFmMh", + "tutorials": "1KG3qiNkGsgBQaYP009UFY33EBhY2ZZM7", + "books_review": "1psJmG8iYpTVxbNcAYC_cRVm45s3aFHKl", + "id": "1hWZylRl7RtWE-QtJTBI8tbWdt4tSaxQc" + }, + "MIN-557": { + "exampapers": "16f4zU7rsAziN2IrxwhBF0fQHinXIFCtv", + "tutorials_review": "1WBQ4Smu99Ysn6aBx-phdZHLlH_pft71l", + "notes": "1muFfQexSotlL_37JuEwl9WjjlBxT3Afc", + "exampapers_review": "1ceYS9-nYANrdlpRoHm3Ibsy-1YR88PFN", + "books": "1Jv13gCBRmUz8_-_Up360BKLLZ_VD5GNz", + "notes_review": "1Fe5nyJuyiMZmz05UXvNA4gSpHQ8ADinB", + "tutorials": "1q88hnX-6U7Ri-N-U0DRB1QS_a-Jg_EiS", + "books_review": "1sEwCiBG9OPgrWOZN-RqQ5-PUTNavzSOA", + "id": "1sRtYv5CET2IXgzSHVqNPnhzGjg_D26T6" + }, + "MIN-554": { + "exampapers": "19ELT-obJJvE5wMvfwdkTt8fsMf-5Mlc2", + "tutorials_review": "1swQ3vSdBf9NqLj01-2ooSjmr-nVHExcm", + "notes": "1G69vp10by4so4TOu1z_8ack9NDH6jU5T", + "exampapers_review": "1WoZdiFJ-40yL4_f3-jqqRk1dnlKGVlkY", + "books": "17vkprpxAvfy4xBVUVrLPjCV0R6j58-rs", + "notes_review": "1pjKtTt7ZMrBEZzLdXFZ30A5cVmcr7Id7", + "tutorials": "14SD0HEn7hqU93SE-EBrsk-KHaDIknebx", + "books_review": "1yOl41Yst4u4mY7eGh_b7obL2H4G_xDdh", + "id": "1won8oRvFdeD5Llbc5g6INqLA8uhOa0Yw" + }, + "MIN-511B": { + "exampapers": "1J7-FlMIw814wytCRPc7p0C3SNKkN28R1", + "tutorials_review": "1wGbJvpvwoZnEovjCZe-fd9t7eF524WgD", + "notes": "1H-jGOBnx98ONxde1WgV_DK3bpXNu_oh-", + "exampapers_review": "1qa5H4HNdor-iRvROLhy9TV2Ld7WBpGrK", + "books": "1Kw4PWF5sP2EmEcIoHBf9wpgbOOeoCN_5", + "notes_review": "1CbYuSjmOdIe2N9NXBhzesnGWG3EizPEu", + "tutorials": "1uKzXGJ9R5iGR0tAK8i5Y2BE1EEXwJRo4", + "books_review": "1Y-1kE6sQFNgtlEVe9AHUM3iijvwq05pn", + "id": "1nq9UXWjnYRglI49DE-emqzFR-Y9pfTIG" + }, + "MIN-606": { + "exampapers": "1wqh43hcHUGiXtRf_q-0O3Dftnf6kkyEY", + "tutorials_review": "1X-xWCK6yh76uzVdjf_lPJf0ES2ib92hG", + "notes": "1Szw6kNiQzJ47LetclBQ9AebNWVxOPYSZ", + "exampapers_review": "1c_PHMQf7YD4n5tJdOWUgURD0o1-hLbVr", + "books": "1iERhU3LKba6bcmfnJCCis9QJR1o0iKgZ", + "notes_review": "1XDf_Dc8WoNgGIOP31_0rjh_6szvigPyW", + "tutorials": "1gO8bjWbkRPm0Bh8MYBqIoJQRZ0mogHyg", + "books_review": "1yLFE0qBnSX9eVAO-Km-d-BJC34VWhFEV", + "id": "1luQzF5Axkvbcza-VwWQgMyantxC3hovj" + }, + "id": "1xBktZJ5xG4sPIArDzhMdm3q2s5I9PTOw", + "MIN-106": { + "exampapers": "1d8AC7Ng5850PYTkE-LdD3-_tLyBWZJ_w", + "tutorials_review": "1V-Py92ml8CiFYyymd6u5HTBF3XAJjtFl", + "notes": "10i6_jOg0bttX9qw0aJSGubgwXhBwqEqC", + "exampapers_review": "1Ktz6TV1xe84CLvVCwdSptasIq41PerLF", + "books": "12_HZyrV2q0HY3nzN3OvZlzxNMRzGLJyu", + "notes_review": "1L5gQvWUpqRJ3KqtIp1t90XGzyjEzpwp-", + "tutorials": "1winlXkFdhQC7pvJQ9mISZM76PSHiqCyl", + "books_review": "1ZAONb8g-YiZ3Rv-IbIOZiJ_kyYaARJD6", + "id": "1EFXvlZOKhW5_HHOKwbjS_VQyihms7OkZ" + }, + "MIN-531": { + "exampapers": "1dmgDwuVsZK22gIxhbRL2kNsDUB5S4n8f", + "tutorials_review": "1uvooYmr8uuI9JBZKDVKQWDCnAZf8eBa_", + "notes": "1OwNNAV0NYEYJ9gL7ft9AnMtzdXUBTPYL", + "exampapers_review": "19WBxINwCmMBQ32RxGTSKK4lNDDHc7-5B", + "books": "1hBDMwyKZBMQ_Wmvh2jlz6ksiI5kXqWHE", + "notes_review": "1Y64_-IWHipt2-DyZVrDksg-MJqmt2Zka", + "tutorials": "1_u-j4Ys-8ZjPDHqooS7kMxE_Mjfg14E2", + "books_review": "1cY_Gw0gQl9wCNim7nEoNfRM-mqRCCoJX", + "id": "1nBK_-64EHzc6IT6w2t6meSYDi1-uWonj" + }, + "MIN-103": { + "exampapers": "115B3AIPr9iPHJW-0l4bt4NXvu2L0C0uN", + "tutorials_review": "1ibkMmjI0XupQ17ddQTIHH0oe80QcYQDo", + "notes": "17MaolDMmdSSTKjG93i4khC4MvH1ZThpK", + "exampapers_review": "1sjjUcB_Dp-WtiLCiWn8bMeBeE5sD6K5U", + "books": "1uUeTw-ZfjGv1C4tmU0sYkjpTHxbAtqr8", + "notes_review": "1oHLBQS7szFUHQjkdt8Mvg2rfIlADvI7K", + "tutorials": "18DtetE4IFf-wr6RIdI9r5xR3YzzEDTYC", + "books_review": "1bSrxse3-jQtew1EQnV9x0PGDaSghR8dg", + "id": "1QyehWhwlr6OEg6mMWvsc3hoZHvvh5uQP" + }, + "MIN-570": { + "exampapers": "1tIqekoJxng8JUgIkXWZp6EqviPAXbifS", + "tutorials_review": "1B08wUzw_MmNy1pcWs7IPTezVCdQNmWRo", + "notes": "1DNqSCtW0ivhTrS0fg2Vzqcnad4nI_9N1", + "exampapers_review": "1NHLdKPTGLjaWfJ6yelsMOYIN9nOMD_1o", + "books": "1EA8evcZkLxNhmTDROSxid8UI0yQOrjtk", + "notes_review": "1BNVyqvbGlgpXpO-ggh5IpQE-zY7edggl", + "tutorials": "1sQpTQBQ3XSpSEvseQ1mNY6Jp_o6i00mE", + "books_review": "10G23IUbxRSCukIqhwTe-bhzNXIjeUnYt", + "id": "1pR1ZBtLYt2Ge4auZ-HKoSBCFWJBLiO0w" + }, + "MIN-571": { + "exampapers": "1fTNoeVuKMTQGwgozZ1ORruWDh416L3aT", + "tutorials_review": "1Et7L1biswlUGX3agzmuIoQJfqtIGarFD", + "notes": "1nKElFQB8Oo7MmdpPKNHAsKYKRM2mOs6r", + "exampapers_review": "1y_r0NjBYY9GSYPdp2q-HzKGHqH5fIguW", + "books": "101lbOgHW60B6KkzWGQp7toJSKg-q8tsx", + "notes_review": "1zWIFq7GUC17PLYBM3WIqRLJ6rRx_JUZs", + "tutorials": "1duSEbfIsuv2oE1GfXORw0Du_EcrED3c4", + "books_review": "1SKwg6Erfm3Z3bWYRsVVnMfqOYok72G38", + "id": "1sW02xdpObR2LqVKjaZ791vUHX9EK0Zuj" + }, + "MIN-572": { + "exampapers": "10sAStwWReliNOqt32wk1zmnEmxuK5Xof", + "tutorials_review": "1FEOdh-J7cRR2JKFYBc9H-vF8ecMqPFNq", + "notes": "1tzBMco_UugM0nUFt3vfKh3v2k-sGL6UK", + "exampapers_review": "11gC_-tFgRAb-6XzzasP1-v2gqUYDUzTd", + "books": "1B0ruuxLP8QdHeoS4hfYfmfopxp2iM-f8", + "notes_review": "1TIJt2uO_54CIKw8MOwyujrfTsET3WtBp", + "tutorials": "1ac6cACODcz-3bUiI5tF8UF8BNGzHj2R9", + "books_review": "1E56YLVDji7X1fpmeu1Gm0HAwCFlry6Fx", + "id": "1pQ9et2x-emtQGHY-BLOXR6m-746lYr4M" + }, + "MIN-573": { + "exampapers": "16c0vT2nwyOhKyDKHlrILnZwvgAtu1I3B", + "tutorials_review": "1c4mlDp6CbDPB94bayQYMeoTFOpg6Ubiz", + "notes": "1385ycc1XQKXeHN5D_K_-42PLylJqPoBu", + "exampapers_review": "1HZzEX_FxKkdK_4rmdKYe9btV-2nfUDMu", + "books": "1YBlR_X2e14V-TNSAMTUyCGxJBnrG2s0t", + "notes_review": "13xVU2W4By_kJJi86uJie9dg_NbTMCGdL", + "tutorials": "1X6fX6A9NshqorT4e0pCde-GkZfOHWPge", + "books_review": "1NhwhiUU-wLwHK5Fmvh0tDVumDT4BCBTS", + "id": "11S4vKOFdkIxhfFnudYUzPBRn_f3OSWtz" + }, + "MIN-108": { + "exampapers": "1yMFFpgnqk1NUH2zj8R9cl_6OC1_FLVzE", + "tutorials_review": "1ko94BPRyjyThEPRiZ5eILfQQmyWDpmxt", + "notes": "1V7bZNEsHjQPuoUWHE-WfRgHnWFOSsUBU", + "exampapers_review": "19aI_J60kqV0G2GLAE8PiAK7NEREZMqVX", + "books": "1k09raEa55J-aMGt5gG29FwJFVUfS4-36", + "notes_review": "12CK1lWmKDrGre647Tq2Tsn1XRleTYVj8", + "tutorials": "1EZdohciF9KgwQUR7xmIQg7GOJeazEabp", + "books_review": "1161WJ1JJfZwquOXZBFupmPrsCK324kfc", + "id": "1M2Wsl9IsSo3iuAAJeM-ygobw8iAijrC4" + }, + "MIN-576": { + "exampapers": "1-vB4DeK626w3FD8rhftnjK24oZ251ioN", + "tutorials_review": "13WMjPmgMHr02uNw3Red-RLR9XYO0a7mu", + "notes": "1-J4_wBdOv9zqkSSG_VDVPhN6CpkOula1", + "exampapers_review": "1elSVnVLLN2vyHqJzpiytjvYKq7KzUo_z", + "books": "1f-zqcwWRGH-29dTI-wp66VgZsausOR5t", + "notes_review": "1Q67CQlec-ud-8K-L7Si8kvo6S_S5aOf8", + "tutorials": "1hpNlk8UYY1VQdRD4QLRREIoAgr-rWTC6", + "books_review": "1oMtYdux_Z1L_0SJPNbeYIoYNXvB0LCAx", + "id": "1iXCh3C6P0AzZ2akFW1Tx7FppuMZ0C42t" + }, + "MIN-321": { + "exampapers": "1wfQ3I2XdELDjnTaDY_b-XA6WurKFdkMU", + "tutorials_review": "1XO5SeS7lA2XqCCJX8hIzQavgI4tiLvNb", + "notes": "1YrguK3ooCPNeZE9IVemY_w2WzezZyG6v", + "exampapers_review": "1c1JgDvC_aEjplDMbEye0qCyjTg1qmdYm", + "books": "1SJqntMOA_eOnsPC7PdZ0TahH2mvKhj1Y", + "notes_review": "1dT2AGbzPBzNDBlQVV9-P3FIs-0Pcbxnh", + "tutorials": "1iHNdCAITLhA8tqxVhJWTu2M_ijw5BtQk", + "books_review": "16F4o4GGuHCjR3ftVRnbWPO8XFYxqCQdD", + "id": "1caHItFgdCJpDsn9gtS-maSE4U-PtqNwD" + }, + "MIN-511A": { + "exampapers": "13Pe94xtJuWdNxqe1a3L4q6OKudkPfyVw", + "tutorials_review": "1QV4FVNa6FJ2oYaKPGwbPIBx15mmbMEJl", + "notes": "1hGy469DZGXq2xqL-daQ3lHmKjwaivfot", + "exampapers_review": "1MrDYQjRUqM7rizWclDNgi0abPcbgxC04", + "books": "1EfGN3i0oYgRTZZOEGykzdgX8eXoc4_Tn", + "notes_review": "15tPZ6h3c0SlBllW7q1eRAPn_DU7Xz4bo", + "tutorials": "15nwJ0bHMuE64Sx4xxW26yLxPGnT1y2Ee", + "books_review": "1p6HBpuWufioeAl1lKix4nsOJb8Y_nKQP", + "id": "1gv1wUpplTHHSIqCSHs3dpM1yqvyDIswO" + }, + "MIN-305": { + "exampapers": "13MWZsMIln2Z3xtBrzdStcrChGBC4ElwK", + "tutorials_review": "125UI72Vu5AzwK7lOeJgdaHA9ySJABHBW", + "notes": "1YcYnCSMdi3LAedOvZ3uSh4EcsTQGmn85", + "exampapers_review": "10LNoVx4xlgV0plW-VROy9ZsBGSN5B5ct", + "books": "1aS6DvTqN5twRzlqXeVVtz5KjS2GwFJBd", + "notes_review": "1mXP6RyAn6276EXl4jL_hQGW5BCw11pOI", + "tutorials": "1sLD3QeqPQJfTr6H4WKFYyysUz_U3mGKj", + "books_review": "1oGbNljxBXGz0aoSZjJSOY81JsS6O7jB3", + "id": "1meKbNw49xnZNlerxmsPlOhS0tdb926iC" + }, + "MIN-303": { + "exampapers": "1VtZVwkvTqtRCgUauLGZ58IjJO4k91xf7", + "tutorials_review": "13sRQ3OUjODc63AI6-7faoxk9yjS8FIkQ", + "notes": "1FvRuN2I-vynfCptl5lDc7Pi09pR9Sybd", + "exampapers_review": "1oMTOUCysdk1w3KU_UDkvVwz81twyFlqg", + "books": "1Ow6JXfZnWF8BLWQROA8lCdGFJwd6tIsk", + "notes_review": "1hXeRtSyQUhxUxzeWUdF5BFcOqbpAV3S3", + "tutorials": "17qXl8_0EpCnN7qCA4-M0_dC-hZxRQ4Y-", + "books_review": "1YMCCy1aeTHGGsHRlzfUGrYB2tBeI5bRG", + "id": "1_j5KXORGOVMzNpMXOkHS1COybtcGBIoo" + }, + "MIN-302": { + "exampapers": "1X47d4_gTC2muqBpq8GYcTwmSbUG6m2H0", + "tutorials_review": "1SZMvNWrXgJAcv5ltLhX8Z2-HIroOBZPS", + "notes": "1yyskn4cfUjEsHm3jMx72NQZS6ziFin88", + "exampapers_review": "1jzvglzeRbHjhrsUPLtB-F5vAV-g-rxjY", + "books": "1FCHw3ibjs9mGjm4gBXp03yWrxx67ObEm", + "notes_review": "1GsTAJorqZYKWE2Uc9UEd3t-srwDs9bgc", + "tutorials": "1E1It6Pl9eVfxhMC7LvQnZvhWlJ6-0Mt0", + "books_review": "1JzfeFZBzCKlqFtMlnpOY-s5fBElx70pD", + "id": "1TKa_9CKPNPkmudsvKPMyrrYkUJqKylwX" + }, + "MIN-301": { + "exampapers": "19IxHfxsWJm4-cNRer_9S0j0RwRCycw3a", + "tutorials_review": "1ZYM5qV06G9mQ2pgkmaX9808ynnd0o5uF", + "notes": "1sMT1WtwWcfIkwOgqUTf9KyV4Ru5e9wzF", + "exampapers_review": "1qHFaYEUDnOHgvgmUGSYRAvrnfz6Uz7mr", + "books": "1QBA0sQ7zaVAqrODPARIW74VFUYl7Ecya", + "notes_review": "1L4ObiVwhYR3xossOe7piEWaxGL47_d5I", + "tutorials": "1tgUxqKV7Hq820djmCQ8jcsZCkaU1RzoV", + "books_review": "1Xrr01AigR5rHPB4xfRYqY7rEmsfZEspm", + "id": "1K60i0G0d1krrUbUibVnIh1qX_VExILke" + }, + "MIN-300": { + "exampapers": "16-ShUaGwkMb1NUd2zOWRC5Qop4YxhZ8S", + "tutorials_review": "16HdwzDpZ6XG2tnkOgac6K0QG-nBfNTSs", + "notes": "1OrBryX-8yTRss28lUkbw52B1DaZr9FFr", + "exampapers_review": "1hRZAYk6R6thhWEgENTtOVTGGfK-qMX1p", + "books": "15A4btOMGwoFW2pb-dqszaIdl9p1PdXRl", + "notes_review": "1PmjkBsdlSxlErTyqvKyPqvqUkHJjePGc", + "tutorials": "1JPfx8Zuclgy57nA7JFsOXabd2tMj_vuz", + "books_review": "1giOHCozE7F6rPNGD0K2fHgY9ZsiD0g3P", + "id": "1PFv7Y8ZniGk6XeSc5rGr-ee0E2jdEawi" + }, + "MIN-343": { + "exampapers": "1yQzT1FqzuFpFXOCZNNVWDMv4vgW7WZdz", + "tutorials_review": "11uM_ywPH9sm-SdcIzglKVwtWbplCamjV", + "notes": "1-AEnumvImaFuHY7kCPv6M7YXHq8aG93L", + "exampapers_review": "1GTaPs3SFuhHx-TMSTBGcYRo1udoOZiZ1", + "books": "1RVXpgYc-ByP4rD0YQlxBoNlHhjTO4Kkc", + "notes_review": "14w_KQhaMHlPxcpwWa0aIExaNYgRL_Xgd", + "tutorials": "1cb6JobagbDO1VPBwzlMkckAWOmEXCGzP", + "books_review": "1xQnqwFyeQvt79dbe5FVACCVNZtp9xcT2", + "id": "1cL5DSkBMU9DNmeTy78jQwRP7GbPsYJ_X" + }, + "MIN-205": { + "exampapers": "1TJ53BgIW86jmYCfrEomnZeonkarAmm3o", + "tutorials_review": "1QDJ4KdpIukzzFUKGE3sdcJzMdVAjFuDm", + "notes": "1Jd6tsoEzNK1gb4nkmxEWvmri3OwKRWZ0", + "exampapers_review": "1RE-JRjf-gpJDc-2gO7C0qGRkaQqp5U51", + "books": "1HspFqGimVvb2cREq-7Skeu3L783t0JUr", + "notes_review": "1S4b38duAicYVUGhn44lUibmo23zpwdnY", + "tutorials": "1unpS6TfngFCcmQJ2T-jtVVdiED_o3DTC", + "books_review": "1IWJsVfaBaPoVz_ummJbCmSJ342KqojqP", + "id": "1Shg5S990JN8aUUOvTEG_lUQf2WmBnWAH" + }, + "MIN-203": { + "exampapers": "1m43_1C5Fqu6TQkIc656GlQYgh2MJg_Jw", + "tutorials_review": "1iBjnlHAsu9aIToN4CDeEgD2zewxxZC6C", + "notes": "1Qdr82LlFMCXr8OGnctmCJCSghuk-kZBB", + "exampapers_review": "121iUZ1nqDKZMoffuWJBTpXs9N53m2a4y", + "books": "1B6HUqaR76ztiPNOqAffFtgVlDXfVl-fj", + "notes_review": "1kijjIDznl0BLK9oFpI1eIxt_hQX6K70A", + "tutorials": "13hWlfMHb9gEQoX4kULeyuzXh8u8gyMr1", + "books_review": "1S0rMOH3kw58tjJ9_DbgklFiwbl0CNsqq", + "id": "1xiIFD9_irC-QuReqq9hpzdXjJ-s5gtmU" + }, + "MIN-309": { + "exampapers": "1ktZDibfs3e1Xn92RcuLf79Pa7_sHHIr9", + "tutorials_review": "1FPvwbd6Q3r6REfUjtnxzCnd9MuUqpwZ6", + "notes": "186EaVGSdQyS3WVorZF7dKBeJPLhP4Xi6", + "exampapers_review": "1NCDQOCyI6LaSuVAu83qWjAeJLi1jUb_6", + "books": "13wjo5hb4vwf7xyd13MhoAxRcqQvL85wd", + "notes_review": "12C90udyhXdLR4NodvT9tOVTt65j9lsDZ", + "tutorials": "1F380JpERQlV0qq3imck5ZL5Un3C1F8ha", + "books_review": "1N_QMRodBDKhqgqNF2c2y3ue9t58V8orb", + "id": "1EuEwvIE1b0djYsxrxmf_z8_esVaY2mYR" + }, + "MIN-201": { + "exampapers": "1NBNcvokWwEO_xzn0EemJadETvHv1si_B", + "tutorials_review": "1ShG28o-Mgn2pFei8bCBMybLXsH5ebEVQ", + "notes": "1ZfmOjCspXN-VO2cvy6668I7za2Rej7EM", + "exampapers_review": "10PGU23_OSb9sQM_BvNyS6ndCik1xRm9K", + "books": "1T3FUn7xHKa7I_S5yFmfYqOoMAR0Qr9o8", + "notes_review": "162CYKuAF0Hudx4mGzNd3y20ML30ilUO9", + "tutorials": "1NXBsRcdAKyRcJj50x3lTrwSDCijNJpR-", + "books_review": "1AWoI09tcPCDdacbb5ofv0w-VwcP99ekG", + "id": "120H1otLqUqhDHq9cPz16O9s1zkBgblcH" + }, + "MIN-527": { + "exampapers": "1HA-1kdrGjkjFrQ7C9K_Gr0N28YqP1GeA", + "tutorials_review": "1_0SyFj0k_OwvQkOT-5YycjuAmjWKqFmQ", + "notes": "1vIYo-GnNPZgidNu3EtlQXNJurCdWagMD", + "exampapers_review": "1AiymgiRI9y9wTjLUMtqtJl0XwjaNSdTt", + "books": "1fW9bsW7CSYBIMPxVU7Fuf0e1O1ssCbSz", + "notes_review": "1UMvfa2MI_j61Z_LymeB4i2g6fxtj-wUr", + "tutorials": "14FyIXEnIC44X_ZUOusodom6Grz-Xn-sb", + "books_review": "1dcFseHQuObO9fAeNIL0kdc9GtpTMI6J5", + "id": "1gIGQ9Gi5Jyujr9yImNi1EBCS8cC-FhtU" + }, + "MIN-400A": { + "exampapers": "1jWV5GglPiw_v9OyDfegoD3fGI7EUicsz", + "tutorials_review": "1N8egSlqMZBX1LGISQK_dMwRswyjx2OoL", + "notes": "1HJhKBNq-BkqTcBjWetihfAnQFkiMEHlU", + "exampapers_review": "1M5dkkl_bbXD6h0-gChNHof9p4yr872tz", + "books": "1vDh-i8_BI5c6zCHT8L9lywQbBh0pKUOn", + "notes_review": "1cWcDAUwAYhnhm63EdpAyLgB2xcg6XStx", + "tutorials": "137rquQS8aOIFqMkf7h34Ks1SRJNvMsSm", + "books_review": "16A2DXBc8JLUBKyH_fAF4PY3cj12_Qr8k", + "id": "17547BqsgvhBYJYH_Nlslb5mkhhQRmozZ" + }, + "MIN-701A": { + "exampapers": "1f0k34G6K1WG11d-Ll1ZtV5B-AQmfdS-4", + "tutorials_review": "1ImtVqplwMAnOiMTlPKAJE8_IgWPxIeqW", + "notes": "1QfqMK0T-17ZKZ_KudDI5YhmVTWtKlRCN", + "exampapers_review": "1XD50DnzUrdEGNXUlyoOJrMfy7Zy6KDsz", + "books": "1dPr-ILDqaDXvYGuTBnid_kYaGxzyUFrx", + "notes_review": "1YfG779XxDcE3TE1yHsRWhTrqflv6F8A0", + "tutorials": "1mYMqK12Q6iYue3hjpNrYamhSnqAnIY-s", + "books_review": "19IkY9FH_2bDh4-fqkm8c9lZx2epGh8mj", + "id": "1eHPcHiDw12sWwis1KMLCn9QZNVK3sUkg" + }, + "MIN-216": { + "exampapers": "1mncbZx60wS2fkiRzhM1VBNWv550ha7Pd", + "tutorials_review": "1ztlM6_QjxKpFNqd_uzQFU5R_IWddHpgy", + "notes": "1Eldy9x9J0TwWEI2weQQPcUk9xS1G8AyC", + "exampapers_review": "1ZyOaR3_GCZdvUuA9yJVHEtC9NFODlzeL", + "books": "1qdE_xwEsM7ea-4M980vIiG6QcwWqmQlg", + "notes_review": "18EgtiyDUFMHGCQJVwljAfEOANsl6YliO", + "tutorials": "1yhtTJJgqS6IwJfWsraxAeevcWdZIk21D", + "books_review": "10WqIJ1UKgRDoFD5hYhLZWbzlcXeW7x73", + "id": "1E3Wnz7HvkEtG6lI8AHtkyavCnyw11WmS" + }, + "MIN-525": { + "exampapers": "1gO56CHEv1CMSdZGmpOfK8mornDIzz8TQ", + "tutorials_review": "1WQLtJXJlr7rWm11ImDmZirU-15k1nrO4", + "notes": "1tZa9kkChJdGEcbuvGm9BcyTtb7cYIRYB", + "exampapers_review": "1rHBqKtzIDl5OFs0_wKVQbEyeJeZAEdHe", + "books": "1WS6Idhk4PuRXjQrX_Ku5OmldSHVLHQ0w", + "notes_review": "10GDIX127hFNVlg2oNNrQ8HLnhAL8vGob", + "tutorials": "102zjkZHuIZS9EhC6tAk3q3kZS49LeeBy", + "books_review": "1Wi4-bP5wmG_caWr2oICzmF3HSokpSLS2", + "id": "1vzwhLp4n4aMkmKd9f3z19HgXenQkiYf1" + }, + "MIN-209": { + "exampapers": "1kYpaUW9uVPm7s9AdYAXBnN9C1MOIblsN", + "tutorials_review": "1pu2m8J54pzH0i9HcReM8Dx0rwB0TJhTm", + "notes": "1MNPu1l3UeLQGji2Jme-DEo_rBtyuATW9", + "exampapers_review": "1uog8gFL5Rkjx6hxx5YqgTrycOczIuSsT", + "books": "1MnehqvvAdimvqdJKDjMEs9tMutV-JjRD", + "notes_review": "1kfzmVm-FZffTXxt795wIDEMFrCxgbHay", + "tutorials": "1tQRUWshZTPqENqRtfHuM-l7WmRjaTYh1", + "books_review": "1PkdXgM93v13GGGYvKUsyXhw6r5MJWdfT", + "id": "1VSLYSF4fPDXmCxj3TBwldcy3bfxJOttP" + }, + "MIN-502": { + "exampapers": "1-RYLj5txDdbHiLlk9mXpxjeyh75C9gCR", + "tutorials_review": "111HQxQ26eHVs7KZYlIwQhgOrEn8dmZzW", + "notes": "1jRTir8w-r2KMitAeunk3JwARQDyvy2ki", + "exampapers_review": "1w2SLfbRE817_1jkmuqQhMw7H9sq64L_u", + "books": "1RMqXLj5HcDJYz9AOCjNBuuFZmSDKYcb9", + "notes_review": "1GZRyyk6lDC-cyYpLjFlmI1abagWn24cf", + "tutorials": "1ZXpxQ1jDZtFAoONUQYSGQCm5jZ5_qQ2f", + "books_review": "1xQ_M3GqPioxIG9FaJsLLgwU-aa_1pjmI", + "id": "1RbsKEllT_WOM94Qlv435AWV41wGg88Uo" + }, + "MIN-588": { + "exampapers": "1BIuHGyZeAZbj3-IEN0d73qB2__X09HfZ", + "tutorials_review": "1oasVrVGnlFh3hv4WJd2580kWJQ5VENCF", + "notes": "1Xhfb8uMiV4benqRWl5d6YlHOM0BaWaiX", + "exampapers_review": "1kJhO9vd4FuSfnbaVi3Fv9VI5h8tgjhOI", + "books": "18blJL50q8JY7lOf9qLdLFLBCu-uvuOGE", + "notes_review": "1YkSKs2yMp5ON8EPaye0aPoZHyxJzKkRR", + "tutorials": "1KYhiK-vGZ2O6PsWMmm7qQOEESeBJjGRb", + "books_review": "1JHMESV_BEyLTel-HanNTwh7XJKeOvLlb", + "id": "1UTzjk8jm9GS3cx7ihzm6ZIHaiym44jnj" + }, + "MIN-559": { + "exampapers": "1ZQTUPR8mxh5I3OQEvwG06XZHLdBz7Agt", + "tutorials_review": "1GY2T9lXkHv48cjBnCD2jf4gTCLHZHclt", + "notes": "1cCNqAhBkptM6dIQ5rESF_v5nna3UWuf_", + "exampapers_review": "1SALUuWrPEU2FZN0pk9GRcVQ0ES_26JIv", + "books": "1Cgz1psIDwWs6KLl92nBVhSoFhzysLAQl", + "notes_review": "1ek_isO4YVwu_KMFjOwWiXnYAD4sGX_UM", + "tutorials": "1dkIZMdnwNuB1YHttYzwkhql5eNRPkcW6", + "books_review": "1RXt7dkhxNNlsUCTziZhKjJvlBiMPpNKw", + "id": "1Du2wli_LZWYXCK4v1zBzhpF0okYXYTFf" + }, + "MIN-583": { + "exampapers": "1fHkRxw263xg4Ek7k44OFWcI-UoNox_wk", + "tutorials_review": "1RFqOxf2i7KpZEQ1KEvq3sFJhxSRy06Is", + "notes": "1XS60zm-Cr07ne_CBT2YMtDjWDhZGs18r", + "exampapers_review": "167ZWOP-ljbjKKI9ig3IenNuytPVY2DW8", + "books": "1rtGSXfRW5NS7o2YKsmBvfXDV_1_q3rYH", + "notes_review": "1d5ir2QyP4tC4Up2B8FnxTcjQPuRw2OJT", + "tutorials": "1g9grdPAnxGDz5Z2n-tXI1KhWOLKMlMYP", + "books_review": "1kJS1v_SIEd-0pJLrp-wgbJcUsH2hQiUk", + "id": "1iQ0DILQkwzSEZ3PBaSDk-WXWkdTu70PW" + }, + "MIN-101A": { + "exampapers": "1NIl46R7j_wtyLUXNuxW_WTqNoyEUZGa8", + "tutorials_review": "1PDwpKltBkg8ZNBHnqfuzohfOTLdZi_h4", + "notes": "1it7lwYI3XYNFZ49XwbLTV6x7guptkSd1", + "exampapers_review": "1-Kih0Udeer7t4JfHAowWfTyTG24QQGJo", + "books": "1PkX8BA3v_asYZzrrdiqobQ7hDkBuISfm", + "notes_review": "1e9csxYfwHBq9OYPMzne2rM5nFZvJ0SN-", + "tutorials": "1qsKbzs1wmKK5iIwyASQqyb-lZUJHVJlv", + "books_review": "1t7Gw3aU3UQEMeJ8wGQHDRvvishaE5MGY", + "id": "1dF3nWp8bPEx8aKb-zBhr1Hp42O3VWu3p" + }, + "MIN-500": { + "exampapers": "1wSp57-J1A7lTHqKbhsNkVhWUzwyKdkny", + "tutorials_review": "1LPinelAX_pAC7nXGOEhC4pHyQYTBzQGe", + "notes": "1IaZADZJR4Y_rxPkxF4T7xeoALBZAr3u6", + "exampapers_review": "16iofqX1u75aITXMdznECU1eFVbPglhbC", + "books": "16ePdntSvbewqI_uB6LRVjzMGaTKOjsKq", + "notes_review": "17BUZvauF6rjF6tgzw-W4BZDF7Y6lJwWd", + "tutorials": "1g8x5Kj2AWz7C4enwdVhJQgi7S1bETeuk", + "books_review": "1GCP6xIXvAuaFyx7Vkq2ldG3_3V9i2G3W", + "id": "1W03W_4nlSfcXO2aGoXMRbq7dEop2bWnl" + }, + "MIN-110": { + "exampapers": "1BPL3L5n3Pzt_E6d2SZOTlG39DSNtgtA2", + "tutorials_review": "1sLuY8OqxETVB9dVwPj5tvnV8oZh97ACK", + "notes": "1uEQ-YwPxMdqmHpzlcDPcZ1ccGRSJhGSf", + "exampapers_review": "1c7onuYRxeKG6AEiNjyvNGd5y0q-hbiY_", + "books": "1jPTi2X4vf9Xisxl_5wCYf0w-vXtG_Xff", + "notes_review": "1YuGdq9PkCVwkhuXBqzPn5XstRGws5Ekt", + "tutorials": "1O1ZwvQkJ5bSrfqADYFktlOyAAVYFJNhW", + "books_review": "1KO-wGcBhb_nXC8ii3_ylBqZzyIUdPbeC", + "id": "1vcqAoItY4Ln_b1aj571qOHWlTLb1Y46l" + }, + "MIN-101B": { + "exampapers": "1NVNxYGhoyt4tubaN3OxOLLO6AX8KdEB3", + "tutorials_review": "1PnbwNwc1VrCAH370L_ylHXtHd7yx_ddG", + "notes": "1YRZ3-GhgscPkN8_aEqIyfmHJOEhz7Vhd", + "exampapers_review": "1fcNZpoV8uiZJ9ZPdk6hg83Uf_kuQwCKz", + "books": "1t6wE2p1NRrCeOwH6ZMeeEljJEtflN3mI", + "notes_review": "1BlzxH_A0hOVg5r4ZBmyEoj31rUsCSHoJ", + "tutorials": "1BVxYnIiyN7Gj0DnhAkr5o6xpu8xqpv9i", + "books_review": "1BiCnZIryr5C8JYF-4ri1U_g35PQn-oNh", + "id": "16U06BpjPskCKTahzqXtVQwFx13oH6Zwa" + }, + "MIN-522": { + "exampapers": "151NesXoZIHBbgaNjo8rOw2m8rbvL2EZp", + "tutorials_review": "1R6B0DJAiRrH14Gk2IwZUonMoe7EpcWmB", + "notes": "1emkss3WndXoXy2AjPdsVsm93DIfQ4Kbl", + "exampapers_review": "1pPt65qsuDd5C-xJMpIuQ3kJv9gbY8FYH", + "books": "1e0Rx6GmySeXEB0W21huRkXXdoXe-1WxO", + "notes_review": "177HrwbODVwq0wSxzHM1Hpq3fE050i5xp", + "tutorials": "1g315wgdOW9ppACnEilhvZzKDFwa2Y1TG", + "books_review": "10YG34Ds3H6b_TOh0-sgKub_nxnIKpwtH", + "id": "1GtVqyzfgvYnQccOatlqMoVjYEz6jXl7k" + }, + "MIN-521": { + "exampapers": "1a6WIRYGeOIg6U66HgyjKDbw3p5yTQMU8", + "tutorials_review": "1MVugzIgt_A7iRjZI8KDX9P6hfpBlmvOi", + "notes": "1UH46lJ8KQidJI2jTbJ_lO4axzfZghnlK", + "exampapers_review": "18wodeJkZfhExvNsbTOGyA2DVvHAQzUP6", + "books": "1MsNgEfGixxRMsVaY1vKAkv-ho_HfhMe6", + "notes_review": "12tEJMV7TwFn9mI9nxa7d7A1uoojthpko", + "tutorials": "17YP6siakFHvrVe84xfJkNw1ucYz91BP_", + "books_review": "13VrIrTTK5rhj4nAejy6gdMQO6AEgmyK3", + "id": "1rGt-L6RdTiLYizp5cP7FBt2kbwYQDTfH" + }, + "MIN-520": { + "exampapers": "1ODJelQk_DI7muQLXvl8ylAI95ZCs3eMG", + "tutorials_review": "1Ljf9yUC3Ma7f_r9eXgPRaUThO11Ur-Mj", + "notes": "1ZO8-1NA9caA2FvOSiKgE0tIdDnKAvQmK", + "exampapers_review": "1S2hIVLK-DmjK60u0Fl237kV466ToDVEg", + "books": "16oewP3EXi8dJfWuIM1UAHzId5scsuYKo", + "notes_review": "1cM8PAf4ezJYAx6LNVrrSYSLTY8yQSsXD", + "tutorials": "1YGN2MMV5Uaih3ys3mJZFXxUq2m4tBnPq", + "books_review": "1JlYT2k8zxScOp8EEA7Ww77LSkVuYuWPn", + "id": "1x7yXHFsmzv-8d1JeoJI9sn6JTX7LrBJH" + }, + "MIN-291": { + "exampapers": "1gbdMpVe5s_GNPkEoUJRe7xOhy2FY8DYH", + "tutorials_review": "12LP61Fr281R7KJAbbRKEsUF8tBwWUp3E", + "notes": "16fmu1n97hhtkZM85lOsAEws0_kTeKVcq", + "exampapers_review": "1RFGG6eMGJqmzL5RPeNmArI0Z8igSpkm1", + "books": "1v0k7EO1Ti8tD62UC6TxjUzRLknC4dxAh", + "notes_review": "1hrmYqjWRaP3ZAKn0IUp0bI0HDQYE43bD", + "tutorials": "1shJqxuhVJTUFF5DqHg7gPd4CMJkFRoZn", + "books_review": "1_qUzGV9PjX07z6sTsu2iCQ4rIxtXHan5", + "id": "1sHqieZ9G27aAACkC-CfzW6GNAtqL8udq" + }, + "MIN-561": { + "exampapers": "1Ue0A_eTT-wwTFLpX_ak6_rH7JCrkWqq_", + "tutorials_review": "1EJeWV5C5j6YYpDlNJQ3Uec5aMjWiFNHl", + "notes": "1LeDWgXkWYeB1Yy04Mu4bkbyIT9NgFmVB", + "exampapers_review": "1RnBwkECHbwl3IR66AQEjY5_OHo0lBCmo", + "books": "1RR6J6xcZKX_h4O7m_YL2lD_Hhg51ospV", + "notes_review": "1Pq22eb6si9meyqo5M2vI6PX6JSB-MCta", + "tutorials": "1NEz9yQhkBOOJNJ_0dDIZSS61CxedlYvg", + "books_review": "1HZZ5YlHfs6PrXLxnzPnq-Mu59HaNRrxA", + "id": "129-DnpA0NatbPin2XJZcAfCHTDxAaUPq" + }, + "MIN-391": { + "exampapers": "1UmD3cfbcKl09OCUIsuE_DqCOLTHPnTp2", + "tutorials_review": "1xkje_S50_h_B1qXD7SkzLhg_5tRhAbjG", + "notes": "1ZD40icN2BOMdIpdYiM90t97zClvmiIGs", + "exampapers_review": "1M4Hxdgh1jeNVNvIhVB6xuN_McGDim5Aq", + "books": "1OasXwwfsDUc47fKAqDwv8nP-DWa24fNZ", + "notes_review": "1zFoCLi_jqsoboHo3GrDgH-YH-e-wfrHd", + "tutorials": "17qY2Z03IOWotufEc93iuVMifl_Hr3NCK", + "books_review": "1km5sebLMsMF5CW-omyKZfsLWvcZxgdqb", + "id": "1HZS5-m500rUCygF-eAxlFxZOn2yAVlkn" + }, + "MIN-565": { + "exampapers": "1pDCazeF4TmXwQ6OyxyytxsajivugKO1Z", + "tutorials_review": "1GDzDM4uxziinWqEytyG9QKsI_Kx5oZ_U", + "notes": "1HD6pvqY9RZ-ndyxH5YsDQpQESC6edd_c", + "exampapers_review": "1hgvg9C8nU1VU8Dzfbd4eWOyWpyeNFivU", + "books": "1CuppsFBtX9_dpL6AzznNZTFAOLFdfs93", + "notes_review": "1stioAFPFPtC0TJjQmR1xBny-NeB44h5Z", + "tutorials": "17i8u2lb8gWFQxGm136FUjhgnWyNyEtXM", + "books_review": "1cHC2Q64ObYZaxObgMxZx2i_L0jYwyGFZ", + "id": "1JKUaSagLarOhUtqMGB0fhdwJlLyZcjSw" + }, + "MIN-211": { + "exampapers": "1JG4YwZfQjyE8c4y1YTI5yYnmG1uzfYsP", + "tutorials_review": "1IDf0NLW4WXS741hHIVwyLCv8cgmaH0vr", + "notes": "1XC7R-Qc5F-vKVMRoWigXMOMG7xvPQefI", + "exampapers_review": "1kyWq9fMwqKFz5PQaiNpKKrogPkN7TZeu", + "books": "1gGg1-MB-0o9W0OhjXaTi0FWsCs6EsUPH", + "notes_review": "17gnFzdYEutjkrZYauPhDfH91FbHsy4bd", + "tutorials": "1C_kP37CnIMcG9HcqRTXuwWkLxiiZyMxC", + "books_review": "1qEtbuY65uGK48grGUibsSgYhl2Bi8dod", + "id": "1e-nv9eFBNzUQ50wi30tUsg9_Zq3MwW_B" + }, + "MIN-210": { + "exampapers": "1GyLv__0EF-g19KNQcNPFYOLLZoTla4n1", + "tutorials_review": "1f3KjOEHiq3T-S4ak88KkfsUFyUwI6I-g", + "notes": "1I3_8z8r8P9crPXng8HnPY-6tX5njZ9Ev", + "exampapers_review": "1y2tAGaPvK1fuI17VUT4pqZdyjKc67KhR", + "books": "1XbUKfPmr-KvjR6DhUJexBx1ZIzM4CB8P", + "notes_review": "1Kpx4zl-Ej6O2qMWtv-voPzLjZe_81dGC", + "tutorials": "1CEJAgr9kFeXzpHlxqy2bPJt-BrYm26u5", + "books_review": "18Rz5e35dIp3oHX05D43WqPBbaYQYSGUF", + "id": "1Si68pFyRoLPCOtkS_yx52-wTe7Nmj62t" + }, + "MIN-700": { + "exampapers": "140G6WWPWbwP83OunNXgXDgPXST07K3Ke", + "tutorials_review": "1guNVuM5TvM4BqEk_JNGy5jznwRHdBY6w", + "notes": "1b3t_P3YSYYktJ6pc7FmdjQPJ9amkGhXC", + "exampapers_review": "1WwQdiDtPNS1bVwv-Z1Sr0gSkP165Cb0q", + "books": "1EdaVkGw8NY2h7kfdJQqHED7YtrQFFbdV", + "notes_review": "1hlo3nZoQz7ykIgRdyltXrMQmSWpaLsZd", + "tutorials": "1HcrIIiFuJBYnwBY-77iM1FxIFZbEFT3y", + "books_review": "1h5saOtdZf_awI1tBcVBf76C3kW1hUG8Q", + "id": "1BkoBD0x5jsoMCpTAHiY3PivfGG2if99r" + }, + "MIN-311": { + "exampapers": "1L6NzEk-ytaceAYpR7WaCxzfYgY_go9Om", + "tutorials_review": "1ido4GDDNWk7U-Ru8YzirH-cwu2SKaSHo", + "notes": "1Rm6Tq45njnLcM_SPpmM9-gGr0SWLO89I", + "exampapers_review": "1vUUjJD3tpODYn92yTls0uXmnOE7vlnaX", + "books": "1x6-grde8aRcY9xdnEAfR6VYmtk1HhrNn", + "notes_review": "1Pt1KDsFQaBMtS9YXvvnJm_1Y8PUU17jF", + "tutorials": "17ubsjwoxJTJbzihTkgTaEedy7U-zEOhH", + "books_review": "1qLFxfcoP9TqtagxicwQxm09sHCpaZwQN", + "id": "1AOzCQ7Pikl-D_VgBsmUgphKpErpHuMKX" + }, + "MIN-313": { + "exampapers": "1wuy5xlUiaacnjHYCs2exFuO7m2DazdII", + "tutorials_review": "1nujAoKzQFBtT0dAtiK3UNJBTGXGYT_RW", + "notes": "1bnxoPGhFBFNOJMSCa88CALoqK15RR_eE", + "exampapers_review": "18R3Aj3_morA3KD65_h-uR9zCfQnM4sk8", + "books": "1H2xu7yQOM5rBOUxuXgzOBPanzsHGw36N", + "notes_review": "1z0RzsP0oBoZGCHEqLcsoyCZDsEgESpLJ", + "tutorials": "1a3FTbmCqYNI5Ysz_YC-iijcTNJZ90jXj", + "books_review": "1TlJzBdViaT0Ob8emi5W7ozlbMNliWm7T", + "id": "1x2beYfXBdPsYZ-szzcq9t_lLu9zJkXqq" + }, + "MIN-333": { + "exampapers": "1CG7IoHJl8x6g2TmdKVHNde_zljrCOfa4", + "tutorials_review": "1IjDTW8zMrktrvT8dm_OTKpsmr6Boh7bD", + "notes": "18bUCi_aDiXhwl_9-EJA_beY_F7pg3yMb", + "exampapers_review": "1h-Bfb4rXUohgacwUYGEPhPJ48_bipSbI", + "books": "1shtvFxy_hoptD-xQMaJpdfCuGj2af83i", + "notes_review": "1gdWsI9tMspC6juIqzl5PzFVSJdeVKthc", + "tutorials": "1wLOKmAlL1PSs3y0Udj_psG6C5LOHvGfg", + "books_review": "1_-p93NRTiyimUZwBryQ0jG_wiSaIblES", + "id": "1eFWoyScBiej6ZCdQg7pVNaem2TzM9ed4" + } + }, + "CYD": { + "id": "14ZiPHdImNPkIm6mBwaYffBWaVFD4Spxh" + }, + "ESD": { + "ESN-514": { + "exampapers": "1YUQ0t48hi-n_mjSd-JmQDV1I2cmativx", + "tutorials_review": "1Y6dtRqpxQCkiD76LbgTkDEXsGHuh_qBC", + "notes": "1WInvWgokhhWV2FRntqYUk6dg1Pa77ItM", + "exampapers_review": "16o4sOUgYPlEIGgZy_IbTZgGYSAn1Qcmq", + "books": "1Y_FOLcjYZu-aZHrj1fdqS7A6dU3s-4ca", + "notes_review": "1HPlnnuWDt2kR7w1X3gn2OXigFelz9gMy", + "tutorials": "17MyERLFNm6bmOKA-CE4rmow4nviQMTLi", + "books_review": "1U_xQ7p4k6C8chdKCKDkYmIR2l01gTcJH", + "id": "1DCdIgfaueKI-hCrmq5ZTg7LtfSWKyvYu" + }, + "ESN-403": { + "exampapers": "1kyY2UdzQy_k1LBGv29ZT_EsPGTnCWyii", + "tutorials_review": "1lNlnvuEUHyzn8HKkuiV3lS5NMC61RdR8", + "notes": "1K4nC-bolJlM1BZ-WIVrRLnV6_AhiSUyG", + "exampapers_review": "1D-bh5hhUgJa9KxanG26KAl1F8wxw8wou", + "books": "1CmS0LkPDjeg-Cr3zf33g4izHYsU7qhM-", + "notes_review": "1cIIOWih1glNQO7-6Bh7UqSutYWoFUO16", + "tutorials": "1fWhKkW1zqz3-g42BKGg_5FVhkZwA227k", + "books_review": "11ZSrTTOaZAEYJUL5em8qieQzQdGd8cBo", + "id": "1OBQOMb71lVoG6OGqrZrH9C6mxXhFOIVo" + }, + "ESN-401": { + "exampapers": "1nRQDog1Pgg1_muKz7_TKx3qmXSNfT56Z", + "tutorials_review": "1uSEqLXt-lggI9G-Zru8gFUFmb9HbWkmj", + "notes": "1ChD1gervDk0YBQcR0KXW9FIVoi6eGcqh", + "exampapers_review": "1ntTSHn7mYWWvqA70XaO7dXWRlBuw6rVb", + "books": "1nFd1MD5BSPEDVnFbUS_RC1vX4gJUZ2jV", + "notes_review": "1wq4S6w_GFjyVGzQwM3J0AHlNX5LrBqpH", + "tutorials": "1nD9UjKqbR9dOxTEsyMe1JGvrXWTJ4t2x", + "books_review": "1Z_hUJdrUwpAg-fL8kgPck0Ae_ZnEjFI3", + "id": "1tmAaIODOBW4APl0g_LPnbcfDzlmUdri3" + }, + "ESN-407": { + "exampapers": "1n0OpJPHNr5EtypkjSu75zlLcQJdbO1L6", + "tutorials_review": "1351vLf03-zOemKUeksIZQmS7wG-SnOBa", + "notes": "138iSbDoZGFCy495l_z3J7XAvTirm9Q1o", + "exampapers_review": "1V02eEFh69BeYaD8rJrCTK9OzlBXaQm7J", + "books": "1Oxczg4P8LU6HfYFpeulzSediuaAivSx8", + "notes_review": "167ytIzOb-8OZdxRjreQEPI3c8I9PJHE8", + "tutorials": "1OdcpNBZ3tsig5iqKMbmpGurZSDOhPOHv", + "books_review": "1klDUH7c-Z-SDaq9zW0WdTmFOszFEQYab", + "id": "1uXbhps_Xv6EEsJCbc31EXn5JWYWPMbmS" + }, + "ESN-579": { + "exampapers": "12tjBvDm5tX7FapJyWg3N9kgLSkXVFMxX", + "tutorials_review": "188Z40QI9CfM0HRWJhWYs0_k8ZW5YA73r", + "notes": "1Y9ufY8i0791vJoJ5vslYcHnJ1uq03tt6", + "exampapers_review": "1pMAgXxXmhc_VQfxYlmarwdLQKvCKIgxh", + "books": "1zW_07tXWy6ISWsaD7kliYlpWVvPTcB2Y", + "notes_review": "14IyQFCgx5Im6KmrXsoDl-MZOgAklAxIm", + "tutorials": "1j1wod8qYQtcGpykkl9u74HXaNs5nttfH", + "books_review": "1tHhfrGtLA4HekUGONponWwyGZXx8UM5A", + "id": "1UuFhgUvvRRbLaBOpf8WO_gWv2GBgCH7a" + }, + "ESN-405": { + "exampapers": "165UWxBn24MWOH1zBbH0iVr3JPTff3CNT", + "tutorials_review": "1-6PZzOLj_fuUeBRwE2nnvAAjZ015nGhJ", + "notes": "1M6drkXXSmNgqCgcvoNSFrfIBLBmTfhKm", + "exampapers_review": "1_lAmT_Tag2scAG56swSqsfNpAu9Jv3uf", + "books": "15Ig2Sz6xtvZy6cl8qnI_po46jCneD_Pa", + "notes_review": "1c7FXuki6aPr9lHppMA1wGyTB2aocW4WW", + "tutorials": "1KnlIsPm578AkPiVqwk0ehJTjKG7vTs8F", + "books_review": "1Xz44VqNxzbp8PSHPQAnFd4X5SKETaeDf", + "id": "1afqP6xuza2TcmcaIXcwX-nfspm_r2xib" + }, + "ESN-700": { + "exampapers": "1ce1c4hXHsvuQVPT5E-Ap1wZgF0Hvsc6-", + "tutorials_review": "1ridg7ENzLAZiuUo22InzDME7PXaqiywn", + "notes": "1ltvfAxRshpRO7V6j9uc1Snwdq1YB3Ljv", + "exampapers_review": "1ADYNpZYSxUrH23SDmye-0e7W3LzrLMMs", + "books": "1z0STPAQYsRZeRJxuEH62XEGaPn43ORRA", + "notes_review": "1fkStZwwR2F9zq_jRnT3HdjuRDhtuc23p", + "tutorials": "13PEJl_WbcomPZ6NtqlfqjeS3X64gJNiP", + "books_review": "1nqyBthwU6i16Z39pQFWHvXX_aO4-PLOE", + "id": "1_zOgjwExBuLgO9TE6v_MneGIcxBPzXhR" + }, + "ESN-409": { + "exampapers": "1K3lhGc0EFRGv0lBd8CbwzzEMqSyai3Yk", + "tutorials_review": "1YAkzO1pcWfm4UgZW0FhQudIz76soDtRA", + "notes": "12P21MPBYUAZtazvD6iXjcucRdPlXPjMZ", + "exampapers_review": "1Htwm9XY2gmvJIXetbgPCheRxu_mjyVGH", + "books": "1e1GH0BwuhLDGrN1A08lehh3mF1kH3v7v", + "notes_review": "1AbjBSkSDa_NFMiSk7cI-Zr0Txs2I5GWw", + "tutorials": "1hrNACXqDVqEEyzN6aEHkFa9SFeon06ke", + "books_review": "1w2XKRMg9QPxUEna2wvq5g9MFa8BdJCw0", + "id": "1GlqPtW8FjwX0fk6kL1ZHHLp1U2OkpnJw" + }, + "ESN-529": { + "exampapers": "1gagx4sB05M5Y7ZqJkpexaA2K3byInN8p", + "tutorials_review": "1NPsyA6MCa3xyYOqeOX4j3bPEsyJbuEvm", + "notes": "1IzcwpX2coAM0WIvukIbOs6x-XWfabc-_", + "exampapers_review": "19EGXYcVh4JYbKI8Z0V7JYkdQlYoksuP4", + "books": "1sIrzvihvWXjvArFsL5Kxp18KmLGLpT2j", + "notes_review": "1YUzZl96sKUyU9VHUKq-W0MFqVH79P2nM", + "tutorials": "1jWN16cf3pk197-c-qlizibmOb1dGLQAP", + "books_review": "14Q74-FCRARHAbPv3gS7sGv42TsMcjDNu", + "id": "1SjywWUss6PpK0Bzpt29NH52CeU4BhCny" + }, + "ESN-547": { + "exampapers": "1orQiATxCW-ZqcXxZsuVboUhvNPKga4iR", + "tutorials_review": "1KtJicmTFzhv7PVDAO46Thlm2aucaGr-W", + "notes": "1axbg5H2q7xokK7fBa1pkq9cI5uy173GQ", + "exampapers_review": "1DXBejnrEB-7DlDPchdPe46iD75MUaenj", + "books": "1n4YLeQpztL0KMJqWDmPRGg0TjpiXPnL2", + "notes_review": "1sJOtlEFBipxFV32vvM51mxWwfn0T6XtW", + "tutorials": "1zg2nPyf4QOTwSDHCSOQdzKTU3NFtaT7R", + "books_review": "1l3sx1xiNhLe3251s_I2cJauPKOT3qsDw", + "id": "1HOd34-JBHGCGEqfhMCHPpu4Pu6beGBwn" + }, + "ESN-205": { + "exampapers": "1r65PIA_1KZL_jkRkT_fPrJo259viRTq9", + "tutorials_review": "1qqKkQ-sa9wa6N-zy0Tba4zLYg5Eqj5ky", + "notes": "1D48v7U-rA_q9FbnJIHZ1rEt-l6u5iI3k", + "exampapers_review": "1_PncUAWBjRnlQHq-Gl-nIHB1GfT6XpNa", + "books": "1RKno20lOsMcsmr9wghqAvWZ61PCWjvQB", + "notes_review": "1ygN7UStmgsO_79jfy3roqUfXb8D1r0oz", + "tutorials": "1UFL6vHe6Uu4EPViQABjR5x0r9SAwlNKp", + "books_review": "1FJVum0-UtiAzCQeLTlBSs2BizOa60Dro", + "id": "1pgoISBr3TP6dXqTJg9uf--ar9Lfq2Mts" + }, + "ESN-509": { + "exampapers": "1b5ejJ4B6tdf4RKBqWnk6XLuRZi84eCXM", + "tutorials_review": "1ricaZVJgn20gVUE26ksBIhfhcXGz0H6j", + "notes": "1QLUUTyIXZ-BPMX3JqRZEFK7QYJdwBBjc", + "exampapers_review": "1WCzL-Go9lXwcdvXfr-4BsjlXYkTyQb7Z", + "books": "18e9Oz04LCAwHGDNmFexrV6rX7vfM90-x", + "notes_review": "1vZ9qYvOEZfU2NGWrvfCEgcc2MEZxf6vQ", + "tutorials": "1WsIE2tp_vZSqwDg_e7brhUr73ZdM6LjX", + "books_review": "1l67Iw1TjS8zqX87RzQnnYFEBBgdLinqc", + "id": "1wR8N0vckR7Kne0VdZP1o4NdNpIrCfSZx" + }, + "ESN-391": { + "exampapers": "1qx24G-LVqlNhuxhChdKlmZa8yxHc0hWP", + "tutorials_review": "19Nt-C7AejO8NN-rlUbIb4JgxpFy_uPmz", + "notes": "1I0JhNFuWBF3otZj_9ftrjH_ehwpAowsU", + "exampapers_review": "1riJt6AWqNbbEzlO-fVsK_0RKb_PJ12yx", + "books": "1NFxy8-9rNUfIHkmZPiyGIXz_BiqG4VFl", + "notes_review": "1PIbYQHyx2xZiAH25aihCZmpN5siVIevk", + "tutorials": "1UByIpwOpQpD0X7k2BDv-j1Dnd3r9tZVk", + "books_review": "1wy569AmncSA-1Djfo6SUreTGBHRadzRa", + "id": "1Z5SED4bUpluIH5trV5zjIBFUbrgCurW7" + }, + "ESN-201": { + "exampapers": "11EiEcpIB5ToBWpB8MFrKKCbPophKk37P", + "tutorials_review": "1Lh43UZ2TVaZpAxgcFD4-PMDTIAIJtaMZ", + "notes": "1ISnP50KGXehcwferXc2DdOjXKMbm8cRU", + "exampapers_review": "1IFmqO9p8fRMVM1qyiZgUEIvTdcnny-UQ", + "books": "1YldcTMHyPzbLy7i64RKmCparTTcWR0Gz", + "notes_review": "1WrxduF7wYD4we5jp30CDWiFgnz796VcI", + "tutorials": "1ymNAd-6TxGICsWzABFGbT67OJcdz5hNo", + "books_review": "1Eus4mrrIzdebX-xT5-M2O8AT0NJ89aXh", + "id": "1bQLyq2JBT6HgtXyH2gUT5M1GL1m4DHsC" + }, + "ESN-203": { + "exampapers": "1EKRKCZn8Go5wCqy0Uds1VcWj080906rI", + "tutorials_review": "1WQ16yTipeWZ8DS1PLlXrz61JcBM_FSX2", + "notes": "1sYkwrRvBDdaEvF7VNxP4dqjy4PGL8Ulm", + "exampapers_review": "1hFwX2v6QlaDkeo6TIrDYveeyo6t95Gf9", + "books": "1zalQ1_as2zR_Tc-7gPfWgQMLufOPVWUQ", + "notes_review": "1Y8P5Cyy33ZLGc51HGMYVEVqFqjly3suz", + "tutorials": "1rSr4w5RDxh3X9rj3uwoTzEm90LQZ6-DW", + "books_review": "1RRKswps6oGy0EOJLQg4Y_u3XHdJS9wyP", + "id": "1OEY0k8N3MuRD_FKFR7rFFRJLWy42fQ0y" + }, + "ESN-421": { + "exampapers": "1wMUfLnxUijHHItEqBH5IEraly1UOPgXS", + "tutorials_review": "17Cjcg1MyZS4gcXyaZgw6N4HrE4A65jEq", + "notes": "1HxPKpWlBBjr3m7qheM9jxcVKnczHVlTu", + "exampapers_review": "15O86b8-shZPAdZuYZ_JcUetqu7slnSU8", + "books": "1U1JUm6z_c7l8RohM4sT4zbaNJLxvucj6", + "notes_review": "1RxEu968dQvBB4yLW4O1qo0jSeiiLmDw9", + "tutorials": "1uY-rTFiOtOWrOYTDgSomLnr9rG5UBYNu", + "books_review": "1x9dsYmogndISmy7v098W0lxsekQk8SHr", + "id": "1lRjJkWGZBF55lbwsnsnlZuJ3nGmDw3Q2" + }, + "ESN-423": { + "exampapers": "1iMONIQUGya2iTVehibxad7ekN0pNaQWP", + "tutorials_review": "1wzQH9CC27J8438DuD0fh2owhMTUWN8rr", + "notes": "1-P020Ten1EGkZKZUjLsxy08AcRXM3A2r", + "exampapers_review": "1mYs6p3bJLne5tYWzpHqCdLFhhHCuT8vT", + "books": "1QwHzvS5-A0WRfzMH9_sZOpqtv_3GIls7", + "notes_review": "1DOk3pRiGfsbAV4tAc-F5u1ysGTMw_bA4", + "tutorials": "1kWj08wnNT5bIGiACub12S14HMOvp1PC7", + "books_review": "1WSogczvYf9NolXQ3ZESRhEJMZ6KA-sPz", + "id": "1mBrcoCfUqpTksVXMlEK6xWNK2CJze5zI" + }, + "ESN-532": { + "exampapers": "16WC611iE18t25Z8u2FVoo8VCrpX44rXa", + "tutorials_review": "11-9Cdif4hwc_dYXo94RkNpmjCEXEX3DL", + "notes": "16kskENLMR9sSlnmOZVsr8ugncDLcpQ4q", + "exampapers_review": "1Gfoyj2Y3rrw-dOso0nBSSaOQBUlSvAA9", + "books": "1yJt43yyg1uYMfYBHUZX3ukyBNVYKq4fF", + "notes_review": "1TZy_qZh9rGw4zNWTxbQd0UWmXF7Ndhxk", + "tutorials": "1GwM-yYGnOBIa9mRfv3PQCp1c6MT6JDha", + "books_review": "1qraUPQxDaS6OnNwwkEisQFNW0LRbgWrr", + "id": "1ogc1WvwQjmumEaSk2Oi8ObdKEgUMwJZW" + }, + "ESN-223": { + "exampapers": "1vKOp-62UIIn5DKFTvc47awk7J3bTwdmT", + "tutorials_review": "1wx0nWV8JYg5ZVDyXLcOJAoz1SoQ_luSC", + "notes": "1mVDygK7dliM05xBlr6OznjGaVvo8fSCh", + "exampapers_review": "1UoVWWxgyRZD29Dv1oAPEFtHlSMbUE6ZA", + "books": "1uxWpHk_81ewSOjev8sGFJ6mcBAy13o7A", + "notes_review": "1i7vlQ1j9oEll6_jqd8POPsjPYb268KYz", + "tutorials": "1wWBYbhgXXLGqaSxKprQ9X7Tq0ttpeRMv", + "books_review": "1f6HcNDgc5HvPbZvpSZAzVAcRzUT8GGLV", + "id": "1UCIU41oChTqJ9gdOTk6xzDifD7LM8Fax" + }, + "ESN-221": { + "exampapers": "144sbYRoPy2Ea1ORdGP70Qgh0euGmnYwO", + "tutorials_review": "1CscOIPz04GAbSO69XDOyoCoJxbf6G2ua", + "notes": "1KsFyU1B3U0D6jJ64D9oqElGzn1hy9xf6", + "exampapers_review": "15IclgPUmApczIe4n0_OzFPXSXybYe_CQ", + "books": "1LnUkqY4Xizpyg1255B1KMNYEH8HoT58V", + "notes_review": "1qLq8I4gGr-zmIFg9bM6qdzkCfqr9RA7d", + "tutorials": "1UkHkmFD_XoJAxnFRCKZdgQJlBwLLdu8p", + "books_review": "1M-WaVgXv8DlVR2Sig_3_2-o1CLN2kL0H", + "id": "1EGwRMmOUz1Ar7VsLdnMnW3qunVZKSUtG" + }, + "ESN-103": { + "exampapers": "17tfUVg7ChXz_VNQ7UNYS68Es-1o1AFdS", + "tutorials_review": "1l5BVeO3A4mBu88W2jtrWZr8SZTEQTWMU", + "notes": "1N0vO0AivFq3hlFjP_0B25pK65MlUNe0x", + "exampapers_review": "1Cd0w1Qqe-64daAIjD-9JVPeIj9HxasyH", + "books": "1k5e6v5VVzNg-vhGEANrmcAC_QoHfCgbg", + "notes_review": "1lKqr0yjW-wMPzqJhPOtO2irm6NL5O5Uk", + "tutorials": "1jE--Q772VDB39aWzRm44cx0zO9DXRvsh", + "books_review": "18sDg8vANPGU2QZEuMAdWChMRzzEyh_Im", + "id": "1xuIpKF8VJngPM7tVDJj199cW328iJno7" + }, + "id": "1h5kHl9QCek3V9NKy89NdL4XulrgJvf7L", + "ESN-611": { + "exampapers": "17hiSj094D2UTjBA6H_PGsrWaHxcqGsGY", + "tutorials_review": "1gvC6MMHDK3nYx25n4qvPwyIw9mYai3tr", + "notes": "1RmoKkcgkp4_6VFdz7302OgOJW5CaVgvK", + "exampapers_review": "1gEA3Iog8J5_oDKrhAvldYwxqe8Xoo45Y", + "books": "1dlDHRDAnG_Ar-2P4eJ0pcwwbJwsQTijH", + "notes_review": "1iyYwGCTzLNKTLJoHgN6P0GzXhH8RSeJq", + "tutorials": "1x3zdOp60nKwCaUgJrBjBpxJVq6Apuf18", + "books_review": "1v1eR9br53YioHnsUj1YRanDGLAEViEYJ", + "id": "1-dnrARJPXSKtjw85CFWLzaRHONnJ4Bk6" + }, + "ESN-610": { + "exampapers": "1398OwhSOczFKZxGTUSkM3DFqIsNcKZuy", + "tutorials_review": "1t6DYG_yLHDeKHD-_B1yWc0A0xop31HBv", + "notes": "1DFaKJv6NyZz4Dg8r8DK73jhhw-NyiuoG", + "exampapers_review": "16SqHcNpXJhF2tM4oQhj2zvHgRrT9ngEK", + "books": "1m8em77oMSg8V7BDwt9seG7YY3RwN-EAE", + "notes_review": "143oUtmvI9YXdyD1UIBDI4Jh2XgC_dd_q", + "tutorials": "1vRa9jY7FGk8KwM9TlWJ5oBq4RneEgJ1n", + "books_review": "1EQ8Y4uIUub5D7LaQfvdsNMKkuvFWgivt", + "id": "1aXB04gMEUz6D6UAPWGt47s-nX7giIFLV" + }, + "ESN-499": { + "exampapers": "11J34AgWlZ3UuEimbgeYm1lrnCLwmZfuU", + "tutorials_review": "1xStMZI9mFn4tn3wh_OqB7BqDQxj3_crr", + "notes": "1s9NTMZJajgjkmTFePfONUvbd4N0mJj9h", + "exampapers_review": "1jaXWtjbeyugMOD7JtMrAml_eIfiTi7bm", + "books": "1l0G6Q57P0bpAiwbXk4lBaoJ0xSH7X4L-", + "notes_review": "1aMAolGH9OhoDNs87qi2XHcO07acGfXTG", + "tutorials": "1H6dszGIB6gJvi4QHZXhJgVKeRZTQlqYl", + "books_review": "1x_2zNnczT_f0_sw8T4C02oXiRQH7PbxZ", + "id": "13qTYfzP_HuXGi7eezn1aeiohkvYyfKsu" + }, + "ESN-599": { + "exampapers": "1Vk0HGhSwB9SVtwQtlDB_goSo9sd2P6La", + "tutorials_review": "12tGaeieN6AMvVRFkDn8iJ0cWVIEDDMll", + "notes": "1gdEl9DxTd_rptEBBAWfO5BtP0BEwLgef", + "exampapers_review": "1PyuEXj_n1YaQj_wd_y4FbhNrT5BLwh7u", + "books": "1nfufznAF3sEeQQuB5x9YBT5cj0-mkq9V", + "notes_review": "1Wn58f2gs8ZTjp7GyYhZMHmVM2ykEkQ3D", + "tutorials": "1EoBplK0X9LP0q3JOM9cWFAgFEvlnoK7j", + "books_review": "1GqE1EXyLqTuNqWuF8RI1xPOWiFRAJMcB", + "id": "1UdwapBxUQV2haZ7hAU3v_Bogxv_f2RuD" + }, + "ESN-323": { + "exampapers": "1rtgLYyhVmuRP2A-wVJztOTx-wL3FuYTL", + "tutorials_review": "1SXUIif7vr3oXY25gxEDynuGJLlGU55vJ", + "notes": "1uDGiuFK7blePrNnePcoSo4Y7NAdlz6Xa", + "exampapers_review": "1mbaIyC4YVuZV2dIVwWu6Q8azTBTyF1-0", + "books": "1bFK7vpFSlvq7MI5n0VxcCLlNcslUXFRk", + "notes_review": "1QQtl2leenIHgao6GEbXYryzyOxz_558n", + "tutorials": "1wbu2ExSGVeO5zrYECl5GeXJm6Zoo8thO", + "books_review": "1_ZSm9ok8x8I-WkSH7GlGnUhab5xqnvfu", + "id": "19hBoxFjcPyCmtBGpGfq_5tL7JXzhj2RN" + }, + "ESN-321": { + "exampapers": "1jGGdn8n5rzug008WWxu3effb4O9wdWs-", + "tutorials_review": "14fY_c8i9DmBLQS9fg27uh7b-aYb1EsFz", + "notes": "1WRDitjrPPL6rayqTyRbrmuvK1rEFOH7-", + "exampapers_review": "1phGe05itW535BqG56aBeCJWdFmIKR4bi", + "books": "1baRQ-Wx_eHgLmWwqfsenKcRJldQnRHhh", + "notes_review": "1Fg-EV0miGk444r7bSNUeaGoG7o9gWeAo", + "tutorials": "1Edf5L1a0BzBwNRyZqlFAF_u6wx207d60", + "books_review": "16TZtbbsZOd3a2drQlN4PdvogYZwgTuRD", + "id": "1dXhgEo-C43WZnHfBjwF3MU3miN6AF0AJ" + }, + "ESN-531": { + "exampapers": "1NR7fXeupF2PqOPmryLKJtuUTkYsna4QE", + "tutorials_review": "1fl2-03om9j8SRr5srkLg5uslevyN1aAA", + "notes": "1Ltq2EMTbywSUoUUtaANgCUARWU7ArM8y", + "exampapers_review": "1UIhRo9y2xb3op-KjRn4MIsMMrkAz5sEc", + "books": "1IXlgUu13P01ipFFN9_BsH57RgW74-Nyj", + "notes_review": "1raFlMONIK3NKXwP3wsnwADiTqEaJkou-", + "tutorials": "1fzDkFSoPbC47jhj66FR5_ATFjRY1cWWm", + "books_review": "1A3ehzjQ98FThNx15bNtTyiPJKUkPtawV", + "id": "1_H3vswJKQ7YJ8cXjlyIVanGFIjiZ9E-k" + }, + "ESN-325": { + "exampapers": "1eA-kBJj_Mdef1eZ76x-WhMY1rWS94RRB", + "tutorials_review": "1K-O4o5uYp6Ti-GiEVHx0bAo9zx-ZiAEl", + "notes": "1CmJEyhhQvqGqWdUBFExFbejyWaWAsNGb", + "exampapers_review": "1KeaOVl8oav95Aj2faGTMEOcXDE4Y6g_9", + "books": "1Ck1x-nSYo075Q7Cttdt83HnXJkBwocCE", + "notes_review": "1Nh3gW7IogZvuzray7442bEsdAbgv8knK", + "tutorials": "1WUGDW-qUmwduEV6js_5AATUdOkCUWS65", + "books_review": "1mvX__Bw2QjlJyha9_sTczd_l4bqv9OKn", + "id": "101mxjm2Y31FWQdsyMTYHwh0kga5zFxMr" + }, + "ESN-305": { + "exampapers": "12kUTj9fbOegDlXmrHNARB7M30rPrtvUL", + "tutorials_review": "1CmlqAXlSCQ8g7cq38ElTOU0n-a6DZd7E", + "notes": "1U4HWtJhe87wYIK7C6qkyQ98UJ2ZXLBeT", + "exampapers_review": "1quRocTyNG-mp4Bp7VP36lTgvBir4CoKu", + "books": "1_urWbreVv1rIlYmDCB0VdsPUTV3GqT5n", + "notes_review": "1dAiofJe5K1nLy-haL8bOfIpf_5tg49s1", + "tutorials": "1eTNXaGPUwn8Q7Kvpsb_T0jpCw3cTD4U-", + "books_review": "1lGxDftUEgsmE1hSf2jLD898aoMmxbETr", + "id": "1p-t9o5riLXgcG31eSfvrCxgYN1Fe3g7m" + }, + "ESN-301": { + "exampapers": "1K933C-FfBBypPo3lWu_YiPS-Alj4MB6e", + "tutorials_review": "18Xtwdor8t1FiETiZmiMQKkB6vbAZuqRJ", + "notes": "1aYpQV3M1IFSzrCgJIHvxa1mK4s1MUbuB", + "exampapers_review": "1C9GqISa8L0FBV7Lg04Im7AeYIoS8cjRb", + "books": "1yNTFlmD0566h-1R38QIliPzN5boafZL5", + "notes_review": "1K7Kc7fP550P9iRo3pTzez5TuJl8t5x6z", + "tutorials": "1pQiRcF0HN7-vwfHU9v5LmSWkk0WLUmra", + "books_review": "1LbLRH3TrLezBrqmjBMcMxMjEhIODIiPj", + "id": "1-vxxBF2RaJsqT4PHW6zEPu99fQyf2crG" + }, + "ESN-303": { + "exampapers": "1wkB-flkmoJAL9S8U-GtsPqnAW5qASOe_", + "tutorials_review": "1HX6PLVb6_fYbzGe4hKL0Gk4h4oWcpLoF", + "notes": "1xz9BHcyBAX_yFY3VsO0CcbdkrzmRiLca", + "exampapers_review": "1lTwj3jBrsDWoCHEvOZQF0060LNpFcBNr", + "books": "1k_Da2ag1Xi1fqtSEUpTICL9_cAKZBMCc", + "notes_review": "1mbQ_YUAv8y7dhk5wdLkjct_KvB5yHS1m", + "tutorials": "1dxIn3nF9ihJcWn3ASLyzCHa3NixbIMY1", + "books_review": "1XctydRpRqcCH0kUuLmDQk1MmEm387CoR", + "id": "170-Eg7kqKNWuJoUGjJNHOkTiOY9lCtJx" + }, + "ESN-477": { + "exampapers": "1wT8wz5wNBTWniWDt3vPuefnhgUjlv-bg", + "tutorials_review": "1y6AvVBWkQCOSlT-ha4pr5Yd3Wef3DkWZ", + "notes": "1R0ae6oD4P76Bp6kUdFPXWHXaGouh-FwA", + "exampapers_review": "1dljPHkuLb7qrcDWFnb7BU_e9d9J7neV9", + "books": "1HGTBAaY2nSjMCwAm9Br1_sllEVqksN1_", + "notes_review": "1y8Z-Cp8nYPh72kgaEEC5394mzHIwJI1I", + "tutorials": "1OdE5TqtmB0GY12aApoAK0iVTWK0wPQSB", + "books_review": "1HWwmEgg0bnaTUjqKAJrwDBf2NAfkzxp2", + "id": "1ID5KRLtBFZfhcpC_bXdNvvS5wT7AswY-" + }, + "ESN-551": { + "exampapers": "1_0qnM5txkvKjsaWskoEgIBWUNIxpHm9k", + "tutorials_review": "1xA__6Mu65bkE2IZvV8e6wUCkhP_pXcJc", + "notes": "1jw-xYW3hgoNoWxvvoJNXwYPNwIpwtdA2", + "exampapers_review": "1enKDSAwgMfUjV5WmYswp8OZMr2kXsDez", + "books": "1JGS8cHBe7m7PdLcZNIGibL40seDMMkDI", + "notes_review": "1-KbmEktextZPknw8yroF6IajV2wTLvvz", + "tutorials": "1mDStjxe3scBlOau-MaMMPMs4Z8ICUgTM", + "books_review": "1YuMbxMWfdiCfxu45v_FvHpbipiqzH6CC", + "id": "1Nr1iINMemFVHynXI6uDihUt5IUqI_2-a" + }, + "ESN-553": { + "exampapers": "1BL6L3kQyxGqTfvJvwomhTDbZ19jiX5f2", + "tutorials_review": "139mo97islLM8jE4q7fYZRjNhBbfxfz1U", + "notes": "1FQpltnvOli-S5AoSsshaBc9-9FZUmzN3", + "exampapers_review": "1d1di7Z0Wlk0XrfdPx1ayzaEdob4g6Dck", + "books": "1Rh9IErkvca3T0RTIUKmk0Z3huvyW6wEW", + "notes_review": "16ztHxmdLziMOJ2xHiiVPtG-nLgFb_2qg", + "tutorials": "1TZARn9Em1yynEjTkn6eBRZWleXkL5Zhz", + "books_review": "1AjhVi35ehaZQMW58dKV-r6WgqHDaM9ZF", + "id": "169HL9VoXfMrcYE7V0eiZJb6EJg43DWCW" + }, + "ESN-510": { + "exampapers": "1eeTlGRMp_eBTNmH773F5cRpaDAgUweMu", + "tutorials_review": "1250hdg3DLpRJRa7pIy2jgLUMnJo9ETZS", + "notes": "1gNTgs6gR0djh19eQsTa0uNWR1AzlTqKZ", + "exampapers_review": "1PQG94o4f_pqT0Mpj_AMHV7JaU4-0VTuY", + "books": "1QYE1C-z3rCG2ibQ2f-OF-VD7WVIuxNms", + "notes_review": "1WrEfkltraM1CwGzmcpxz8-X1vT0fM1R0", + "tutorials": "10K3s-fiPShQ5pkcsiJWkyGuaOo5J8jZb", + "books_review": "1JMCgVi0cmwUvclKhFG2FQhMtvEnoPbhu", + "id": "1sznfU77JeCQ7LmZFfXpMgUyd1ahriLRT" + }, + "ESN-511": { + "exampapers": "15GcP4kp25rDHHUQdb2oZq8I7P3DEt6x_", + "tutorials_review": "1UQgdSqTTKxS-Qx2dTt9MWIOLyUjYK5VD", + "notes": "1HJ8LIl773MzbhLxKlEO2ua0muj54JFqp", + "exampapers_review": "1YDcjIF3B3dTE-SD82tZAW3i8fKVqP_LS", + "books": "1giIkmsWtMMWtJKttrgt01cWd2e2a9gAQ", + "notes_review": "1F7Ydo3VJzeIGD4POsbf6ZLPxsF5Q8w8e", + "tutorials": "1VvDxscjy78x5hmsND_1Z2qGDNruz4xY6", + "books_review": "1yfZBBejSOrZHhZ35HC5YuwRrN_jv0vVi", + "id": "1xGBzgHv-fcnOzBV3LIMX7cM7ajrQRe54" + }, + "ESN-512": { + "exampapers": "1Nu4tCrFjYjRT5TaqT-4_xqAWnbZT1j9q", + "tutorials_review": "1Tq3HjQar15xiDUffW6Hq_V5RNJ1EsGzL", + "notes": "1t9EYWIRRI76w9amUsJmgf-7WBusTdGiG", + "exampapers_review": "1b-RukgLkmxWuvChMjS05-WraflQ3p2F-", + "books": "16-6mvSwhhlCWhy0up-vJ-CernW2yTNhu", + "notes_review": "1EmMzMrlzLrQlXv56CFz42iTaz3eHfR86", + "tutorials": "1jTL4GCFRrd2iA61T08GTVdP_c-vLvd5V", + "books_review": "1d_auNkjWZjvtJ6UX-sYcAL3Dw4K_yaEF", + "id": "1yTI5c-ph764spbj8LqluN5TaFMwqHE0Y" + }, + "ESN-513": { + "exampapers": "1JHkrA7gZeS9Px8MZ6R1r8cXEhyglkoZw", + "tutorials_review": "1QpEt185Ac69YXzBNape_ATNoa-zV8FzW", + "notes": "195bG64cRK-5vSBnbVx1LMhfHA_ptGJMz", + "exampapers_review": "1mmUVuK7K81jRw-U0Z67CvjK8E9Wto-Oj", + "books": "1LxyxNTWv658NoP3I78XZnnZizWKnCpBX", + "notes_review": "1RRBk6jbvkXQPy6ppJQ9CyrIqI7pT7LH7", + "tutorials": "1CEMVJn8mAtgdUgjXjCoAUVP3l691acpf", + "books_review": "16zn9BJnNWMTNbawrRzOfLgZfMYWxPSf1", + "id": "1bysF4tGHQb-Z_W8HI__CH0bjCVDV_FDo" + }, + "ESN-345": { + "exampapers": "1Z_lEeehOCLXgzhU6fHs8ak0a6ykbzkx2", + "tutorials_review": "1sm0AkqZdpQQMoOgXeHlelaLhP8E6Vm97", + "notes": "1MHQEbymYj3F2tsWx1wIHm7KHBjKoA_9J", + "exampapers_review": "1qk_x2ADBvmw2CvqD3QI4HtIMmVFA-dyp", + "books": "1UJHT5xu9H2m7-c3Onkdb_mKz65TIoln8", + "notes_review": "1nE_cAG2otuv0rHR54zZyPF0JPhYamYyZ", + "tutorials": "10982eZpvIkwAGH5wtHVB90JJaSATxcPx", + "books_review": "15H8BFI7aUE0wZUfeYmptIFvuQT8FOjyd", + "id": "1vlfJ0XUbUHGB6zFYmy1icz3nuAXkFVPs" + }, + "ESN-101": { + "exampapers": "1zjmFzr8ggJ_7zvJzvIZseKWKr7vaAFy3", + "tutorials_review": "1cUg5bu188r0_cp91UCf14Jf-ANgaRBVB", + "notes": "1XjQHTQW3OMnLMiEPgx5o-jWsjErs18jh", + "exampapers_review": "1WVhEOKS8TFe5EpZhNv52xDI-FF0GOUbW", + "books": "1NnVAO4wK0BoUO_ypIuzlNdCzrnSQK_2v", + "notes_review": "1jFeNjTjOk7U4WvsjEgP8FSyVDjtyrpr0", + "tutorials": "1AzgFqr9EMDV1JEX9-23fqEx2Hq9mePIq", + "books_review": "1T-7RCdpattasm2auBFREJfWtby5EOYkz", + "id": "1GjKpxNXRgNtwO7KXxjUPOElQPC47XZBt" + }, + "ESN-581": { + "exampapers": "1W-fTPGRxRQtLVXqJ_7LLobUvW2Lu_Zg-", + "tutorials_review": "1HNl24h8D6LSzMmej9dN9V7QyHgCvNcp-", + "notes": "1tyrEt11QYeVtWGsMGf-yVjeheYwyxlZy", + "exampapers_review": "1W5jYcKRp8EYGO-xKjeJgG2KDjSBg_W8G", + "books": "1zkOVNxDtcPphT7R7JphnPOGlPQ_fXfHH", + "notes_review": "1FcJbhiJCKT94SZrlW03OO7r0tJdcek93", + "tutorials": "1XTQi0jwyFjan3REkSk0oynU4DPZ_hLHl", + "books_review": "1Ei4dxYzHh5jdqzvVfr3zOll4ii24XLsY", + "id": "1_Tm7QJOVkuh9Z8iOpgtYkbiNPHrlxidx" + }, + "ESN-603": { + "exampapers": "197iWyDjRuBDvMHWSElpbHXyOUkSwO0Y3", + "tutorials_review": "1JYgWT-ALB5NKAkLhlMG8XUz6qSn5ZxJj", + "notes": "1Mf2HGKJtcMQ4aE4fSqraZAuN5or4LZtl", + "exampapers_review": "1p9HJpt8eRjf2g16u0QQcUOmeqtR1qwMu", + "books": "1l90-_-uEhp1kCcHfGTHWqvUBWgZUuB-V", + "notes_review": "1W5AbjyUxoCJPzTrmHjrqOFcg5qGTQUtZ", + "tutorials": "14eot0j2UtKkikugjefwlUsJUJJE7Fw_w", + "books_review": "1MpQBadN8520GsTiAGJeNpu8jzds5_uPc", + "id": "1cEwB7ctwp8CAYsoxX9rQsW_pTRbbeYSS" + }, + "ESN-606": { + "exampapers": "1PvIQEiB6UVY-H_9rY0E_M7RRd7iDchVd", + "tutorials_review": "1ACT7XWDSy0IvG5D-Q7ZVLGSj4XN3x7-n", + "notes": "1Kk3H0p1p9T0rBjlwq-939NpDtAMxdiCV", + "exampapers_review": "1t9F1CzDntDyTFzk76tXkmVvbDgtFpCSI", + "books": "1WlCul7qJGvAtg_uFVyATlCupzs6ObCJz", + "notes_review": "1i-rXR6MNVwQo5re0JVurxQViiP6Wp6Cj", + "tutorials": "1bhUD7vFaTO215Ciu0A0RXPS7X6HbQC8Q", + "books_review": "1YukJa6zU7sCoFqIcOe2WPypFW5w6kt5t", + "id": "1RVAWVqlhearNDbFUlYFqzTN1n4d0g3M2" + }, + "ESN-607": { + "exampapers": "1pgCqRtTMPLbSBRenO-dqHwMIFgCML_CM", + "tutorials_review": "1AFH-DDmlS2rLHUfZU_VNOxZiS6QS2iQf", + "notes": "1LOjwfK9Zk-vnOxqa_5K6NK7sTJXU-VYD", + "exampapers_review": "1SNSAug1z3XQ_a2sgYEgtkmG-aTWoGfML", + "books": "1YHfoK7C9qahmWSxmNyBuEBHG63YprCL8", + "notes_review": "1qrUk3RNRu3UShQvvtu1mz55Q9DwBegwB", + "tutorials": "1c4Cq9_CKDXrPkwp9Gj7q8Pf13Dpg8Y9_", + "books_review": "1SJcqfZel2t9Bfy5KlUVaRgE5r3_tRZTx", + "id": "1043UEAo1cRduEoEkaoJ3vZjuoRt-BkkJ" + }, + "ESN-609": { + "exampapers": "1kxOY-FtqTqpy-7dljy-G6ZzPXWO1e5Gf", + "tutorials_review": "1emmG7BU9q52XM8Feefr7NrXgqj2aVKPM", + "notes": "1TPCLtpDgFFaAckNhpO5eaW9WmCYVT3Xu", + "exampapers_review": "1eUCCSOXOFslfkVufdg0KPCK9fvnX4mHq", + "books": "1mZw6URCSHImt_WdkJL7kWL8s560RmNG8", + "notes_review": "1W1CrKx9jNq48YGf4ZGpqrkcjjqqRp7j4", + "tutorials": "1Ja-_la4RLHxrvyv9-taPmrBWv-mYgGU_", + "books_review": "1ye-15mFSp6PwTb3MzZTIPRMKqYu9nyzC", + "id": "1SFfOPPFJ7rcg_zaGUFPnktNnQcHg3MvI" + } + }, + "EQD": { + "EQN-700": { + "exampapers": "1G2ioxm56EJqfKci4ZpucZF0eSjQWrBG8", + "tutorials_review": "18MDgL6AuhyF34RkIAzkRZYHJdP1TR1Gl", + "notes": "12rtCavtgaQory_rr7SO89YTAlgNIIaOS", + "exampapers_review": "1fLyUOcaXu9YqY17ITLoxN_SgNUralOqp", + "books": "1NB8A0Xv6S-luZVBpZM3NWpq0-RYKzrbr", + "notes_review": "1gG26xjLJd_IN6hyAF4-aHtJteh2ELS_K", + "tutorials": "1l73j3TLenUSBl-4lckAsO3aKl59pZPcx", + "books_review": "1lDoNEWbEfpGLTk1NVP3hG2Z7HFVYZ7mY", + "id": "1vJoADBJTiwDKzxat9NGf5ogHzE3VsD3_" + }, + "EQN-532": { + "exampapers": "1cv0mkiDRFPj9M6vDE29YzPlRWbwv8f9c", + "tutorials_review": "1JeXCM3xyLxAHFDNqxBVpEjaW6RsZP-1z", + "notes": "1r3ohWZjYImODibKUKplGLSipWOzp2pzF", + "exampapers_review": "10B1SHBfU--gnfXW4IY_LwSFd8VPS-O4g", + "books": "1Q-w1155WPEss82CnwfREv2d7K1CnztWe", + "notes_review": "1Ig222zBHsjIYmtDL-GMpqztJyM4CvhkS", + "tutorials": "16o2iJAsCipwIY1XMBQh0wJXW5Dm81XcH", + "books_review": "1TcHP6X-w3IVKwg7HZROQg0kKnVEq-NCm", + "id": "1bn6IGWZ6p4SA-IBsi6MnshKpYaEzAC8x" + }, + "EQN-701A": { + "exampapers": "1G3zXDRD8AHqnyVSp3ztFhzAMEPw4PASZ", + "tutorials_review": "1vJbST0ropmadh4tmj_9DylfFe8PFMS7d", + "notes": "1Sxh9EMvRS_SvPZ8AVdeVs8gd8UvN40iZ", + "exampapers_review": "1jPC3WDwOrPmZTrENnWNNjAjU75Zkalj-", + "books": "1mbLTSohvyu70msR-fQepw8j8c-nmcu2x", + "notes_review": "1i6kx0I9qrsoqa9dEZOuVAm1c3M9S3nMv", + "tutorials": "1I2nB6tfB60tWvJKgdgNURyZeZyPYAvhl", + "books_review": "1E085jPmPJBjm5LwjmcnzgANhirFxa2ob", + "id": "1K3M48DI9QwuFjjRSWpkLAvZczeOx2wiJ" + }, + "EQN-525": { + "exampapers": "1RQXg5x0yjdnM3xngTAWjidDPbRYba7js", + "tutorials_review": "1WAwP6misIZLHADF5ElIUn5LKf_6iNLc5", + "notes": "1uWyj6hCWvkuFvGvjlYSl_eExplkizfPX", + "exampapers_review": "1fTI1qHDOrJIhYd-xbzyf1elqIFVIcKPa", + "books": "1-FTYPJVENFfBU5TzW838QfKuEqbl4CEE", + "notes_review": "1IS8O1m0K19ldWfoZst_BNvOKugfFF27K", + "tutorials": "1NOKVLngF0CMd-LLl6TNrOJDm4NJa9k0U", + "books_review": "1PR5klm7L-Z5CkxPVBscyjv8V3qDmxdI9", + "id": "1x9Tf3bgswDGEIzS4BFje7hCuscsZKJdy" + }, + "id": "1l1HrrySri4U_QZEE-AaRqadnZWZ4gFwY", + "EQN-501": { + "exampapers": "132_mV9Fu-AD9h0IKjaH0nS5p2TdSfpD5", + "tutorials_review": "1z7tE4fiYKjRO4abDeHN6oAuBIkxBxei0", + "notes": "1YWp14bmCeq9GnbJduhfvXDw3SCPvqYZS", + "exampapers_review": "1VKnl1n-4xUChHxw9UfYoXGu11MtXnP7m", + "books": "1Jj9uh9L0b8EDpuYgD6ChuJlYjf4MXlhF", + "notes_review": "13qa3Mg0uA8PbvZX-c6ysp9rKB2RmRBX9", + "tutorials": "1pgCiVuedKSANBTL4wkVHdLJE0mSDie1Z", + "books_review": "1FKO_lGQKsla5N76PVa6PbsL5MGbxayZ8", + "id": "1PdFBp6hcwxiT3WOWcj-t2t3z5-Ddd46W" + }, + "EQN-503": { + "exampapers": "1P5zkE7uVXJuA-XzFRZXd3dzbusg06aGL", + "tutorials_review": "1ZeFu7W0eu_61nJMjDAl-Vltn8dwDUd5Q", + "notes": "1Z-4ZXMolFprRfEt5uDed2iSK9QNtqRYT", + "exampapers_review": "19xYkAV_TXjoIpOSpsRfJ_2R2tSgAqPx7", + "books": "13YiaiCOHOLvqwsQ8qqKAFArhntxQzC0X", + "notes_review": "13UgdQjtLDARs3h0wfjz5W6Gv8ziLR1yQ", + "tutorials": "1afu7l7d7wLzU3eBCmeFj1AXLQMFwr7-y", + "books_review": "1egByY-LJFzdhlWJOuFEGl7prBviIouAo", + "id": "1NE4ze3ST2uv6JHUOpT_1UuDmEPBgkOz7" + }, + "EQN-502": { + "exampapers": "1TXOb8Ae_Pqv-IUJJAjnqHe3Pi_p7O6BG", + "tutorials_review": "1T1kEbjKrO-GvHJmJnImZusjZLatFBjg_", + "notes": "1yMwXdxxieplOsp8hZCBjK896rY_uxlYS", + "exampapers_review": "1priK1WuQXvP1KjukN74sh2uWVAA-iSdP", + "books": "1tJvMa-n92v8c1rgOZCMFUrB4LxTw3kra", + "notes_review": "1JNX2Q3L-NgbxVF2rFgCmIZ12kBgAGlCE", + "tutorials": "1b0k8OoPq_GV0t3jsWMeCLW_eQ8GIoc_n", + "books_review": "1EOCw4u8b4OyPSEk3lBxqpo_g335JWNWM", + "id": "1OVyyfU-s02TzdXFD1LBkpcy1Cii7vuJ6" + }, + "EQN-504": { + "exampapers": "1dCx7u0THVG1rhEHH8gciGh5bsIugNW0q", + "tutorials_review": "1XcFjEOq0UKFpkgcMi9Ht6Vc39STcLs1d", + "notes": "1vcKsNnRCp7CFgYtBnN5Px_soOs8XchNZ", + "exampapers_review": "1SazsO-DxDL6ZSVYe9LxH1sE4vbu6sifT", + "books": "1zlvqiLWLo_vy5i0RZJTIpz9qY_Ba9XCx", + "notes_review": "1wKIMsnaiNk_S8FHlcQpu7VdLBZ4MYBxD", + "tutorials": "13yptqvfAKmw1kkSTjtp5mBwSM7HjImGJ", + "books_review": "1EkrvKRE8q31DR_I04IUrn02bPNHmcRGj", + "id": "1pTeexGx6aqSHy0x_rbxEFgH5-tIoi01E" + }, + "EQN-521": { + "exampapers": "1nwV6zNRttqcspAx6CnIpYyfrmFfobUFG", + "tutorials_review": "10O2HLsyqmB2g_28wmAFQlNC2J-HxifL8", + "notes": "1H8b0ZRM9p7G-F-yycynUx2-qnDrkCueC", + "exampapers_review": "1ajZUDeQHfQif6zIrcftFcZEqo8CtVmWF", + "books": "1_oN7CUA_RJRVOYsNWyBeNaTjHXH_8keD", + "notes_review": "14cMjSxfoCVQp_vECLEGvVT8WGkp2eVNU", + "tutorials": "15itcYNhHz55zACfRxXM8Klev-3hWiDP5", + "books_review": "1Mrg1-8W7oQ1HWuELHJYbhvzh55HaryWz", + "id": "1FkHQnBGngVmMDKFnUcJYW1Gn1nPHSSYh" + }, + "EQN-563": { + "exampapers": "1kIoKmQ5qEzWFdXFPy1DN6DFKM8A_UlC4", + "tutorials_review": "1mFXWSrE-eCp1e8fIVMROD04yc88OpFjC", + "notes": "1x7IfmF4RnYeH_4JHM2PVtt3zIcXctVcC", + "exampapers_review": "1BLgIWPNV9F1cw_Lmt_h4sV0glfrLtYt6", + "books": "1dOYnAMnzvx8JrYiLjAhXue53zWNuvTMi", + "notes_review": "1FdsQcUnTL0QYF_BD5VPIJDQlzc-w5GvO", + "tutorials": "1tmlKhezXfTHc7oRJYrflkyL0N-XEMCqv", + "books_review": "1H3YPMmrxWqSoToSHUTiGLOfb_3KIGv3-", + "id": "1eS8gOSekMHbB9ab9X6UcRyjtihAuDqFK" + }, + "EQN-572": { + "exampapers": "1nCo61pbw8cOmXce5I6B87pqT5vfbOBII", + "tutorials_review": "1E9n6e99z5Bw_fulwbbco0O6AHy9OLlFv", + "notes": "1KRdvYn82tky_OHEe8N9cUWoC3rcBay2Y", + "exampapers_review": "1bsMkVSdSaP3P6TS7B5fBsB4M_iSdbcS6", + "books": "1opWpAbc7Fjkc6_mtIr40cj1u2xJRJuB5", + "notes_review": "1waHyHkexEn9wULoY8SJIVIzT4C8r2o7k", + "tutorials": "1wBRTFrLDjL2_cn-_oFDACf-SuWjkFU1y", + "books_review": "1UTCquT1CIo5PcjXqtRvV-WYT-6-buB2f", + "id": "1DkvjZ1LpyjpaY9VaywnYDTuSInQqicmH" + }, + "EQN-513": { + "exampapers": "1VcdgU-Q7x-TSiK2KCTpuXkwYCapkyXA8", + "tutorials_review": "11ZIxDQouxePlFq8joHor2ivBfDzGBOZc", + "notes": "1rANKOUuAGloXWlX0GQpab3ioeVOvHVgo", + "exampapers_review": "115pYgdAYTvd8UcKwKcHgUSq8keaOw72l", + "books": "1sufvPng2MUJudPFK_rwLnA7SzYMq7X_A", + "notes_review": "1hwmT1iXR6z4d2wJVatT2vDY2es9UcUlw", + "tutorials": "1PEjkO27J0k8y493Zp9QvJyyTWYx_iy0R", + "books_review": "1RYl_G7MIEPXuh4L2SEomTtmhn3Oj_ANT", + "id": "1zZ1loQnUz3t4Au293_9feZOCH6hi3rSo" + }, + "EQN-598": { + "exampapers": "1T7lQD80cytMRBtUEATvt7AkTs5Wz-Jr_", + "tutorials_review": "1RNLtGz6C79l200BYeQRzPYgTM90La1Xl", + "notes": "1_Rr7Khiu7rD6GanP9Ig6K6RmUXhL6ACH", + "exampapers_review": "1ZB4u8jpr0G3fUrj0kdk8bibVHRpfmj0b", + "books": "1U-WwXYkXJStXkEGvcfeN3xnPBlqDlDhL", + "notes_review": "1VeiPHjsqcA3v9oUD8jllwbnaaEjneEHe", + "tutorials": "1uO3A1xRmxroQ2ZaC1u_3bBwEnORqy9s0", + "books_review": "1CAZdlhOUSdsEnCphffJnIhcFrTtQHXzj", + "id": "1ubw3L8wIOHuHBZhRZBSErQ1KgfF6wER0" + }, + "EQN-531": { + "exampapers": "1MfGuc8TuG3W4j3xsV_8sIMUQqtjVoS7s", + "tutorials_review": "1B8S8XNJExgRQ3ENdrex1kfwE3If8w6dF", + "notes": "1CagJOaK81sB5y6xFBzCDuyVeODOjLSb7", + "exampapers_review": "1QrbHr-w4NhyB5cysedYJ9EqaU8Kq9exj", + "books": "1_zNy_kxJqpA0cQ-AzQg1cLnfIZbUKN7e", + "notes_review": "1IJf6DqNwulKBklg3dPXboZd3Gabzpa6O", + "tutorials": "14MeI7lIBWwklIrwUbst9uIQFkKHRNzNX", + "books_review": "1TomM0S8wzhJtEAL6wTC4N_0Tmqg98pgT", + "id": "19AFUaEprw7LSI1gRZX2wummJRFmhPUhS" + } + }, + "CSED": { + "CSN-101": { + "exampapers": "1Avl8VlB4oCirh-KVKfUWI4GwfrFCLThk", + "tutorials_review": "152TuarxUK7pEjkWtftbRTTDWQ6yEw5zk", + "notes": "1uR1pi7kNXZQIisNsokyKVzzreFbE4KFV", + "exampapers_review": "1Kq8CspDot1Bhj8lLqXQABNsPJGfRO0TU", + "books": "1VX7g43Dkn8jZg4M25JDc1zudztGsqfQL", + "notes_review": "1bGmLNNYNFvF3SdYXxEpHX2FmXm7ETKvM", + "tutorials": "18O3IjdDe-1ENr8eY5FdZuJkve7CGNxJe", + "books_review": "1aOBWkwVUYjieSnQOFSGyzuzgUThsgwl-", + "id": "1WTTdAhxr-VFn63jtf_fTQZ5GQgDzI6C1" + }, + "CSN-103": { + "exampapers": "10vXozRdohiCvG1YkvveOj55n57h0-j8n", + "tutorials_review": "1-un1ARwp7EX0snPnJjJS7KCbnXdoNY8Y", + "notes": "1OW2sqJGup4qgKboxLVQFMLkarHG3MpdH", + "exampapers_review": "10t3ro2i4q_I5TgFIHHLCOgV24tUF3sDq", + "books": "1R2MAmP75T8YQsIx1IBxzM0-m2k8XRBcH", + "notes_review": "1AQ6eV1XUU4fiN-monZ7ejuTwlq_z8F_Z", + "tutorials": "1ydsgk4fR-nazVxRED8dstGiHehUgAw5O", + "books_review": "1O2TZzjX-41Yr6X85_eiVcv-OXkywXIl3", + "id": "1NYPGEXrTs_HrDfJWGqG3qqHqeRQVYOVJ" + }, + "CSN-102": { + "exampapers": "1VGm3Oz8wAm2kXc47GTSsRaiwf2GPmaGN", + "tutorials_review": "1mFayq1-vfCEYLB6l9Ju-CAtRW8FytfV8", + "notes": "1j1C2QxIrHj80_dJClqirnG8sCc5HTDRV", + "exampapers_review": "1XpIqSf9skHR4TT8lzNXdMkIpOTMOltuB", + "books": "1dQGR1Z7Xl24sAQJvn5mzQGkBv0519FbB", + "notes_review": "1oBwCNS5CM83T0x7LToG1sNyfgidQ9kjX", + "tutorials": "1SAhEbwFKaLuxa-TiLqfS7mXOP1X0DDPm", + "books_review": "1usMaAFpTuN5DcxaeJjNzl0-GQicckNwu", + "id": "1mJ0q59J9ZzlOlRf28Hxazlh6XA7a4I32" + }, + "CSN-291": { + "exampapers": "1wMBzSTwo8tGX328OBF9FA1YoLlhOkZ5k", + "tutorials_review": "1qXkBeiXW88R-_8jOkwZHIxkKuAwxvJhY", + "notes": "14yfuwwY7UCrVsl7JtHpR-Q6IR3v_crVW", + "exampapers_review": "1WOps-YRgLv15kTzuZObE5RVSJkPPcmO_", + "books": "1V4ObFsBY1pClBxqLwOx1xROdCuPz-sdX", + "notes_review": "1lX7de4L9uAJ1OARsy_wr9eT9u4sT2ivK", + "tutorials": "1KY4DxVcddCqrPFtzqff7d0yN-bxhng_M", + "books_review": "1xwi_8KzzO1O-RX6N5iEnFXZBSbJiEhKx", + "id": "1kizrrQNRCn3tgKInaAGLLDd1GIvv4XiE" + }, + "CSN-517": { + "exampapers": "1QtrWGEWPe0scBiaDPP7CXIG4XzOmBxA_", + "tutorials_review": "1OPtQLZRCDjhhAbHSsdJYQ3OVOiU5sHjD", + "notes": "1-3SDdpEAYGcYBEI89YvNRboCnBxC0-lr", + "exampapers_review": "1FBwFFIrKs1cvCwHw-wfLj2bAA1EzC65S", + "books": "1EHCSa9GUkf6TkFjc267Ov0WXwpOhWGmW", + "notes_review": "1i6c5kRFVOM3-PN-DGPQbeg32fYUVAHd6", + "tutorials": "1OH3rrY4awB5rpKoZKnWnAewko99qC5jR", + "books_review": "1TbEeEZOhUHHXPslBJmH2yRFB9rJFj1oq", + "id": "1r4pnz9g4KzFSFCYKlBY5DrHS5RFao-LF" + }, + "CSN-515": { + "exampapers": "1ba3xHXBlhFMJCcsfmq5Nb0oaNn_0N5h7", + "tutorials_review": "1ba0L-dnxRAXflrKKY0FFWvrO_s21MuFp", + "notes": "1O3GkrpAJescjj1evPqaibXZKhLfrVcs2", + "exampapers_review": "1KYj0LsS8aDZqVWE7aszrIXyOoE7rjHRH", + "books": "1p1kTRFdzon7Moslw4Qykzv8kebgUgy4k", + "notes_review": "1MckQD64O667ZQosWp8agm6QpO7ZKIpd3", + "tutorials": "19KHJ9dhcXLfuV6vAI3UqoOKNEB2IOWGp", + "books_review": "1A6ZmkgZSn9Xpj0QQyMuBI9tJyN698ejw", + "id": "15oF_svRMwB6fDbiYUI-LodGcUPP5y2Yh" + }, + "CSN-518": { + "exampapers": "15lPY5fMuRSVgrCM4uPKHzwon3Hca04Y3", + "tutorials_review": "1JpgRj-qC0ll3DRuHScxXcndPwRxyjGLm", + "notes": "14bawkWQ-W7CZm0rV96cZr3lAF03bxUix", + "exampapers_review": "1XvxmzV_eiyrL9uwCqN5_6_yQvH5TGny7", + "books": "1eS1hWcuNmYJ3IhN0r3XoDZE0Q8wgL9Pd", + "notes_review": "1fMRlUs5fUwbxTgpW6iIfaGjqcu5i5-8D", + "tutorials": "1lyMxM4DeCujeea48xm6YbFjLVXQQ-Yrn", + "books_review": "1oscJTYFo0syxdfR2iSvkE_6UYrA-w15b", + "id": "1cQjIXnKesuJMakPtr1uXEy2wD5bwnbDZ" + }, + "CSN-351": { + "exampapers": "1EPK833NuHou80pe0zhxJZiwbYegBb3KT", + "tutorials_review": "1ZYmFlghUng7QxkhFPcl4tC2K9AV2_Uuc", + "notes": "1SmYKkhytzzIp9gyrSr_eelcRFtBb2aY_", + "exampapers_review": "1e6QBUAP-C7MXqGjt5FvW92Yt_y3m2AlJ", + "books": "1tNFtGp8m0WN-Px1LtDh29wRDGImmsUFX", + "notes_review": "1jIpr391K70YbYJv3VlKUgYnJ5Z--QnmP", + "tutorials": "1LQMQkKbSFl01nvKMAXVuE73yhDzRcAtY", + "books_review": "1zt7pW4ab25v1IAbmKT5o-VbDIdb5JnoG", + "id": "1FPzCHiHgZ2uiUp5WGBK3V34E93GY9Sqv" + }, + "CSN-352": { + "exampapers": "1qFRmULTj1DJ6SOHYlzf9Mk7UScD9eX9j", + "tutorials_review": "1HdT7ra1hZMh1NoGC7A7J5zPBd34ubKnb", + "notes": "1b6b-dxEShsC7jhho3btIkwDo5wAniFhr", + "exampapers_review": "1WsnXlNwLM_B0cewRaoMpkCWS_O9sZTj2", + "books": "1wfP2i0UfSu-CSyzXUBFNNuHGi37ExJok", + "notes_review": "1FyM3EcPVwpYBTS1_5F4D1QlZw-4XrPFH", + "tutorials": "1d0gsHs_JU1TN0OdKHQxxrk-KBiArnjH4", + "books_review": "1N_UUlcCH4JbA2FiIF-6Rm_r_oMzFqP0p", + "id": "1FZ8homVqGmaPrzcf8eE31mhbPjuFsZhn" + }, + "CSN-353": { + "exampapers": "1kiEiZd3PWbbmMQwF7XEG3dP_YX85hBgL", + "tutorials_review": "1o4Wo2HyaH99nqksCTalijuGH21E0G0Up", + "notes": "1ERISkEYttRThW8o9jLTwWszEaY8GMEbj", + "exampapers_review": "1GTlhXxFvPjoElTUd9Gd3QMkkF_RtuFQt", + "books": "1vVeMt7fBTp9bmLglXSdhVLOAuIUKdaFJ", + "notes_review": "1mxXuqVxKMDFT7AAAxyXI4WgRgt9DLway", + "tutorials": "1r05Y-Sr0VzypLbPKh8nfSrQ7eBqxLYB3", + "books_review": "1Zm1glcreOSauW96i2Y719NP7PgLdF5vO", + "id": "1asYFCI_r1O5WIRon8waXY9EzB14YOnwi" + }, + "CSN-391": { + "exampapers": "18fBFK58yO6rRJpBUTRhQTcn2Fw7VoVDb", + "tutorials_review": "1S0SVA2DhXM1I2Qr1b-SmcnEKK8PQdT9J", + "notes": "1RPpsFCZas-FnM1TEn4oFiqjFaAq4k8iR", + "exampapers_review": "1TlzwP1wencBXwSrQcTi_rITERSpiXK1A", + "books": "1GaojaIdzFsV6obV0J_FRQw0yJsRWTdVv", + "notes_review": "1a8r12hPqtUlK-YZ8s34eFYGr5W2ctlXh", + "tutorials": "12eGavIB5XLaezaPyD765n9zZn6ZHXOBa", + "books_review": "12ZcahXwwIbPq3frpTs3qYiBvqOpFnCEo", + "id": "1Khg-J9ZkXnKzfkkd5dNjQgJVuzN_SPrR" + }, + "id": "1lnU6PH4PjCmLYRk0402ijwFlScqyJJ4a", + "CSN-499": { + "exampapers": "1quV-U0cOp7jDoCRUimAt0VaKZvfuI8jg", + "tutorials_review": "1Mbs1x1k5iW_SBpcPYC4mh5e-AscjB2GA", + "notes": "1Hb65SWbHZRhZmI0jFIMNcA0rJ5M_MWwn", + "exampapers_review": "1OwdG6d38bR8q-Lyy5lGEp9Bi_NL27aJH", + "books": "1dvadXXVjWZLhKiCMym3TWKPG-_CubKcr", + "notes_review": "1-m5t0tA64yAIDHq2LIV9tXp73raYrHzm", + "tutorials": "1HncqDpqtlGb1c9LAoyY4n2dvL8bw6x5D", + "books_review": "1jnLCsEfuO9gzqEb720436QsN1ieRhGIg", + "id": "1FRrBHFQ6LcknfuXcV6cezd79iYuJTbc7" + }, + "CSN-221": { + "exampapers": "1Uk7VpwZE2pts6kRe3_7zhH-1MKik0u2V", + "tutorials_review": "1dd8bLD2vZldYk2m_PkLh8CmVAxlbL4Jl", + "notes": "1m3rNHWzzL0gG3r0856PAG0tAvyEBapQS", + "exampapers_review": "1_r8UCbxw2At8D5LZaOPrVqaaKwMgxi87", + "books": "1UjAgLPZJbrmEJhecf-QjLCtJcYoNcEWc", + "notes_review": "1XAMdGhqDkDIQjuQE8FWtoLn9jFI8TxGc", + "tutorials": "1Bulx3lZvuRoYfDPiw0IP6YQHQ_f2h2F6", + "books_review": "11F6PkKoF_XAVSfNJ7TVlSnqN0UOAWy3t", + "id": "17MusCW5hyaJwCOw7HEfL1vA8AVt1PP-R" + }, + "CSN-505": { + "exampapers": "11jPJxlDZlS4XIZgqXpwfVdOLdBGkj28F", + "tutorials_review": "1IniDbAaD8RquuR_peuuc8JkrFnsjJlK7", + "notes": "1pEoh8n5C6mtuuSWyeioc2gNYFEgdUcma", + "exampapers_review": "1HlvZ4YoealsjdWDHuyDjN-hwQ-JPq_C-", + "books": "1qnRoEc1w7z7smJWtdQjbNTCV3deLDfzv", + "notes_review": "1duk87W9th076M9wyeF0QplJbJDYGpjNQ", + "tutorials": "1gxaYiIjFVznJJYz87JCA8nJd4spEMIjs", + "books_review": "1OUP-rhB51OO_1L3kYsI1eSkMTmpq6jUp", + "id": "1lp2h-zUCnanQhNPCKDaxOjh5s4zV8RvN" + }, + "CSN-504": { + "exampapers": "1-7TL0Hoa5Z-CRZW81o_1nvmkPRLyjjHG", + "tutorials_review": "1TGGj6088xd9CKFFf1tm5C6jZoUMtB35V", + "notes": "1Br4HscmX0_WuYLO2wxwkZ83CDLxQAebz", + "exampapers_review": "1AB5uJbX7-ZK1ixh85AHcrrJtA-R0Kwaf", + "books": "1RtE8Dbelv2oqwdTKCUWiB0hTboGjRRnZ", + "notes_review": "12vHS-D2YgDOXATqJRjrneZbh7l9WfxHs", + "tutorials": "1m5jj2FB9OnrzNCDp_d-sGlhYbP_bs9MG", + "books_review": "1HLFUGkVS5tKunpt5YvGNStSNz3Wn8jtW", + "id": "1Kgqx99Af2WKgDnwiJyQqJeZ2bCoU68Y9" + }, + "CSN-501": { + "exampapers": "1kUlzB4NFzxDcTOkK31RATDcXErJ_QvSd", + "tutorials_review": "1zinA91JP69ycVRjWFrR_vRiQE4NQKtgs", + "notes": "1LlkHE5AyudU2Np-AX950bLEX9DMu2SLV", + "exampapers_review": "1Z9GE41VyZ-LGSmqib4h2V5-02fwNLdGQ", + "books": "1GRjz7QrQs5QFB_o0an8qZeMaH_6vw-vL", + "notes_review": "19L4JEuDkHxoU9lsAo-JNDe7UQ2N3zsbr", + "tutorials": "1LifYjajM6-TcMQvdSUVJSA5PGmSyxRZk", + "books_review": "14isD6YAiqUYvFdC4wIuEwvEyInYBxXq7", + "id": "1ePv2wLgGcrSV3dIVNEr81Aul0fJ8K5yT" + }, + "CSN-503": { + "exampapers": "1ureYG2-0DYK73wxn4K-E7HFyEGr-k_A7", + "tutorials_review": "1l0WCTk0opFuV5B9P1iOAkMgRqNdAm4_6", + "notes": "1os_fEOItPdd8zd2Idvf7JFrrkBVxRnP4", + "exampapers_review": "1ik79Rf0fThmzLok5fV3VjPd0vq6Fkou9", + "books": "11Eg5RZVYtfGW_Z9BfCd9ECycLg6YfA4W", + "notes_review": "13EhJcs5IP-uY-1DpuDJnRC8Fuws93beU", + "tutorials": "1G9nyIClgWbVkLXoolsinQIZCphCSzaZY", + "books_review": "1ZsfDFmGN_UR2BxfN5cQwRIxGC58gYn0C", + "id": "1Xn-se4oB2cC_eskiKQy2K5PRHk4Kvks1" + }, + "CSN-502": { + "exampapers": "1PcUdP4byMH6EQ29xmf_kXGIWqIExYazM", + "tutorials_review": "1YJP2vcwa7aNZsEYF3XEscKXjitYHMoBc", + "notes": "1htzlG54cQ4SVmVuPyIeRaGL1znbMvqQu", + "exampapers_review": "1BIQQOAZux0gUvur8lacwVG6C6AHPJWw3", + "books": "1puWKKLRtUyNuGoBdaLtKcRYPAEt_sTzN", + "notes_review": "1j3l6a6lj6ZzWqdqcfPz16xYIochCyGKg", + "tutorials": "1HXC2zgqZEPgVafD0JZdU0uNttuCwRhXZ", + "books_review": "18kOVMJIt-NmXJ0_6zvX3ZIobh46OOQLs", + "id": "1R0uUJlDCC6CGLxYyWYwGGMJv3G9yiawe" + }, + "CSN-361": { + "exampapers": "10cADY-ajvZoM0WRo9oXzIi3eWGScdsdR", + "tutorials_review": "1d9wsu2nbElxVBlWl2xSLvavWFaRsydxY", + "notes": "1Pb0ENvUI7EiMa_oyxVbVUkntCMB4P2B5", + "exampapers_review": "1riQfznneUx5EJYvHt0cDsyfQYYbQ2UW5", + "books": "1p4jo7pCZ51Za_hHYY46-23rut-SSglz8", + "notes_review": "1eWuZesnjBhiVvgvMyBrM1y6R58ddL6pO", + "tutorials": "1g2VFO57wJYO4hPChoo1OPc1J_GRQOtXL", + "books_review": "1Q-2MMcPm1lG-ATYvJBw3KmTA_SoShEy3", + "id": "1P4gSK2XUfA4WN7N-FDotjFLaEVZa4vUW" + }, + "CSN-261": { + "exampapers": "134VSfX0aMAHVz67UwwPeliH7w59PtvPF", + "tutorials_review": "1E49OIOAc7OE8HuCuYrQlhc8oj9dr4Hb-", + "notes": "1CpGbQkZZ90V3sBAStmdRoMDfpWhR_S9G", + "exampapers_review": "1AZO0lzveV8NCF-VozaVMl-77AFAfm6GU", + "books": "1Km9RqzGEj7l3hmWWQ0lwr6wotwPCc2E6", + "notes_review": "1KL4G1J7r-zIDYU0gAnyNc2SEKfUcZ7RA", + "tutorials": "1xiq0kYRH4EG-zlK6pGCzpKyyYRCXDxJj", + "books_review": "1luzH5tnWphhwzxrZCbIKR3By3pw1v-Z8", + "id": "1lfWPfwaAQbeHy8x_H4RYuKHW39lwrhm4" + }, + "CSN-341": { + "exampapers": "1RDmlOpbE0wUxVkWDdF9ulKmFar9uQrPX", + "tutorials_review": "1ifP5IwOWLLQhN43W3ADMyIIDySk-R4DA", + "notes": "1N_zEsKlLTaFXbv8QaU3gC7IYM6yNoV4T", + "exampapers_review": "1Fo1YLqXrqA404lCXsy4faFvOyB-1CCp5", + "books": "10HhOU9rllhUJXc9XfVn2mV4Cok7tFFUU", + "notes_review": "1YqcF-EIuj2d4HN_Vw127NkaeFyOStWDl", + "tutorials": "165tm_A6JowVCiR4d9So9U-sHhanVueFY", + "books_review": "1yYtjFCKyxhxiLbYN6uxlaF3f6LUsdcOS", + "id": "1Htbk6DHt2bHf9se3RKRlvMnwxtweEI-5" + }, + "CSN-700": { + "exampapers": "1HVKQIXZRgbc5mBCDbDeiNWHxWS7842IP", + "tutorials_review": "10E0y8nQd5oxe2COEn7OGaFjsYc-xQxMg", + "notes": "1mkjOJ9kct9m5-sh7Y1wcMxf-VUWnuvO4", + "exampapers_review": "1STb_ZV94pb6Mvf34lvwxh9vHnhkY3Nn5", + "books": "1MJKWKXfSKCQYuOdU8ajBMxiDl2sx-kmz", + "notes_review": "15jp3jvNYUQ1kj_mC-nHkTJF_YM0Ncvkh", + "tutorials": "10avy3BWM5PGNkS4EmFc-FkUusg--R_Ry", + "books_review": "1KCh2dNycm4iUdM-nE9qj-zRQkBc-P49o", + "id": "1x7O-YBH3RcOp9q5C53aQB9K7bu5SZb_4" + }, + "CSN-382": { + "exampapers": "1Sc3GJtlgHYDWBZmhtBEPlzwFYpgZBcUJ", + "tutorials_review": "1ScJZ9KGAbVwgpAvo4uClqf8cZkXRYKSc", + "notes": "1I9XNJydC5w-B3qmvdlUhIWlTagP2fb1W", + "exampapers_review": "1oHI2b9qIvP4ii2y__lhwQ0uhCxpMzkhK", + "books": "1-Mhi33SMIXxOB1PFwwcxTP9CNNlZwBZg", + "notes_review": "1ia18fGExGoiHKPJyZBaB2zqmeWCrr6Cg", + "tutorials": "1JdpVZoLryaQQ6ZxtOUgDhDxltsZc4H9n", + "books_review": "1v_RXeICDYrLywJ_SexNkdjWh8OWcguMe", + "id": "1gD79m5428rElel2Vmxe0MUanagD_9qw6" + }, + "CSN-400A": { + "exampapers": "1qkOQDpMF5tfHw0jh_6CcnSJJ6cb7OW7U", + "tutorials_review": "1io8rgdz9Y2Xu4_Kp8O7ryWE0iFxVigGs", + "notes": "1eSOEFQOuE77b_IJ-1FBYwSw9HKTgKpat", + "exampapers_review": "1IozbDI7mdGNgfqhQtZYV2dvdDSM014EZ", + "books": "1-gGyRiXJXtb47VtZDN52BfFfyodCjBYk", + "notes_review": "1gcoCQhdaGbv8wdx2CUCgiGSVzPPwDUup", + "tutorials": "1NBQbTwGne-vRSGy3XFADu3srfSuTcQdE", + "books_review": "1RPUMoaKgSNFveg1sTmXorsxOfFdCYzk9", + "id": "1k-z8JI16Ya1xcsENIMguw0gqwymgASO0" + }, + "CSN-371": { + "exampapers": "1qRtsCjv0fRHJ1YXBQKhfWsMZRGjCvXO_", + "tutorials_review": "1hlTX2J5m8yyX4RQFphtR69wDz_8lk499", + "notes": "1Mc-eJb60Y7fOmwR2Z09e4Ij49xXP-DEo", + "exampapers_review": "1ZtSFojTC2KGomDDxAIj3KQf9_3tOFA-A", + "books": "1kHQY_H08L7oIKv67M6edsgVs_M-NHHgk", + "notes_review": "1j0su0vY2h-xtxFl_i92V64BAFEoTr3_t", + "tutorials": "1gPBvSTWFU9wQj0uql8f_4A88OYhoXPOu", + "books_review": "1Dd2YVVI6tkwYTQEfdJ9-sUgH7lqRisIC", + "id": "15UI015H14FWI4HNi4blttTHhrZOiD49J" + }, + "CSN-701A": { + "exampapers": "1vrP4lBoIyF70cb7xyDKJ57zHStN9QNxh", + "tutorials_review": "1Fkp8YWGFpdZNxePTvAnqGjJ19OgPx_5T", + "notes": "15UObYij0JufeDb_46gAawLYrjkI9LyAw", + "exampapers_review": "1HWmQk-hIyIsXSrnefWCZZ4NKyRhC8Czh", + "books": "11dv_9Mjv2DPrBEOm5cgMdMegBywaECR6", + "notes_review": "1gBv2mhkmxVfRd9S4g92Cc6cm2u8b4h1X", + "tutorials": "1bjOZC3TzxB-ICZ96Ielw-dqkl9RdROjc", + "books_review": "1TXIEK4lRlbJstxzNSlNHGMZ9qUqy6AhI", + "id": "1oZIa2xzpyuzVVa-qvQmuCge5WYiR4Tz9" + } + }, + "ECED": { + "ECN-391": { + "exampapers": "1UKK4-nNHVi999bP-_G_rIknxiyugJxhW", + "tutorials_review": "1yfS5TL_SREmMjkXVXRGVox7tjrn42PvW", + "notes": "1z9zehMxXv88z2Ef2aJnknS4n3jWgnDfO", + "exampapers_review": "1nOxbx5KvAbt_Gg9RbSw5erhN8wExR9KW", + "books": "1MoPmFQZd27NAmkK0qmWyOSBgOs7Kv8MP", + "notes_review": "15Hh9HYuT4sjGqQCNzKBD7RskAyo0HyG7", + "tutorials": "1l9sWgDvgLrd1zrbF6nC-TH5ajmZujx7F", + "books_review": "1m7Axj8DwxyiNKIRM5gyM_RCa5_lRb5GV", + "id": "1QeyvSxkuClkWVU7GZruWf5zD-k2MFnDZ" + }, + "ECN-203": { + "exampapers": "1zBO8UiBFokq8hBag7Ug8t0p30MeXE7p7", + "tutorials_review": "1ZA5TSkgumN_oxvX72aUB7ALf7bposXjw", + "notes": "1gBVHOpkT8m8on693EZ9NL50jdCpXvEhR", + "exampapers_review": "1Dpe2Ed_RlNdXE6WN3U0BmKs6Hh0u7l1a", + "books": "1m-PcNXZP86gE7ZZf-dMeX-1e14zUrckR", + "notes_review": "1zFFBhYhc4SA04MEGYPmr5xHa80AJqe8y", + "tutorials": "1eo_ALSV9FLWL1cEDgQOx42jQnacG4n_B", + "books_review": "1UwkroeCubSnyDu26VnqN1tvpNuvVDKsj", + "id": "1_rj08glVUexVM_xx5V-cnminYTpFIZFB" + }, + "ECN-222": { + "exampapers": "1-yiDxYzZSbq_ii8Z8HXWoaMqhjNC5GJW", + "tutorials_review": "1BS0w1mfUYMpzRuurHan4H8nouGXQaBtR", + "notes": "1-sedxytIw4Jh4TdWYYZlCCul1qjlnm6_", + "exampapers_review": "1_Jr8gZershywJn6gBU6pZIQW31xg6VqI", + "books": "1vh-GANeZ9GgwSO7Rm-WHOeai4PhaYOJd", + "notes_review": "1uYBLYM0RhICy3XOT637bhdPX50pYSg5J", + "tutorials": "16HUQ5YotHMssdajyB6VjL6uFqzI5Pc0D", + "books_review": "1xnz43YWKzGQTp5H8wUxgvT03EJP0QjwL", + "id": "1hIQdR3p2TsgIerCeZcP6fnH4e1ZqsKo_" + }, + "ECN-581": { + "exampapers": "1-i89Wk0b4Myrzoey5ohEkXfIg1t0liQD", + "tutorials_review": "1ZXkEKqSyx5I7d5keEUa43T8Xbom6Szfx", + "notes": "1fVmm4xI1uiXBBsy3bA_FTOxauhO6U9g5", + "exampapers_review": "1NhGqNsJCr_9oW9Kp4w27pPrlLg-l0SRW", + "books": "1WwbIiM_gU-lpM6_lCMBUffMpvyGus1Pc", + "notes_review": "1-csQQ8hWmWO591KE6LYRidrdYNyshRl5", + "tutorials": "1iic9NEIYXAr8m1swunFI3KrIUyg6n2pN", + "books_review": "19-PaAMqZZWlGuJ7BrVpZUsymIOrBJBVG", + "id": "1Rs5cyjLhZrwXC02T-YAdM6ls5zSnsuyE" + }, + "ECN-701B": { + "exampapers": "17E499m8y-J10s0OjbHECMXSKExmg1AmB", + "tutorials_review": "1NwZMD401vTS6X0sB7mYsSmyhiN0D0Po1", + "notes": "18S5O8MTRhGTT2-GMehjJmea_jyX-AZFn", + "exampapers_review": "1BMEHO6bkBCO2TCTzw25bLNc8ao7xHDrX", + "books": "1sHNICwr3T5RLLdRTgBb_eeB3A1b68WSa", + "notes_review": "1glrZmmRu64N57ZUMtm1-XJEPc6sEmvhu", + "tutorials": "16leJwtpV1ep8irN_yOFFcSHMjc5jIhOi", + "books_review": "1ZGi54KEWUpcvzFS2m1XNh8fAwN4POYpe", + "id": "1r4mhhLDcTRXIWQ-SIQv_XERtr_8HEc3_" + }, + "id": "1mTrKZILpgbV1CN81Jn1Vovh5OxthgmiT", + "ECN-499": { + "exampapers": "1_iqoPNYfUxHUie0C06p_gYLg_kOLxj9h", + "tutorials_review": "1UObTYK0_z7o_5tYfbLJWPxqa1pcispdt", + "notes": "10XhjLZgTflwft2ZokoC0kzWyWQb1nhSg", + "exampapers_review": "1VWDkcRMHmWisgIerOJYfHWO6oHnur9zD", + "books": "147VRSasKg_7yOjlRgN8Mr8WA66NCCQqO", + "notes_review": "11BLtjuJrHgVZ-Ic9H0voQhnu5enlLYyJ", + "tutorials": "17LdAr3dkaKy0y57Xq8ybqnN5sJLwkKmn", + "books_review": "1DPc1-qlbZF_OteDvLHTJUblA2jEZjwAV", + "id": "1IuwKDM4yNFN39mTk1xcCb0F-7MlI_mBt" + }, + "ECN-532": { + "exampapers": "1vHIG-gsiJLZ4M1FYOx0sRqK3408Q7plp", + "tutorials_review": "1t2I-3OEZptH90cxt1KAu69P3yJcLIAY8", + "notes": "1YK0mCIXBzYx3qrpRXCJwdtrCbB1NauFX", + "exampapers_review": "1NkFqXVGtHB2w5U_uqZmVZt77-lLf8vW9", + "books": "1dcqqTmO6a6gY2mGKN4pQi2UIIIcVnsFI", + "notes_review": "1TmYUAjXge8tOTAb0XPRTpGvotrBtM7dL", + "tutorials": "1OWhKesSnY7Yxh3GfNIYHgwBufLlHZZ2O", + "books_review": "1wmtEBT16HqQjFKTq3DYpqnOY3TIFM7Ec", + "id": "1PKpYOHh0F77T1tv_I9yyxyshZcSHo6rW" + }, + "ECN-510": { + "exampapers": "1WhT-t316p8aVHUckFNjlcq0Z7WHO4RuZ", + "tutorials_review": "1zUxcei-qpL7ofYY6_irUVpdHVBZ0trO8", + "notes": "10s3zlcmoqTo0HKyukd6ernFHqg9LC4xG", + "exampapers_review": "1nJisM4PTW1ALawLeT0Ec8281odSkywOd", + "books": "1I3LHw5H3nTHXaI9rIiRudtPDtKLFj0k_", + "notes_review": "1le-Cj2qce5pNQXhZr3Vz9Nfcpmsu4HES", + "tutorials": "17fAe9J1Ea-sHAwxWepx7IycJNdV5mboW", + "books_review": "1e0UaLjAYYS2gibMKVre7Efj56FWR_ddP", + "id": "1cvF8ok549smc3394kocGTt66Fqcl0Oe4" + }, + "ECN-530": { + "exampapers": "1GBBCIcG5DlXo1KS1-aVmqDXeDDW7Z0aK", + "tutorials_review": "1EdYGWPDhalZJRj0ij-ORLreHAR3OpD8t", + "notes": "18VG9inuwxdd7j9-ahV87uOhjCxtT6tpv", + "exampapers_review": "15ReKm9J6VhSFrXLSfY74lufi32P2pQsJ", + "books": "1w3odsE-PzgnQyMJZCpD1Qg70WTWjB5JV", + "notes_review": "1hKyMY7apK2tUk2hGQgGD__IvXemnTg5y", + "tutorials": "1qSNoDgOKNEETsdLfipoQkFUGjsZqahM0", + "books_review": "1WyexGYPiUtIhmyU4CCcqa6HyDjYCKpv-", + "id": "10XiIe8PHpuMSwlqmbbEJryEP2K_okO-_" + }, + "ECN-531": { + "exampapers": "1apW3W9fiQ1prYosvgpAY8D6s0eNJVylR", + "tutorials_review": "1cqxURNmeIvE05-rsKBfcl2WOcalCXNvx", + "notes": "1_xmr5lZyN7Yg6fIhbveGI1Epifdh7voI", + "exampapers_review": "1tKEzZx60-lTZCOy83DcYCjJcl0gm06la", + "books": "1os7ntWMNu7-BwC0X8npIdctZ1ba0xZkl", + "notes_review": "1M1BRsMPk4m9hl5oCiICEMFVx1PeuOIi5", + "tutorials": "1aUWoCm9IwgCnuikkbFgNwYuDOYeQufUQ", + "books_review": "1OQ9SxlW3PCHNofbGn866JOZ6U9RzzeZm", + "id": "18V50Ua5zTUHYw0Dfc4AuPBQOt_EwXyXp" + }, + "ECN-534": { + "exampapers": "1zRFKZTptOrAWlBxTLDEqdUf_746G6Dcb", + "tutorials_review": "1uxp6QMPkhfY8r8spEzjMg6WHM7sEubTs", + "notes": "1aUSvCQ71F7Tk5Zgfi5JrGfl7Zsd3B9fv", + "exampapers_review": "1ActcmABxVqRr1cXUr9YS3koPoz7LBIGs", + "books": "1ZPg2aZlbPRmCupKnKcwkXYwe4z45HVtO", + "notes_review": "1nk3o9chQk5hiwCWCF2rHu8vW7P6KZyqk", + "tutorials": "1C3ccg-GbGl3GGvNR61p5nK_wk3nAButm", + "books_review": "1I1HDZpBej0SzBCc12l0NFOS3gTpzxCMk", + "id": "18Ne6KoyIRo9bMbE5QzS_axKz83pPWIUO" + }, + "ECN-511": { + "exampapers": "1-sRXrWIGtH5nTW5CDKN7NbqICRZ3IgXS", + "tutorials_review": "1lIcA07GIzRLy_FPH1DpSpWUkFi226gLQ", + "notes": "1LI6wC1uEeeUr_BtZciTV7IPm7npmppdo", + "exampapers_review": "1JPM4pwfTdyIUqEnq0V04W_Mm2bulGAk3", + "books": "1D0tilXVa7XpfYNAs5YT5qrpm9MwFck0v", + "notes_review": "1kihXhSQS9guGaxP7Z29cA41PB7HlA3mY", + "tutorials": "1t5Ts_96pYRKRczm_wS3PgaHsu0fHixBa", + "books_review": "10FT2Nk9bxNcy5DVHISmHvi5WnCSmnzye", + "id": "1aTUlIUgor3fuJJKHJDe15Pd7Wkba2_j7" + }, + "ECN-539": { + "exampapers": "1Cyxa-UrMSWFJtLZdsUZyq-Ss9p41GsMU", + "tutorials_review": "1QNSbwlXP7e0U_DNkEGy_gzPq2ozI3wWM", + "notes": "1ugretddXq3WFbHrm-4FiMsnFEWtkK4T8", + "exampapers_review": "19jWB_s3N-gDyf_aoBMysL2WRwdovkG8M", + "books": "1iNZQmgQobUcjuINMlNZu-0JBai8VBoj9", + "notes_review": "1sdyOL9j0laDlk558KhZUfT8e7GLs_bz6", + "tutorials": "1SPrFVqbjQxuyVH7n1F_Bfh3XLZOBPBH3", + "books_review": "1nhlIlONgrH5E_CuOB62pfJzIW5iFLWTZ", + "id": "1Mmim9ZQP19m3UWqz65RcgizvfQsSo9GL" + }, + "ECN-512": { + "exampapers": "17IAdYUfRE1YcpMQHSyZsPEhnFWVivmWW", + "tutorials_review": "1DChd9ZU37pDoLbMhHssJE5ghL3uZjMXB", + "notes": "1Zqzwt-zfn1Op9UAYy6oYHMeGu9j6KzU3", + "exampapers_review": "11LJitsB9pgc6NExfmrexJHuAb1D1BYnp", + "books": "1euWVeskqq6KZA3KlbM6_KSQWyZqJmtOR", + "notes_review": "10Y2KzrmTWz4j8kLhcdWa-vN8X81cBhJD", + "tutorials": "1By01-3VjuoTBJLpF6EuhorSFfJZ_V-8c", + "books_review": "1eLx1WgJuhtLqDH9rD1_M6gbO0HkxKetH", + "id": "1Xipa7r1GELsJ63LEPgvjme4JaygyD1OL" + }, + "ECN-291": { + "exampapers": "1icE59apRGiIjGKS6w767M5npvYoY8HcV", + "tutorials_review": "1rX7bn1PZuL0yFugsxDFHa86hJVCfhj9D", + "notes": "1yEi0ukehVHQzsGoq1D1iNTTS1xd1QOG0", + "exampapers_review": "1WqmQmMljiyS_SbH_QJ-5Q1pX2Ipovza6", + "books": "1Rcs3eLad6halwHS2RQyAL0dfgLwizyqu", + "notes_review": "1VqNvL1RavYj88JP50UFq8Z2dYie21q-b", + "tutorials": "1bNkkgMjz0hDQRYCTDujLVnCgbjcG6toa", + "books_review": "116GS5hiY98FVgPSmC2EX8GB2E1Zdsld3", + "id": "1ztythyUKqSNZLMPVRDqgpRBLwNTCRRxV" + }, + "ECN-554": { + "exampapers": "1RblmqxmKM1SrCwp-tGk5Bz4kr4vE6u7E", + "tutorials_review": "1Wg3YSfy6GG_PvVkNeCJrSfKwlNpa0cUQ", + "notes": "1gddB26zShK8sJUw5ljUe0M1nTbQcCkV3", + "exampapers_review": "1b7VOIyKlVc7-0D8Nhuy92vqZaZyyhmK9", + "books": "18JBsSrKdlpZSiZnqOrGAJ1b3FFrmXVMi", + "notes_review": "1YvnMqVI9syq_3MWwg0UHpwQouv1k6dyk", + "tutorials": "1gPbyu53yQv4t9zk4IR4-CaFi6MbwUony", + "books_review": "1qBdyNSkkIeh6pRAyrhP-nveM3Rui-83a", + "id": "1PldAadqLlGreE4O7YoIsoUQ634uPveYe" + }, + "ECN-556": { + "exampapers": "1Utzhc8gtMQNYwl7GKhj24DLyeLPJi_Ki", + "tutorials_review": "11fBo8J4NzH6SNoP21C4awbRmBN6Mxyt1", + "notes": "1T7070qqLpHaTmnB1mtvEC59HVpCcepEY", + "exampapers_review": "1pZbQ0SjbGjD-WZW0_LNcPQNtb8J45fpY", + "books": "1Bp6kX5pELeoMc0PuWRzEhvfZiqR51lKD", + "notes_review": "11AnwRg1KwH2MazR7BVkUg3FMutHYBRd3", + "tutorials": "1Nvu6S4tqrE9VWdxnZeBXHz9K9_3R6HQQ", + "books_review": "1P31gdk1VyhYhyZ_xHoHcImckeqc8F4wN", + "id": "1hQA_dlHQ6yCgRlmNNub18MaJwAxr-hUj" + }, + "ECN-232": { + "exampapers": "1dN6VaetaTaUB-Xa_5-XmjUpRjGvXMGgH", + "tutorials_review": "1-t0rLFEkpjxNv2E9CBQCsNWUb6XzNf30", + "notes": "1mFdLLFjsjVD-a8Vm0IRl8eu2hZ7SduUu", + "exampapers_review": "1uh0S4rPsdJ_8-qczwFBBTzqcTj73dYP0", + "books": "1fH6TrA9zQh85SyxmXdaKjwCa7TCJpFSq", + "notes_review": "1T1J705j27d7Cs1HpC5T5aRlTeQ6tbDXj", + "tutorials": "1-Iw0Kh72_MseATdK-JKTj8qTKarMOBp3", + "books_review": "1kz-9iGNaNMHZHF84GlxhbDnCNQGFLtVo", + "id": "1D6FPxl8VqpgdUFMII0xq1KdT3Tvb1d20" + }, + "ECN-550": { + "exampapers": "1gST5mA8zkk3tnaLHW6VS5nn4Sqd1ulhA", + "tutorials_review": "1QRICSELMxvRhY7h5XZUFM7aXyr7QnYNW", + "notes": "1QuzbBoWghgJTE88MZECu9yBZLpvrX_5E", + "exampapers_review": "11xjtQF2LDaSI9fMs1BKcrUJqVbzZs9Nl", + "books": "1mxnbsCFuHum60y87f_3tmu515urCH-Kv", + "notes_review": "1QIaUvcDiuHSLZpKWSYF-QG9fBEKPYTUi", + "tutorials": "1Fjop9bXjuvGthNQDbSV-KZDtXTt7N2Yd", + "books_review": "1OA0sRcdaDgDlf_EKqDJmoq8BfNZYVkSs", + "id": "11Ta1PsNwr_NW8uD0fAQgv5jHfHY3fenA" + }, + "ECN-212": { + "exampapers": "1idV6XwswYjJqRypAI6gbhvf8zLowZAtC", + "tutorials_review": "1bv_B6Fv_6di4kcG_KTHhfrzGPeBAUheD", + "notes": "1iiaCAuyNnoOfuPKBycOMwhxGygMkkToa", + "exampapers_review": "1_AkjRHbkRXqF9CHZd5KN-1StEh1VsFK_", + "books": "1u7oHsjRZRWvN2SlulzIT8fq_5uamQdel", + "notes_review": "1z8u66IWaqB0q77joLXFiwTFlUpe5W2gg", + "tutorials": "1LdoEh73cb2s4Kh57jyaTtxEQWfb1MDSI", + "books_review": "1ZT8UGqDpN1OOm8QlHjWfVqB6yyf7zEzJ", + "id": "1fOEqS5u_oEkzZVovqfwz_Wn0gtw1SXRM" + }, + "ECN-578": { + "exampapers": "1-ld2BBJR0Ef0iZn6XF0UCI-v1TFsokgu", + "tutorials_review": "1ttapxDmgj23oEE741GEYxif_z89utiTe", + "notes": "1o44pSHGS9Erai21WDTfatbIMfSygrEM2", + "exampapers_review": "1ko6TRvLBftfzonism3Ogskac3lFIhFNO", + "books": "1hByexwcmzowpWW7Q-Pqt4P6HDQbDOv5T", + "notes_review": "1Xb-AHgFOwsqTn4itw9yTk9tBehqIs-0u", + "tutorials": "1I3fNMdOU8mEfaxL2nXsl7EPkKmPwmjFF", + "books_review": "1WzU9K34kMktg-o-WliXigxE09N_fHQLd", + "id": "1gDCTiKn4jst-dn42P2ZyQXedOZCSfAT-" + }, + "ECN-341": { + "exampapers": "1O4VtE43uBVvlKlcw0-GvXCjbuT9iLImp", + "tutorials_review": "1yE0RRDx7mQXuF9keB6wNjer0yvCP__TZ", + "notes": "1jPTtZrnOkSsthaf5rdEZKm4eqdgN_3rG", + "exampapers_review": "1_jH8YmTN1JYE-BrScfiSclCI9BAfxa9Q", + "books": "1Knm2L0M6dEbECm46aH8T7pWAWG6p-wmI", + "notes_review": "1uuN1VqWL_nCpylPqvqb_isgjBPs0pi5x", + "tutorials": "1qdVNJSE-j-fZLbIYixY9wJ-SpLpFrzwO", + "books_review": "1Ro2oe3MqdjIcn3HnGEUYfZhEHlRm8Yqy", + "id": "1kovlHOz4aohsUeNERkIivzAO1oQ311qS" + }, + "ECN-252": { + "exampapers": "1VVdwZMmZB8rr9sGy9vqBB3TiBqrk-Fzj", + "tutorials_review": "1BTSJmQQT-UePp0ojZ0gxS7ipENxStXvU", + "notes": "10e54haByxHycLv4GbqCi-Wxma1OaVDKA", + "exampapers_review": "1CkvSGGXW2kdUREqRXTAR8cUuxvFiVoPg", + "books": "1biM2poEjLPVPsOxlF-CdmFFZ0e1hSZFS", + "notes_review": "1HJYs79IMdohmrkp7Hj8ZbKpb340h30BD", + "tutorials": "1otiXXwYPWZ5ysFRpBM0-j5KKPop2t4LD", + "books_review": "13XVtFkUOSWnGy6lrCMsRIKWUr9sOtj4p", + "id": "1coayreEZvzFkkBEJrzGmJzz2kYM51uQA" + }, + "ECN-343": { + "exampapers": "1JJSLtfBmuoSOkO6d_zNQpjiUpI4YT5N0", + "tutorials_review": "1Es4rrkyWCrLODOth_4OSbejWEASv0Q9I", + "notes": "1hCn075kMrOfLZSbpxZqYaYvGM6nvOD7F", + "exampapers_review": "1wc2WcGCR84ChvPVn_4aaNai0x0-m91h8", + "books": "1ev9Cfd9HyOidSPIJNpefePdH8fudpuDI", + "notes_review": "1xUro2WSCxvXKJZ5YuPR9Q3yOwN9dv_mp", + "tutorials": "1Tb4GAPLFaSyuJLZHORvoMTQSzDtwM6XJ", + "books_review": "183ETywYgHhi3cvlGuLjQartyfLDckk_s", + "id": "1ouFzCOP8wh9WCgXOkWF3eBrIZVZkcZhP" + }, + "ECN-575": { + "exampapers": "1FCOB8EFADbPh0i0Pr67zhTJIsmuHzNZD", + "tutorials_review": "17cDeV5V6eHcUmts315xLutlUDDJ8f46z", + "notes": "16VcGO5Ls1CZYsLzoqt1C_hxPLitkg6AD", + "exampapers_review": "19B8SH9hH9A7MRhjk1mN_x4-wzOFWeF0N", + "books": "1S9zjOkKjth4hbfxR9s_-bBtpIK8Iwax7", + "notes_review": "15xU6F4A6B3TA_ZNqrzKMKdJ02f_DAZ15", + "tutorials": "1ALa0gjcuiGZ4GPfiAds0Xeki2rcoRHPA", + "books_review": "18GonSEMQQ8pAtdiOzg6I_opZrfXJdkxg", + "id": "1iodLXlCp6Tz2Ds6q6cWu4MRD2kW0hVG-" + }, + "ECN-572": { + "exampapers": "1SyirbYp_0RENL4WlhciFjmOO4axbyiHi", + "tutorials_review": "10GCeevovI0OxfPlzH0UaQESsvcZ2uBAs", + "notes": "1H42VMqoeVi7hAW276nYsTGASjf-Vh5u6", + "exampapers_review": "1-SQRW7iS_OwGQaNNFDQRkpaAo4fSLpzX", + "books": "1zNyXJpYvhAPAJnB4kOHgPuMC9olPy9g9", + "notes_review": "1HdmHDDyrGDDRWYE1tChbta1p8ol2Xm_H", + "tutorials": "1yMFDC3TwyGykQMKpDmQgBNbudU0DIY0z", + "books_review": "1tcnXoLgivl42eevjXGXhsTh8DVEMPAQ6", + "id": "1uAafFwGN6udN6e6tVAaYjxsTbkLfCTw7" + }, + "ECN-102": { + "exampapers": "1a65xKMZskKQHpqpKnA8uojjmF1YW5mRw", + "tutorials_review": "1_JM1vRhiXMoGdJpzIyQC9TLcoK6T3SMR", + "notes": "1KemNhDxRCad6Tdzq62NESIsbsh_yWWgu", + "exampapers_review": "1wMqOpIubuC9DTHfZHcwf-y-18B7R54DQ", + "books": "1GMzMsbUpR1zDYCXkYeFmeJ9PhH1HPA9z", + "notes_review": "15zbny9fR_s-aP_pmfqWz6wsk-YzPj8H0", + "tutorials": "1eCDkhDjxpeLXy8zdDY9OUVLqy2Gz_sxG", + "books_review": "15IEsaaROQsB_rqpuAHn6CvkN4VTpYdjF", + "id": "170fKus5r-nqm-bCz_bxQKE0uqWFbhNT8" + }, + "ECN-101": { + "exampapers": "1ybbX24lF84aDb_va_o1-7jA_pnLoftU9", + "tutorials_review": "1mFoLLZJKkOTTaA_-UCW74gFR4gC9hUta", + "notes": "1r0uXE46XHabs4_EgHMx1zsCBbJszthkj", + "exampapers_review": "1qO6xCCTjabsxZ0gUg1ZLuNzUubB03piD", + "books": "1W1JDFIbdsMiSpWQCkLSyZwO6F6XVUR6v", + "notes_review": "1MX_8n-ifsxNoUJneuuOOhb1_CPFynllL", + "tutorials": "1zx03zAAb64yz5AWtscf9fI5PDZmXuzIv", + "books_review": "12jJWHLpwLUvLOQ_UIx8YWzQfxvtRjjFc", + "id": "1nEP2B5E3MiE4id5Te3gwf6tzZqJ1EM2d" + }, + "ECN-515": { + "exampapers": "1DbOVaHsTSC-HGwCTaNMnQtMKbogf4X-k", + "tutorials_review": "1tA8LgaC37uUK84lfLIMHu6hq6GY04zn_", + "notes": "1KCRRj4KzaHDAcyKRHQX-YR6uz2ulXFMx", + "exampapers_review": "1avTwyRFlkvlT9_cKEBYeYidgnYC8-wFx", + "books": "1qN2E3Ft9x6sbVP4LsBHUjCDKuAHuGwzj", + "notes_review": "14ve2m7lyRSlIlDTubwrEt-d-K8Y9BTWr", + "tutorials": "1QVXnzfpNK1JPhR87bIoiEpzTKbVXZxLg", + "books_review": "1P3uqitRSKMt36j-9lNYvFscHdaZWALh5", + "id": "1nZSs1Yood8jYgZ4ur0TKQGXr_8YiWtib" + }, + "EC-202": { + "exampapers": "1USKa0gw-Blvg4Q5MWejlFLSLC6iUKBCi", + "tutorials_review": "14_3tcJ_adlpwyqKO_nSR7fK98yBZ-j0p", + "notes": "1PGk_xrHj4PNIKj7StBI-d4Z60HgAE_xC", + "exampapers_review": "19QzoaxXIz8hOEuFIcnpkc9753ibn9LJA", + "books": "1nhraloOH_9q_VXVsXhHhqFL08_gUX8et", + "notes_review": "1gEOP-Fbs3dEaOZGxTanS5Kn00LVxhVmT", + "tutorials": "1jsQVTIHUP7mVyG8SJpSGbCx1vws1zJjQ", + "books_review": "1hO9DOiQe2w2yBHkATtFKWXVEauBC85yA", + "id": "1UwXNl6uzq14fG-tqALf8DpRK3ZOWtT-u" + }, + "ECN-400A": { + "exampapers": "1-GTbvvyQNFneA8_YjWe3dinEE0d7VBFV", + "tutorials_review": "1y4RC7sA5975v4OJuml_7RoazAMdK3ZDD", + "notes": "1VFpDEdYpjJoNIZceUyeO2ohn-ubzKHuv", + "exampapers_review": "1cHN9WBqLbUgkbT4EI08T-yoPF2gSqZtc", + "books": "1DKpKEtT6s-W3OPNMBGsNRvJBUq3R409I", + "notes_review": "1HFMRr5svWyam9QiPXgOgmkKCa1K6IV86", + "tutorials": "1kZXGiZrDzeAzyOHrpYL2yXjUCwNNZ5j9", + "books_review": "1tiQfyeLwFDykrKuvitVK2rG-i05Bp5oT", + "id": "15CORf5QEXjlxmUfjwqu0zdKpsGjVyoX8" + }, + "ECN-513": { + "exampapers": "1tW12XwaraQd1l4izfYELvQCBjmCqU6Gf", + "tutorials_review": "1T6j1CRsQmLwpNZMKM7hBJgIX4SyDqc2j", + "notes": "1cxTD9vijQSyF0o8Ky4qyprUXfdwWdSBJ", + "exampapers_review": "1EChy3OxDbOjEXho4_6w9RqAi26EF9nUo", + "books": "15pbPGYuuiixRcVrROPBY_4jAXdahmf-5", + "notes_review": "1yHgZwGW8juVNKSI4NBbTuOBJ8ol74wqW", + "tutorials": "1oQIRWPJ3MVUfNTGxMikohLg2yRHRitWR", + "books_review": "1x-DTlgt7o6ES0tP8b8XPZFqdAbneOGRf", + "id": "17P8tppq4jd1471OwEGir3-jQDa_duraW" + }, + "ECN-576": { + "exampapers": "1HcxBxTEkIGE6nUwFohyKJ0fOpmWi0Kit", + "tutorials_review": "1S-UWrJQHm-jcXxd0Rai49oDeA6UQWw-O", + "notes": "1mvyW3RBxbmO0JsUVgPg78PqJic9lnWYR", + "exampapers_review": "1gWpUN1YlqJgnlWz39bvxzN0FXBijoYCS", + "books": "1YMi8XHK-pD13R555cISME8Ik24h3Rm6w", + "notes_review": "1hXU55IYFVPKRWJsq0JjGG1qsX_HwXOOE", + "tutorials": "1WQFdTPJH_Wpd5KXbPY_1cu2PYxTtdfJr", + "books_review": "1O_uy6c_9_UfXCVFPemZOrLXiaOdWgWMC", + "id": "1E3mYpEnnpwKyM5uAadq9AZLFcRc8AXvd" + }, + "ECN-331": { + "exampapers": "1QRIMZZy57jz_em8rG2bzthsDlURqxRgt", + "tutorials_review": "1UpFEha3XSvvIzxmwQJvkZAYtnhbPHgsf", + "notes": "1OS4TE_uk7pr3c-cn1icVtTvEYh4L_YjL", + "exampapers_review": "16JpeiD4kp5PIp78gHIHvoJq1pf2pQtvo", + "books": "1-c3xqbvqALyWqi696GYEuB_fO9InnH9y", + "notes_review": "1p_EKxb31Gjp-M6xG_jfadwGCTdHGD75J", + "tutorials": "1AmpwrOVvYp5_qDvD30OXVii-EUm0hSI4", + "books_review": "1nHF3tky-qrKTeOMF-IGL82RgyZb3IsdJ", + "id": "1z2ez7KZNE5KWZJ4kYtxvd5xTnSYBA_zd" + }, + "ECN-333": { + "exampapers": "1fOItVjdGJ1bJsd47394EhBAdnTg2qJG-", + "tutorials_review": "1axMkXBBRhQglKWlh-oeVzEu3GH7EMmz4", + "notes": "1Et3WoCnVEE_S_vNxmlm4YSdWftImiF6J", + "exampapers_review": "1yVZOoEqUDoDMMGyQEdjaLrQjmYXuesbC", + "books": "1w1TEq-S_DsDzV2r_qyWyurazkojar3Pm", + "notes_review": "18aoreKlQSS7rd64Q9YkTu2EZ5jasTEkn", + "tutorials": "1VJne7Nm2hhNSoKY5HaX88WEngoa6ETLQ", + "books_review": "1ahzwO9uTpm7R0NleM-2WzW9mzCoutIOz", + "id": "1mXC6Z_Z_WfdJQT73RmBkLhfWtOkvv5Vq" + }, + "ECN-701A": { + "exampapers": "1pbUYKzH-L_EOmBoe1YsKMIX-1xktfFiv", + "tutorials_review": "158oJVPqhWaVMD02_ZtAwWob0IkYV7vQv", + "notes": "1vSz-R6NB4xIcPiKayaJYFXe34UNPTlmS", + "exampapers_review": "1-UlONlT26lixJYsunncZN_tRyeaGx7Zx", + "books": "1wq_pZ8JnFjY5-cfFA5fkWSBipsux0bJN", + "notes_review": "1gNDqFRklmzHVmrQqrBA8bQwxOLuZOQgs", + "tutorials": "1ENJpGzhVzMw11Lga2XYxMALQB8hxAof-", + "books_review": "1hPAhJECJGtDsK4wEvTnAdQLakLtug_H_", + "id": "1mkGJHb661jSVpUB6Y6S5cJWGX6itb2Ia" + }, + "ECN-351": { + "exampapers": "1FL_Z119U7_L0MMWGcWLAgj7g_Y70fOJs", + "tutorials_review": "1sTfYFzBl1Yar6JS-maRpESbs5hfoH-tU", + "notes": "1I76PX8Gni83onTjFDpwFjNsScjdRoV2I", + "exampapers_review": "1Y_latHDOiqzzWTk718iqptpDcWrKIls5", + "books": "1wIgYcT4VCbKD14-RQ8FPTibyq6QtJZpr", + "notes_review": "1TxTwyGt3eKgPVTG-ejPb_2O5LkhiunMJ", + "tutorials": "1mqT7o0CECToqxPr-qFG3acLi-VayH0VL", + "books_review": "1SmihiTPrbpxieDkCC8bthvq1rH2lEg5h", + "id": "11uxpo_EFBbMH1JhnogBpyck_HfhybuOD" + }, + "ECN-312": { + "exampapers": "1MYNPSB2nGTZsgbCP5LA4ctgmB_ws4LsH", + "tutorials_review": "1BxfMhds5M5dQ49QnFswLOK-ZgzWrEDyq", + "notes": "1bZAqx7aO8othwrDjNM8We2iyGbJdj8fX", + "exampapers_review": "10BSr3SKK79EMFxqPF5lNmVk201t5W5Nk", + "books": "11CHK4MyWA1iZi2Qr9ToBeOyY_pF-y_J3", + "notes_review": "1tPYFMseM5FKAGOba25UDnFKpWgz_z3Ek", + "tutorials": "1oKEW6K16DyHgIiIGPScJgUUvR3iiNoyP", + "books_review": "1e6n9OzFnmzB8eMNzbN23pT4vumqL7ec2", + "id": "1vgBzFuPmtLr7_ag90KMfI2RAjq4gn7ZP" + }, + "ECN-700": { + "exampapers": "1HgmZg3kCChJrUUgatSu3lfIFuO-wc4c4", + "tutorials_review": "1tth5aQt2ENBbjAD3lGJKOr-8UsfydGDj", + "notes": "1OWb9vL9oK-2jrndajV2TmMjlUZPwR3K1", + "exampapers_review": "1__ztpaKtzhc26EXU-nShowWA9jwO70sn", + "books": "1uxvhfPJIThuEkMvIy-AvmvisJjgmjVp3", + "notes_review": "1MUqcgttDqAYM3noOPyANAXdPA76F5vVj", + "tutorials": "18K6XtJHXWnsso_D5OGcff_WKRWvAqe10", + "books_review": "1dRIUJYJgCGKOHjwEke8Zqxd9dZNBmmeo", + "id": "12gnCk1Jv9F_Aww_rwUQZSRJ9KXqER7JM" + }, + "ECN-573": { + "exampapers": "1RIOxZXw-6Xk9ZqEr4yZJbCGFbp0ObwPT", + "tutorials_review": "1lnvPa9ButcxhH4MW0Z0GINuafJqSXLbg", + "notes": "1a_A6PQHTVuLffJInZBgrqtb-ONVTFfHE", + "exampapers_review": "1XkF4OKqxbGFUJY89jePj2p_gfiasfbgk", + "books": "1qvuKAZ6gAuHW8ZfEnL0-zKM3sf5j8uVA", + "notes_review": "1PtwuvW_LXFJbE6WqcTJiTUD9jiihUXll", + "tutorials": "1li5ZuZEA5r0N05kCo4v4VYHLpThFvcmF", + "books_review": "1dXTs-mWEI7MBzAF70RFXJtltDvspe10k", + "id": "1musCcgYgEFuYaNMZe75oBRsUu6kj3Rac" + }, + "ECN-311": { + "exampapers": "1bqQ2rW9--GDAgFG1NBPiI2tMrqwOBV4R", + "tutorials_review": "12jjBPkqu_Q8lhIQGnuC8rZzwH_JTc2lK", + "notes": "1hMPFaB_w84jZMBFoz_M0H0-u1mMWCoUh", + "exampapers_review": "1T12SrPnAvM6dg0GuE3AwIPJkwPGjuAqU", + "books": "1Bv75b74Op1Iw0FHGemov_fR_uu7dJZPx", + "notes_review": "16azkb2N3Svq5vz8z_nK6dnbFg9W6w7Dk", + "tutorials": "1jRFzbjDchuQukLf2euQvZXQZc1spX5Zw", + "books_review": "1bmgFsSEf-Pa9vliLI0RRaTvRJPwtqueD", + "id": "1qYwF8afx6q6ODWFUr4VK_xuisXjtc6_4" + } + }, + "PHD": { + "PHN-427": { + "exampapers": "1sNRWxVY9gxgBmzu9Gu1lYVphw-8Dc9z-", + "tutorials_review": "1pGxGVQ1FyEDKgh2FE1T3InXorPoYzpFc", + "notes": "1eYIl0Yxv5hqgccoOHUmUzAX8xUlItvZU", + "exampapers_review": "1xAILbZQxRDLRhfJEqS6ODUO4i31PnyW6", + "books": "1nSmIU7EMisHx9AOxlmOCzWhsFB5rRHKz", + "notes_review": "1umplbuSyE_DzVV_SqFYTG9Z02Dn-9nJM", + "tutorials": "14g72Wgl8g--FnwpYkpR63Bx3MdPKsAWv", + "books_review": "14gcvWLYFbD-_WLvlSvEBjGge6WGJDnMX", + "id": "1Tw2putQyaOdlC3m4ZuV9qFMKa9zmZXl6" + }, + "PHN-204": { + "exampapers": "1UkQux00zpdA8EeIEKcuu1XxsC8SFCift", + "tutorials_review": "1Qs3hyu-nFRCRdyKNiAA-g80SfEA7fEY-", + "notes": "1aukuvMvVYPltQreZ3-yZUcaiVKH5tl5j", + "exampapers_review": "1vIhq5WuYmZNXdQqaSkO6kbtPQdySIr9o", + "books": "11FAkIN2NP5dU9n4Qzi8DJeVA9a5fLq34", + "notes_review": "1eT7s16imnN5QN-JLplu-UGIn6g8K2xcP", + "tutorials": "1INs3YUa0X8_YuW8trJDDfMTpcBadDeVd", + "books_review": "18mx6k_Sh0mDlrSDdGX8tu1QbwOIhZjNc", + "id": "1Z9_xbG0TISZKxFxDpa0eO-Rbcff1QRr6" + }, + "PHN-205": { + "exampapers": "1JapDFRlU0NHOIoGWXNwWGUgVLyGHO4NR", + "tutorials_review": "1t9WQ1YN_ob-dyh5Es_7C_0ltBFYbSGOC", + "notes": "1o-r5Xh23xtIn4ThmKmt-EPz-8mGs9Irq", + "exampapers_review": "1s7ewV3g97yHgpey_FCAR8D-od-LGXTdY", + "books": "1s55bWf6RUoi3g2qef1hA4bEhxtGSpOz9", + "notes_review": "140RbjS3aXR-f1h3hZa_q4bRz51DXg3-q", + "tutorials": "1KeMXC9fnpxyOnGshgE5fH4-RRuFRnEl2", + "books_review": "1ESaT3X8HRJTxweYGaL-vHkVsATZsG5FP", + "id": "1FTRGMz_C9vqux_Lwm2dO3FN4lmp5gZOL" + }, + "PHN-317": { + "exampapers": "1duMjBVGLnoA8fshUtAkReHGUfsp8MXzL", + "tutorials_review": "1i-oxTWn3b7v5nLSO5_kWqckxO-tNz0GJ", + "notes": "1ESS2RCV9jBUMOHJ1mY5Ku659geYTR9C7", + "exampapers_review": "1qyjYCWXWtJdl4SliHQ4PYTbzPXhcjMd-", + "books": "1dsp_TmCLyqeJWZ2j7CpOq1Y5afiZVPvX", + "notes_review": "1wgbuv5Xj8aWnNl36m6MQ7MbT2pOwyl1r", + "tutorials": "1V4RqCtb51cbhXLhmHJL1Joe3yKbOPxG6", + "books_review": "1am_PwTmjnOf70aGRSX6t0y86LwLiPGZv", + "id": "1INAzEOwfjDYh9ipK_0z0NHYK4OS6ZCbR" + }, + "PHN-209": { + "exampapers": "1mzpPWLcJAMt2jwXehWoS7AkT-yi3BIFu", + "tutorials_review": "1-58_hSwUaCkRLnvx-ng3_hJXu5GhYHJ9", + "notes": "1hHwXwClWCUMa68z3ygfdtI7g3N3L4Yv-", + "exampapers_review": "1646YKl3nYS6CQGL6SE81NTgP3Rkieq6h", + "books": "1tIvJzTm2a7gL3oE4FWE0rWZ6wEaq4Uq9", + "notes_review": "1eNFk6zkPHuFsD3FCBqvhApQLws7KVsVN", + "tutorials": "1pdRD0Hj5ianeLQDFXa_03bxXW53r3dWR", + "books_review": "19iwLXR7JZRHMne2YmFG6l15NVihpGatP", + "id": "1K5Zosd__KyGDu-wbt69uBrznHUWH6WKP" + }, + "PHN-311": { + "exampapers": "1T1wTwzkIIHeZRIBderFKtIxVoPXvWU0k", + "tutorials_review": "1U7H7GTxL2JuVUYmPU0lCQyZJourYQSQa", + "notes": "1klA7PHHPCn3f6Oz2yD5aKhR2B1XrbAgQ", + "exampapers_review": "1KJCiPC8Ki_cVAIbEBtzxiTkwmMoURx0T", + "books": "1zUR1DvMToB5vfKFaYPmlCmtty6rixjYH", + "notes_review": "1v2x2tjf6Qb1XClEMUSSqAGyi1WRtAv2V", + "tutorials": "1wQSlSIMYJw75PUmGQCfqEPnnHQibFGpk", + "books_review": "166yQWtpdFcbCPB2VTPMa1xZHfk-E6d6q", + "id": "16RruK_oI7jEHez0M1ZNr4GmFPS1aEhbc" + }, + "PHN-788": { + "exampapers": "1lg5GJcjMZ94mPttAc_9fKp-uJ837XYdT", + "tutorials_review": "1canlK6d0ZHrh-pSPli04bQ-Er3YIgy3P", + "notes": "1K12xZqHnK-mqGE_hnbNkCYL007oyDj0u", + "exampapers_review": "11Lc55T_JsDXyQw1eb2VnQg5lXdqI04L-", + "books": "1XiSCqO2YuaNxGLD61IMaqRAwjqi0_XIf", + "notes_review": "1vnrA1X1ZIgL3-51G3J3Xa_rHCkdKl_rP", + "tutorials": "1b0sPAXNjDC1QUmO424bdmCm9pibCrFpy", + "books_review": "173QykIA8pJsfbY05ZcXI7NC5m8ACa9EC", + "id": "1FE71ZyGTDxHfgSMxJm4sRxxFlrt95Qj_" + }, + "PHN-700": { + "exampapers": "1SGFGnAn4OOiOEtmQ7vOaoSlFX26Ur_yP", + "tutorials_review": "1_dk7_Jmjoz3Uvm4-uSX31suLkM8Hj2DB", + "notes": "1_YFw8qyuYyRB8ZAqzS56U4o8Ce8cDb3P", + "exampapers_review": "1jB18J9jyOpl4NrtEVk1SXZydRn3NlymG", + "books": "1rqA9FUjAyPrdqGicqE7erY3K4L5Xnpy9", + "notes_review": "1LOyJPvFmLH7ytnx9YxdVI50QyZ9WR6f0", + "tutorials": "1eNxw8Wpn3R_LYFWteLJOzJlJv7VJkqVv", + "books_review": "1MSfWyAZRquz3hE6yZn_8kCLv4K6YLQ1l", + "id": "1rQyLJm_NJ4_hIgX01ZQAywn5jwFrH85S" + }, + "PHN-003": { + "exampapers": "1mDUVP3Nlm_d5z3xKPRm_uEuPo-PhhEfG", + "tutorials_review": "1qMWQnz8SRHegVIuviHCZn8Yl8WVt853x", + "notes": "1TFBgMO95rxuxAX2ly54Zz0FhuZB5XigJ", + "exampapers_review": "1tcbvUIe_C4veIxZYgCqq3N4kvXmht3c1", + "books": "1Pm7vJc7fhLRYpS7-qAWet-knosOuBd0a", + "notes_review": "1jGmdX_xzyXgeRIVlgQiWVKA0AE5eczee", + "tutorials": "1HnkLFxs04t3STO95YVs8Ld0fumMFBkYw", + "books_review": "1sefPPM4o0hbvk9LmUCHfE6-nklW6rL9N", + "id": "1r_ZVl_s4TfapnXdWj5GyMrUt9mZrO_yn" + }, + "PHN-001": { + "exampapers": "1C1-Ec7gVv7zjjC93LVIL5xG3jC170HHx", + "tutorials_review": "114DGNMQ3iPeB3wu-YRX3Tg8yts8zG9SK", + "notes": "1UigqYFHNs-SgvPYOQHQ5wd5TcFhbOO3z", + "exampapers_review": "13JUQTn87riVVtlahVLqangbgbforuYkg", + "books": "1UtzM2NAB9ZT0wwlZVxKdapHjn_5l8pBH", + "notes_review": "1mM1jN2gcSGftY5VkNxU2169aMAka2vPV", + "tutorials": "1IOWYAdEeS_-afAw6qhDQiS-iq9cEg1ZV", + "books_review": "10Fkhn6W60NM-BHlwHJp4MwG5fsh6xQOu", + "id": "1vUcrXumsJCXiWx7-0xeSaNqLyADY0oTN" + }, + "PHN-006": { + "exampapers": "1pYtWoGdkl-w6HGv5xGSd2hSOUW2IcyoA", + "tutorials_review": "1jO0uVN3HwdHwg8W8USfFBaBnYFchhmMn", + "notes": "1PCdBl5dIkjF-BV26AtcEKDn5cZPczc9q", + "exampapers_review": "1SbKq9ytCefGF2UySOZPfgcpeD01xyiKz", + "books": "12rfoNgGFZ44F9W1gH6wE0wwJw57kAvlz", + "notes_review": "1VVBV-MEhOZuvXbYdRyqKTMJnaqW_7NZ5", + "tutorials": "1AHbQYmb9L7F6NigTnZWCX6J-y81ensS_", + "books_review": "1Mc6TkRS4bAgGb2WJjxl9cnuDTV6rAM-0", + "id": "1saDUwCxEAgt9Q4m25n28owRPpW4WmNIE" + }, + "PHN-007": { + "exampapers": "1AIC17MO88pa54NkUI3ajj79YhbNyqAJQ", + "tutorials_review": "1WiNEkegm9KRvfd1WWbXnGgRquWKJ1UIl", + "notes": "1_vdz6KIA7GiDYSc-d9MAsK_6X6AbI6Cd", + "exampapers_review": "1rJciVHOU7LpQmZFVrzL653CCm0EWwLYP", + "books": "1xbW1h4lmxtn3uQcgYXSm4Z6VuGmeFb71", + "notes_review": "1X8lbwAIZTVKPA8JwhjFzHWvGtEjJOwdy", + "tutorials": "1rWhkSDzCsX9WFcv3_alKov6KGGq6dVvY", + "books_review": "1dPzPYJdyCs7k91mhJ2T0v3yCsfur9IsV", + "id": "1LX2v2QwDrU5X1LlO5AQ33rgNJ8RLYnZm" + }, + "PHN-004": { + "exampapers": "1LAsw7IhJ0JeTCNKasef3vbHy8UhoAPtP", + "tutorials_review": "1rSpdbqWPqJ0doxJ0kM3s6to948LE9jwH", + "notes": "1jsSVD6Zx-0ckSAe17QEjAAFTrHuqxvqY", + "exampapers_review": "1H9FQ-kFYMEf0r6lectSrBQwadBiTB1lg", + "books": "1kO7FldTB8H7iW52FYHHgUMvSsFUtR9o2", + "notes_review": "13xBjwE8wBNw0zdBjgrmCDvb13lyiWwgP", + "tutorials": "1IdAOG2puDdYw2ZMk5aOpZ1PuuXTQrRcN", + "books_review": "1kvCZQWlO_sz4-juILE57a4NGX-563DN_", + "id": "1a2YqnshdKl3XHgPT5hPCEr8XBu-Q9eCo" + }, + "PHN-005": { + "exampapers": "1VLpjjGIjhrDZrJZn6d22B8noE9STQnlQ", + "tutorials_review": "1Ecgm0dPj_0KVqHZ8S8Zlepy2eyHWvI5K", + "notes": "1aqAthw5vsI231itm8JSJTf7P6cyMifDh", + "exampapers_review": "1WP1j98ZIRK9NjA3ExVPmxLC5zMsEeABV", + "books": "102hnCIGv-xRssO-OSG2isXVvgUYNISaA", + "notes_review": "1f8t5jKUBEunW2i5DlqJPske3OtDWQxXX", + "tutorials": "1VHSiByJx9uEP1zXeJT2Vq61OwnuPDGh4", + "books_review": "1LoNmSW8eTfQ-bmLTS6ld2XMD9tlabgmI", + "id": "1i90VePEGHYOrUFuz7YZi4RIBDz6Cqfsy" + }, + "PHN-300": { + "exampapers": "19ixPpZSemIfI6e7MxATTf8y2SC2kgOne", + "tutorials_review": "1cx0fNDQhkFbGUK5PfkTu6rjUDx7PlRQn", + "notes": "1rB76QGU1-mcNv-mFpHWiGcRn5v_Zmgkp", + "exampapers_review": "1D1MDzG1FUt5H8R7vsJtwag9ohiPzq4dB", + "books": "12dF5H2eixiIsas2s--ohWdMXjf74LYWQ", + "notes_review": "1dkjlnroxKUC-oFAYH82csUwa5PpiXIrI", + "tutorials": "1WOxVHsThIQA60Bl76H7Tq1Mm40bY_bGt", + "books_review": "1xFNok5HSpXJ3J6lf8D2ipkmde7Iwm59u", + "id": "14ErD1PzaRGFAf4hnWoJTao5kY-Gb24RU" + }, + "PHN-713": { + "exampapers": "1yyaHogNAR1UL0Hfj3Jcc8XUgKNLsGZUz", + "tutorials_review": "1bNV3-YcdfeEtUOz8wVNtLdcK9QrheIW_", + "notes": "1mL1zNSSTK0YH_bJu9ERnVRjVHVvCgFAA", + "exampapers_review": "1hFXqJgAJ4u1VHmZoEjaIjIGFTQjIdIH_", + "books": "14i28F4gRnQ1az2518XpSGGYyNijy7PJT", + "notes_review": "1LpQ3XqZYLrF0FxGDEKCeF4gTdjuiEcxj", + "tutorials": "1Tg_F_BVjskeY32aDkSMQOCLJOUPgB7WE", + "books_review": "1uZPmM5isspFk2o4xnlazmm-Zg5Q_7btf", + "id": "16TDPyLg1cqK0ZfcrBiOvWMcAQS4CqnFE" + }, + "PHN-008": { + "exampapers": "1ry1zNqh-pRkZIN2q1arCnuU09mzhSI2S", + "tutorials_review": "1zu2vipf3Y3cz7YO0o1Zz9XEs0AL0XNAr", + "notes": "1h3MvsI08oos73d0lDipJgdoiuuB1GnpK", + "exampapers_review": "1Lvr4MsrRcU8MZsnNgaj5n095aZmqn5Kg", + "books": "1jA_Fc6rIJODL-41Wgp61LeCjvEx7y90k", + "notes_review": "1brz0HcDYTqOtIIHERKzO3h7J7HOboQYP", + "tutorials": "1wg4149OiH79g44t84hnGTzfLYFq9Mz8P", + "books_review": "1T6vZ0hnzlpEQIOriXC2dutP4e-3-h7up", + "id": "1pBWMPPZNc920Ae2CHaaf9Qs5WOZAn_jM" + }, + "PHN-711": { + "exampapers": "1fiwST-zxg4DsR5j9X8A06jGd8KMmKZzq", + "tutorials_review": "1tkFXIMGcCCZsTmtzXofltoQhDoZv6i9i", + "notes": "1fpmMAfqyLZ7X4J6tUVcE0bl-SBfLK_aB", + "exampapers_review": "1jaMi2JoyUrr_kimFm6is6Uw-TUkm5pGx", + "books": "1rFfNFR7PYwNPAERSp6xaf-PQstmG4W0t", + "notes_review": "1MEaQTP6pouK2xI1TvvSIMK4ylJhJyeep", + "tutorials": "18vIIfCIo8iFVBaCYUNNZBSq5X-mfBq_I", + "books_review": "1ahE_QK3srGnpT-Wn2ptMztJrJp7V6uCF", + "id": "1FRTWOptFwLulClrC-rkCtxiouOrVyb_4" + }, + "id": "1VUr1IY0RFL40gP4rjH8gK0eZE4DbtPdS", + "PHN-605": { + "exampapers": "1Qvvo34mcKhBBeuQw2IwNYP_GUqxNK7RB", + "tutorials_review": "1xQ0cc6e0UWY0CSWxsIhwf7oJO7nCt-ng", + "notes": "1bjMC9dQmV0Xc1ciG_LBIXl8eU4QJGlnf", + "exampapers_review": "1FDq1RZGJI_E4yj5TyaqwNEuhJxjEWbNU", + "books": "1FOnS3Ggbq4vGC8uldfRRfkNpUGOfUz9b", + "notes_review": "1qlZ7ojzgeW7zUAlt4wQxgdJDlUlaodUL", + "tutorials": "17xwqf5hi1Zf1fwlRj9CxRPCkN9j3Riu4", + "books_review": "1-y-yvp1iEMM3un9rWCSCRlj8hnp2twr6", + "id": "1Sn_rs4U_r2H0iIL6bLOV3tAr2vDiu8ic" + }, + "PHN-607": { + "exampapers": "1_5ZqLTc-WFNuaWkNYJRg7ZHC6Z27Dp-j", + "tutorials_review": "1pbaMoehVdW71zhI6U4k6RxwOesRqr5Aa", + "notes": "1GZ_-jfQ8oVaHUr5AQtJGqA_aIbcw6ZRS", + "exampapers_review": "1bALSDRn9fR68DIPEn8u_gMs4p-CA0zGB", + "books": "1nyiEDDj--Ar43XXE0qS4esGG7-72J5hY", + "notes_review": "1CWa0cMb1NQ8h-aHineVXA9LvBHqZxUTk", + "tutorials": "1b-XauKNeePXAz_Qy0aLcobDYukZaaMuk", + "books_review": "1xJLJAcKNKG0-B_qcAiBkjZ6lC_OzCl0D", + "id": "1zKr0oXD279v7LSzMyx1Ys4OYxhk7QBSV" + }, + "PH-603": { + "exampapers": "1s1xN0L_sckEntAFEBuNRZt_KczDHLhH8", + "tutorials_review": "19pcsv1ZlqL-TiBcbTUuVo4Mftq3Kwjei", + "notes": "12v_-nNatjKCSPsHFGVIXDVx3oNC2532s", + "exampapers_review": "18SOnNKwlRfO53OUjCdDvTwOe8XqpqzaQ", + "books": "1IkdneeHZdTlSgsRZVS44g54rnYnQT-QY", + "notes_review": "1aSWiGgzaGtRomLYW2lyF2K8yuB81QpqS", + "tutorials": "1qx0mu8u9s1Gojf6nDqt7DBUq9uGdKR4h", + "books_review": "1eiRUUPpi_p7mJTDRD1T9h3rBVzJqYEcT", + "id": "1gLoemWDd4yV2UOO57ho1CYs_6TG4JUyb" + }, + "PHN-310": { + "exampapers": "1BlV92PJ0rl1qKa5D37xToAD2O_hOoGo2", + "tutorials_review": "10poZOTL-kgbesiIj2QKr-Y1iRi7Tvtuu", + "notes": "1AtQNeuWSmGsi0pMiow7-R5Tsf-wW4YJv", + "exampapers_review": "1BtWHpFKsHIWcAYGKgKrzooJhIZDmKo9R", + "books": "147BdwQ99xxcnMKiQG2lkCXWE0QPfl8WU", + "notes_review": "1pUDHMW1T3ZDlXTpyK1E-bHYXTS9d9VMe", + "tutorials": "1ztxNyLnvEZAZYvaSgKDVUGkWORMCD6zW", + "books_review": "1yC5I7XfrGhTY4Sh30qPhfSDG1C12UXBg", + "id": "1xYaQr5NuAM9cCK0xnr8X2nfZWXPT72ca" + }, + "PHN-603": { + "exampapers": "1RFm3yWeNII6rqZKAn83p4n5a1KpfMkPb", + "tutorials_review": "1WTF_2rObJEmvEIdchFMeeARZ1kbQC7yP", + "notes": "1PfuLEVZqXkzkjp1znMHttXsofJIGKp9Z", + "exampapers_review": "1h0mImMG-0pkJlEqAUPO9k0V2oQ6xUfUK", + "books": "1ka9kdkI7r3tULCtPzOXhcuW4gkOLOta4", + "notes_review": "1KU3VCWM_kvtAnoEA65Xa3AP2yx4MePW2", + "tutorials": "10Dnsautg5x89FZB8DU7Yg8tjHeiQFinB", + "books_review": "1t-EgCbmL_hTZGwW7Vj3CvgeTpB1XvN46", + "id": "1ot-sUyrsFE_i6ePG0CbTYrKnZFKlbiIw" + }, + "PHN-103": { + "exampapers": "1_jY5rqB-9NCovy7xAYDoAS2FSB5f1pG6", + "tutorials_review": "1SKEuMb1ZWmn3UcRf2UDONp5vrncI75nl", + "notes": "1FlOCM-R2rfN6NE-OmlUNP_hnsAPWwqSr", + "exampapers_review": "1duYiNq1HuTGAJy_rkZ17L4T_8I1Gw8_i", + "books": "1N5KzhEAGqQb1iOWpgh9kS6hgVQtBWu21", + "notes_review": "1fuzzoNk9H8m3HNKkjGjDNHlUklNM2hl7", + "tutorials": "1ikujWnVC7ydWZq0l_kS0AGuYh7vxjEp_", + "books_review": "1q9ltOwOA5r5vNnFwwmI580Ay8Kv5W-A2", + "id": "1E0kW2_NRQVnGhO8mbLjjgtX95vEwiePF" + }, + "PHN-627": { + "exampapers": "1ivpmhukTV94Oz2Q12EKaXLzg4r-jVLIO", + "tutorials_review": "1VbdJSb2idmSGT84AT_JLgoSRyneoPHaw", + "notes": "1mXNWKs46NaZtVtw8ZugVmbXA2yE8UGb3", + "exampapers_review": "1OsZJ0w4TC_y7a97hgbcOkxg-VMLSiEno", + "books": "11eAVVVAu9YACuX9BSsv7zXrGrV0-Z5H5", + "notes_review": "1sseUfbua3KHh0H32XFBVjyNhO_jVV6SQ", + "tutorials": "1MpsqaoKtH2FmtXtiecgn8rdMCqIEQCNm", + "books_review": "1CdgXhq7490ulyD1slKfYUOMEsoP8Eb7e", + "id": "1UnWiMQSUTFRyK8YFEDmXi1yoqCCeCC-P" + }, + "PHN-101": { + "exampapers": "1BAuWFkjha1rm2unnBg6K1KyeUCy4QCrJ", + "tutorials_review": "17VxwN8afskdQkYPbKdnCdgTkHjnX0yRu", + "notes": "1n7w7wPdU0qnMZomch0LGAZRUJoUQf8DD", + "exampapers_review": "1a5zrKzXkD-0tEgS_aCsErCMsuNDsEmSX", + "books": "1udwCZszmz4DrNOFGkAmwif2G-TyMhTOW", + "notes_review": "1e8e-5vf152DNPD4PxoSezK25jYAKgXJQ", + "tutorials": "1nkCjQkcsGQ80HkfC0MvawNY4OdYdWebW", + "books_review": "1ftDuZZVuABZMEqESX2xWGy-DRKmLMP_b", + "id": "1ubfzrQFuBbh43PF1v-IZXPycACAJBN10" + }, + "PHN-207": { + "exampapers": "1BgTmE0uVj5L5zRoba_gTlgmZHNuFOSm6", + "tutorials_review": "1jL7nVSNoIZ8G_SykxkRoTvMWj_wzGA14", + "notes": "1xCSA3YCEI4-lWzxVGKElUNbsFCsDvtj0", + "exampapers_review": "1sGII5Xcgu0s-1QWSABYR3Or-S6jhR2Bd", + "books": "1_Ck0w7JdgvX8HHiFCFxnhF9dhPpi_yQB", + "notes_review": "1fGK6-Ilth_NKm8H3yUGk3hglhjN6CC-q", + "tutorials": "1HOo7j_s9weihFlVKxhg3Gh8EMqqLSJ0e", + "books_review": "1Jy_0_iPFwMP_I_uVFKY0Q-CEVsOcBJz3", + "id": "1Nos8TNda_SDtUCk0hRSuYxeabyZgvz5-" + }, + "PHN-512": { + "exampapers": "1rq6ybzWltiK6npjj80KxMF4cIOuJQA3T", + "tutorials_review": "1pKWPLTcym2q_TyKd9A-MOxwtLtNvFqty", + "notes": "1VAaSRW3sIdGVIBquTAsMIF2u6vOBVYWa", + "exampapers_review": "1rTOjkG1HzmkDgnAVSvBPsreV5DD1mEUO", + "books": "1SnuUkXH9oC7AvJO4MhzOhWwXbTH5ubZM", + "notes_review": "1LWOoZEwfNEjlW0ZzSQfUE8HAw-dwymAV", + "tutorials": "15sjyKXQ4TXcgRhgS6mH-TbpDYB-GyaRF", + "books_review": "1YzAWfhKCC-awlpjS70caaXThc3bMtSIk", + "id": "1l47ismAJE_b6jGqpdrSzNcFFkauXbfb6" + }, + "PHN-513": { + "exampapers": "1iHFU5P_5E_MQl9q-vI0rqHv1mUzfcMLT", + "tutorials_review": "1rI5KqzxceH6bXn862ctR7OXX1KvzOmiA", + "notes": "1gP157BBT7vaBKp3INs8iVkNBCvjGHiqe", + "exampapers_review": "1wrI-dprWQwyvwARgJWJm6Rxycux6HqAx", + "books": "1JyP7reh1F4cRql0ZlZ9imhcYtjqKOd1Y", + "notes_review": "1VkkgePTd-tUUkScb3xyEzigo_VQtkLAY", + "tutorials": "16DUffUHngQhx1UHAehh_dXjbEzSaGGZ4", + "books_review": "1GBbUfu7cj-_ZKsI2ogKIqyK8QpnzK9gP", + "id": "1SQE5RnlYmKHK2o4dY2okHm4RMLEIIWlJ" + }, + "PHN-315": { + "exampapers": "1SYI_BWwkpFhIcyzmLdgfergY3NNCljjj", + "tutorials_review": "1C2hdM9ni_umDXlG_LsYS6I2gRkga6_qu", + "notes": "110-ushq_syKFFvVf-uGmCMafH1vvRkO1", + "exampapers_review": "1ruH1Eko6zAbx7wIkvTkj4nJCW9VYlAvH", + "books": "1wfQ6UYhxeTAimRbxoAkJXEZctckar1G_", + "notes_review": "1m4_89tOLZ2ZdEldSwVtqLhpNbKwRwjyt", + "tutorials": "157T-0m50XilegpuMgoFNtB9kVEN1fHzB", + "books_review": "1tVAn1Y6Daukd2Qhawsj3SG_XLhN1QkGD", + "id": "10k77QkjnvbhhbNWZucYeShIDyJJrmOiB" + }, + "PHN-499": { + "exampapers": "1knknvlqMnrZtA45w9Z7hwFLuWavinNmj", + "tutorials_review": "1V7IVhnNXZyyMQ-bwb1SJsFY71FHxbQ92", + "notes": "1_6uwdRp4JigZv9FtGXFXC1HyFTSSQOUn", + "exampapers_review": "1ucBIlXtPZHpAaRwrzgvzb0XYoGXy8csY", + "books": "1WfRNqJajwtXHmyBI2pjYzyc_ep5ZR2XV", + "notes_review": "1NEQm_cs__PL0IqT-N9A23ug7CGLLedFQ", + "tutorials": "1kMkEYIscK4_S76RztxDcpnWC_dX6AL04", + "books_review": "1hKUS24E28Ww0kNsvwNwq2r9dN-f9oL-q", + "id": "1DuDbuHzFStHUVyJvMpp4c2FVF8eitJs7" + }, + "PHN-643": { + "exampapers": "1mW1Mj5iaGaBtUNeePxoV_7yCvCUQFr-c", + "tutorials_review": "1hKzfxOQviRdpGNx9xn_yh-uWqjvf1Xa2", + "notes": "1tbnZPWw7mVfa49-Ys83HwcNQD5QcxY2v", + "exampapers_review": "1ik9n-oiY-aQpklCJ1uqO5JcuIti2NMTr", + "books": "1Q6OE0tLUJFleHfcJ2E0Pu8e_aPMTYpsK", + "notes_review": "1wPMyDWkoHLl3f277ft9cRN3n34ke2to2", + "tutorials": "1zYJg8UnvoWZI39XO4eTsGM3qrr-t7XDD", + "books_review": "18j8iJXfJQcci7PgGZ2FZ86N-OUroziS5", + "id": "1OBY16tOVLPNH2iFwfiSeS2izzDsY2po4" + }, + "PHN-701A": { + "exampapers": "1aj14RyvkiSpfNHZvGJolTjKeVDEmbff_", + "tutorials_review": "1GcC_CBNtg9FeSln5ttVt5TOUYW8V4jze", + "notes": "1qR1xKmG82sMvt4-qAvyk8mpkZPi1nUs7", + "exampapers_review": "1NqDsDbJ8XaG-1wHj9cueEMsBM8CA9QPG", + "books": "1BJVE1WTs8gE0LF_OHRgCmsgmpnlCQeCO", + "notes_review": "1gE1jCeCPiynn_UhRe1DODbRPzmDpkrTx", + "tutorials": "1uxyzheOEuOH-AAzw0zFP4_LEsJ1DM50v", + "books_review": "1_yCMlDaPuEpg1L_9FB_YH6csFHxHFiEo", + "id": "1JpfWAtDSmjlS2VihbgP-VUvdQI-7Qwhl" + }, + "PH-511(O)": { + "exampapers": "15J7dno_NyMzYYHla2WTHFZgLgzxnJP1w", + "tutorials_review": "1zVm8cZNxgqfI5YSxqBQmZJDAeeMfy1SM", + "notes": "1jYvQa_bUtRjz-e5FdR0TMAFJTWNwhwHu", + "exampapers_review": "1tL_8LDgvUl2E5eRPZjnD0qsgk9pWKwNh", + "books": "14H6HF_7LjGQ1Up-pZ93KMslpoVtbHe4m", + "notes_review": "1V-Y6PA9VKHycZ0ddpDkiQ7O7vdeB-ymF", + "tutorials": "1cCr_SQ1PHdjLltV2oExfbSIbrGWwzCgP", + "books_review": "170lbdWPXrtb6dMsfATwHZHvKVtDzl3Bs", + "id": "1fYf0yI7GcbO1UHin0BiVILSljqmDhImI" + }, + "PHN-211": { + "exampapers": "1KRg5SHfaZp1_dsRfqdrMUKNc9WXm7OFO", + "tutorials_review": "1tWKKBIC4LMhHEiEuowiYF-ITr4nZeEcF", + "notes": "1KfaX_mIlEJ89XFvueM9h2abFCnpsh2W_", + "exampapers_review": "1sRMkwBIvxD7RWLSnja4Kc4tL5kUsE3cK", + "books": "1cgmUJGNaDWoiiaiGkoO-dttmfF8NwSsT", + "notes_review": "1fTdwSlIEVMHJlyRQwk2NtUXP8IpIIfAu", + "tutorials": "1QGUYjBSw6zIFR6RbOEuyXzbf2Kr5p_fx", + "books_review": "1sJ9gpAEUj92etuH3YG4nJqWjLIUnPTV6", + "id": "17CrQcGLkUz9rX3OrTyZcLDfFof6iKKX_" + }, + "PHN-210": { + "exampapers": "1K7eMpfVoSQ8MV6Ch89C4KCHPdDHBXuPf", + "tutorials_review": "1k-2tIV_M4dqAJqWN0nleNzrl0hvUdWbq", + "notes": "19vWldbCKqAvbgs8HpnHiTiKRisnOHeEg", + "exampapers_review": "18l5zbkxWIyonXS5yc5nAqfQPAJrnExzq", + "books": "1DIFGO1XAAdWKbxGiZktL1zvWQz4I9uHo", + "notes_review": "1SK1oaeMjK12ozcbhe-aFE_gUZ-ksWm19", + "tutorials": "1xtco1u0YnBnZF8AGRxQFSNrJwGIz6hrZ", + "books_review": "1kFS82eN0K35jprWHL_Y8s2FgX8yJowMw", + "id": "1o9GRB97hUIDM9Zi4lbw5qCuy5eemJbPv" + }, + "PHN-313": { + "exampapers": "1or2okzpqyonD2VXXbRFxT7wcsnAJrYZ5", + "tutorials_review": "1yqHdqvo8n1-qpapnNq7g5564a_RqgYl_", + "notes": "1xncvmwjv-O7oBRu6JvXYmISa2d-2fbCW", + "exampapers_review": "1aIQMi1jsy-Rxcd0HJ5mKMCIRbpcQwDp5", + "books": "1w0q_nGI7tWf8T1COKaHew92C2OFZP7Cd", + "notes_review": "15yhiEjpiwWj_m2_--6NhApfVAPn1nudT", + "tutorials": "1if9wM9y42hoDq7MtbXlCbB7CuAN73liI", + "books_review": "1iPms_XRgcU6KJUL857rk4jX8wKGNd3P4", + "id": "1S1PeYp_Eb00wkksALW4AwieAnpal-KfZ" + }, + "PH-920": { + "exampapers": "1wAlIDf0BPqk8w6ZTBubXGw8xnsafCVsX", + "tutorials_review": "1Fa1eFJX2yLxk4nlbBRy3uqEIu-9KHHcF", + "notes": "1SeR4utWh9OlFyk48agX7qcW_R2ossTFO", + "exampapers_review": "1KHRBqFVIC9EHH6bhoRSmhoX7dxIt2Esc", + "books": "1iEC0YE6yVWN81_dJf4oaWLavqk1s7wsf", + "notes_review": "1c2dHHB89RyZhtbDFd-SrOjJ6fq5hd4G8", + "tutorials": "1T01ubFm1wZqfB8Lwbg7iO3zw0Eykx1mb", + "books_review": "12db7HgM2QaOtY7nfmd_cY4zTBzA62z3w", + "id": "1P1hp8jg7wsb2v32sn8vEeB8UGyxKSTzC" + }, + "PHN-214": { + "exampapers": "1cP2Jf4_NkUA2Rcb5V4IHZ4FRcyTt1FPS", + "tutorials_review": "1F5JoTJj6xRx5G2-ThTjhfHhiqFFPZB4E", + "notes": "1v6Ky91lmo-8gSEIpH3OsVzAhEZBUe4I7", + "exampapers_review": "1cDdMVPx3iyjBMxJy3SwVmFIj97qU3viI", + "books": "1FViln3fr3HgqHyegADlegjX38yh5t09g", + "notes_review": "14Q0wQY2GGEKYndpmL6SOyfsQB_HJwJyh", + "tutorials": "1CFyXMJvJIvUjtPlf6HHzh0I-uit7BfpV", + "books_review": "1nK7IuFxKYdlTo08jeqnNVEE6-s5cW4sE", + "id": "1eU3P4WhvKyGp4WY_gSeR_XSpVadUrm_5" + }, + "PHN-789": { + "exampapers": "1wcw7zJTI78AsmcRKAnDeQDYPJUWm459g", + "tutorials_review": "1xMKANRCbvIXylXTbYTzDbEEEJDVkM9cB", + "notes": "1pzJUa7vCSwIeMatUiEm6vH-GmynrQWdI", + "exampapers_review": "1ye77gfKxh0d1KljQfeMmws9ZxOr5hTar", + "books": "11k9MakPJ9N79w_C5PJpo26ox2rcumgPX", + "notes_review": "1_tzpRD1nEkgPSaaeuuyqVwCmescp9b4W", + "tutorials": "1bXT3seO6Alkc6uZuTRYBFWLuzzN2uNNW", + "books_review": "1HB79y8j0VO7LZPCMU2o6zSIoUkOK4eRe", + "id": "1rQSnBu9Uy5pu_LAL_f7ElG-nVlLQft-h" + }, + "PHN-319": { + "exampapers": "1nMZp3dYkPUggR5Pw0-Qpk31EmT10lZfg", + "tutorials_review": "12nfMunU8tsbl-1oubLMW4SouOEzBSxTD", + "notes": "1riIhLC-J67iqh6HrUXtApStOK1eM3ZTi", + "exampapers_review": "1iVao3NEMU8Vhhh-tt-To1bBqIYvJ86fx", + "books": "1bK-9B4peoTb4VX7shZs-NPAfv5ZsSXwZ", + "notes_review": "18hu1zqQCSP_0Y9ClrfqbRr1ESzD8vRVU", + "tutorials": "11hEnbQnP7U_uKsQUq8m74lWGOCZDF_7L", + "books_review": "1TYz7nAz4NFjR93OV995W-nWeZ4jX2eu7", + "id": "10ILQqijq7CIdk8FaWVPmH1OCakCkQDyJ" + }, + "PHN-709": { + "exampapers": "1ZGVXFnS7Y09y_BS9S_dwyBbOPFyQ3vGO", + "tutorials_review": "1pHutTF7M1HwvnbxiSHc7-ggKwTmynp1y", + "notes": "1_SUUWG3Oh1pfQndJbEb3lkE0kDfofQ4N", + "exampapers_review": "1-NIiSsygG2IEqZq9AAUWKfy7URdoXDeV", + "books": "1WR5Q8EJR65-5FuVGWz_JeEkfjlKdlXM6", + "notes_review": "1B8tlb3h8ORavR2D3Vk3LCFqTjRstXySY", + "tutorials": "1Gqo459EZHL18hJqK0HLb2gXM495-2WDA", + "books_review": "1oBTE6GhThuplCoOHvF4WZGJvlt9obx6W", + "id": "1aH_yEb0xT7FnGs9B3L0vuoOun0xZJ7-b" + }, + "PHN-699": { + "exampapers": "15zXtF6_7JIA-_CHSY4BtP4s0uFCjoIsP", + "tutorials_review": "1HIxKFtrAChci-yANTxmfipmaX7YeI5og", + "notes": "1zWE92FjKWpzuDiQT9i5EmfJEtj4jNjiB", + "exampapers_review": "1w9qZvCYlF5llZOBq4tsTBg1JSmpXB1LA", + "books": "1XFSaWdaIr4Wg_GWN0TlmGL_jUDaI1csO", + "notes_review": "1nkc4k7XhV-7duWW8d7oGXzAFh9M5qqpf", + "tutorials": "1fpetTmvm5Mvgk8WUqhDbt7JHUKaqfr-k", + "books_review": "1KIB7N8x-w1nLvueY5aghrDFIrqzafBhG", + "id": "17SJiBxdOegRBRKaLrG4dyudeoMIdm9Ca" + }, + "PHN-707": { + "exampapers": "1PoRhhMk62ZY5nqTBziV3vFSqaut46pkT", + "tutorials_review": "1mqTVw3fh-UPknCUuxEieuiQEyLg-YyUM", + "notes": "1m4nmRIxLTcz2nQUHk_fE-0dp0_ml5ZXF", + "exampapers_review": "1pBBPsl9hGRsJpZk_aKJHSu9QSkwJzFz_", + "books": "1C8Jyb9qsgDym0CqR02fGh6gYgumILvGa", + "notes_review": "14phNtxbe56TtH1UQCFscy0H1mD3ECTkG", + "tutorials": "11sz0cerey8VDX7lLYmn45TuRdCQWUNAk", + "books_review": "1awpYwsBfXTNt7gbasOUBJtmCrEKq4A5F", + "id": "1_wie3D8m_NA3HIQWcD7pw9BB4aJAUwYk" + }, + "PHN-701": { + "exampapers": "1wYyV1fBocenz65ht9khs5tVlMNN0EaBn", + "tutorials_review": "1aUkpX25GidcrSWIIX06T4zReRNr-K--p", + "notes": "1z5LZY1fcU31Ib6nx7TpfTSHWsvMG1MZr", + "exampapers_review": "1AKSlxQyx6HaZLvQUH2yjDCzZRwpLxdqM", + "books": "1mnF3gxmmLHQzZbdx9JXxxTOlxzwQ_0Mx", + "notes_review": "1skOTWhE7HJzWpo_hOHgyc6vuTrILcwWN", + "tutorials": "1SNyZO1bbZTIsR11EFPax6HV8nMVAOMim", + "books_review": "1FUZQayE-VgfMBs7HY8XlOEAroT7GQl8z", + "id": "1ydNcOd0KHuXvkbfVOccVrPRZXQE7-N86" + }, + "PHN-331": { + "exampapers": "15yDA7Zsoho8m4hyjTYvy0VCQIXCRTv98", + "tutorials_review": "1aK_di9Q7GzcchKz3wICy8pC1QZIulzLb", + "notes": "1a7tP93OJ32McxQuEEii05Rr_4CezpsI6", + "exampapers_review": "1mBCDry500IyWzFjhYl9A229QtazlHgeF", + "books": "1NswUJxCcHvnx_0QVx9kMH0oIEdJUqMSU", + "notes_review": "1eygk5q6hMQoCnEbh6cSEjGn2h69oAFP9", + "tutorials": "12NbyYEbiZ7UXs07wPvvx9FlqMrNPCmaB", + "books_review": "13o8EDbustOaSx9QMMWwJDBEQleZoKNsa", + "id": "1CKJ91uUV8wg1pHjEwlB6kCWqPOeU-89V" + }, + "PHN-703": { + "exampapers": "1zbJKJkh6cgUnCmOodpHrpKKyIBqpCh1b", + "tutorials_review": "17OPQI4srJzL33E5u60ZsSxoQQfX34NoT", + "notes": "1UEOFnQG-WU20F7HxEbhlXqZUKmmdArfI", + "exampapers_review": "13uMnT1PeqGc9gBeKUDsLOZg7uq_Fkjlk", + "books": "1L_vPPhFnzjgvbnmrb0LYKHF3y8kdFoh6", + "notes_review": "1QE0m3P9d5tN5Ddnij03irWHnbm9mbcUG", + "tutorials": "1y7TX7rRx6WB1PCAVC_dY8-7Gw60Bn-fR", + "books_review": "1OlT-o4en-zkGgsJ6RgB52tdzW2RRcDYn", + "id": "1j9sSJYipztUFjOJmLT3ES8rL9TOpTdsx" + }, + "PHN-601": { + "exampapers": "1zuz2_TpSCkaXdANZwTRYrLU_lKWkO0RJ", + "tutorials_review": "1ID3S-evBw2ug9kJuVXfopcHhHKeKWLtf", + "notes": "1rhwc1lio_0TL5IpNgEOVcgP3DDogrQOe", + "exampapers_review": "11p6qCGVf1fUEcdNlYxaeRxzY_SQa_xMh", + "books": "1Fla7jzQ3wuDIGS4JJzqNUeHb1tp58hnc", + "notes_review": "1igSF3qICSi-ORvjfBgqSw1pLjpU4MG6Y", + "tutorials": "1hPKYBViso7Qgsqw4_LNdVj1m2nSxNpFb", + "books_review": "1O55WanIC0E6iznkxfaqCh1fF6oSXPL68", + "id": "1zuL4RsWLq2BWt2JrIcgu0ufJ1kY5pp6v" + }, + "PHN-600A": { + "exampapers": "1yYXYsD6A623Jn1Z7IPOpBTkZ6B6jFgsx", + "tutorials_review": "1nJT1CCF8bb4NRBS2fKP3yBnLtCfS0Le7", + "notes": "1Mcv4YaoYTiHvmG4dIlUG5Ssr4wS0dPsp", + "exampapers_review": "1hev406cKBtZHa5wW-8P_YjCrz3thxKDE", + "books": "1P0fAEe0YFU3CRJBlW4d_x0gXdciu_r3A", + "notes_review": "1eC-wOxSNpodd1vgq_2eRHq7IknZfbQE3", + "tutorials": "1PLUcZWppzMIc2QwwcZ3e16wkm7RB3fsB", + "books_review": "1gDIcGBfGfnOo2DhIXUlRBaYaLsJ4E9u6", + "id": "1lJL-r6zmsHn342_mFCInWuI6Z4hweu0d" + }, + "PHN-637": { + "exampapers": "14_K44cl4s6Mn8Cx79qH6n8WUsIN5Cgr1", + "tutorials_review": "1-NeHUztr6KB6hBQGShuhiVmVQ9kcXcgd", + "notes": "1TZs_h2RbZHahJQUhFlLbERSSliCvjd5u", + "exampapers_review": "1eMplboHM3_as59VpO1p-6cX_9MYfoo5y", + "books": "1ENF9zNRzWayAEoaD0hPAJHbJNsyHK9cg", + "notes_review": "1AjQHY91iXFNEuVVhpG_Z-ldLsA3Zs5xu", + "tutorials": "1Guc9gYW9WLgzHp08hOQotIJMn28dFa-9", + "books_review": "1CBo34oF00TDviIfLigd0pLG6Yj4pRBKj", + "id": "1IBCI9RM6EoqGGzlhIvJLxRQnCIe5zmpj" + }, + "PHN-509": { + "exampapers": "1uc4aWrD3SlDGlwgvnZJVStAzUEJm7h9v", + "tutorials_review": "1BqPGi00cT-pbiEKuWvizpuulLR-Sy71K", + "notes": "1-3dFfnKVlCFB1WRyrDOZBgo46WqDqpuI", + "exampapers_review": "1jnsMOHTS5sGgG7eRBYInu2Zpq5FY7F3H", + "books": "1Hkhp2Cc5LcOExpKxYpRZmbYTfuF7fpsr", + "notes_review": "1XHg3kYWEVH9qsYfpSJNmxgk5dlCaanQf", + "tutorials": "1GeetZmYKejGKZZTe3A698Yt0rYENHLNa", + "books_review": "1VZvppIjALSjp4JRckrfqro8zIb3Jb-EN", + "id": "1LnSg-UCH3jbYpRxou9DOXkTm7T7AEUmd" + }, + "PHN-617": { + "exampapers": "12R17YfOqW96Bcw7GH0tsTD47umHb-qh2", + "tutorials_review": "1NkxSHQ-hVUOnqTT7c7ysaqXe3Q27-hdD", + "notes": "1zuho87Drxsr96pvixVQX9m58DL7qjXeR", + "exampapers_review": "1GoeH2xg83gngXchJOC9dG9vkvkXuvVcW", + "books": "1acCWHDBbQ7QOolgQ3wbgpFxEWPTK9WZH", + "notes_review": "1-Y4knet5ff4DjJpZQofEYszWSRQxVs9q", + "tutorials": "1OriaB_wJKEW5E4fyr13_iOGUGY_9Nvzs", + "books_review": "1OIL9UPOPkiAMjGHN7Fa2sdfKYWVKEus-", + "id": "14UstRVU8l4hnjF9pmWW3LQPOMz0bK4Fa" + }, + "PHN-507": { + "exampapers": "1Q-cpBy1lXD-yQ4uSdijKojEprf_MysZG", + "tutorials_review": "1sAStntYURXIcA_n3jNGKdL3-EVNbUNmL", + "notes": "1jnFlUbZw1gnE4PbeAMXCepSawrhQcfBB", + "exampapers_review": "1u-uplmDYljp5anEk0NcpVrZeqezt4BBV", + "books": "142c8jHXCvdse8P5ZhhHczjV23wC5cBpK", + "notes_review": "14UykD7UZaPucQC6rebkeFFqi4U4sUR8V", + "tutorials": "1d9buN4e3whvs88UJQub9Dk-bYdyfWJyD", + "books_review": "19T1YEgtvo-LKB7VKeEsx8Yhh4MOacbZC", + "id": "16FlcCL_RFL3jAfXA4q3AdwejITQvgtUQ" + }, + "PH-512": { + "exampapers": "15ZBygg9yWRYxlkDw2rY4n278oxOrahSa", + "tutorials_review": "16r2rMcXB_aN78myBsG82MVI1tPy7sigq", + "notes": "1pjS6_c_u91s-v26qdNDTEdC-rN1P0Kzy", + "exampapers_review": "1U-i7X68R99SmgTrArAWFpa9MvnXMl54A", + "books": "1JkaOEJG5HG3zAoZbcG_HwEHU0K2SGSX2", + "notes_review": "1nbR0SRPotr1uNXJ5xGJpnRUA8_3Tv-ql", + "tutorials": "10Mt3Mpr9cvUv_ckrgy6y8LYLeJ1VfXKx", + "books_review": "1CuVxJ_RxAl6f6oGgqonOA1obZKDNuWT9", + "id": "15-D5jENQby8CGvEzpuLSO1BtLdwWQ2VX" + }, + "PHN-505": { + "exampapers": "1yw-vqjd_ujDIh0wFIazZD7dwE8uIL0Xu", + "tutorials_review": "12hdh3wbEJCQnSV92vnsJ0i5lIV4FhowB", + "notes": "1OPFfxjOady_Yc8Y34mIMmYa2ZkApcOWY", + "exampapers_review": "1o-qhHoT3qLERQsSdUZJXJQnzllcMcKd3", + "books": "19Sak6GBGuhFi0fb2cNjJtxMU1RYAc2PB", + "notes_review": "1zyUx8IzcLnFZl7hECytLYE7Okt1K8b5U", + "tutorials": "1GwnG3jS_A8Y5SELC-wBiWwiwx6vMS8xP", + "books_review": "1nUWBrWqwc32klVwDB3UOPWpk3tvK-_9j", + "id": "1vwC5I1UZuiZ4baiK9OipMh7XMFi0pjc_" + }, + "PHN-629": { + "exampapers": "1uga14-bzDWod1jydyTDzC3aZlqpXFDiq", + "tutorials_review": "1iqTW_PcAPt_tajOFGOAAcdqq-KffHWQk", + "notes": "1f3rHyjMSDrStbHC5uhGyGE63gBlyHhoL", + "exampapers_review": "1wxQCxwoV3NmZpp32Pm_tRwm_-rgs8gjU", + "books": "1dJCr1iUeSMh0GcmsTXCwXGl3lFTODnvF", + "notes_review": "1lhADm8GfQl2j4kYj8myeR1jJkSHUwfPB", + "tutorials": "1wyXYM5dFbw9X2XeKB7ITjG-Xmg9l8PLT", + "books_review": "1tI_Pc_yNdAcIin-OeKVzqBO-BtngTCa4", + "id": "1duzYyfg5c0IwG-PuDklVxOzazYmB3onA" + }, + "PHN-503": { + "exampapers": "1aWOeEn6OuM4kQcjfHOD5V-_qzuilE8EV", + "tutorials_review": "11gRD-X58zHOVwqMFeeZ0ogD-9zGD8-c8", + "notes": "18ArDqMWokaMmSsJLlSVfJhplxbgaAVoU", + "exampapers_review": "1E75G8cS8lhoZwjWlClhNea2glV-R41Uv", + "books": "1KTAsFaFTGtybi_koGJvwkIniNaXMvb6g", + "notes_review": "1o10gho1RKzvyaDT1o1GR8_b92U4vu8IJ", + "tutorials": "1qtrDHzdUJ9CEj8oOrlpC_qlNmWdrdgr1", + "books_review": "1tReXpQlB00U_OA9Kkf0PT2JQFY8mfl4q", + "id": "1jyu4R-pMnLfePwPL9M4SKnt7apTxIa9Y" + }, + "PHN-502": { + "exampapers": "1QLB7te1y9lTbVxlNKg42wbDrBwnKKb1u", + "tutorials_review": "1BKYyrKxDyySIXaUyC1IXDBEGvNyno6mI", + "notes": "1D28t0_9NUheCCpQCdXUM_hrmfl6qE91A", + "exampapers_review": "1ITJSG_RkzECIvbmTJPkQ7_2KldPO8LHS", + "books": "1oyVKi-qyozA6s9eJlKZimaoJEXUnR1Wr", + "notes_review": "1H9C5_OwiRzxRqXx2kwOlftyKoPS-SNg3", + "tutorials": "1YrJB4E8CvC6yhOBhVYQS_S332hRaD2J4", + "books_review": "1Ir8ztchLFICdlrSoKEBPbAsd-dvGXRJK", + "id": "1jqGtVZCWz_PciXDA2rlc9kzlnpC4Jxoy" + }, + "PHN-619": { + "exampapers": "1lZFP_JcaQ-Gvs2BmG_DOIX_Etk0PHGxH", + "tutorials_review": "1Rg5gIjoodFBYOAUsbBP9e2DEPPikOjHP", + "notes": "1iEDMSV96GJZu351t_BDyBV8e-if79XH0", + "exampapers_review": "1IzUkqXRlyM-nZW2aslxbUjX-vW8B6o2n", + "books": "16qVvrS6fK9z_iuangeDH-MwYzO_65oOT", + "notes_review": "1e9juqGaWe4HVEaYhX9Ni_TTxli1AAiDU", + "tutorials": "1oXv9R3G0baOvjd_e_oHDb5xkx5lIItq-", + "books_review": "1nyJat-rInXBrgqHRV2aSRrlUAMCExzj2", + "id": "1t5xHphAgVpPIcMJan3NmuMOJF8G-I0u8" + }, + "PH-514": { + "exampapers": "1QeRw-kRoNIBRSk5hST_QTMpG-LD0NmM_", + "tutorials_review": "1hR4gsxdS1V69ags76A5AwfEGIGqlqQIY", + "notes": "1IBCyPkM4CEV_37VAAuxWABTqZ7UFBkLh", + "exampapers_review": "1lh9WZkJzn-8MKF61WDXRzlwP75rRBdLT", + "books": "1p38g4A6lamuRD6_P6uktOQbA_mIU84Ou", + "notes_review": "1M-7FDEaQMRlQthvHm_MIG8Rb10UdCOv8", + "tutorials": "1xy7mmuyzZ4YwYFiTwa9SHPHSMIyGjCrR", + "books_review": "1B26jh85CgcKGi0Otf01vINv9cToKnybX", + "id": "1-UWJpT4A9YUS5zP8blr5Su9Jr6rL1Yer" + }, + "PHN-400A": { + "exampapers": "1JLeydGNcFOY9oHOMzhxyrZAgeXScimiI", + "tutorials_review": "1uGyG1cR1txI7G1zpk2tmmkyEyuxI4axZ", + "notes": "1IbK9rTxMR2G4vx4_3gf6JrPjc4VgDW_d", + "exampapers_review": "1ZWaqY94entl5EEqdWEPbLvcfjZ4RjVj-", + "books": "19CxyPuZWkyLssVUvuQFVhPk602DuUX9G", + "notes_review": "18jF0FqYImI216jo-M2IT96_-Y2nLZxn3", + "tutorials": "1Z2iuplGpFshHrDc-_FvBabJII_GTJGE4", + "books_review": "1u4RmPyFoL5t7nNHbVQlOfoXt5VEasbHf", + "id": "1woQEKYhWNPlfpgPg9elbqAjjb4Los7iZ" + } + }, + "BTD": { + "BTN-651": { + "exampapers": "1qOx6n0OEBlMffvmKDSTGoc66zOnSIju5", + "tutorials_review": "1QmZwKww87f2VIMkwZeUdPuPQ8V8sleSr", + "notes": "1iD0u9vEC-XviLIvQPpI-u5lwxaqEPOmY", + "exampapers_review": "1hG6uSA92Ss50begQiPb-FCpkRyRMndwf", + "books": "14hJNLEjMA3rSnZQM7BxKndcXVT6qRqis", + "notes_review": "1ZRivH_pNyuUCYpevqMba6SUfW_5Y2HtW", + "tutorials": "1LYJ6us_ppNm9vf8J0AKQfbE5XMR3cybG", + "books_review": "1veGFJgq4yc-qJ1jpK2i86U8fZUVyvPD2", + "id": "1U2FmcFQKeMm3fjWXF1Jysay9sQVMFvi8" + }, + "BTN-400A": { + "exampapers": "1AFJb99s7DtLM-0dwtNJJrVdRwdQlYptN", + "tutorials_review": "1QIWVhTya4vuyaOdFHcxlD3OcM7BebfYB", + "notes": "1chZQAXDU0kdXP78b3YbewzORQVHQNbde", + "exampapers_review": "1kmMIhZiwPG_Z0DMMoYuQAUTWiWRE8xBS", + "books": "19HNQ75PKWq-XngkL4C311e8PCUVqrzaz", + "notes_review": "10rYzTAYLcVHtpZ9YSC9rEgtT61Fnw96o", + "tutorials": "1LIS_LSDX9x65T8j8yd_JdPdfUOTgw4mz", + "books_review": "159cgPsAOncdtlw1NG7CLumcAU5Dsj-ta", + "id": "1qUdjb5IU8K5LBSEbzCROX2OxkQ8cz4cC" + }, + "id": "1ep1-7ZdK8lnwL2Xo1ieKWkhwhgVYlCbS", + "BTN-203": { + "exampapers": "1UP3kEupY5TP8ec3W_n0zpBDVvzasjNG9", + "tutorials_review": "1K5z73x0XmuLHbfUlOD5U17qbdYWlQVdK", + "notes": "17PqTkq1FS41LVV1atbvnNtkooneidAqw", + "exampapers_review": "1skKU2huXbWNoNkxtHg6yA_ee2_nplD3J", + "books": "175O3uZfMIYWV7JpAYsuugn33N-odEA0J", + "notes_review": "11Bu2REaHbW8sAurk7mmpK-9lv53chnzf", + "tutorials": "1z8TDSy-_Cw1-Ccf__Lr7LFS9qZwnwsdo", + "books_review": "1__hV44IIZr0iBEAMpnsv-OeQxUWXtm7c", + "id": "1MnIIzsJ7EvzBfRx9gdMcQM2E4AWad0va" + }, + "BTN-532": { + "exampapers": "1Z9xxWkxUvxCnTk27yDse1mKTuLgG_YKs", + "tutorials_review": "1hCrikhyIkEa-G69fHKSyxzCTSYmIxkYg", + "notes": "12jdEGh--6ySvZpfKXuFBR8hS1vBi6ZNa", + "exampapers_review": "1l218KWaq8N-9rOn4OfEaj9h83wF1NPZ9", + "books": "12jkRrex0XvEDcxSGFwmUhd9Bv264xT_4", + "notes_review": "1445BGw4QJGamEOpSr8dSHMRGXOLnLnfx", + "tutorials": "1M7GF77LkFfpI10Hq7ObZ8RFTt2IcFf6e", + "books_review": "1bVJ5Ko6PqcFwITTyPi8tWKVPde2ePJJo", + "id": "1hzR266b-61rBZH07s9CBvcGUoDy0O8uX" + }, + "BTN-201": { + "exampapers": "1aDCE7v63n7Uc5CXeljlIf481NG_9ijpn", + "tutorials_review": "1i-gEOxGRiGG8VccWxuYJJ0gzaxqg7DE5", + "notes": "1lZnihj_6rgC_dOmlufqQA4Uf-KFK6Vzn", + "exampapers_review": "1B3D57PpxYGfQKrhglRwRGArPRHNvtbqa", + "books": "1hcTN2HnePWDOWcdj_fXXv8VPwPV-8uCS", + "notes_review": "1m73r9U3HFo7C_PL9kLCLup1huJc_pleY", + "tutorials": "1ZWLWzIUoKJKBpC8wRiKvvyFsIuBYZwB0", + "books_review": "1sOAyZ7zAgNiHsGFaDs7vCEi594-vAMGb", + "id": "16Hb0krXFIg9R_ZLyU5FLH5t-vyNPwInj" + }, + "BTN-207": { + "exampapers": "1RDcfAplqrbFET66bkPR1YXaBHd45xMEQ", + "tutorials_review": "1brgVIKWgjU1kUNdndPyf6oPjI2KJP3Gd", + "notes": "1_s02eQt38lOwFyEtX0_neQyUMyPo9Dju", + "exampapers_review": "1dpjbPEpdz-DFAWR7yaxKpuarxANlTvwe", + "books": "10TuwUIUEIAOHlERqEguBVR-69AlkOhEG", + "notes_review": "14CvQ7nehYj-6hgTt-B0dj2VOM3uDz0jT", + "tutorials": "17n4FnaaYZuWFjzQo3Dq4dzQBJhALVQ2U", + "books_review": "1YlDXc7g049LvXgo6Xyf-NHOumnchN2AC", + "id": "1seRb6f7Ev-y_q_2nCicKpTEwqLg1jTVT" + }, + "BTN-205": { + "exampapers": "1IhjGIR7UD8_paKiXoft6bv5BCiMPBP00", + "tutorials_review": "16olMvfCEMSG7h77eoWilRRWdxzWkBoRE", + "notes": "1BEI1PXrp4YIY4K5EptQhsixpL-kqln36", + "exampapers_review": "1wLsPKbLh1YqGqyEPHa0wb6cY_cTy3-Wv", + "books": "1CgBxf8BYYoYVMEt2kuk_SKAZjixcXvCN", + "notes_review": "1XKPj6_-ifRSc4XjxKAK7nCLhHBFROWxy", + "tutorials": "1i4fMhpEF1ZapIvykMP2RzZDaP46Owy2v", + "books_review": "1mOAwQlNX_9X09Ven-IhD4xJbQB_pRe33", + "id": "11DvNoYM-YcTpjpsc2fMaq8OdTqIo7Iok" + }, + "BTN-101": { + "exampapers": "1TwYYtuLH3iHpzIybVO_4PEUXAE5Ww839", + "tutorials_review": "1goBzToYYQydIZh9dWeT2anVrefyMLD20", + "notes": "17KORl2-x4r_-o4MmQxUOalZl4x1ni_vZ", + "exampapers_review": "14muTwMpmh4w0J0_SHEbuLD5Ys89os8YA", + "books": "1KrsDmA572Fxp8_fqILigFutHXZ3z4qV0", + "notes_review": "1WXbAGoBGBe2odLWqlJlheVyULUNhsc54", + "tutorials": "1JVBOVyWHP9SPg8EzUlsV3jHkw4AFdti3", + "books_review": "1XzPhDR4uEciEV1iTvmEmHST7a5M61h5D", + "id": "1v6PooKk5XVDF9Cm5ImDHNozhWJyweAj7" + }, + "BTN-513": { + "exampapers": "14Nqf2A7bC9SmOKge_ucqtA64mx4FZ_6X", + "tutorials_review": "1-Kdsz4UATJVmRG3_toQOg7Zyk6KgBdCd", + "notes": "15NAT3bCLLCnl6Lrh9PJV8m3lF4oAyk1Q", + "exampapers_review": "1oTelfB-Y41HK_f7kfsQROWHFPp9G4mDN", + "books": "1MSgRKrDw_1j9xNRThYyPyVPilO9rAlmM", + "notes_review": "1DIu3F9SmMpWGJmPSwodgfe8NxSKrdLJn", + "tutorials": "1wzFBL_eYvKQzjX17dG88iJgJqfDuM5Ni", + "books_review": "1uxzkxyPGIch1BTXY22f7m_MsF70h5mf-", + "id": "1DhEmPs4f2lNd0h1Gmoztavg2ZFKAvMo8" + }, + "BTN-103": { + "exampapers": "1klWL2l3oQQNgwklfcAARskOe2l1UkJTQ", + "tutorials_review": "1HqbrCOuETm99mJtv37FW7zvyhkPxC_aw", + "notes": "1FKHnt806ZyIDjn0taVP5xVMutTR_kSHw", + "exampapers_review": "15Kk2jfdAEOA7S05PMZxYfIGcOs7PAXx0", + "books": "1u6TtcoZEQuM5fvzEBvhUDOZsOnEC9viA", + "notes_review": "11GWVrbQrIkXfSogCq54Kuj3QPZ2JtwAu", + "tutorials": "12okULRwyfOGe5KUo6c-xiH2SWijsVRG_", + "books_review": "1pIv58p1ldmtyPh2PhoLhkfhyDkdrmki1", + "id": "1RwU9zfU_LbMFtbl9o25CGLaGbu6e7TzT" + }, + "BTN-516": { + "exampapers": "1ftUfx9UBdOCgNTqaFwvpGqjFL9bWxb3H", + "tutorials_review": "1cn4nclGNDhqVvQenCccU_tyYkeASeP__", + "notes": "1FRrIOYEY374gZ8QuEhBKNDtk8p8xngf2", + "exampapers_review": "1qX4WCTTLpbX6we7tMprt90qaY5itwSgH", + "books": "1xrFNW1hZJ0LhbDyMWphK5GgsuRM5miqU", + "notes_review": "1i7QMDQGaVjBSLOY8JkTtgNW0brW8lNuA", + "tutorials": "1V0AhyrVjKFr6Kd4NrmPTkYx8TsBn7hBY", + "books_review": "156cB8eh6VsDngGV3bKQLWHJxdbh6X3HF", + "id": "1lyKojhSY-vf2egFST4LSHywnA9Nv_tVC" + }, + "BTN-514": { + "exampapers": "1504R5sifRnf3notjQ_WwojgXOzVv953X", + "tutorials_review": "1ATSRioQrUuJsx2h0VHT-8ZPquNXdd98b", + "notes": "17RLczt6nKhpIV9GqPSeNnmVSOB8QDxzM", + "exampapers_review": "1nnTsX1f6V5D0dnBj_Gpth-xyKni-umO1", + "books": "1QFTPrQgHNTNtP4feml_MFmR9Ij9qTyl0", + "notes_review": "1PdP45D-AYVQWcnSGQuW7jWCxMnLDXFTG", + "tutorials": "1FPjoTy-HhX7B1kgO39G4Y-U4m3YzLXMr", + "books_review": "1gPiYMe1YKjQNYh5zvV5bdoMnC7MoTRLK", + "id": "1f8BQCubJCjMALapaaNe3y7jeYBWKckip" + }, + "BTN-515": { + "exampapers": "1u6CD-LvSAm80Ji89fDNiAmViWirgkXUv", + "tutorials_review": "1QOUe2_zDG0sNDHnItHqRBdnp75Q_cr-5", + "notes": "15HB6R9DTMGNbH98tCTIJqQlPzZovdB5A", + "exampapers_review": "1vZauW5UXNMOoYLrQ-_km66k3B_QeFDMI", + "books": "1vixvWDYtIRL-SNgTfnWuTlL6T-tt23f9", + "notes_review": "1kTZcRYCybRV_prCsKsfXd5eDlTl2ZXH9", + "tutorials": "1BCqKjBIRwUgv0I9K7jcflrpzvq9EBBBa", + "books_review": "1tIXEOH9EM1oGWVFMGWTauQpvR70otBqI", + "id": "1s33ydYY-rjpauT6YG5a7bNxo9bsOZ2PV" + }, + "BTN-345": { + "exampapers": "1hm4dqS00q8lQYoCjvN4kqCEMJkfJ1ZKe", + "tutorials_review": "1rcsR_sRRlvYV_A1yP7gIF0IeMpkdvk0M", + "notes": "1GQlmRAS6aEwy4jv6HE1Rg6wQ4u6o6JfZ", + "exampapers_review": "1Qt_oks6gDDzuCcUYhur3weebXHjJlr3m", + "books": "17KfTEdBth4F9CaiVim1in1gl_hmhksFG", + "notes_review": "1Bt0ZYUsa996Pufu4UDkh6vLYDjgsD4iO", + "tutorials": "1A6r9A-rC4Voj16GwM_vKyPClJYCAxUdA", + "books_review": "1lApSNSOEWd3yHvs80ccwWHF8hjmSfWmG", + "id": "1hwNn6VaZbKsAAAyO7pMpWNPyivyupUr7" + }, + "BTN-342": { + "exampapers": "1zjhElhfm0SZV03B_ntF68vwBcRCDZ4k5", + "tutorials_review": "1dyxVg-5eKMiOVxfpITEp72tddCtDdTXs", + "notes": "1_zCvnpbkkINMvUkEmgVqd0Con4prTt8a", + "exampapers_review": "1PatM3woHnehHkIrM3v23-a4F9-SFrs5s", + "books": "1Vo6z6GgTo8q6ihiqK1FnCt3fx5AHST8c", + "notes_review": "1uAHFmlUTLQfYq4NBk9lOW7gtQZnFkon1", + "tutorials": "1dnM4drhdefDFgiOmgZxbsk16E65fZ48j", + "books_review": "1iz18exvWTdl_XDyE5nJ8AtojhDrfH_kF", + "id": "1LIJPiXtjl5WAd_dnJAeBawX-E4eOpzVk" + }, + "BTN-303": { + "exampapers": "1lOGV5I29X66PPcCSFGJo12x35lqmhaVE", + "tutorials_review": "1a_Du3SimaJh7x1lKGPKa0brzMYwPb18Q", + "notes": "1cXCNb0vlU-4dqTv0LQUSA0dMyDXtIJAk", + "exampapers_review": "1LxIOcwV7SXdaA58EPKJPES1wPdPcYNcA", + "books": "1b_4uqGzw09fRkmbGQttXTtuwABsVBYI5", + "notes_review": "173QEtNWf489xtQUpAwoxLFt1rThKBOE3", + "tutorials": "1Ko_CN8dlVSeA8yMClmtMRKrDBE0-XNDd", + "books_review": "1DX3ETiaVt20y5nhZ4BZX-ir_l-v-KzPU", + "id": "1-g6y5FuZWfSTVJ856N7EZaCFawz5yNLt" + }, + "BTN-302": { + "exampapers": "1jS9KL6yLtSHGVl90CDgXJ2841TkObTbq", + "tutorials_review": "1CBpTZhV8fjSLuLYbuNR89LFHxveRa_9N", + "notes": "1YcNlZQg9qZUG0ullQNjkB_BTKKi8oqiR", + "exampapers_review": "1Swdv4-Shhyxq0EcJgfEjpvo76S1_75Y3", + "books": "17PdLYFEuLDomzwuKT2muUD61Fj5vyn1T", + "notes_review": "1XQMCbOV4FVh-dkBj1S_D2B-xDADyMGhh", + "tutorials": "1WVMfXVwO7hcpZKNC32RLarFjWRwUurDt", + "books_review": "16P1UVZ54d-Das37HOu8f3yfaDSqTcK2U", + "id": "1If6f61IgjJugvYMp-HzC_Vy4LcvteBDV" + }, + "BTN-301": { + "exampapers": "1tIcJXksNlRAnRnzQAKm0ROmNwD_uerxm", + "tutorials_review": "1ce7ihFDY0fAADgBFsp56yqG2fXvpPT_6", + "notes": "1tIYO_G1k2kwBgWjg-jfs-KPYCKQZY1zD", + "exampapers_review": "1L5EAQqrw6Cb7hs3_SF_vobrK-Cq6-dIm", + "books": "19ZmcMXqvOEEe3wM4F04tMRHIeVNWQIYa", + "notes_review": "1j-6QLWqXI9F0Hd3hLRiMwmg8EDPjXcpt", + "tutorials": "1KiCzNkaAMfbBYBeADl3aOO_NjVaPP8Rg", + "books_review": "1J40tQU7e2lVJL8ps8UujQxzKz2mG8de8", + "id": "1fFG_WexkpbbFzLqNyyDgRuGkZCgJ2xMF" + }, + "BTN-612": { + "exampapers": "1W0_f7jVh3HVMd6CEcvb6eZTHSAHfywiY", + "tutorials_review": "1yeU7DZpQ-rqvXTIK1ICo7Wcla-5GHwTT", + "notes": "10ZA3ot2tA0_ilaLmVjxa1aklQnnNyMiA", + "exampapers_review": "1xmVWoIAV_r-g_pPzW9rv7mD5IdbIFhoI", + "books": "1QBZFCMF5UOIocXAm93jJokTEJEtM0IJ2", + "notes_review": "1hQ_n070kpc-HNUQseTH3CQsUrkyZtipa", + "tutorials": "14Xf6ie5rR-FwHWXPpLy6Iw7Ut8wrNSAR", + "books_review": "1ISlrVAVmXjy85N8gK35qYQR6too-6KYo", + "id": "18dlGuu9Z52TDE0cAQsUUa9w5T0IU1wiR" + }, + "BTN-445": { + "exampapers": "1AHWXN18nFn_m2z8wzderDrSvnOchWGaL", + "tutorials_review": "1GAVJ2VIithXXBBfmrxMF3WCoSmzSF_kJ", + "notes": "1qeyHebMCfpc9Tt7Wdmp22gCRsB_y6dCh", + "exampapers_review": "1o2q11cssFSPHzhYSatkm4tcr2O9jua1C", + "books": "1TTHQaATCSglJ99iTLTh5YJ1QBS4Up5-Y", + "notes_review": "19c6D3UpC_eRSoC5dmEd5RJ7NHUIUMIi1", + "tutorials": "1wtVgPS0EjWkEi741mam30pvrJBKVH1ci", + "books_review": "1aIWCIeUW1H5RxfTF6yrhbz4FRaMf32yg", + "id": "1LpZuVQNl5GvZkrShwztz7GdoHSMseTaD" + }, + "BTN-305": { + "exampapers": "11G8ikff8-ZearDngo34gR8_4dCXATH-I", + "tutorials_review": "1pdQk7QX1hDgH5L9fN2qTuk6-uZrzKYdQ", + "notes": "1JDZQyzstgmU6JTJTJg86Z1c-piB64_fA", + "exampapers_review": "1J5ZTmm7Ei1zrUzZzx4faWxplFKicxmrC", + "books": "1JtFGjfoV60yBOe-3hXldEXUUMdPFgoNW", + "notes_review": "1Nc8kftee-sMn9eG0g-Za35mHzVR1QuwC", + "tutorials": "1KJ6dd036YLUEhMRQuaWjH1NAZhcY3NN6", + "books_review": "1kXGZxOYpF9S2uMnJ3H7oaCTq-ZUSsPrs", + "id": "1Ds0x-qTAtHkwNJ9GHwhlkSNF0XP0Zrva" + }, + "BTN-447": { + "exampapers": "1I6GhMX7VDp8t9aaIeX-_Y6OC-P5MGmv_", + "tutorials_review": "1rQPPX-moabcb4ju72pZeBASEeFJH0Sfj", + "notes": "1P3BBotqi_G_laZkA7fa0kNdHWAFMOo5V", + "exampapers_review": "1SReYrhEN8e8jnLoR_1J9rsG_VZvDW_vA", + "books": "1SdjPEv91B63p2jy0tRUnc-3Bv13Fpe-b", + "notes_review": "1GH29iwvqQf0PNVcj_PHQPAheiXNvxQMB", + "tutorials": "1FIUUvL-KUBUXgOMXVkDq4oZSwzkWkiQ_", + "books_review": "1U3ahYyvOy50pQLWK1L4wORrAD_RyomfP", + "id": "1KQMSmaVA96kknVSYG-ICEUJPawj6autp" + }, + "BTN-655": { + "exampapers": "1E1F3-ilpILgV_nqxNY7o2yYpmKRbcv5G", + "tutorials_review": "1Tbuypj6BhrrmIKV9epHYnL6ouTQFFDQN", + "notes": "18hdj0DDDUbZjkDRwPv_hvJvgMeD-fdvg", + "exampapers_review": "1joFOZd2m0IODCA23qPsdA0HMPse3z3Zf", + "books": "1xPBrE-iKd2LC2Kq9bvOncBhbqRMbPzhO", + "notes_review": "1POWiWa8880z3h56PmslQFPG7aDTt4SGx", + "tutorials": "1t3ZksDZ83El8iHnslsT9KBF04wWwBcua", + "books_review": "1uaZkNE5AruyW9GqoytiYxdzCqGIjPaQZ", + "id": "1VfrM1_fah6yWsgUgSzwiSURH7AKv_cBW" + }, + "BTN-531": { + "exampapers": "1YUxXY4d91Qk-TRd53ePuFpvM9gqpTruQ", + "tutorials_review": "1QiFIuUgzv-NhnTOzPZU2kIwplvuQtJYR", + "notes": "1SiA3S4ZxlWk21nQklMSl7cdL9PWUv8Xu", + "exampapers_review": "1QTtdTCLwH6VcbwHmtUUwL0v1U1-r7Sv5", + "books": "1PYr8wcmUATvxli6PAIabCo1jhzBodZhf", + "notes_review": "1CaxoC5sG-TFuXL2qJDmmyrGIAC97JXle", + "tutorials": "1lHLQn4k6ItS2TnItfgPPoI6Amkcl1fZ5", + "books_review": "14AyNeQdRaZ_Ao4LcX4rMLcM7r8wwXX0H", + "id": "1tAzTAMP361fj_RX-DQnW5yyRLzfiLv1r" + }, + "BTN-632": { + "exampapers": "1-kjbP9NpQrOwyotOrlBIdvRF8iOQXVor", + "tutorials_review": "1cgPep94IcxTD_spSeaslf1SDCqciODTW", + "notes": "13v-08l6BSqQGSqJOiEurBx5qSYwOZrK5", + "exampapers_review": "1HhFn5YVQ7imqggFY90vaK-aHlE5YnQVy", + "books": "1tGrteUgMDazO0l1cWSI6uY4SJ0bYnmTA", + "notes_review": "1HQC_c4Q0klzO102XyDRRnprxhMgJQJex", + "tutorials": "1xngBRQhOHxqDSrhV5FFxHlL73O_SsL9q", + "books_review": "12_di2hY16HlYfX9MixGClrvwxlvRUuN5", + "id": "1s13uHAShgiAit4ytdVRto1iRILWrEpxH" + }, + "BTN-391": { + "exampapers": "1Lnuh6--NbxA0bgAxutJi7IP9195NPJw-", + "tutorials_review": "198Kkjy_QIHlTZ3D4hB9WPrdX9tSLO_RW", + "notes": "1Qk2H6EX8RYS__RNdTwTzgyXaqqWeAK84", + "exampapers_review": "1L8Mv06X3hu5H9azJ7vcB0dhf6rTon-x2", + "books": "1u6sdy6AE3apYx-CPDpcWtZTIN_OuV8uo", + "notes_review": "1AvhRK7PUU8ht857z0MsyirSKsxLC_ObR", + "tutorials": "1RCqJpukVsBMg0HgCmbDDDVLtRKB2F95S", + "books_review": "1ofpGxF8xUCl6n_j-zqQWiCEMS_ThGVNf", + "id": "1zsmldw6kQjz9uKV66A5NePzCEnHPM8Ui" + }, + "BTN-611": { + "exampapers": "1zb7E7biKwMknnCC7CQyodM2nCWdKH0zq", + "tutorials_review": "1QlQR4sW9ZOsaJkppbRDI3Ld8ifUse0cL", + "notes": "1i_Vp-Fimk2sD5y3X6efOep6XM4vB8q70", + "exampapers_review": "1rGvS7khvCTnrZh9Ka9XBPP1S84ik_0lK", + "books": "1m2UolV1wsKd5fZ1RwyXnPcSoTOf3gghY", + "notes_review": "1wvfmJhzWvJDg5ucdbh7-uQsmmrY93dpw", + "tutorials": "1TJsg2ONWCrmASupIdKdf_r3T9lVwr4Gl", + "books_review": "1mhbWzExhzG7g6FqH_u0vzAIAWoDfHIti", + "id": "1rGms34HFO7E0NIH7vfovjGVxNlcJBORg" + }, + "BTN-613": { + "exampapers": "1L00Ps-kIW0r3bNI-QHw5IPMCJWx8uCnm", + "tutorials_review": "1mZ_HchksUNbtI7vVUGtpFGVBc_68Dhzz", + "notes": "1dGWHrGYanL0X3QmlJwvNOomLOswJHpeq", + "exampapers_review": "1f0-_WcahX44QUbVL4_habqLeOdqlNbqx", + "books": "1uG3SVfoECKCujsBNH6ORJTUL_3NdqVHP", + "notes_review": "1KCKsvdLuAqEYn2BAYswHO9xqa3m3liCA", + "tutorials": "1dWMgcrp3AM-lIoEYUudJBo29kjzUe9IB", + "books_review": "1624Gaq9mUSXIeAXOHCxjjzKSU_fNQZuo", + "id": "1grJi9cnKap1uZY1ij6Diu3ifhUxKYoAc" + }, + "BTN-292": { + "exampapers": "1mXbP2IWc2Q4KB9BGqbAI3ThYKZ1c6e-S", + "tutorials_review": "1PsOmGSsaoYtxtkDljmUBdCy0VxpHjYiv", + "notes": "15vkR8-IeXav55c7RrVT2oK3KNmGmifIE", + "exampapers_review": "1DqIZxhyIHfIrRTX4ptZQ3kpinVf5itsU", + "books": "1yCphkO2_dihMMor2nEnpr6Njo0nnBzbW", + "notes_review": "1Mv9onssKJsQiu3Tk0HFMnKzQiu7U_BIp", + "tutorials": "1Ml38DGc1jpz1lGk56nyYkoTzUcbFgtuQ", + "books_review": "1sOjgDmKjK6_4SZL-i9HMyhnNShqyIwFn", + "id": "1Mtqy_y6FpyuLGk9ALZ0vChgHbMF6wWDN" + }, + "BTN-701A": { + "exampapers": "1zuAO_j9wQrVG3wUA41RVGbI9dXa2eqzW", + "tutorials_review": "1CFLmvKgHLKq65d6EkmCecCjAfqkReDow", + "notes": "1QBLm128mSCunjCoOSO2z7CYCDEAVSACI", + "exampapers_review": "1kqq7s1BMukjZ192RkxYBrIUB6NAIf0s0", + "books": "12RiRWR3LKUV7TlAQE_Ba1YkZwiROZj1T", + "notes_review": "1Z-Fo8u7NWMATFVCGDkMRoFx8oozEOYd0", + "tutorials": "1GN43vQdQyl7j04HUIBBfumpTNe7m8Sed", + "books_review": "1QBvSvePXR-1BqlREq7jbcTAyRzKfb5rV", + "id": "1paQmXfBL0f3nW0h6eIn-TfqXi2pmpWUY" + }, + "BTN-499": { + "exampapers": "1-JV3w5fBeYwbCCNH2lnmLkl2MCGMemmt", + "tutorials_review": "1DO_MwjndY76SYxNlfdd_k_dEi6E_Wza1", + "notes": "12rLKL__nSvuIhV_DxW0e9S3dY04uw2ZV", + "exampapers_review": "1udGjkiZZJy9nIljtJCiQ_J1-zYywcTNz", + "books": "1SvssP_z2LdievHt0VH6OTNZxs0GJ9-p6", + "notes_review": "1oCWTjuNXGVLw-RXZtWsvO8nLR7RvLuYJ", + "tutorials": "1IgUQNLI2GggIKv2atMCP6K15MfVXqEzg", + "books_review": "1SaL_Y3OuC4oU6ZmWcFTcyCnxo1Ek1T11", + "id": "12_kY51Ic2xz-sK5uVcTibwl3v4ELSzn6" + }, + "BTN-524": { + "exampapers": "12IBeoD4dhc5_mJI0NQliGAu4cDdq3yhy", + "tutorials_review": "1j_-C-0nHyUAnko0evaHd_89ExTZ5S-kb", + "notes": "18Ho48DyxKTdCojrBgt3jlBNAJ05QcRPo", + "exampapers_review": "15kwzR17-IRXNd62-aY9AB2v85ew0P7Dq", + "books": "1UgVWYEgzSpU6bzIc_kPZvsX4oYK-530i", + "notes_review": "1m7013LTiRkNHH9KlpiKp6SdiKxnf9WL9", + "tutorials": "1AotYpxpfu-4dindL0H27pbkpoi75UCfk", + "books_review": "1wgfpPbGGPDqSbz69l_o6OfIvgx0XFpGN", + "id": "1wujjUA_yTHGXWAY_gnK_YpdhoVoRdkOY" + }, + "BTN-658": { + "exampapers": "1kiO-P3_s2ypv5oqoQhgS_ahnsu7ZGuM_", + "tutorials_review": "1Ge3nvsI0XoCvioKuSmm7qjFVlw1BXUYJ", + "notes": "1u3gid-Dwu_bgPonqD2ga6ky1kytRfKko", + "exampapers_review": "14Ymh0qvvuR5l0Ul-KQNPqbcOB3xaBhjK", + "books": "1oMmnH191rzlZrAQ_-fLsvoNShqSbj12L", + "notes_review": "1f-2-CrK9DL8HsHX5pL_6OYhX52EHwGtz", + "tutorials": "1QYQQjbchpM9g1jRlPFWRWzafAEa_egtY", + "books_review": "1IM-BXSO4qtFKY28PQCSMcjSwMSLLcXA8", + "id": "14oy5jZI2cFv5H86t8_FgmwOkwU_kngd5" + }, + "BTN-614": { + "exampapers": "1dY8mrfhoqdhaI-n-K949grscPRNdzGVG", + "tutorials_review": "1p9ltYCTYmLvp6NSiULOSh4J01TQEO0Ir", + "notes": "1pfmUj-JmSDTePElKNkuRe96wP4Dhh3CO", + "exampapers_review": "1KsQM6oM5hBEa0UAkrLD295baYpnBZWc1", + "books": "1a0k-0GZW2pMY9sQH5OcIQTgGFIA0x6LZ", + "notes_review": "1fHZChSv5j3PtLTlnMinkK6y93BLdOPrV", + "tutorials": "1cHGgqDYJs1L8F3IBiRtY0hMiXb7ZIkaB", + "books_review": "1PO4U0YzjXov-UXNbYwDs-5VhV9wknmZx", + "id": "1MdPU-ZsyIfVhumxFbhP2TEiDHmJLZ9E_" + }, + "BTN-512": { + "exampapers": "12vMxN1E7-3WVYS860NFYHtbjShfzje1Z", + "tutorials_review": "1BQCsZMXApqnNB-lPNuj7al8xAMiP0FrR", + "notes": "1Tuy245Qiqeurf42SJCqrXjnF-L4j-WBu", + "exampapers_review": "1gUxJWXqmbawU1YQXkexB9yb1qPGfoNqS", + "books": "1AMLJemp6gkAx274smNEiLcIzx8z7u9NU", + "notes_review": "1LbbE6eGTzDXWhrYOeI4_KyGOsSAHo6KX", + "tutorials": "1movo7wq_5RXD-Kjn4d5rIa-0WN3arVzD", + "books_review": "1pKV8miUi56QuwyLI7FyqRlF7lnFwjlYR", + "id": "1fBfl7MuOnuKXSpJwjGjWf-kG-uLEIPzU" + }, + "BTN-635": { + "exampapers": "1x6jcXqlvSfkBoEGq0n5SiKBTjzVCRlcp", + "tutorials_review": "1auvRYQxNHez2XE4SDp5GqquOF_CVkhHE", + "notes": "1l7tWMiIDsCDOoGX20ZJn-ip_ZATEwJP5", + "exampapers_review": "1iYZtuntr3WaKhUipJSdzRb-cKfa3W9fs", + "books": "1F541J_ZbCzmEjK8UACaCmNWrwnZlsa6B", + "notes_review": "1rK6mKr97pYy3vmA1j_CKvib9nqTky7_B", + "tutorials": "1YFkISa3GgvE1-EACe9lgYLOgbIBNSM6E", + "books_review": "1J2qMfsoSRLok90gonAKe7ocuCA7qkXcI", + "id": "18PlCNHrRQSR-Mgw3PlU2FqZACoAGrTXn" + }, + "BTN-629": { + "exampapers": "1W98ScG3mNYajezoAd1lnenkK5yTrfV_5", + "tutorials_review": "1BM-_K1A7sWMdEU8mwuVmCNJweiPWppdg", + "notes": "10NRLlYpnNxtUDTfHTYUYCMjIOgd8S-IT", + "exampapers_review": "1ePbq18RcUIaKouMgdO0jqKCzrH5IbosE", + "books": "1r31fFSrtXVZhCx2r3sUV3XojC3_K2ITh", + "notes_review": "1kmyZ-FB-5MtWWrQRyTe6FUYaw2ILKCPi", + "tutorials": "1MbvZIaovUFZ45sjJjaBHnvrwP_R_kii6", + "books_review": "1L5vwGcQcokS4hOQzfYEdh6G3DucnqpXW", + "id": "1R5KP1yyOgN1PDmWCDqcLttQKBZX5vRQy" + }, + "BTN-625": { + "exampapers": "1w_vS2WmUdWtu1L93Xn4ywTe9L2qJssS3", + "tutorials_review": "1iAQ6kpEAJFFSXp5meA5AnnXjnOr5z1-y", + "notes": "11--3ceYYd48mv57znsd09UiWfi4rGGo2", + "exampapers_review": "1iZVELGDX1TJLhAQU-KR6UK38DhLLq1Rv", + "books": "1YmoPes8jPv8clozBiPwpgXfFUXn5niYk", + "notes_review": "1wTMh-1zOuXl74uO5I_pIxW5aASENTLzR", + "tutorials": "1Koj4BTEAR9ZT3AGFuGwWy-1cg4cwB_wH", + "books_review": "1010MFhfykN9paWn7esmBqQ97IZtXvYTU", + "id": "1rxlY_ALGRkEg_bMzzXdNluAZW5_yZk5V" + }, + "BTN-700": { + "exampapers": "1tQrXFVLlfhH28Eyuz1DJBgV1-KVxVWkz", + "tutorials_review": "1KOHCTYwpJGqCqFHIWXKaMseiWU3w1I-x", + "notes": "1PvUlCTMC8di6B-XvUT2v2FXGVDRXJjdi", + "exampapers_review": "1JGA5CLEbpWDtxcDS90rL9xwoXZwsMKzO", + "books": "1I6k5zKFwZxOeH2fyFhgBHBcwTqr4WlyU", + "notes_review": "1iqDWLPx21uhCg20fFXZT74qumfD8rHyE", + "tutorials": "193gboLVwE84TRPZGRxa5E6wzMtdElwdn", + "books_review": "13RFw_kb_jUhZ61qu3484yjjgNf9m3MMS", + "id": "1m9wiDlb6O1VYMRRlkWr5TzaV82bPSvN-" + }, + "BTN-621": { + "exampapers": "1c1QI0DcpKac6VFVrTatZQa9nhAuXGJxS", + "tutorials_review": "1J7yyIYaDRWzgRSAEk4qSAjP-_tuIKZsk", + "notes": "1odW6523MinWDXY_-5CYLUdLlREaynlaU", + "exampapers_review": "1mCX0QW9ARxaEn2w0wyyGomR3ptGbG5uU", + "books": "1Zgdk06X8sayszWThXkdCtpO-1zNFRHG-", + "notes_review": "1INBAd7WiEuAshHU0ZKFhOkuRPNArGfEx", + "tutorials": "1VinVk6T2tMmgn63hkF-uyZSbVqYdT1O1", + "books_review": "1lT1DDZZvTC5j-aZfcPnf-fNGdhkhG0y2", + "id": "1GREX0tSmLZEejxCAYNaNmV46uEPx5IRe" + }, + "BTN-455": { + "exampapers": "1KfJv-vvS5luGpQuF5oAixyOZCBIWN8gA", + "tutorials_review": "1-QfjfWVAjW34rMSR8Bztadtl41aFONC4", + "notes": "1wvsb5u96EIo_pp1WwBFYRaka5uV4Q_ba", + "exampapers_review": "1W9rfytq4E7W3H_ZOJrmFR-A6ZEa26fBQ", + "books": "1f3pPsUitbJtYlKYY4c-hfGqC7LyduBDJ", + "notes_review": "1mSH1eMekwAALtMuHV2f8WmBYu9tv7onu", + "tutorials": "1j-xWyIaQJcFfRiFLpLRiG2BUpP-bCqep", + "books_review": "1OVhTRplmsyEnM-bCF7pYOICPQngztZ8d", + "id": "1yY0JttvRpZXsZitrLuw0NjBTSE-4hSP8" + }, + "BTN-657": { + "exampapers": "1hOEB2V3QlpCrv35qQj7TIokdxXEN6Xxp", + "tutorials_review": "1zgMj2pke23HuvcKWBK7a3VFjUxBds0Rg", + "notes": "1WKz6KkpNFsB_24mNhMISjC8-o9z0IgRz", + "exampapers_review": "1K9jneLwADC819N099BgyPVgdGSWxtMf2", + "books": "1xLz0Xf_0iInTGVVoLJsc01rn7sjzZmo2", + "notes_review": "1cmXkQRt0KyJ1fSYYXayLC-_S25k_mATd", + "tutorials": "1ZfNsb2NmhSuPTmHO9-qy7Hp9O6LXj8al", + "books_review": "1cMwJEV_S-vz4L63v8-O5mHaeYvRSMYML", + "id": "1-06Hzqfhc879Pdiy3gxKUDqLhtgJpEYQ" + } + }, + "MAD": { + "MAN-291": { + "exampapers": "1j_yfL309xhnjtLGV0GmaQAdIqTNrEhNl", + "tutorials_review": "1FNi32YhHMOhh6sWVZ2hrgJzR0rzxw2pn", + "notes": "1I0Nm2taFaihcjQ0KCvC9VLoNCd4pvgIG", + "exampapers_review": "1hAsp4eO6ld46HzAp7d1wt6EGOYPj9reT", + "books": "1moUzoQWJ-gI2O7DsFEt93BsEYin8s6Fe", + "notes_review": "1ovCcmR-9A5SDvBjgm3_8ytAqI7O9zb1V", + "tutorials": "1q--b8FGgbtnnaG20lODAn-nDaheCAWxP", + "books_review": "1iLEYhLqjavqKm1Mp-O4f--NJD27Wr1rv", + "id": "17qSNQrVEtbKj6Cd_rnc8BgZ62hqsBDQa" + }, + "MAN-901": { + "exampapers": "1Q3K1cqL2a3lhWbb1vasUsRe-_-suY0gM", + "tutorials_review": "1rOvrQql8DG0cCG8faH2nVTpBAPRCfH9y", + "notes": "1JjDCXfpuzw8lMRIbk7xXwb83iA3MPvo4", + "exampapers_review": "1Og0cFFqtot6ra2JSa2XTsIntVxm7bP5t", + "books": "1K3bDg8A8eVtwEtcXTGYD8K91P4JAvqz4", + "notes_review": "18JAGVFbp6WMvl6GiiDF246x8z0SlTHSb", + "tutorials": "1V8RHuZDHi2UIjSECzdCa-N7heN2a7fkI", + "books_review": "18o-jA_ng9XYAqGsMTeXOo79aw9yTPxsa", + "id": "1wAEtjRjENTHfXScRfuzlvoK3LqQFaGAL" + }, + "MAN-391": { + "exampapers": "1Tzx0JP5VOrRkrnn6zTn_s2_w5bw6kk11", + "tutorials_review": "1azQP7NHdb_BW4UKdDhMVGTQ_WKhN8Nxe", + "notes": "1OnQj-vxcRNzQGDBA5fQpRyAH1at5ZwaM", + "exampapers_review": "1MZYhVODjwUpRwpJVBm7BqytL_AImLbAA", + "books": "14bE4O3TxL192Z5PhS-lC0V-1IbzST8jJ", + "notes_review": "1VdTTufdrlPsB98DTQaiMGErh9qcvFJ8K", + "tutorials": "1a_CHQqVqWJEAeNcwUHiMeKTlFuqxdWLe", + "books_review": "1ZXiWEMIPD8IlYLey0dzLDDZst9PHN1pH", + "id": "1bjqIHIPxwp5-DVBQbSWMXvaVW_cYYwJf" + }, + "MAN-902": { + "exampapers": "18hQ8EvdQDjQJ-tSjQ6y64mwu-MtckT0p", + "tutorials_review": "1i5iVKR7a3a4PDZhHmgu_xEEybSnqSvCi", + "notes": "1htvbBjnrsoI0CGoTvin_of463oHkrFMq", + "exampapers_review": "1V39kpyIB_l_V_-FO9SrSJO1OlGvjWLTb", + "books": "1jTOxMRoxjQdywbSlCFUPg9SVNwvQUgbz", + "notes_review": "1MFSwaz9LzMk5kwp5moVr086F-LI4TJZJ", + "tutorials": "1QksbPJLTP4HEQPaKX8UI7BeOs96t36Ym", + "books_review": "1Ru4Z-rv5ygk_j0cIjU0JNiV4ZTAQAo5s", + "id": "1cW_LIvUrwsR0XeeEZqbUqjffSOAPCU8n" + }, + "MAN-517": { + "exampapers": "1GFsEma1U_HW3Gk2VbilUMUM7UrGVlaJH", + "tutorials_review": "1itjnPsa05WeZ152Ta8d_xleX-ZXfCBNf", + "notes": "18PD2MxvVjMVSDCjM9sw2WIcpTUI-TW1n", + "exampapers_review": "1JOavg0jLqdvw4AIBVP1bl7YF8NfbgCVK", + "books": "1nPjY1h-vRkgLCIyL8sl_SF_mF0OMyvD6", + "notes_review": "1ry7gbd2ecTaOXd_YzuAk7Tx3VCChX3-4", + "tutorials": "1VHxN4f4WyaK7QQdRPwxntRsYRr7IXfvZ", + "books_review": "11NLLN47cwK2ANk_2DuFWKEiFwne_76Js", + "id": "1V2_oRXq9zQKWC306aMe77LNaPCoUG4wy" + }, + "MAN-515": { + "exampapers": "1DBrWPOODj85GMQL5WhxfpFDUB-2T-Pty", + "tutorials_review": "151Spd_DyDRZ-_T4Gss-G_uXMHsAlxn07", + "notes": "1pwlWp4_iOvRNbCpxXZ_HyRblWr_c0EfH", + "exampapers_review": "1XDjJcJbiuY0q6DMmf9WOUk6kyGWi0_8Q", + "books": "1jjDUfkQxtD74I0ecSNeQ9OOJPN77JMpv", + "notes_review": "1H67VhSIa3ZkRFyzinzATB1opwTXN9RS7", + "tutorials": "1B1vFEYOo07bEa_AxyztPKF2Y2IRq0PvC", + "books_review": "1RG06CpcxWS0xamrU54TWMzRwAB914YcZ", + "id": "1hSYzneq8XifvwnphZbRIo6oHOiB4LwVq" + }, + "MAN-699": { + "exampapers": "1RH-_FDbDOn6XyRypy7BpTvjD5rNhexR0", + "tutorials_review": "14f7zSyMPCDdIpVN48f876BnOCf1e-N-J", + "notes": "1o7polouX71wmg_fVoBAGUQmmPjkE6BvM", + "exampapers_review": "1yvzFodKOPNuooCDAlR6pgN4tn9Rxb3xM", + "books": "1jiNO7o7vkktwE4nVYhez9wk9muZSTu1J", + "notes_review": "1BULqh4YwrnGvPXVCg58FlNK1io0aETtW", + "tutorials": "1S4zs9Mk7QD__rWQKr61VeTvOF-hsopvc", + "books_review": "1Fp5D95qq_KrFbEcmph9layubWMmWGMZk", + "id": "1oj1CtzYPgt1cmQ-wssL0mhAxUoaXjJpm" + }, + "MAN-513": { + "exampapers": "1CPhALYxDFogyboNz9fArN7DBqVF-K4Xz", + "tutorials_review": "1mKhPjo46bQIHjz66hFZAYpzuP8kjJs25", + "notes": "1gs6EYrMsyDEqnaRbg5pJNaV0GIS_NenV", + "exampapers_review": "1VN7Qff7vssn50fiENv6JB9b-Hw4CONkL", + "books": "14zkBUJ3LbWwIyV2_0Lz1dcNXNCZI579B", + "notes_review": "1K2bam9oXLp7Pf2rawDecKxD-pRSOdlFp", + "tutorials": "1f4zqoHbhCADE4_wX78e-m4cHgEB5Sngn", + "books_review": "1YvsJwoO7oP_4ehGEUsxeNYZrXu0k2m_x", + "id": "1QWXnAFYf_RVfHz8mPd_9RLX9y8Fxvu8t" + }, + "MAN-510": { + "exampapers": "17S9KhU5tjlLK8huwRzu2o5_SO0lfTYfW", + "tutorials_review": "16bVa0msVptqedsl6EsD7HZ-zPlHtyO1r", + "notes": "1kRQyAAlP1sFDVynh_6zSfrai4xgBt1og", + "exampapers_review": "1x9MzLHTrHOeoQDoIAm3XDuXGh-E-vaWZ", + "books": "17mLfEVRKOD3-fI1jcJOQjqvJFZ8uhZN_", + "notes_review": "1071-1PQQ_rPynevWjGyXY2TKca-mp7gI", + "tutorials": "17n67bKM-HxgbdXf39OFPP6PBlrh7jC0T", + "books_review": "1NxESxEGWmKu8JTZR7nHlo2pwv4KAyE9w", + "id": "1ZwwPBJtsZ_v2Znu6JIBNUK2ggURc_yFK" + }, + "MAN-511": { + "exampapers": "1EWQooxbePRYIWEzByykHblIfiWkDmjpG", + "tutorials_review": "15pQydDIMh5wuWoDzZPgAdHBLs0CX7jtI", + "notes": "1QLEAKpdGFe_eRIHU1mNVbsq41gP14uIQ", + "exampapers_review": "1JCX9n_8yL4trcjekVkPXHCvd8cbS54hY", + "books": "1aO1dSjze_apigAy1BftZGOMC2t-8_le8", + "notes_review": "1DU4O6PGnmILA-srP_9n3JoqbvW4YX-YP", + "tutorials": "1EF_qJZXVlyafBM96Smxw7oVN8uSU8gzi", + "books_review": "115avDwC5nOH40HsZfqB-iJFGtIdwJIKY", + "id": "1J6IMfCH5xWdTuf2_PiC42cqxsEOobBrq" + }, + "id": "1mCQf4ZzU5Z6tvlNmA1t0Hd8Mu4h3aB3J", + "MAN-519": { + "exampapers": "1eIxXuQkCliPyCo3qbfe32hJe0Y8pcQfd", + "tutorials_review": "1d2ekxy0-W0ZuWs6vGr5y26ufKgD_BSuu", + "notes": "1Amw2IlTPM9Im8HU_mVCjrMYTobwMNrIx", + "exampapers_review": "1kBhUNcbEp27ubfRNgBXioHt-pPV0aO_j", + "books": "18vfProTTEYAD2Z5ttYKvYaYtFnvpDkZN", + "notes_review": "1CTpD-HSbZRA1s4EzViZM5BG3XnzWbbwm", + "tutorials": "1kLrjUypI8oXnXMMtaeLRFMyqEihP93r5", + "books_review": "1O40TD_bzI2QQ9NYT2ZKC7quuuFsVzVYi", + "id": "1HP0I9BEpTLzDhEyT5I_6xkfgFqj9BSpS" + }, + "MAN-615": { + "exampapers": "1X4EDtNbZOvPWyxd2XOdhUkdPfk7vYq_M", + "tutorials_review": "1hbEgzSQ6w4nT5RI4i0Vm5B83QUCcIrvg", + "notes": "1Y3IAxm5Sj-8qpV8DtTAERJk7pUSGXB-Z", + "exampapers_review": "19N9np5DdmSCNHzp2hi1laNWhH1RkWmRG", + "books": "1KLCsrYVTFOzd0OJTZem7ISXRYvwJmVlO", + "notes_review": "19b1HSQiD83aEgdxvGtCZ8GT_eQ3pL_bc", + "tutorials": "1vt9-Duecf-iscUDVaaDo4eyS1av-1OVc", + "books_review": "1-tUvMpH95-iziPvt0aiHeV0toY-1KoYD", + "id": "1OvgFYB8dMsHdPHNGNiJIaaCgIlouqifJ" + }, + "MAN-205": { + "exampapers": "1megMgkqkj5qsCcWZQhrQWbfbKd96Wkh7", + "tutorials_review": "1KnYRsbr0yEgLKmAKtXQAuc4UWEsGPBYD", + "notes": "1mB_dbdRDeACGf1ospqHPrGlH3DVQsJ_J", + "exampapers_review": "1qUZ8mjayA6pKy115JAQyPp8OkCw1trlf", + "books": "1dMClz-pPYDni4w9oLrJi_JKnoyZSFQ21", + "notes_review": "1-KgZ7-f8kLbpbOZZiuoyvdnD96Stb5kt", + "tutorials": "1KQrXjRJh-iGk7ceYzpVd7_IVRlgJ4f0s", + "books_review": "10NPZDjVDcz7L7czbwZWeQahsJcDeK7oa", + "id": "1weweKZY50OkvgY340-NsQNVajNdxia6p" + }, + "MAN-611": { + "exampapers": "1y-JcwbwkW5yLyXz0gnyzmjOwTBShBCgs", + "tutorials_review": "1eKmQSpYiIg8UiGBQxz5ArXhwpa6ZbKXP", + "notes": "1DLSxaJL1WhNHUsS2g34ryHkJxF2-vxPK", + "exampapers_review": "1QCKuF6H2xTw-iQPDvpIqiO-Zam4YpUGa", + "books": "1OgRhAHeQTzPGoFPbG1y0aXtwnCqaHIBp", + "notes_review": "1BLi4RPspYzCHVtwAD3IyJknWZsEGa4qm", + "tutorials": "1YtQpEcwxunfbpF2v48iS0R6psvyMJcn7", + "books_review": "11uO97Ty6gyVNPzrc6e-m2R34wP6wt1rN", + "id": "1X0_eC6cyZEJeXlxogSGwV0Mn9FPj4sNo" + }, + "MAN-203": { + "exampapers": "1FckXS_cvk6F9yZGiBBjijzTNM8J6ZY1m", + "tutorials_review": "10dc41o1y_AVSF8iX5nhlseFL1_mMqIKR", + "notes": "131kz5pl8pC30KRj6ua768Wh1rCK20YwT", + "exampapers_review": "1hhSIUKOt32vz4eZXZrscGd2OlEbrg4ON", + "books": "1iMsqqQUtkiDFMz3VdlEV690BkAicbr4m", + "notes_review": "1Lrj7Bvk9VUFArvBmaAJTBZ0XGyKUgzZq", + "tutorials": "1kLZbryFwMV-W4TrX-Et-fTaCkFNy0077", + "books_review": "1d_v8alaxSRNP-Zg1wZHhicv0UKhdRaV8", + "id": "1_6Fqu85-3UsoCIYjXwunGzw1PyJX8-jj" + }, + "MAN-613": { + "exampapers": "1pe0fXWmmUBPo95kxkWDPd72H_eFrfbtC", + "tutorials_review": "1XSWY4JkMIC4RxXC1rh9mDefFR5qt9XVT", + "notes": "1ie_66ZcJRW-g7I4zYwLK-KAGDLWNIK5i", + "exampapers_review": "1IQVwDqRSNgagcnWCCoPPnBZKjHNlaz1A", + "books": "1GRbxmWLJmIiNh1pxap_CBFxBhZ4RmhBr", + "notes_review": "1tw9yPAQVR4aOe914x1seACRdQuTpglZM", + "tutorials": "1n88w8gHkEJwuHmoDUH6d0PdVqACW3tsd", + "books_review": "1I-Zxtynh-0P-0a4camOAoTQ6Stp_udRz", + "id": "1L6xOLHgJQuUt6gPQUMk_6xZUW2lo7Mx-" + }, + "MAN-201": { + "exampapers": "1sVfKA2XpG1fXTgDQElHARzDG2Y-P3LNa", + "tutorials_review": "1JS3wUNhTKqygqbrmLiTMmNYfWsx8_ng1", + "notes": "1BuI-t6Pkvps50nsog7SFkKXJ379ePX9G", + "exampapers_review": "1UcEZT7gelaeyDsKR54Uh4bz4dbRFfAJo", + "books": "1LrDLsOlIfjSwOxgN6bM7N5NBKMgsNyPH", + "notes_review": "1G79KoSb6Jj8k06l6W453xAgEuAj6nthj", + "tutorials": "144BzgBMVM8yH8bRSrrEs-BIUcet2FnEr", + "books_review": "1uGgZ6nG6lq5w1DtdMhD_TGwICZExnAiw", + "id": "1gxDGr9RETcQetTwKrfZUhgUo2ao2q_IC" + }, + "MAN-104": { + "exampapers": "1Zckj0gs1pzOkTc0uJ0GhNP1RQmgX1ZFa", + "tutorials_review": "1e78izgoCTUKcV_EK6sGVUqp0uA9BE1J4", + "notes": "1iBWjI4WxlKfsWH4oENjxmdATY5m95zo6", + "exampapers_review": "1DvwYeNKVbpiqXCV5xwHMuhDe19IY0OU8", + "books": "1Lhu96ah1KvBzjLtqUvGfdecWRSSH9l2Q", + "notes_review": "1H0K4NMqq95gylpo0sNbKkgCtvUK5Sp-w", + "tutorials": "1ZiJIzCW8RNfPnJ0wlJjjMWVbYzgC5tna", + "books_review": "1FvE5Cx7jFBnwhhVccufffaZNz2mlujys", + "id": "1spL9rbfm0hGXPEUbguYOUkmcbJparj4L" + }, + "MAN-101": { + "exampapers": "1yXyzm1BZ8Dy0jt71JqtQSTLTzRzLudgN", + "tutorials_review": "1SnaZCPfzuKI7Oh0ZBMgitRoRjYzQPAnC", + "notes": "1_cANAsumkTq42RSQm8P1MhvhPAB93XQZ", + "exampapers_review": "1MeNvPIzk_VGUQbaxvgEXMw7xkDX39CAA", + "books": "1gEk7k3Aiymc5AIBexET4ubU9mnVC1Ve1", + "notes_review": "11z8NvsPo-_Dwx0K_4E6dsx5gI7wTOHD6", + "tutorials": "1zJA1LpqO1s4rjdG6SdJrzLRRxPHNfcEX", + "books_review": "1XB7I54Z9bdh8gPDPxNAkOnliO-T-wTgJ", + "id": "1CvHvXoKQUQNFqV8deYswzeIQEmsWoMTk" + }, + "MAN-103": { + "exampapers": "11f-4D-fvXbIwi9Bhi0nOOg0v_qUoI28b", + "tutorials_review": "1niTniyx0o4oVp7d_X9cWPmRGkEwsSOWL", + "notes": "1XjIUOjLKjNMoDn64Kg3Xpu0Ic4eA9Am_", + "exampapers_review": "1YuBdfzKKb0lIIiiWUZwIsmmk-FT4AvVG", + "books": "1vd1V3BAU7pk6GGh334cxiIXM81BosxL5", + "notes_review": "1LixSKu4TlMRMmXiSf_vr8DWkbzXxQa0k", + "tutorials": "1y9Mvb2-hDtlnyY7R-esUKSl8ZkTO8Lov", + "books_review": "14sr51prgSUcrniUrYlmo9cPm9B20bYnN", + "id": "1fh5Ifi04NXulWgi7qrXesElV0sTVPN9t" + }, + "MAN-651": { + "exampapers": "1HeWrcsQoLXXA2mUlWpe07fDMJzqZwWzb", + "tutorials_review": "17u_cyNO9QzP-zx9xoRhxXHoxZjkDibXZ", + "notes": "1Pnw2_wj8ZT8vOJlCMrsJmkmlKqdl8H16", + "exampapers_review": "1ZnCsaC3fRamCcdaC_3KzDuzmDHIk0B4T", + "books": "1vYkDLUyBnksBdvcuaD-Tvy-iH8YXf2vk", + "notes_review": "1S0GYLCyoetYSMRIWLVLGRxKkIbNg3MhK", + "tutorials": "1ZIEj1VnsgWLloztP8ereHE5eFu4d8XYl", + "books_review": "1GzgU-EUAwI5RMgGdHuE61rLsbG0lZh9u", + "id": "1jHYeH9PvR5QGX2GlIVC2U8I3dMWYeIoi" + }, + "MAN-654": { + "exampapers": "1w7k5cgKh-l_mFyS8tYjZLWJ4yitgBVbm", + "tutorials_review": "1yfh7_dN5FMNwfCzYp46bY37EWvcyffoQ", + "notes": "1f30m93-GlNVJmdGXWNhBOlTnfzrVSLVJ", + "exampapers_review": "13sKN2yve2sxNsi5CWD6BXRHFw6Tmsrfw", + "books": "1zT6ccTa-7FNJy7d9ayzyyjKsrCKpruD2", + "notes_review": "1FR5UtxsrbunWIrfijfYaQU3spmpWM8Zg", + "tutorials": "1oviqmjwLFgtM-O9zRqu2Up2QywGw79P0", + "books_review": "1AiY35yPUXu8GZ9CsRSRoTQulHXJXxehW", + "id": "1D2kwKn4WM-eS5PFvQO_72BIKVMtXPA5z" + }, + "MA-501E": { + "exampapers": "1lx_qYNtyT-cYQIi36nXF5lqHdbKMrjL8", + "tutorials_review": "1SZzMgG1Npz_s1EZCA5m5tt7LxHeJ1uTY", + "notes": "1rSPBlXt9LLCtJNhtHABJMc_IPv9dkv17", + "exampapers_review": "1daJP0PEE4YQSH9p2fTCjQ1n0ikgyJMZB", + "books": "1lBH-4EbFn8DI2EKdNbvaanf4KVWP5oGt", + "notes_review": "10OogWPR_ePKFj4-lAkPp9Vg19eT0gmnt", + "tutorials": "1ZvmO11pkqhRRki6_zABHtr8MCnqhArAE", + "books_review": "1LumglhAexfM9rzYUmStQdFiUyVhbxEZs", + "id": "1OmGw29IW8MN1gKfSzOiJ6W6HG6iqCd2-" + }, + "MAN-305": { + "exampapers": "1OY1LHZ6RaGqnzGIk0acQD2pbqBfqaOAo", + "tutorials_review": "1qqQvLPzCB_Q6rvSaH0SAZBC0O5UHDG0Q", + "notes": "1_GL1j-Miktq-7sxvNAaXfFw6r342rJJX", + "exampapers_review": "1rBIWLERt7i0UYwidkjiz4D389s6GuubQ", + "books": "1aKwR6ID51GzDRqRKG_3HLlvERaIkXiTF", + "notes_review": "14KK6DnhtWBZ23z_aJn8J4NcCsqPZGe8E", + "tutorials": "1EFxjxnF0E1P169-JduNPTcmoeYbIrZ66", + "books_review": "16FF6TbCMMmJa0BzepNnZk4tz5hY34J2Z", + "id": "1jju4zLe5AFGCitOCLYWAtVHWn1GoAg53" + }, + "MAN-322": { + "exampapers": "1t4YrIIGFiurDINAprNjshW4oDOe597rm", + "tutorials_review": "1oJgXUJIb-L6-r5nnfvwg1StKYm4MFmD0", + "notes": "1dVHv7cztc9hp-hzHIrZe_vAtHAszljq9", + "exampapers_review": "16Fw2I4TjkPmx0N4quOdOWy-TzNXNWVE-", + "books": "1zjzm2Jq3WCSxYroigXH4wS5cQGZafCZB", + "notes_review": "1DvcKaCBZ76E6CsDSYUOKiTgjx-ArJIGK", + "tutorials": "1JXi8rvnNN7lNGl9kE6OZ6BlKjq3jTAHt", + "books_review": "1xN4W8bnlBGjTtc184fh6wwwaISwuFE2k", + "id": "1ZxpKfJyVzBkFOnJUuQ7rcktw5WRHDvfv" + }, + "MAN-303": { + "exampapers": "1OhNyqMcdIuGbSSfML4CUNnc1vsXiXF67", + "tutorials_review": "1Vza7dpCM7FHhVi1vq-4oo853hYx5OtKa", + "notes": "16-71_zinnMh_zsP0O9B5XxYxGzjul6Hj", + "exampapers_review": "1nKUgPSlIfnha_IwDetqzx63NgkWozTC0", + "books": "1jWOEkpX3RPoCd9_vO7LBMASTvqqwONcl", + "notes_review": "1mzmpbLDbxAXB9r7xnpaW1sdVmWRf185t", + "tutorials": "11n1MTnTWCb53zWkigP3GbbyYxiW14rwP", + "books_review": "1nP1ZxTY3Irm6c8VtqokMyAJhax8z7YJp", + "id": "10NSkWQkGQtCPToh1kw30gJ3tvV7qghAK" + }, + "MAN-301": { + "exampapers": "1gncbR0biAuF9AiGPwRhYf7qHUFAUaFpt", + "tutorials_review": "1QWnlC8IP89RcM_FD9RtBFLQ2SPr7v4Ix", + "notes": "1D1FSF1K3SpLihPtQxXgnLm6WJlJscdWE", + "exampapers_review": "1kMPlyOOSpHHYVJjEbQeynWGgl6yjO0CX", + "books": "15iaMz-fpT4anovfGCCR9lceNFjMg9OrJ", + "notes_review": "1lA-szJ7GcdrKqKuOeaGper-_yokKWlFA", + "tutorials": "1acMrYrBm4upv4CxWTOORuu0FtgVlairu", + "books_review": "1-nf-PO97KG2wySDaM1-Gx3tuqBdI-46T", + "id": "1f-eO_Mq4fR3DVTjKErQEJigmx4fRljhu" + }, + "MA-501C": { + "exampapers": "1IgeCjisG8SCXcdjaWbNTech_7P3aMpjO", + "tutorials_review": "1OKhRmhzyDtcfNE4jVDdS6wYzCwQtyZeY", + "notes": "1wqXzuBdYiLsPoFGGg-9bYvxJgLtZgNbt", + "exampapers_review": "1My442qu7rIZP17Ihkak3wpZ65JscGpzE", + "books": "1CTD0f67hY5hL3mYLU7VC9WtmJE7rifRi", + "notes_review": "1JnVSQJrxKB519Okk-unE-OPv5EGPhZdY", + "tutorials": "1plVoBIRWCbuKMgm-XI5uSNRF6MQFB3k_", + "books_review": "1yhX0S4tOGA2w0r_Grgu5vFuHJ31Hk8RB", + "id": "1gc2dmYsrHbtiD0WCg6fbRmJgfChtqjhD" + }, + "MAN-648": { + "exampapers": "1rnHycFe6SfLz41TMdrYskIOX2i1NYaHD", + "tutorials_review": "16T1TdTVHtoy-jn2vFvSEeGDN8zxaeI1B", + "notes": "1NksqJcincO59T0knCTMF1CSjU9A-Yq9R", + "exampapers_review": "1pqBC0kAQjFDVWVDJvr1MFPyWcXzYDKy6", + "books": "1_11ctTsNDRRPX8E40DCE5QSxP_MDG_3i", + "notes_review": "1lkW4uER3VA5e1KCmMj31vaXQYFwqXwjz", + "tutorials": "1jXdi3_Ch2f4k1f-DUGeCzFN4Icit7Nhl", + "books_review": "1Iov7CjAQR-pW1nUf9xFiwFw8XPWmVj0E", + "id": "1_4AKRZhdloiGiBZ8-MltAeYEa7qcL88i" + }, + "MAN-603": { + "exampapers": "1hp3wMR4EEs95L9gZrQidqNjSKttvDwNB", + "tutorials_review": "10GxPRdRooxyhmWohow9iv5r7phTLHcsI", + "notes": "1PJKbfB7FB4WSZyb46g8JYfS3Ws9AWmRH", + "exampapers_review": "1zovCAlOyzx90cA5wKk6CWW-fofpQUJCg", + "books": "1fTnLLlF902XKnumvA3M6pUvj5DbRwXeA", + "notes_review": "12YM-KCb3uFlRlb0M8lYSGWv8fmxFAltc", + "tutorials": "1xGDJ3dGUptleaTAmSIzDLGFOfj0TZRf2", + "books_review": "1jRJ879puoktKGxsAlltCiyp1NJMinA94", + "id": "188sIgY7clUb5o0SRETTbjwJGFuuuVQRY" + }, + "MAN-649": { + "exampapers": "14rksu0Yzm8e1jwt37_ziueybAWVcisRr", + "tutorials_review": "1106L5wcWYOfs-yW_vdLhH8tknuaV-5FG", + "notes": "1dZ8RVRW_U3aJw5bN1ll-yWWR6LNoj8j2", + "exampapers_review": "1GuA3mBHF5F_QBUL7a0f6qFAwdB-4BXJJ", + "books": "1jpjm4ZhKh-pegP95WoiKwH1a3WgWTLQi", + "notes_review": "1TJkTCWMdfD5lURkfOEnusfFUolXT4bCn", + "tutorials": "1LHeB1tMqlKiXisTxe9mfP1y3AtAWKB1g", + "books_review": "1QT6gj1-vOmbB1wVq6IdBRxPmyCMT7N8m", + "id": "1grcnS26UnqV4ItPEGOy0808asshPThQy" + }, + "MAN-561": { + "exampapers": "1gVpdjDw02GpoVF9TV_JW9iR-nneAZl57", + "tutorials_review": "1pIrySqw7tGhwmiCNrKU-gOgbkS2HrsrP", + "notes": "1Xr-4X-nURTdlzgbXBSq7ygQFpd3qaChh", + "exampapers_review": "1mIpSj4qq9KPVpC41JlH74EGKf3saJZw0", + "books": "1893Zc2RVY8aArFLAFuD_hIY4LBpfTITC", + "notes_review": "1g3socip80EC31yrtfwnlNsddnKtPChTu", + "tutorials": "1Y3ynWcoZRe1zgM5JFYBBLmakL-irAiUg", + "books_review": "1B188y4TtmX-CQ3ReH7lqU3I0DBxR_qYL", + "id": "1P-xnS8zVg9BhnSe4W2lhMs0PJRGpKszu" + }, + "MAN-601": { + "exampapers": "13A9qCEc15kUXFNK_0VFXUK7w7jZXkalJ", + "tutorials_review": "1e6rPoo6xl9N0FY6sU8TPzHBKakIw4xEc", + "notes": "11C-aumjNPZSFvidHSSwlZBqVkfUi87Ty", + "exampapers_review": "1KqMb43IlX6tPTszHZe0pVhSVWb68cxM1", + "books": "19ZXXOZumLqkiTeWgbjsNmsRbtF30AOq8", + "notes_review": "1A21FpBOL6zk1jAyBsRVi6kfomI3OpVyY", + "tutorials": "1LwpYupt0bIToB3ISlkr3PlkCE1aFfDbF", + "books_review": "1o2JutxD8G-wLyh8veh7fTPYyYPGJy2do", + "id": "1H5u7yq8A9qI81XAnWaWIFyS6qde4VBxG" + }, + "MA-501F": { + "exampapers": "1V2AAWTXbNJKZFkVift0KOZOaGzPITCnr", + "tutorials_review": "1FifFpv8hmeKbEzPMoiNwZdeeVRN6avFR", + "notes": "1_3c_R3yyV2ua_tgLk3ENIq_930jXGqFG", + "exampapers_review": "1jvzPcOCZzROzoVFunYRwtthf2s-M3gkH", + "books": "1v9Caw6s1dyaUYTq7PhZEtFJS8IaP-jTw", + "notes_review": "15rmV9Xg-9cL0FuLP6g138qPJgWElvuVL", + "tutorials": "1CUx6cxlV-7hEFIotBuLpLftsJvkTGAqV", + "books_review": "17nolJG0ss-InrunCIns4Zmpaqec2wB6S", + "id": "1jQGK9HIassSvYT9GTIMrEMkXLcEP5GKu" + }, + "MAN-508": { + "exampapers": "12hECVEmwDmQl0rSa5s8EWlKyRk5cOLG4", + "tutorials_review": "1hqMPIWQol5rvhaM3y0ysFKuFxSepnAzM", + "notes": "1t_K4IxINy3PTKB7p2cZi43XVf5pPy-4l", + "exampapers_review": "1Wj_zk3N9RDH4sl-MDaIvpSXQqByXAQpm", + "books": "1HjNBhSdocZXevwL-eDfTZJk1UhB9XXzy", + "notes_review": "1X5FZySvswVXau9D_wkPojQdFO7dYlWyY", + "tutorials": "1-fblW30o4ekKfjpSyQG5seealC4KbGOh", + "books_review": "1IcRxI-hN6MVvyig_yV88FZHVzJNZE-EI", + "id": "1kfSd-qZY7ito1x5CSrc-zsJPc-Zxf_Pi" + }, + "MAN-304": { + "exampapers": "1S_oOpZCkrUnpEPWwGZGLugebCSVAPrWI", + "tutorials_review": "1Azp_BnDjUCn7x7ELv7CbcXuB7Q06Y7Ri", + "notes": "1JOB0gbFvAkE9S7EtuWF2gxKDHeEFslZB", + "exampapers_review": "1bIqCWLtDK5HVgFYwJVnUW51BABc9SLMp", + "books": "13912L4MrRbikqTelggpsch-Bkfv4cp_3", + "notes_review": "18tPuCrTAqa_h9fyK5pabty__IlHF3BPj", + "tutorials": "1WRfZsXhpO5AO8c91HsrP0Ft9UpJQNX-T", + "books_review": "1GyqlgCPZVP1nTccNrbdmpuh25-AvcIXi", + "id": "1x4Z9tgizhfXwDHNOfsQPDgdVy9EmK8Bu" + }, + "MAN-605": { + "exampapers": "1m4jUNIDK9zF1YF4-IzenSx_qet2Srt8E", + "tutorials_review": "1ug-FA3gAeVWedxQCl7e94XmYNNVOHpSM", + "notes": "1g-QGUg9y-ovkO4qCSElY8eg3Yv_ZPUkc", + "exampapers_review": "1eeBe0xMxrrhsiRgyeFXTyCCn5GpZyYWV", + "books": "1YaVKVdhQrX0xLlzFVhFBe3L8WPBZme4H", + "notes_review": "1uB9xPoCSXYhfclN-ZgQpARS1t273rYt_", + "tutorials": "18Khjqdm-2Qjo7DN2rNQ7PJOo_NQy3UMd", + "books_review": "1gAfuSZ8Y7uRUAhEpZlLi30whlPB4FfJJ", + "id": "14yEWKYocigvpYpQq8ntImHYbfm_IaGiC" + }, + "MAN-501": { + "exampapers": "1UbAgNqayTPun4HeRZw2I1ZR_cVYKTsAs", + "tutorials_review": "1zr4kijwC7YE1_TljfFOJFNpMfxpDux7Z", + "notes": "1lp7MM46j77yl4S7CYB-414tM5_ke9uTh", + "exampapers_review": "1xLo-ZLK3dNk4nbnOv3IkZQ2FLxMZfI9q", + "books": "1O7MiISfStypUIr_kRab1ZBgI1KkEYMUC", + "notes_review": "12scY37m7VYjV1hZ8HtOEqccEbIag5_mb", + "tutorials": "11zDx0uYF99fhRNe1ShXGM5XmDUXxITcp", + "books_review": "1PRvroMtLAHUonRHHb2Zh1KsrtJohHYkb", + "id": "1J-djcTZIqtTCp8TLclztIovSDcdTO5g2" + }, + "MAN-325": { + "exampapers": "1SC6xB8OL5Pq2aUNZBt65XarMoW2GxrdM", + "tutorials_review": "1Ix7b9bj1m1lAnG0db61PYCZQVwN0UZWQ", + "notes": "1b5M3T4rYQBHN52VceghA9gN75iAZpjAL", + "exampapers_review": "1PtOAMoOqQCwKHVVJjKEOTdT43j9ZJVVv", + "books": "1evWI5ty9GWYHgnKoKawVTUW9cQqNFblk", + "notes_review": "1Irkyuot5UH-9iRNealB4i6AuoU-Tj2Ot", + "tutorials": "1Af4YlFeCxxj2EjEufaKgIGlYqxoNdJlv", + "books_review": "12CKERithoDusMwLPd7lDgi7qqc52LEz4", + "id": "1pVThSxU_OBKWqaUE29MC5LEZbUUAHy6l" + }, + "MAN-503": { + "exampapers": "1jpBNX_UxP7U5pBy59sw9f_WY_WwofRMW", + "tutorials_review": "13iQKToIyQle1Sr0d3O_1vdjOjDXu8bOC", + "notes": "10c696tLZnrutv8EBmJwLZUgr0QgwcjmP", + "exampapers_review": "1SSUe7vvmGrMYcsyTQOcydXhq4QFlnPcT", + "books": "1sTagMcSf4wHM7QvzMSQvPfjiuE-QTOKQ", + "notes_review": "1WRRp_VFUA3lWJWHC9Jy1TXwdKWlggv1T", + "tutorials": "1e4yga02OYd2byr6cLB1zw2L8rEvwXxk-", + "books_review": "1QoE6rBP-FY8wxFe10jkozax-xMAwk0d_", + "id": "1ChYd6ayl0o9GPaK_e_YW62QQUsCPzZt5" + }, + "MAN-505": { + "exampapers": "19NwWraT8dq2Z0bXAkfIunMWaJdcskP0y", + "tutorials_review": "12FKt4MND91BZZqf0H1d0LlXQoFXuJP_z", + "notes": "1suz7sW47NB_B_x6Y8XKopkGPmeJqiMVG", + "exampapers_review": "1aHv8QWNvcUylJwDyqNJshcvXEwTRySpZ", + "books": "1KmCpk3GMIWZERXTL28KYOnX4Ey4QVUP7", + "notes_review": "1cXPIp-58er7ltXisWr83-PQKaDGzO7qH", + "tutorials": "1FomQCVQ3i2k7KaylBcoY78TbQZOPo2V5", + "books_review": "1S3N_Ep4djDKVAe5jkAvQYH7atBCusnep", + "id": "1gYA3DiVygljnbAhj-yi2RN_D7m2D9RbS" + }, + "MAN-507": { + "exampapers": "1ip-v2ra3BM5UuivBkgSklUvYspokHthy", + "tutorials_review": "1eWjPielWensJyJJJC3BNoTuXzfgZD4dh", + "notes": "1qjR5VCj7rHjvkKdbOZaxQeia8ewqBz5f", + "exampapers_review": "1Y2a43ewK7zmxr7ONo2C4n92wxNGsfOLC", + "books": "1KJqa5ZB6Ow44M16VS-clPetH-GrM70A5", + "notes_review": "1tUR08Je2YN8cgTJ2MEMeYTkE98J4quC_", + "tutorials": "1jhKQ_blpvaL3xgfEm5T5sZQiYhzG6uUc", + "books_review": "1Nb8kaNEM3DTbYDHGdfxWzEe-OsGpHhdj", + "id": "1_iQ5uQEhESzzE28-ciwrZ1_O8NyiF-mo" + }, + "MAN-520": { + "exampapers": "1O_m_y05wBtrCSeU-aOk-FQ4UKuXwC8Eo", + "tutorials_review": "18r8GUP1Vm0_Fjjj7f7rcJsz4Z55mS_jd", + "notes": "1G59F-U9FcXGbAjIq_l8UK7_23oh3isRt", + "exampapers_review": "1C1_0Hf3PcUDN_zUGMPtBY3gr_61MevYf", + "books": "1k5pQ7IRht---31IBSopkKbN-Xq5vtFf3", + "notes_review": "1_IHIZJD8w4Ur67YEV4ViSnQFeE3evNrT", + "tutorials": "1EAbfX3qkjL1OG2Ym1HlYj9AqddEXNMWm", + "books_review": "1M7QummqpC-GfZZwcqVkY1fA61QNMY4Ok", + "id": "1j3YdbPhCt4p97mcGK_Q0ZBFpVrKWMdFy" + }, + "MAN-629": { + "exampapers": "1WlaISvn5TZHpfsIW-9CmdmgHTLCboEmE", + "tutorials_review": "1RVbBoNzEkQk7w02CCQt1B4MVheer8fzE", + "notes": "1H2aoaA_LIXf8kpc-jzwCUUpwkUXUj_0c", + "exampapers_review": "1zY1QulD7tFz1b3JXZ3sYgKxiJP0Sn27c", + "books": "1przmJtd1n56s6LVQ47DB4M4vTrgiJc2e", + "notes_review": "13aRkIApGHk5JFU1dFUqJ1pZALOtdzGVQ", + "tutorials": "1HTjbJH8n4-9jzHrbZQAq1moR-zc4Tphe", + "books_review": "1p8jXufxMpQ6JR7mxyp8TyuHQ22bJcFUb", + "id": "1-hm0PzdyuF5tP_yjfumgq0UVxDCi_FSb" + }, + "MAN-006": { + "exampapers": "1vyMOkZrdw3lGrA6uYnXL3yaKbteo8zF5", + "tutorials_review": "1yy5Q_TrjkoXi3QeSGRsNDvRn7OvyquW0", + "notes": "103GIFW4rC4xNMNe4NtI8IvbOgq8n3bBc", + "exampapers_review": "1LSxciH5fzkVVBy6mheJxo_QzubmMPbjZ", + "books": "15HJ2vaIXMdt4JciWEQ7XTvQQz4okdYH6", + "notes_review": "1GVsmG5Gh4_D4V-Paut2sZjsLLxFyowU_", + "tutorials": "16Q756LOl7FEXAweSOV4_fM2ri7RiDidg", + "books_review": "1CzPUCSUYY6wfVrGIiSGp4P34UDdJ3MOy", + "id": "1tYOPJMaFpKY2ehZGpz7nK7uwhEeobROM" + }, + "MAN-001": { + "exampapers": "1TBkmYclkyi1DWYg0l5NtIRQ4I5V9d8XX", + "tutorials_review": "1IFqwdf_Gcd0R7gzfCtCCAhXxLDPU7Hfm", + "notes": "1y2x0JFCAS2os3NNuIlrd8A1KD-bW73Yw", + "exampapers_review": "1D3OUHkEc2Pgf9iVVeAipizun0zkQF7eD", + "books": "1ARnzjrEorgouaoI_x-8ao9fiVg0TNR6i", + "notes_review": "1UfGiJmIM42rXAsUso5sNNcilkGh_O1x1", + "tutorials": "10LkuPaq_0lwoZFU_n-VrUHtQYnq7wBO9", + "books_review": "1vpMmjTSnUvMTfWf6KEnffh-K8enYbl1g", + "id": "105qOhrfleMC8yzS032-XmzYhimM4T7dq" + }, + "MAN-002": { + "exampapers": "1qpkwUXjxvtWWnc1XvaMrwfrma2VPQG-W", + "tutorials_review": "1254eJvKZObbLzeX_5PG2QLzX9BMRO9TU", + "notes": "1xWmunD4yhrzsv7nJPwl0iN8BnQfvX5dW", + "exampapers_review": "1i4N-wQbSFE3A-ZMVC1rMF3WYAXf-flby", + "books": "1iXE5D4Jd9ofghlmVdmt0vvk97uwRrz8i", + "notes_review": "1xv1waQKqMS5rUn-G-28_qLnONl0B9OEN", + "tutorials": "16XMijSles8r0cP4wy-khCD_UDn9U2lKg", + "books_review": "1P0HDGL2LWL-tWoL8jfQoK612c49gB_v_", + "id": "1lnCy0Xeabb05IRxif1kM_phDdsxOKK4n" + }, + "MAN-526": { + "exampapers": "1jGzXPlY6Q-ixBbwlkR2dWPq8mNl0JoQ9", + "tutorials_review": "1atgDZL6NgICw0mOmyjX1YBf1-mF3yRVS", + "notes": "1x4wegTSiUMf4sxG5NWfhQvpWaLft7Apv", + "exampapers_review": "1vaPd1-E7Yg1e0TP7_9Re0dkdrnaVfOm1", + "books": "1cGLpPdyiugPkmk1s75j9SWk2Ygl4MXAk", + "notes_review": "1KqXDDmRLSpUS_NkgSvEGnywmXBAvO5rH", + "tutorials": "1rAmwjiKYRyzyg__N_IUmVATGP46eXgjn", + "books_review": "1VMd3Z6i7pkLLL9q9rx1zINbuqFdhvflo", + "id": "1K8dWEo3pARKvTJEvqxtOfMMKGFOurIco" + }, + "MAN-646": { + "exampapers": "1dv9wdH4NbwyfVkoTyGIEIrGPtK1axXJC", + "tutorials_review": "1JU1KO6KKkWr1Qn9AUCbdZ0133D2p_BHN", + "notes": "1OG3sz7Qx9S_cqC2nC3V-iXLLMa7ezt1K", + "exampapers_review": "1Ik0qP5OCodHlbGyH4KxoXADj4n0kX9ER", + "books": "1IvvIUJIecOCAXWyjitjK2JmmEfEOcjm1", + "notes_review": "1eRTo62JFrxRfTRoabCuMf4bc5yH87OQK", + "tutorials": "1IiWAKhNOHuJ2yd98omXo3GvpJyELeOOF", + "books_review": "1V4mzNxgRh4HqakrUhwILYTajxSAUrzHm", + "id": "1LIXeKN8GmVen1avcwGA0t8100ljkcOvj" + }, + "MAN-647": { + "exampapers": "17C4okj4_wVTLzEV1oHRzRgTrAO1tEJbx", + "tutorials_review": "1DxTD-u-9j8jq9wdHh4ALal67fQPmrOg-", + "notes": "1JOvEhqDeOW0n0v8MHVpP-oJoL4tS0R12", + "exampapers_review": "1VfMmyADdfv6qrkxQ03LR8ETgtIv8gDJ-", + "books": "1w8LLZfEth02mbT5_gnb2BPespEKW8Xt0", + "notes_review": "1bk7IkESWcdKn3hVn5NYsVLVZJ6_jI0D8", + "tutorials": "1ba6ZPdn8F5UJwd4HMfcN599KUfC4-ZNp", + "books_review": "19zrtWmGpVMjWpO_TZlOUy5QAct2Elf86", + "id": "1818xlm6CFZCqkTYjEVomE7q9oX2-L6Bt" + }, + "MAN-645": { + "exampapers": "14KA6yBhr8sdB3NQbi9xRHi2e0DCqbBOt", + "tutorials_review": "1Df7X2YUEIoHNkHANJ9-CBmo4CdN94Xmp", + "notes": "1YyI1xJdIrPCSmDvPi_RiQ5VLgCnbQScF", + "exampapers_review": "1f_lodhqxDv8daoyijXJcfthdyiC112yv", + "books": "1bOf6YvkO2A9MZCykOl-QyGhfEJw_hRNi", + "notes_review": "1u2QRZ5l-Zp_VibKMwFYEhtnLJi1P9Jo9", + "tutorials": "1JPJ-65hDfMdb3Iu9qIEtVLdjF13DMu6S", + "books_review": "1r4Ou8cCLhPsPKsbPRMsnIjzwJlxs-m2e", + "id": "16IpUgZMpUZtbVs7P31NXdvPUBuDkp6fr" + }, + "MAN-642": { + "exampapers": "1Y0M9oQ6ooZMabHg85pXpY7eOlcnqG4jS", + "tutorials_review": "1WjckJzFjyQOgb4XTRq2C1XCgfgJEFnTH", + "notes": "1bfNVN4aY4WXkymSPvMdRXGGmhWwHc8Ku", + "exampapers_review": "1E2hnfB5eG00hroCEexaPI3rktWyIo99j", + "books": "1j-My2Jf-ueM6-_6HQ6YAGygUhUiB9wrR", + "notes_review": "1KwE9cF5lcDGN-5eLlkmq9NWYlLCMVK4O", + "tutorials": "1tYGgqH5HWLtLxu_4QV0OJb7jbIOmTNhD", + "books_review": "11ArnPRvr_RG89_UjTQIz99YmY92kCJ-L", + "id": "1pp4At5hymN44RzrcmuRV8o5BKdvIONy6" + }, + "MAN-900": { + "exampapers": "1062Xnl59-OKWF8o1EdBLGgxu9wo44-zB", + "tutorials_review": "1NRS5bj7Kvn6Fxqsq_qN522Zm4uWUrmDZ", + "notes": "16W26NVCVAnqru4zsDSgtsZvs9jfKLESc", + "exampapers_review": "1aloBjVjZPjxhd82CpeqP_WcdTC_tifD3", + "books": "1KDtmrH4GyW5UjtSwFCuLnZ73F0t6OhSm", + "notes_review": "1yGwHsMr7jB7eTx0LIae9yjjzy5J4jAaj", + "tutorials": "1q_YELKfI-gYOx-_ltT1jlQcyXXIZZHPR", + "books_review": "19W8X5hLOsIPEFGewQjz1MrIC78UE9Ad3", + "id": "1CGv8rER_GALw3JJa-gFtOFsvodKd8xr2" + } + } + } +} \ No newline at end of file diff --git a/users/views.py b/users/views.py index 6f7afcb..ceca797 100644 --- a/users/views.py +++ b/users/views.py @@ -15,11 +15,15 @@ import requests import random import base64 +import json import jwt import os NEXUS_URL = "http://nexus.sdslabs.local/api/v1" - +STRUCTURE = os.path.join( + os.path.abspath(os.path.dirname(__file__)), + 'structure.json' +) def getUserFromJWT(token): decoded_jwt = jwt.decode(token, SECRET_KEY, algorithms=['HS256']) @@ -237,7 +241,10 @@ def get_extra_actions(cls): def uploadToDrive(service, folder_id, file_details): - file_metadata = {'name': file_details['name']} + file_metadata = { + 'name': file_details['name'], + 'parents': [folder_id] + } media = MediaFileUpload( file_details['location'], mimetype=file_details['mime_type'] @@ -265,6 +272,8 @@ def get(self, request): return Response(serializer.data) def post(self, request): + with open(STRUCTURE) as f: + structure = json.load(f) file = request.data['file'] name = request.data['name'] # File manipulation starts here @@ -281,9 +290,12 @@ def post(self, request): 'location': "temp"+rand+"."+ext } # Get folder id from config + course = Course.objects.get(id=request.data['course']) + folder_identifier = request.data['filetype'].lower().replace(" ","") + "_review" + folder_id = structure['study'][course.department.abbreviation][course.code][folder_identifier] driveid = uploadToDrive( driveinit(), - '1Zd-uN6muFv8jvjUSM7faanEL0Zv6BTwZ', + folder_id, file_details ) os.remove("temp"+rand+"."+ext) @@ -291,7 +303,6 @@ def post(self, request): token = request.headers['Authorization'].split(' ')[1] username = getUserFromJWT(token)['username'] user = User.objects.get(username=username) - course = Course.objects.get(id=request.data['course']) upload = Upload( user=user, driveid=driveid, From 7b6a7251f0bcdf8c04d6e31d82ea8bd8b9c46b8b Mon Sep 17 00:00:00 2001 From: Ayan Choudhary Date: Tue, 21 Apr 2020 16:08:28 +0530 Subject: [PATCH 62/69] fix: remove non finalized files from search index --- rest_api/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rest_api/views.py b/rest_api/views.py index f312655..2025141 100644 --- a/rest_api/views.py +++ b/rest_api/views.py @@ -206,7 +206,7 @@ def get(self, request): for hit in response_files.hits.hits: fileId = hit['_source']["id"] - query_files = File.objects.filter(id=fileId) + query_files = File.objects.filter(id=fileId).filter(finalized=True) queryset_files = list(itertools.chain(queryset_files, query_files)) for hit in response_departments.hits.hits: From ad31a30cff1d5adfec41261f5ff47e9bfda45c93 Mon Sep 17 00:00:00 2001 From: Ayan Choudhary Date: Wed, 22 Apr 2020 10:55:50 +0530 Subject: [PATCH 63/69] fix: added makemigrations command to docker-compose --- docker-compose.yml | 5 ++++- .../migrations/0045_auto_20200422_0506.py | 19 +++++++++++++++++++ .../migrations/0046_auto_20200422_0520.py | 18 ++++++++++++++++++ 3 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 rest_api/migrations/0045_auto_20200422_0506.py create mode 100644 rest_api/migrations/0046_auto_20200422_0520.py diff --git a/docker-compose.yml b/docker-compose.yml index efaac12..7c45d21 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -34,7 +34,10 @@ services: web: build: ./ image: studyportal-nexus - command: bash -c 'python manage.py migrate && python manage.py search_index --rebuild -f && python manage.py runserver 0.0.0.0:8005' + command: bash -c 'python manage.py makemigrations && + python manage.py migrate && + python manage.py search_index --rebuild -f && + python manage.py runserver 0.0.0.0:8005' container_name: studyportal-nexus volumes: - ".:/studyportal-nexus:rw" diff --git a/rest_api/migrations/0045_auto_20200422_0506.py b/rest_api/migrations/0045_auto_20200422_0506.py new file mode 100644 index 0000000..a7c2af6 --- /dev/null +++ b/rest_api/migrations/0045_auto_20200422_0506.py @@ -0,0 +1,19 @@ +# Generated by Django 2.2 on 2020-04-22 05:06 + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('rest_api', '0044_auto_20200407_2005'), + ] + + operations = [ + migrations.AlterField( + model_name='file', + name='date_modified', + field=models.DateField(default=datetime.date.today), + ), + ] diff --git a/rest_api/migrations/0046_auto_20200422_0520.py b/rest_api/migrations/0046_auto_20200422_0520.py new file mode 100644 index 0000000..9ecb346 --- /dev/null +++ b/rest_api/migrations/0046_auto_20200422_0520.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2 on 2020-04-22 05:20 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('rest_api', '0045_auto_20200422_0506'), + ] + + operations = [ + migrations.AlterField( + model_name='file', + name='date_modified', + field=models.DateField(auto_now=True), + ), + ] From 7f7b81b0e949d476d13e5aebb97c06044194a04f Mon Sep 17 00:00:00 2001 From: Ayan Choudhary Date: Wed, 22 Apr 2020 15:06:45 +0530 Subject: [PATCH 64/69] restructure: move falcon clients and drive file to appropriate folders and fix .gitignore and add test structure.json --- .editorconfig | 13 ++ .gitignore | 124 +++++++++++++++++- rest_api/views.py | 8 +- {rest_api => studyportal/drive}/drive.py | 0 {rest_api => studyportal/drive}/token.pickle | Bin {rest_api => studyportal/falcon}/client.py | 0 {rest_api => studyportal/falcon}/config.py | 2 +- .../test/resources}/structure.json | 2 +- users/views.py | 18 ++- 9 files changed, 151 insertions(+), 16 deletions(-) create mode 100644 .editorconfig rename {rest_api => studyportal/drive}/drive.py (100%) rename {rest_api => studyportal/drive}/token.pickle (100%) rename {rest_api => studyportal/falcon}/client.py (100%) rename {rest_api => studyportal/falcon}/config.py (92%) rename {users => studyportal/test/resources}/structure.json (99%) diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..5d12634 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,13 @@ +# editorconfig.org +root = true + +[*] +indent_style = space +indent_size = 2 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.md] +trim_trailing_whitespace = false diff --git a/.gitignore b/.gitignore index ee0c6c9..94a58ce 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,122 @@ -.idea -.vscode -**/__pycache__ +# Django # +*.log +*.pot +*.pyc +__pycache__ +db.sqlite3 +media + +# Backup files # +*.bak + +# If you are using PyCharm # +.idea/**/workspace.xml +.idea/**/tasks.xml +.idea/dictionaries +.idea/**/dataSources/ +.idea/**/dataSources.ids +.idea/**/dataSources.xml +.idea/**/dataSources.local.xml +.idea/**/sqlDataSources.xml +.idea/**/dynamic.xml +.idea/**/uiDesigner.xml +.idea/**/gradle.xml +.idea/**/libraries +*.iws /out/ + +# Python # +*.py[cod] +*$py.class + +# Distribution / packaging +.Python build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +*.egg-info/ +.installed.cfg +*.egg +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.coverage +.coverage.* +.cache +.pytest_cache/ +nosetests.xml +coverage.xml +*.cover +.hypothesis/ + +# Jupyter Notebook +.ipynb_checkpoints + +# pyenv +.python-version + +# celery +celerybeat-schedule.* + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ + +# Sublime Text # +*.tmlanguage.cache +*.tmPreferences.cache +*.stTheme.cache +*.sublime-workspace +*.sublime-project + +# sftp configuration file +sftp-config.json + +# Package control specific files Package +Control.last-run +Control.ca-list +Control.ca-bundle +Control.system-ca-bundle +GitHub.sublime-settings + +# Visual Studio Code # +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +.history + +# Files /files/* credentials.json -venv +venv/ +studyportal/drive/structure.json diff --git a/rest_api/views.py b/rest_api/views.py index 2025141..8b4e395 100644 --- a/rest_api/views.py +++ b/rest_api/views.py @@ -7,9 +7,9 @@ from rest_api.serializers import FileSerializer from studyportal.settings import SECRET_KEY from apiclient.http import MediaFileUpload -from rest_api.drive import driveinit -from rest_api.config import config -from rest_api import client +from studyportal.drive.drive import driveinit +from studyportal.falcon.config import config +from studyportal.falcon import client import requests import random import base64 @@ -18,7 +18,7 @@ import itertools from rest_api.documents import CourseDocument, FileDocument, DepartmentDocument -NEXUS_URL = "http://nexus.sdslabs.local/api/v1" +NEXUS_URL = "http://localhost:8005/api/v1" def sample(request): diff --git a/rest_api/drive.py b/studyportal/drive/drive.py similarity index 100% rename from rest_api/drive.py rename to studyportal/drive/drive.py diff --git a/rest_api/token.pickle b/studyportal/drive/token.pickle similarity index 100% rename from rest_api/token.pickle rename to studyportal/drive/token.pickle diff --git a/rest_api/client.py b/studyportal/falcon/client.py similarity index 100% rename from rest_api/client.py rename to studyportal/falcon/client.py diff --git a/rest_api/config.py b/studyportal/falcon/config.py similarity index 92% rename from rest_api/config.py rename to studyportal/falcon/config.py index 42c2048..77c1824 100644 --- a/rest_api/config.py +++ b/studyportal/falcon/config.py @@ -1,4 +1,4 @@ -from rest_api import client +from studyportal.falcon import client client_id = "study-vT1gzcnoVml4Mcfq" client_secret = ( diff --git a/users/structure.json b/studyportal/test/resources/structure.json similarity index 99% rename from users/structure.json rename to studyportal/test/resources/structure.json index 585e7e0..20c0714 100644 --- a/users/structure.json +++ b/studyportal/test/resources/structure.json @@ -6594,4 +6594,4 @@ } } } -} \ No newline at end of file +} diff --git a/users/views.py b/users/views.py index ceca797..7778202 100644 --- a/users/views.py +++ b/users/views.py @@ -9,9 +9,10 @@ from users.serializers import UploadSerializer from studyportal.settings import SECRET_KEY from apiclient.http import MediaFileUpload -from rest_api.drive import driveinit -from rest_api.config import config -from rest_api import client +from studyportal.drive.drive import driveinit +from studyportal.falcon.config import config +from studyportal.falcon import client +from studyportal.settings import CUR_DIR import requests import random import base64 @@ -19,10 +20,14 @@ import jwt import os -NEXUS_URL = "http://nexus.sdslabs.local/api/v1" +NEXUS_URL = "http://localhost:8005/api/v1" STRUCTURE = os.path.join( - os.path.abspath(os.path.dirname(__file__)), - 'structure.json' + CUR_DIR, + 'drive/structure.json' +) +STRUCTURE_TEST = os.path.join( + CUR_DIR, + 'test/resources/structure.json' ) def getUserFromJWT(token): @@ -272,6 +277,7 @@ def get(self, request): return Response(serializer.data) def post(self, request): + # For local dev change 'STRUCTURE' to 'STRUCTURE_TEST' with open(STRUCTURE) as f: structure = json.load(f) file = request.data['file'] From 57a74291c3d355d74be772738113fa76f7209a5b Mon Sep 17 00:00:00 2001 From: Ayan Choudhary Date: Wed, 22 Apr 2020 15:23:19 +0530 Subject: [PATCH 65/69] docs: added alternate setup instructions --- README.md | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/README.md b/README.md index b1ae38a..25f41fe 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,8 @@ This is the backend API repository for Study Portal intended to be used by Study 1. Install [PostgreSQL service](https://www.digitalocean.com/community/tutorials/how-to-install-and-use-postgresql-on-ubuntu-18-04). 2. Setup Arceus and Falcon locally or get a remote instance for development/testing. +3. Register study as an app in Arceus and make changes to `studyportal/falcon/config.py`. +4. Obtain a credentials.json from the author/generate one yourself and place it in `studyportal/drive`. ## Setup Instructions @@ -53,3 +55,53 @@ To make this setting take effect, run: ```bash sudo sysctl -p ``` + +## Alternate Setup Instructions + +You can setup the local dev in a virtualenv: + +1. Create a virtualenv using your preferred method. + * Using virtualenv + + ```bash + virtualenv -p python3 venv + source venv/bin/activate + ``` + + * Using virtualenvwrapper + + ```bash + mkvirtualenv studyportal + workon studyportal + ``` + +2. Install packages in virtual environment. + + ```bash + pip install -r requirements.txt + ``` + +3. Edit config file. + + Change `host` in `studyportal/config/postgresql.yml` to `localhost` and in `studyportal/settings.py` change the elasticsearch host from `es` to `localhost`. + + #### DO NOT COMMIT THESE FILE CHANGES. + +4. Initialize the database + + ```bash + python manage.py makemigrations + python manage.py migrate + ``` + +5. Create Django admin user + + ```bash + python manage.py createsuperuser + ``` + +6. Run production server + + ```bash + python manage.py runserver + ``` From 51fa0d3d884cca57e8385f01255651c61be0df13 Mon Sep 17 00:00:00 2001 From: Ayan Choudhary Date: Wed, 22 Apr 2020 17:35:42 +0530 Subject: [PATCH 66/69] feat add workflow to run lint test --- .github/workflows/lint_test.yml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 .github/workflows/lint_test.yml diff --git a/.github/workflows/lint_test.yml b/.github/workflows/lint_test.yml new file mode 100644 index 0000000..89dd2ef --- /dev/null +++ b/.github/workflows/lint_test.yml @@ -0,0 +1,22 @@ +name: Normalize Repos +on: + push: + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Set up Python 3.7 + uses: actions/setup-python@v1 + with: + python-version: 3.7 + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install pycodestyle + - name: Run lint test + run: | + pycodestyle * + env: + ADMIN_GITHUB_TOKEN: ${{ secrets.ADMIN_GITHUB_TOKEN }} From bc3e01b9f1929bc2dbf84b8a0f9272da71725808 Mon Sep 17 00:00:00 2001 From: Ayan Choudhary Date: Wed, 22 Apr 2020 18:39:58 +0530 Subject: [PATCH 67/69] fix: lint issues --- .github/workflows/lint_test.yml | 2 +- rest_api/documents.py | 3 ++ rest_api/views.py | 28 ++++++----- setup.cfg | 6 +++ studyportal/drive/drive.py | 1 + studyportal/falcon/client.py | 86 ++++++++++++++++++--------------- users/views.py | 11 +++-- 7 files changed, 80 insertions(+), 57 deletions(-) create mode 100644 setup.cfg diff --git a/.github/workflows/lint_test.yml b/.github/workflows/lint_test.yml index 89dd2ef..e7e8557 100644 --- a/.github/workflows/lint_test.yml +++ b/.github/workflows/lint_test.yml @@ -17,6 +17,6 @@ jobs: pip install pycodestyle - name: Run lint test run: | - pycodestyle * + pycodestyle env: ADMIN_GITHUB_TOKEN: ${{ secrets.ADMIN_GITHUB_TOKEN }} diff --git a/rest_api/documents.py b/rest_api/documents.py index 2701a40..f2b55e0 100644 --- a/rest_api/documents.py +++ b/rest_api/documents.py @@ -5,6 +5,7 @@ DEPARTMENTS = Index('departments') FILES = Index('files') + @COURSES.doc_type class CourseDocument(Document): class Django: @@ -16,6 +17,7 @@ class Django: 'code', ] + @DEPARTMENTS.doc_type class DepartmentDocument(Document): class Django: @@ -27,6 +29,7 @@ class Django: 'abbreviation', ] + @FILES.doc_type class FileDocument(Document): class Django: diff --git a/rest_api/views.py b/rest_api/views.py index 8b4e395..f21fddb 100644 --- a/rest_api/views.py +++ b/rest_api/views.py @@ -38,7 +38,7 @@ def get(self, request): return Response({ "department": serializer, "courses": serializer_course - }) + }) else: return Response({"department": serializer_department.data}) @@ -104,10 +104,10 @@ def get_extra_actions(cls): def get_size(size): file_size = size - if round(file_size/(1024*1024), 2) == 0.00: - return str(round(file_size/(1024), 2))+" KB" + if round(file_size / (1024 * 1024), 2) == 0.00: + return str(round(file_size / (1024), 2)) + " KB" else: - return str(round(file_size/(1024*1024), 2))+" MB" + return str(round(file_size / (1024 * 1024), 2)) + " MB" def fileName(file): @@ -158,7 +158,7 @@ def post(self, request): fileext=get_fileext(data['title']), filetype=data['filetype'], finalized=data['finalized'] - ) + ) file.save() return Response(file.save(), status=status.HTTP_201_CREATED) else: @@ -183,19 +183,19 @@ def get(self, request): query=q, type="phrase_prefix", fields=['title', 'code'] - ) + ) departments = DepartmentDocument.search().query( "multi_match", query=q, type="phrase_prefix", fields=['title', 'abbreviation'] - ) + ) files = FileDocument.search().query( "multi_match", query=q, type="phrase_prefix", fields=['title', 'fileext', 'filetype'] - ) + ) response_courses = courses.execute() queryset_courses = Course.objects.none() @@ -206,8 +206,10 @@ def get(self, request): for hit in response_files.hits.hits: fileId = hit['_source']["id"] - query_files = File.objects.filter(id=fileId).filter(finalized=True) - queryset_files = list(itertools.chain(queryset_files, query_files)) + query_files = File.objects.filter(id=fileId, finalized=True) + queryset_files = list( + itertools.chain(queryset_files, query_files) + ) for hit in response_departments.hits.hits: departmentId = hit['_source']["id"] @@ -225,9 +227,9 @@ def get(self, request): serializer_files = FileSerializer(queryset_files, many=True).data return Response({ - "departments" : serializer_departments, - "courses" : serializer_courses, - "files" : serializer_files, + "departments": serializer_departments, + "courses": serializer_courses, + "files": serializer_files, }, status=status.HTTP_200_OK) else: return Response(status.HTTP_400_BAD_REQUEST) diff --git a/setup.cfg b/setup.cfg new file mode 100644 index 0000000..7704473 --- /dev/null +++ b/setup.cfg @@ -0,0 +1,6 @@ +[pycodestyle] +count = False +ignore = W191 +max-line-length = 160 +statistics = True +exclude = venv/*, rest_api/migrations/*, users/migrations/*, studyportal/settings.py \ No newline at end of file diff --git a/studyportal/drive/drive.py b/studyportal/drive/drive.py index 8da8dc5..8e87f72 100644 --- a/studyportal/drive/drive.py +++ b/studyportal/drive/drive.py @@ -13,6 +13,7 @@ 'token.pickle' ) + def driveinit(): creds = None SCOPES = [ diff --git a/studyportal/falcon/client.py b/studyportal/falcon/client.py index be2c166..9d8ceda 100644 --- a/studyportal/falcon/client.py +++ b/studyportal/falcon/client.py @@ -3,67 +3,77 @@ class DataResponse: - def __init__(self, AccessToken, TokenType, ExpiresIn): - self.AccessToken = AccessToken - self.TokenType = TokenType - self.ExpiresIn = ExpiresIn + def __init__(self, AccessToken, TokenType, ExpiresIn): + self.AccessToken = AccessToken + self.TokenType = TokenType + self.ExpiresIn = ExpiresIn class FalconClient: - def __init__(self, ClientId, ClientSecret, URLAccessToken, URLResourceOwner, AccountsURL, RedirectURL): - self.ClientId = ClientId - self.ClientSecret = ClientSecret - self.URLAccessToken = URLAccessToken - self.URLResourceOwner = URLResourceOwner - self.AccountsURL = AccountsURL - self.RedirectURL = RedirectURL + def __init__(self, ClientId, ClientSecret, URLAccessToken, URLResourceOwner, AccountsURL, RedirectURL): + self.ClientId = ClientId + self.ClientSecret = ClientSecret + self.URLAccessToken = URLAccessToken + self.URLResourceOwner = URLResourceOwner + self.AccountsURL = AccountsURL + self.RedirectURL = RedirectURL + COOKIE_NAME = "sdslabs" def make_request(url, token): - headers = { 'Authorization': "Bearer {}".format(token), "Content-Type": "application/json" } - response = requests.get(url, headers=headers) - return response.json() + headers = { + 'Authorization': "Bearer {}".format(token), + "Content-Type": "application/json" + } + response = requests.get(url, headers=headers) + return response.json() def get_token(config): - data = { "client_id": config.ClientId, "client_secret": config.ClientSecret, "grant_type": "client_credentials", "scope": "email image_url" } - headers = { "Content-Type": "application/x-www-form-urlencoded" } - response = requests.post(config.URLAccessToken, data=data, headers=headers) - return response.json()['access_token'] + data = { + "client_id": config.ClientId, + "client_secret": config.ClientSecret, + "grant_type": "client_credentials", + "scope": "email image_url" + } + headers = { + "Content-Type": "application/x-www-form-urlencoded" + } + response = requests.post(config.URLAccessToken, data=data, headers=headers) + return response.json()['access_token'] def get_user_by_id(id, config): - token = get_token(config) - response = make_request(config.URLResourceOwner+"id/"+id, token) - return response + token = get_token(config) + response = make_request(config.URLResourceOwner + "id/" + id, token) + return response def get_user_by_username(username, config): - token = get_token(config) - response = make_request(config.URLResourceOwner+"username/"+username, token) - return response + token = get_token(config) + response = make_request(config.URLResourceOwner + "username/" + username, token) + return response def get_user_by_email(email, config): - token = get_token(config) - response = make_request(config.URLResourceOwner+"email/"+email, token) - return response + token = get_token(config) + response = make_request(config.URLResourceOwner + "email/" + email, token) + return response def get_logged_in_user(config, cookies): - cookie = cookies[COOKIE_NAME] - if cookie == "": - return "" - token = get_token(config) - user_data = make_request(config.URLResourceOwner+"logged_in_user/"+ cookie, token) - return user_data + cookie = cookies[COOKIE_NAME] + if cookie == "": + return "" + token = get_token(config) + user_data = make_request(config.URLResourceOwner + "logged_in_user/" + cookie, token) + return user_data def login(config, cookies): - user_data = get_logged_in_user(config, cookies) - if user_data == None: - user_data = HttpResponseRedirect(config.AccountsURL+"/login?redirect=//"+config.RedirectURL) - return user_data - \ No newline at end of file + user_data = get_logged_in_user(config, cookies) + if user_data is None: + user_data = HttpResponseRedirect(config.AccountsURL + "/login?redirect=//" + config.RedirectURL) + return user_data diff --git a/users/views.py b/users/views.py index 7778202..0f56bcb 100644 --- a/users/views.py +++ b/users/views.py @@ -30,6 +30,7 @@ 'test/resources/structure.json' ) + def getUserFromJWT(token): decoded_jwt = jwt.decode(token, SECRET_KEY, algorithms=['HS256']) user = User.objects.get(username=decoded_jwt['username']) @@ -54,7 +55,7 @@ def get(self, request): 'profile_image': user['image_url'], 'role': 'user' } - requests.post(NEXUS_URL+'/users', data=data) + requests.post(NEXUS_URL + '/users', data=data) queryset = User.objects.filter(falcon_id=user['id']) serializer = UserSerializer(queryset, many=True) user = serializer.data[0] @@ -288,23 +289,23 @@ def post(self, request): ext = type.split("/")[1].split(";")[0] base64String = file.split(",")[1] rand = str(random.randint(0, 100000)) - temp = open("temp"+rand+"."+ext, "wb") + temp = open("temp" + rand + "." + ext, "wb") temp.write(base64.b64decode(base64String)) file_details = { 'name': name, 'mime_type': mime_type, - 'location': "temp"+rand+"."+ext + 'location': "temp" + rand + "." + ext } # Get folder id from config course = Course.objects.get(id=request.data['course']) - folder_identifier = request.data['filetype'].lower().replace(" ","") + "_review" + folder_identifier = request.data['filetype'].lower().replace(" ", "") + "_review" folder_id = structure['study'][course.department.abbreviation][course.code][folder_identifier] driveid = uploadToDrive( driveinit(), folder_id, file_details ) - os.remove("temp"+rand+"."+ext) + os.remove("temp" + rand + "." + ext) # end of manipulation token = request.headers['Authorization'].split(' ')[1] username = getUserFromJWT(token)['username'] From 26c7b5b4d40a7ec696ad1e9705924acb9bebfec9 Mon Sep 17 00:00:00 2001 From: Ayan Choudhary Date: Wed, 22 Apr 2020 22:34:11 +0530 Subject: [PATCH 68/69] feat: added api_test fix: lint issues test test test test test test --- .github/workflows/api_test.yml | 37 + .github/workflows/lint_test.yml | 2 +- dump.sql | 6410 ++++++++++------- ingest.sh | 5 +- requirements.txt | 3 +- rest_api/test_rest_api.py | 87 + rest_api/tests.py | 3 - rest_api/views.py | 6 +- .../rest_api/sample_course_list_response.json | 24 + .../rest_api/sample_course_response.json | 13 + .../rest_api/sample_department_response.json | 32 + .../rest_api/sample_files_response.json | 212 + .../rest_api/sample_search_response.json | 132 + 13 files changed, 4418 insertions(+), 2548 deletions(-) create mode 100644 .github/workflows/api_test.yml create mode 100644 rest_api/test_rest_api.py delete mode 100644 rest_api/tests.py create mode 100644 studyportal/test/resources/rest_api/sample_course_list_response.json create mode 100644 studyportal/test/resources/rest_api/sample_course_response.json create mode 100644 studyportal/test/resources/rest_api/sample_department_response.json create mode 100644 studyportal/test/resources/rest_api/sample_files_response.json create mode 100644 studyportal/test/resources/rest_api/sample_search_response.json diff --git a/.github/workflows/api_test.yml b/.github/workflows/api_test.yml new file mode 100644 index 0000000..ec9809f --- /dev/null +++ b/.github/workflows/api_test.yml @@ -0,0 +1,37 @@ +name: Python CI + +on: + push: + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + - name: Set up Python 3.7 + uses: actions/setup-python@v1 + with: + python-version: 3.7 + - name: Install PostgreSQL 10 client + run: | + sudo apt-get -yqq install libpq-dev + - name: Install libexempi3 + run: | + sudo apt-get install -y libexempi3 + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -r requirements.txt + pip install pytest && pip install requests + - name: Start docker + run: | + docker container prune -f + docker-compose up -d + bash -c 'while [[ "$(curl --insecure -s -o /dev/null -w ''%{http_code}'' http://localhost:8005/api/v1/departments)" != "200" ]]; do sleep 10 && docker logs studyportal-nexus; done' + ./ingest.sh + bash -c 'while [[ "$(curl --insecure -s -o /dev/null -w ''%{http_code}'' http://localhost:8005/api/v1/search/?q=test)" != "200" ]]; do sleep 5; done' + - name: Run Tests + run: | + pytest diff --git a/.github/workflows/lint_test.yml b/.github/workflows/lint_test.yml index e7e8557..da4a93a 100644 --- a/.github/workflows/lint_test.yml +++ b/.github/workflows/lint_test.yml @@ -1,4 +1,4 @@ -name: Normalize Repos +name: Lint Test on: push: diff --git a/dump.sql b/dump.sql index 9d62dd7..801d446 100644 --- a/dump.sql +++ b/dump.sql @@ -1,2538 +1,3872 @@ --- --- PostgreSQL database dump --- - --- Dumped from database version 11.6 (Ubuntu 11.6-1.pgdg18.04+1) --- Dumped by pg_dump version 12.1 (Ubuntu 12.1-1.pgdg18.04+1) - -SET statement_timeout = 0; -SET lock_timeout = 0; -SET idle_in_transaction_session_timeout = 0; -SET client_encoding = 'UTF8'; -SET standard_conforming_strings = on; -SELECT pg_catalog.set_config('search_path', '', false); -SET check_function_bodies = false; -SET xmloption = content; -SET client_min_messages = warning; -SET row_security = off; - --- --- Data for Name: auth_group; Type: TABLE DATA; Schema: public; Owner: ayan --- - -COPY public.auth_group (id, name) FROM stdin; -\. - - --- --- Data for Name: django_content_type; Type: TABLE DATA; Schema: public; Owner: ayan --- - -COPY public.django_content_type (id, app_label, model) FROM stdin; -1 admin logentry -2 auth permission -3 auth group -4 auth user -5 contenttypes contenttype -6 sessions session -7 rest_api department -8 rest_api course -9 corsheaders corsmodel -10 rest_api file -12 rest_api user -13 rest_api upload -11 rest_api filerequest -14 rest_api courserequest -15 users courserequest -16 users filerequest -17 users upload -18 users user -\. - - --- --- Data for Name: auth_permission; Type: TABLE DATA; Schema: public; Owner: ayan --- - -COPY public.auth_permission (id, name, content_type_id, codename) FROM stdin; -1 Can add log entry 1 add_logentry -2 Can change log entry 1 change_logentry -3 Can delete log entry 1 delete_logentry -4 Can view log entry 1 view_logentry -5 Can add permission 2 add_permission -6 Can change permission 2 change_permission -7 Can delete permission 2 delete_permission -8 Can view permission 2 view_permission -9 Can add group 3 add_group -10 Can change group 3 change_group -11 Can delete group 3 delete_group -12 Can view group 3 view_group -13 Can add user 4 add_user -14 Can change user 4 change_user -15 Can delete user 4 delete_user -16 Can view user 4 view_user -17 Can add content type 5 add_contenttype -18 Can change content type 5 change_contenttype -19 Can delete content type 5 delete_contenttype -20 Can view content type 5 view_contenttype -21 Can add session 6 add_session -22 Can change session 6 change_session -23 Can delete session 6 delete_session -24 Can view session 6 view_session -25 Can add department 7 add_department -26 Can change department 7 change_department -27 Can delete department 7 delete_department -28 Can view department 7 view_department -29 Can add course 8 add_course -30 Can change course 8 change_course -31 Can delete course 8 delete_course -32 Can view course 8 view_course -33 Can add cors model 9 add_corsmodel -34 Can change cors model 9 change_corsmodel -35 Can delete cors model 9 delete_corsmodel -36 Can view cors model 9 view_corsmodel -37 Can add file 10 add_file -38 Can change file 10 change_file -39 Can delete file 10 delete_file -40 Can view file 10 view_file -41 Can add request 11 add_request -42 Can change request 11 change_request -43 Can delete request 11 delete_request -44 Can view request 11 view_request -45 Can add user 12 add_user -46 Can change user 12 change_user -47 Can delete user 12 delete_user -48 Can view user 12 view_user -49 Can add upload 13 add_upload -50 Can change upload 13 change_upload -51 Can delete upload 13 delete_upload -52 Can view upload 13 view_upload -53 Can add file request 11 add_filerequest -54 Can change file request 11 change_filerequest -55 Can delete file request 11 delete_filerequest -56 Can view file request 11 view_filerequest -57 Can add course request 14 add_courserequest -58 Can change course request 14 change_courserequest -59 Can delete course request 14 delete_courserequest -60 Can view course request 14 view_courserequest -61 Can add course request 15 add_courserequest -62 Can change course request 15 change_courserequest -63 Can delete course request 15 delete_courserequest -64 Can view course request 15 view_courserequest -65 Can add file request 16 add_filerequest -66 Can change file request 16 change_filerequest -67 Can delete file request 16 delete_filerequest -68 Can view file request 16 view_filerequest -69 Can add upload 17 add_upload -70 Can change upload 17 change_upload -71 Can delete upload 17 delete_upload -72 Can view upload 17 view_upload -73 Can add user 18 add_user -74 Can change user 18 change_user -75 Can delete user 18 delete_user -76 Can view user 18 view_user -\. - - --- --- Data for Name: auth_group_permissions; Type: TABLE DATA; Schema: public; Owner: ayan --- - -COPY public.auth_group_permissions (id, group_id, permission_id) FROM stdin; -\. - - --- --- Data for Name: auth_user; Type: TABLE DATA; Schema: public; Owner: ayan --- - -COPY public.auth_user (id, password, last_login, is_superuser, username, first_name, last_name, email, is_staff, is_active, date_joined) FROM stdin; -1 pbkdf2_sha256$150000$phcDEV5DES3Y$d98eD9VI70H8qv5HmkBTSVWWftepVUtHPJEH3dO4iOw= 2020-03-29 13:21:41.336611+05:30 t studyportal darkrider251099@gmail.com t t 2019-08-31 03:36:10.702663+05:30 -\. - - --- --- Data for Name: auth_user_groups; Type: TABLE DATA; Schema: public; Owner: ayan --- - -COPY public.auth_user_groups (id, user_id, group_id) FROM stdin; -\. - - --- --- Data for Name: auth_user_user_permissions; Type: TABLE DATA; Schema: public; Owner: ayan --- - -COPY public.auth_user_user_permissions (id, user_id, permission_id) FROM stdin; -\. - - --- --- Data for Name: corsheaders_corsmodel; Type: TABLE DATA; Schema: public; Owner: ayan --- - -COPY public.corsheaders_corsmodel (id, cors) FROM stdin; -\. - - --- --- Data for Name: django_admin_log; Type: TABLE DATA; Schema: public; Owner: ayan --- - -COPY public.django_admin_log (id, action_time, object_id, object_repr, action_flag, change_message, content_type_id, user_id) FROM stdin; -1 2019-08-31 03:36:50.287472+05:30 1 Electrical Engineering 1 [{"added": {}}] 7 1 -2 2019-08-31 03:37:04.31955+05:30 1 Network Theory 1 [{"added": {}}] 8 1 -3 2019-08-31 03:54:25.119222+05:30 1 Electrical Engineering 2 [] 7 1 -4 2019-08-31 03:54:31.322563+05:30 1 Network Theory 2 [] 8 1 -5 2019-08-31 04:34:34.019852+05:30 1 Tutorial 1 1 [{"added": {}}] 10 1 -6 2019-08-31 16:22:31.953574+05:30 20 Network Theory 1 [{"added": {}}] 8 1 -7 2019-08-31 16:23:07.668362+05:30 21 Analog Electronic 1 [{"added": {}}] 8 1 -8 2019-09-01 18:40:23.758295+05:30 3 Electronics and Communication Engineering 1 [{"added": {}}] 7 1 -9 2019-09-01 18:40:49.934904+05:30 22 Semiconductor Devices 1 [{"added": {}}] 8 1 -10 2019-09-01 18:52:11.421957+05:30 4 Production and Industrial Engineering 1 [{"added": {}}] 7 1 -11 2019-09-01 18:52:48.474841+05:30 5 Polymer Science And Engineering 1 [{"added": {}}] 7 1 -12 2019-09-01 18:53:45.669+05:30 6 Computer Science and Engineering 1 [{"added": {}}] 7 1 -13 2019-09-01 18:54:02.81564+05:30 7 Mechanical Engineering 1 [{"added": {}}] 7 1 -14 2019-09-01 18:54:22.464381+05:30 8 Applied Mathematics 1 [{"added": {}}] 7 1 -15 2019-09-01 18:56:00.579686+05:30 9 Metallurgical and Materials Engineering 1 [{"added": {}}] 7 1 -16 2019-09-01 18:56:38.397921+05:30 10 Civil Engineering 1 [{"added": {}}] 7 1 -17 2019-09-01 18:57:07.875368+05:30 11 Biotechnology 1 [{"added": {}}] 7 1 -18 2019-09-01 18:57:53.777036+05:30 12 Engineering Physics 1 [{"added": {}}] 7 1 -19 2019-09-01 23:46:37.651322+05:30 2 Tutorial 1 1 [{"added": {}}] 10 1 -20 2019-09-02 00:44:01.017669+05:30 23 Digital Logic Design 1 [{"added": {}}] 8 1 -21 2019-09-22 00:58:42.730454+05:30 1 Electrical Engineering 2 [{"changed": {"fields": ["url"]}}] 7 1 -22 2019-09-29 05:15:20.479451+05:30 1 Electrical Engineering 2 [{"changed": {"fields": ["url"]}}] 7 1 -23 2019-09-29 05:16:19.869223+05:30 12 Engineering Physics 2 [{"changed": {"fields": ["url"]}}] 7 1 -24 2019-09-29 05:16:56.184047+05:30 11 Biotechnology 2 [{"changed": {"fields": ["url"]}}] 7 1 -25 2019-09-29 05:16:58.799201+05:30 11 Biotechnology 2 [] 7 1 -26 2019-09-29 05:17:12.120682+05:30 10 Civil Engineering 2 [{"changed": {"fields": ["url"]}}] 7 1 -27 2019-09-29 05:17:49.040713+05:30 9 Metallurgical and Materials Engineering 2 [{"changed": {"fields": ["url"]}}] 7 1 -28 2019-09-29 05:18:21.688429+05:30 8 Applied Mathematics 2 [{"changed": {"fields": ["url"]}}] 7 1 -29 2019-09-29 05:18:55.520266+05:30 7 Mechanical Engineering 2 [{"changed": {"fields": ["url"]}}] 7 1 -30 2019-09-29 05:19:07.410987+05:30 6 Computer Science and Engineering 2 [{"changed": {"fields": ["url"]}}] 7 1 -31 2019-09-29 05:19:39.884534+05:30 5 Polymer Science And Engineering 2 [{"changed": {"fields": ["url"]}}] 7 1 -32 2019-09-29 05:19:50.937692+05:30 4 Production and Industrial Engineering 2 [{"changed": {"fields": ["url"]}}] 7 1 -33 2019-09-29 05:20:16.116946+05:30 3 Electronics and Communication Engineering 2 [{"changed": {"fields": ["url"]}}] 7 1 -34 2019-09-29 05:20:33.387465+05:30 2 Chemical Engineering 2 [{"changed": {"fields": ["url"]}}] 7 1 -35 2019-09-29 05:21:02.159236+05:30 5 Polymer Science And Engineering 2 [{"changed": {"fields": ["url"]}}] 7 1 -36 2019-09-29 05:21:14.854116+05:30 12 Engineering Physics 2 [{"changed": {"fields": ["url"]}}] 7 1 -37 2019-10-03 17:47:28.879348+05:30 2 Tutorial 1 3 10 1 -38 2019-10-03 17:54:43.554002+05:30 3 Tutorial-1 1 [{"added": {}}] 10 1 -39 2019-10-07 21:08:48.113809+05:30 3 Tutorial-1 3 10 1 -40 2019-10-07 21:12:30.92814+05:30 4 Tutorial-1 1 [{"added": {}}] 10 1 -41 2019-10-07 21:25:24.814566+05:30 4 Tutorial-1 3 10 1 -42 2019-10-07 21:27:19.56742+05:30 5 Tutorial-1 1 [{"added": {}}] 10 1 -43 2019-10-07 21:40:00.295493+05:30 5 Tutorial-1 3 10 1 -44 2019-10-07 21:42:17.597176+05:30 6 Tutorial-1 1 [{"added": {}}] 10 1 -45 2019-10-07 21:43:41.290064+05:30 6 Tutorial-1 3 10 1 -46 2019-10-07 21:45:25.811711+05:30 7 Tutorial-1 1 [{"added": {}}] 10 1 -47 2019-10-07 21:47:31.121135+05:30 7 Tutorial-1 2 [{"changed": {"fields": ["file"]}}] 10 1 -48 2019-10-07 21:49:09.948481+05:30 7 Tutorial-1 2 [{"changed": {"fields": ["filetype"]}}] 10 1 -49 2019-10-07 21:49:42.176864+05:30 7 Tutorial-1 2 [{"changed": {"fields": ["file"]}}] 10 1 -50 2019-10-07 21:50:03.280286+05:30 7 Tutorial-1 2 [{"changed": {"fields": ["file"]}}] 10 1 -51 2019-10-07 21:50:48.796738+05:30 7 Tutorial-1 2 [{"changed": {"fields": ["file"]}}] 10 1 -52 2019-10-07 21:51:07.962575+05:30 7 Tutorial-1 2 [{"changed": {"fields": ["file", "filetype"]}}] 10 1 -53 2019-10-07 21:51:32.1278+05:30 7 Tutorial-1 2 [{"changed": {"fields": ["file", "filetype"]}}] 10 1 -54 2019-10-07 22:43:10.331447+05:30 7 files/exampapers/Booking_Details.pdf 2 [] 10 1 -55 2019-10-07 23:05:30.822267+05:30 7 files/exampapers/Booking_Details.pdf 2 [] 10 1 -56 2019-10-07 23:08:06.569891+05:30 7 files/exampapers/Booking_Details.pdf 3 10 1 -57 2019-10-07 23:08:26.276963+05:30 8 files/tutorials/air_asia.pdf 1 [{"added": {}}] 10 1 -58 2019-10-08 01:35:42.408579+05:30 8 Tutorial-1 2 [{"changed": {"fields": ["title", "size", "fileext"]}}] 10 1 -59 2019-10-08 01:56:19.493557+05:30 9 Tutorial 2 1 [{"added": {}}] 10 1 -60 2019-10-08 01:57:03.270698+05:30 9 Network Thory-E Kandestal 2 [{"changed": {"fields": ["title"]}}] 10 1 -61 2019-10-08 03:02:30.629132+05:30 8 Tutorial-1 3 10 1 -62 2019-10-08 03:02:37.546398+05:30 9 Network Thory-E Kandestal 3 10 1 -63 2019-10-08 03:07:57.588343+05:30 11 files/tutorials/bash_9a7gZHO.sh 1 [{"added": {}}] 10 1 -64 2019-10-08 03:15:00.894022+05:30 12 ayan 1 [{"added": {}}] 10 1 -65 2019-10-08 03:58:48.008136+05:30 13 Ayan_Choudhary_s_CV 1 [{"added": {}}] 10 1 -66 2019-10-08 03:59:52.396627+05:30 14 image 1 [{"added": {}}] 10 1 -67 2019-10-14 22:43:10.811133+05:30 15 Booking_Details 1 [{"added": {}}] 10 1 -68 2019-10-30 20:39:51.765372+05:30 62 Electrical Machines 3 8 1 -69 2019-10-30 20:40:09.729271+05:30 61 Electrical Machines 3 8 1 -70 2019-10-30 20:40:09.760195+05:30 60 Electrical Machines 3 8 1 -71 2019-10-30 20:40:09.804347+05:30 59 Electrical Machines 3 8 1 -72 2019-10-30 20:40:09.847407+05:30 58 Electrical Machines 3 8 1 -73 2019-10-30 20:40:09.890957+05:30 57 Electrical Machines 3 8 1 -74 2019-10-30 20:40:09.91068+05:30 56 Electrical Machines 3 8 1 -75 2019-10-30 20:40:09.923135+05:30 55 Electrical Machines 3 8 1 -76 2019-10-31 13:48:03.561102+05:30 72 Electrical Machines 3 8 1 -77 2019-10-31 13:53:03.544984+05:30 73 Electrical Machines 3 8 1 -78 2019-10-31 13:53:22.222201+05:30 74 Electrical Machines 3 8 1 -79 2019-10-31 14:50:25.019963+05:30 15 Booking_Details 3 10 1 -80 2019-10-31 14:50:25.10833+05:30 14 image 3 10 1 -81 2019-10-31 14:50:25.120539+05:30 13 Ayan_Choudhary_s_CV 3 10 1 -82 2019-10-31 14:50:25.133455+05:30 12 ayan 3 10 1 -83 2019-10-31 14:50:25.145842+05:30 11 bash_9a7gZHO 3 10 1 -1387 2020-02-19 17:49:53.753122+05:30 24 nkansn 3 11 1 -84 2019-10-31 20:12:36.013471+05:30 75 Structural Analysis - 1 2 [{"changed": {"fields": ["department"]}}] 8 1 -85 2019-11-01 22:27:52.215454+05:30 16 Geo Physical Technology 3 7 1 -86 2019-11-03 21:28:51.079131+05:30 76 Digital Electronic 1 [{"added": {}}] 8 1 -87 2019-11-03 21:42:16.723202+05:30 18 PDF 3 10 1 -88 2019-11-03 21:42:17.249831+05:30 17 PDF 3 10 1 -89 2019-11-03 21:52:20.074742+05:30 22 ECN-212 End term solution.PDF 3 10 1 -90 2019-11-03 21:52:20.146644+05:30 21 ECN-212 quiz 2 solution.PDF 3 10 1 -91 2019-11-03 21:55:35.028127+05:30 24 ECN-212 End term solution.PDF 3 10 1 -92 2019-11-03 21:55:35.162977+05:30 23 ECN-212 quiz 2 solution.PDF 3 10 1 -93 2019-11-24 17:54:44.497669+05:30 50 Water Resources Development and Management 3 7 1 -94 2019-11-24 17:54:45.21382+05:30 49 Physics 3 7 1 -95 2019-11-24 17:54:45.226342+05:30 48 Polymer and Process Engineering 3 7 1 -96 2019-11-24 17:54:45.2386+05:30 47 Paper Technology 3 7 1 -97 2019-11-24 17:54:45.251355+05:30 46 Metallurgical and Materials Engineering 3 7 1 -98 2019-11-24 17:54:45.263929+05:30 45 Mechanical and Industrial Engineering 3 7 1 -99 2019-11-24 17:54:45.277148+05:30 44 Mathematics 3 7 1 -100 2019-11-24 17:54:45.289158+05:30 43 Management Studies 3 7 1 -101 2019-11-24 17:54:45.302102+05:30 42 Hydrology 3 7 1 -102 2019-11-24 17:54:45.314546+05:30 41 Humanities and Social Sciences 3 7 1 -103 2019-11-24 17:54:45.327429+05:30 40 Electronics and Communication Engineering 3 7 1 -104 2019-11-24 17:54:45.339816+05:30 39 Electrical Engineering 3 7 1 -105 2019-11-24 17:54:45.352784+05:30 38 Earth Sciences 3 7 1 -106 2019-11-24 17:54:45.365316+05:30 37 Earthquake 3 7 1 -107 2019-11-24 17:54:45.378121+05:30 36 Computer Science and Engineering 3 7 1 -108 2019-11-24 17:54:45.39061+05:30 35 Civil Engineering 3 7 1 -109 2019-11-24 17:54:45.403283+05:30 34 Chemistry 3 7 1 -110 2019-11-24 17:54:45.415805+05:30 33 Chemical Engineering 3 7 1 -111 2019-11-24 17:54:45.428877+05:30 32 Biotechnology 3 7 1 -112 2019-11-24 17:54:45.441173+05:30 31 Architecture and Planning 3 7 1 -113 2019-11-24 17:54:45.454032+05:30 30 Applied Science and Engineering 3 7 1 -114 2019-11-24 17:54:45.466402+05:30 29 Hydro and Renewable Energy 3 7 1 -115 2019-11-24 17:54:45.487406+05:30 28 Physics 3 7 1 -116 2019-11-24 17:54:45.499865+05:30 27 Paper Technology 3 7 1 -117 2019-11-24 17:54:45.513243+05:30 26 Mathematics 3 7 1 -118 2019-11-24 17:54:45.525314+05:30 25 Management Studies 3 7 1 -119 2019-11-24 17:54:45.538197+05:30 24 Hydrology 3 7 1 -120 2019-11-24 17:54:45.550578+05:30 23 Humanities and Social Sciences 3 7 1 -121 2019-11-24 17:54:45.563445+05:30 22 Electrical Engineering 3 7 1 -122 2019-11-24 17:54:45.57562+05:30 21 Earth Sciences 3 7 1 -123 2019-11-24 17:54:45.588294+05:30 20 Earthquake 3 7 1 -124 2019-11-24 17:54:45.60082+05:30 19 Civil Engineering 3 7 1 -125 2019-11-24 17:54:45.613964+05:30 18 Chemistry 3 7 1 -126 2019-11-24 17:54:45.626746+05:30 17 Biotechnology 3 7 1 -127 2019-11-24 17:54:45.639346+05:30 15 Geo Physical Technology 3 7 1 -128 2019-11-24 17:54:45.652266+05:30 14 Geotechnology 3 7 1 -129 2019-11-24 17:54:45.664961+05:30 13 Textile Engineering 3 7 1 -130 2019-11-24 17:54:45.677714+05:30 12 Engineering Physics 3 7 1 -131 2019-11-24 17:54:45.690098+05:30 11 Biotechnology 3 7 1 -132 2019-11-24 17:54:45.703099+05:30 10 Civil Engineering 3 7 1 -133 2019-11-24 17:54:45.715301+05:30 9 Metallurgical and Materials Engineering 3 7 1 -134 2019-11-24 17:54:45.728368+05:30 8 Applied Mathematics 3 7 1 -135 2019-11-24 17:54:45.740847+05:30 7 Mechanical Engineering 3 7 1 -136 2019-11-24 17:54:45.753659+05:30 6 Computer Science and Engineering 3 7 1 -137 2019-11-24 17:54:45.765918+05:30 5 Polymer Science And Engineering 3 7 1 -138 2019-11-24 17:54:45.778933+05:30 4 Production and Industrial Engineering 3 7 1 -139 2019-11-24 17:54:45.794905+05:30 3 Electronics and Communication Engineering 3 7 1 -140 2019-11-24 17:54:45.807774+05:30 2 Chemical Engineering 3 7 1 -141 2019-11-24 17:54:45.820362+05:30 1 Electrical Engineering 3 7 1 -142 2019-11-24 17:55:54.937495+05:30 72 Water Resources Development and Management 3 7 1 -143 2019-11-24 17:55:55.316912+05:30 71 Physics 3 7 1 -144 2019-11-24 17:55:55.516329+05:30 70 Polymer and Process Engineering 3 7 1 -145 2019-11-24 17:55:55.783961+05:30 69 Paper Technology 3 7 1 -146 2019-11-24 17:55:55.972369+05:30 68 Metallurgical and Materials Engineering 3 7 1 -147 2019-11-24 17:55:56.132009+05:30 67 Mechanical and Industrial Engineering 3 7 1 -148 2019-11-24 17:55:56.311779+05:30 66 Mathematics 3 7 1 -149 2019-11-24 17:55:56.51721+05:30 65 Management Studies 3 7 1 -150 2019-11-24 17:55:56.705686+05:30 64 Hydrology 3 7 1 -151 2019-11-24 17:55:56.877536+05:30 63 Humanities and Social Sciences 3 7 1 -152 2019-11-24 17:55:57.173766+05:30 62 Electronics and Communication Engineering 3 7 1 -153 2019-11-24 17:55:57.329031+05:30 61 Electrical Engineering 3 7 1 -154 2019-11-24 17:55:57.646289+05:30 60 Earth Sciences 3 7 1 -155 2019-11-24 17:55:57.797086+05:30 59 Earthquake 3 7 1 -156 2019-11-24 17:55:57.939833+05:30 58 Computer Science and Engineering 3 7 1 -157 2019-11-24 17:55:58.092144+05:30 57 Civil Engineering 3 7 1 -158 2019-11-24 17:55:58.22709+05:30 56 Chemistry 3 7 1 -159 2019-11-24 17:55:58.362757+05:30 55 Chemical Engineering 3 7 1 -160 2019-11-24 17:55:58.505943+05:30 54 Biotechnology 3 7 1 -161 2019-11-24 17:55:58.674344+05:30 53 Architecture and Planning 3 7 1 -162 2019-11-24 17:55:58.817388+05:30 52 Applied Science and Engineering 3 7 1 -163 2019-11-24 17:55:58.969347+05:30 51 Hydro and Renewable Energy 3 7 1 -164 2019-11-24 18:37:46.348197+05:30 663 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 3 8 1 -165 2019-11-24 18:37:46.441522+05:30 662 SEMINAR 3 8 1 -166 2019-11-24 18:37:46.453867+05:30 661 On Farm Development 3 8 1 -167 2019-11-24 18:37:46.466845+05:30 660 Principles and Practices of Irrigation 3 8 1 -168 2019-11-24 18:37:46.479344+05:30 659 Design of Irrigation Structures and Drainage Works 3 8 1 -169 2019-11-24 18:37:46.492059+05:30 658 Construction Planning and Management 3 8 1 -170 2019-11-24 18:37:46.517504+05:30 657 Design of Hydro Mechanical Equipment 3 8 1 -171 2019-11-24 18:37:46.529896+05:30 656 Power System Protection Application 3 8 1 -172 2019-11-24 18:37:46.542834+05:30 655 Hydropower System Planning 3 8 1 -173 2019-11-24 18:37:46.555145+05:30 654 Hydro Generating Equipment 3 8 1 -174 2019-11-24 18:37:46.56808+05:30 653 Applied Hydrology 3 8 1 -175 2019-11-24 18:37:46.580466+05:30 652 Water Resources Planning and Management 3 8 1 -176 2019-11-24 18:37:46.593604+05:30 651 Design of Water Resources Structures 3 8 1 -177 2019-11-24 18:37:46.605729+05:30 650 System Design Techniques 3 8 1 -178 2019-11-24 18:37:46.700837+05:30 649 MATHEMATICAL AND COMPUTATIONAL TECHNIQUES 3 8 1 -179 2019-11-24 18:37:46.712877+05:30 648 Experimental Techniques 3 8 1 -180 2019-11-24 18:37:46.726566+05:30 647 Laboratory Work in Photonics 3 8 1 -181 2019-11-24 18:37:46.739038+05:30 646 Semiconductor Device Physics 3 8 1 -182 2019-11-24 18:37:46.751928+05:30 645 Computational Techniques and Programming 3 8 1 -183 2019-11-24 18:37:46.764765+05:30 644 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 3 8 1 -184 2019-11-24 18:37:46.777338+05:30 643 SEMINAR 3 8 1 -185 2019-11-24 18:37:46.790028+05:30 642 SEMINAR 3 8 1 -186 2019-11-24 18:37:46.802452+05:30 641 Numerical Analysis & Computer Programming 3 8 1 -187 2019-11-24 18:37:46.815704+05:30 640 Semiconductor Photonics 3 8 1 -188 2019-11-24 18:37:46.827768+05:30 639 Quantum Theory of Solids 3 8 1 -189 2019-11-24 18:37:46.840715+05:30 638 A Primer in Quantum Field Theory 3 8 1 -190 2019-11-24 18:37:46.853353+05:30 637 Advanced Characterization Techniques 3 8 1 -191 2019-11-24 18:37:46.865987+05:30 636 Advanced Nuclear Physics 3 8 1 -192 2019-11-24 18:37:46.87836+05:30 635 Advanced Laser Physics 3 8 1 -193 2019-11-24 18:37:46.891343+05:30 634 Advanced Condensed Matter Physics 3 8 1 -194 2019-11-24 18:37:46.903994+05:30 633 DISSERTATION STAGE-I 3 8 1 -195 2019-11-24 18:37:46.916754+05:30 632 SEMICONDUCTOR DEVICES AND APPLICATIONS 3 8 1 -196 2019-11-24 18:37:46.929254+05:30 631 Classical Mechanics 3 8 1 -197 2019-11-24 18:37:46.941912+05:30 630 Mathematical Physics 3 8 1 -198 2019-11-24 18:37:46.954334+05:30 629 Quantum Mechanics – I 3 8 1 -199 2019-11-24 18:37:46.967321+05:30 628 Training Seminar 3 8 1 -200 2019-11-24 18:37:46.979773+05:30 627 B.Tech. Project 3 8 1 -201 2019-11-24 18:37:46.992548+05:30 626 Nuclear Astrophysics 3 8 1 -202 2019-11-24 18:37:47.005299+05:30 625 Techincal Communication 3 8 1 -203 2019-11-24 18:37:47.017918+05:30 624 Laser & Photonics 3 8 1 -204 2019-11-24 18:37:47.030355+05:30 623 Signals and Systems 3 8 1 -205 2019-11-24 18:37:47.043207+05:30 622 Numerical Analysis and Computational Physics 3 8 1 -206 2019-11-24 18:37:47.055512+05:30 621 Applied Instrumentation 3 8 1 -207 2019-11-24 18:37:47.068788+05:30 620 Lab-based Project 3 8 1 -208 2019-11-24 18:37:47.080932+05:30 619 Microprocessors and Peripheral Devices 3 8 1 -209 2019-11-24 18:37:47.093794+05:30 618 Mathematical Physics 3 8 1 -210 2019-11-24 18:37:47.106217+05:30 617 Mechanics and Relativity 3 8 1 -211 2019-11-24 18:37:47.119147+05:30 616 Atomic Molecular and Laser Physics 3 8 1 -212 2019-11-24 18:37:47.131561+05:30 615 Computer Programming 3 8 1 -213 2019-11-24 18:37:47.144463+05:30 614 Introduction to Physical Science 3 8 1 -214 2019-11-24 18:37:47.156832+05:30 613 Modern Physics 3 8 1 -215 2019-11-24 18:37:47.16978+05:30 612 QUARK GLUON PLASMA & FINITE TEMPERATURE FIELD THEORY 3 8 1 -216 2019-11-24 18:37:47.181992+05:30 611 Optical Electronics 3 8 1 -217 2019-11-24 18:37:47.19487+05:30 610 Semiconductor Materials and Devices 3 8 1 -218 2019-11-24 18:37:47.207032+05:30 609 Laboratory Work 3 8 1 -219 2019-11-24 18:37:47.220232+05:30 608 Weather Forecasting 3 8 1 -220 2019-11-24 18:37:47.232536+05:30 607 Advanced Atmospheric Physics 3 8 1 -221 2019-11-24 18:37:47.2453+05:30 606 Physics of Earth’s Atmosphere 3 8 1 -222 2019-11-24 18:37:47.25839+05:30 605 Classical Electrodynamics 3 8 1 -223 2019-11-24 18:37:47.270738+05:30 604 Laboratory Work 3 8 1 -224 2019-11-24 18:37:47.283881+05:30 603 QUANTUM INFORMATION AND COMPUTING 3 8 1 -225 2019-11-24 18:37:47.296247+05:30 602 Plasma Physics and Applications 3 8 1 -226 2019-11-24 18:37:47.309331+05:30 601 Applied Optics 3 8 1 -227 2019-11-24 18:37:47.321721+05:30 600 Quantum Physics 3 8 1 -228 2019-11-24 18:37:47.33464+05:30 599 Engineering Analysis Design 3 8 1 -229 2019-11-24 18:37:47.346979+05:30 598 Quantum Mechanics and Statistical Mechanics 3 8 1 -230 2019-11-24 18:37:47.359996+05:30 597 Electrodynamics and Optics 3 8 1 -231 2019-11-24 18:37:47.372299+05:30 596 Applied Physics 3 8 1 -232 2019-11-24 18:37:47.385357+05:30 595 Electromagnetic Field Theory 3 8 1 -233 2019-11-24 18:37:47.397662+05:30 594 Mechanics 3 8 1 -234 2019-11-24 18:37:47.410566+05:30 593 Advanced Atmospheric Physics 3 8 1 -235 2019-11-24 18:37:47.426697+05:30 592 Elements of Nuclear and Particle Physics 3 8 1 -236 2019-11-24 18:37:47.439638+05:30 591 Physics of Earth’s Atmosphere 3 8 1 -237 2019-11-24 18:37:47.451921+05:30 590 Computational Physics 3 8 1 -238 2019-11-24 18:37:47.464848+05:30 589 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 3 8 1 -239 2019-11-24 18:37:47.477201+05:30 588 SEMINAR 3 8 1 -240 2019-11-24 18:37:47.490121+05:30 587 Converting Processes for Packaging 3 8 1 -241 2019-11-24 18:37:47.502522+05:30 586 Printing Technology 3 8 1 -242 2019-11-24 18:37:47.51556+05:30 585 Packaging Materials 3 8 1 -243 2019-11-24 18:37:47.528025+05:30 584 Packaging Principles, Processes and Sustainability 3 8 1 -244 2019-11-24 18:37:47.541069+05:30 583 Process Instrumentation and Control 3 8 1 -245 2019-11-24 18:37:47.553237+05:30 582 Advanced Numerical Methods and Statistics 3 8 1 -246 2019-11-24 18:37:47.56607+05:30 581 Paper Proprieties and Stock Preparation 3 8 1 -247 2019-11-24 18:37:47.578437+05:30 580 Chemical Recovery Process 3 8 1 -248 2019-11-24 18:37:47.591459+05:30 579 Pulping 3 8 1 -249 2019-11-24 18:37:47.604089+05:30 578 Printing Technology 3 8 1 -250 2019-11-24 18:37:47.616783+05:30 577 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 3 8 1 -251 2019-11-24 18:37:47.629352+05:30 576 SEMINAR 3 8 1 -252 2019-11-24 18:37:47.642007+05:30 575 Numerical Methods in Manufacturing 3 8 1 -253 2019-11-24 18:37:47.654836+05:30 574 Non-Traditional Machining Processes 3 8 1 -254 2019-11-24 18:37:47.667425+05:30 573 Materials Management 3 8 1 -255 2019-11-24 18:37:47.679687+05:30 572 Machine Tool Design and Numerical Control 3 8 1 -256 2019-11-24 18:37:47.692915+05:30 571 Design for Manufacturability 3 8 1 -257 2019-11-24 18:37:47.705294+05:30 570 Advanced Manufacturing Processes 3 8 1 -258 2019-11-24 18:37:47.717931+05:30 569 Quality Management 3 8 1 -259 2019-11-24 18:37:47.730422+05:30 568 Operations Management 3 8 1 -260 2019-11-24 18:37:47.743242+05:30 567 Computer Aided Design 3 8 1 -261 2019-11-24 18:37:47.755636+05:30 566 Advanced Mechanics of Solids 3 8 1 -262 2019-11-24 18:37:47.768903+05:30 565 Dynamics of Mechanical Systems 3 8 1 -263 2019-11-24 18:37:47.781012+05:30 564 Micro and Nano Scale Thermal Engineering 3 8 1 -264 2019-11-24 18:37:47.794705+05:30 563 Hydro-dynamic Machines 3 8 1 -265 2019-11-24 18:37:47.807151+05:30 562 Solar Energy 3 8 1 -1388 2020-02-19 17:49:53.765557+05:30 23 dasasd 3 11 1 -266 2019-11-24 18:37:47.819886+05:30 561 Advanced Heat Transfer 3 8 1 -267 2019-11-24 18:37:47.832344+05:30 560 Advanced Fluid Mechanics 3 8 1 -268 2019-11-24 18:37:47.845377+05:30 559 Advanced Thermodynamics 3 8 1 -269 2019-11-24 18:37:47.857583+05:30 558 Modeling and Simulation 3 8 1 -270 2019-11-24 18:37:47.870501+05:30 557 Modeling and Simulation 3 8 1 -271 2019-11-24 18:37:47.883108+05:30 556 Robotics and Control 3 8 1 -272 2019-11-24 18:37:47.895838+05:30 555 Training Seminar 3 8 1 -273 2019-11-24 18:37:47.909039+05:30 554 B.Tech. Project 3 8 1 -274 2019-11-24 18:37:47.921592+05:30 553 Technical Communication 3 8 1 -275 2019-11-24 18:37:47.934073+05:30 552 Refrigeration and Air-Conditioning 3 8 1 -276 2019-11-24 18:37:47.946596+05:30 551 Industrial Management 3 8 1 -277 2019-11-24 18:37:47.95949+05:30 550 Vibration and Noise 3 8 1 -278 2019-11-24 18:37:47.971995+05:30 549 Operations Research 3 8 1 -279 2019-11-24 18:37:47.984429+05:30 548 Principles of Industrial Enigneering 3 8 1 -280 2019-11-24 18:37:47.996664+05:30 547 Dynamics of Machines 3 8 1 -281 2019-11-24 18:37:48.022749+05:30 546 THEORY OF MACHINES 3 8 1 -282 2019-11-24 18:37:48.048461+05:30 545 Energy Conversion 3 8 1 -283 2019-11-24 18:37:48.073134+05:30 544 THERMAL ENGINEERING 3 8 1 -284 2019-11-24 18:37:48.099319+05:30 543 FLUID MECHANICS 3 8 1 -285 2019-11-24 18:37:48.124542+05:30 542 MANUFACTURING TECHNOLOGY-II 3 8 1 -286 2019-11-24 18:37:48.150437+05:30 541 KINEMATICS OF MACHINES 3 8 1 -287 2019-11-24 18:37:48.392386+05:30 540 Non-Conventional Welding Processes 3 8 1 -288 2019-11-24 18:37:49.15385+05:30 539 Smart Materials, Structures, and Devices 3 8 1 -289 2019-11-24 18:37:49.179989+05:30 538 Advanced Mechanical Vibrations 3 8 1 -290 2019-11-24 18:37:49.191964+05:30 537 Finite Element Methods 3 8 1 -291 2019-11-24 18:37:49.204751+05:30 536 Computer Aided Mechanism Design 3 8 1 -292 2019-11-24 18:37:49.230658+05:30 535 Computational Fluid Dynamics & Heat Transfer 3 8 1 -293 2019-11-24 18:37:49.255487+05:30 534 Instrumentation and Experimental Methods 3 8 1 -294 2019-11-24 18:37:49.269289+05:30 533 Power Plants 3 8 1 -295 2019-11-24 18:37:49.295266+05:30 532 Work System Desing 3 8 1 -296 2019-11-24 18:37:49.320172+05:30 531 Theory of Production Processes-II 3 8 1 -297 2019-11-24 18:37:49.343651+05:30 530 Heat and Mass Transfer 3 8 1 -298 2019-11-24 18:37:49.35634+05:30 529 Machine Design 3 8 1 -299 2019-11-24 18:37:49.370684+05:30 528 Lab Based Project 3 8 1 -300 2019-11-24 18:37:49.381958+05:30 527 ENGINEERING ANALYSIS AND DESIGN 3 8 1 -301 2019-11-24 18:37:49.394233+05:30 526 Theory of Production Processes - I 3 8 1 -302 2019-11-24 18:37:49.407183+05:30 525 Fluid Mechanics 3 8 1 -303 2019-11-24 18:37:49.41955+05:30 524 Mechanical Engineering Drawing 3 8 1 -304 2019-11-24 18:37:49.43292+05:30 523 Engineering Thermodynamics 3 8 1 -305 2019-11-24 18:37:49.44531+05:30 522 Programming and Data Structure 3 8 1 -306 2019-11-24 18:37:49.457975+05:30 521 Introduction to Production and Industrial Engineering 3 8 1 -307 2019-11-24 18:37:49.470435+05:30 520 Introduction to Mechanical Engineering 3 8 1 -308 2019-11-24 18:37:49.483753+05:30 519 Advanced Manufacturing Processes 3 8 1 -309 2019-11-24 18:37:49.495893+05:30 518 ADVANCED NUMERICAL ANALYSIS 3 8 1 -310 2019-11-24 18:37:49.508846+05:30 517 SELECTED TOPICS IN ANALYSIS 3 8 1 -311 2019-11-24 18:37:49.521052+05:30 516 SEMINAR 3 8 1 -312 2019-11-24 18:37:49.533962+05:30 515 Seminar 3 8 1 -313 2019-11-24 18:37:49.546498+05:30 514 Orthogonal Polynomials and Special Functions 3 8 1 -314 2019-11-24 18:37:49.559392+05:30 513 Financial Mathematics 3 8 1 -315 2019-11-24 18:37:49.571917+05:30 512 Dynamical Systems 3 8 1 -316 2019-11-24 18:37:49.584887+05:30 511 CONTROL THEORY 3 8 1 -317 2019-11-24 18:37:49.597143+05:30 510 Coding Theory 3 8 1 -318 2019-11-24 18:37:49.610122+05:30 509 Advanced Numerical Analysis 3 8 1 -319 2019-11-24 18:37:49.622677+05:30 508 Mathematical Statistics 3 8 1 -320 2019-11-24 18:37:49.635518+05:30 507 SEMINAR 3 8 1 -321 2019-11-24 18:37:49.647767+05:30 506 OPERATIONS RESEARCH 3 8 1 -322 2019-11-24 18:37:49.660743+05:30 505 FUNCTIONAL ANALYSIS 3 8 1 -323 2019-11-24 18:37:49.673174+05:30 504 Functional Analysis 3 8 1 -324 2019-11-24 18:37:49.686719+05:30 503 Tensors and Differential Geometry 3 8 1 -325 2019-11-24 18:37:49.699015+05:30 502 Fluid Dynamics 3 8 1 -326 2019-11-24 18:37:49.711812+05:30 501 Mathematics 3 8 1 -327 2019-11-24 18:37:49.724936+05:30 500 SOFT COMPUTING 3 8 1 -328 2019-11-24 18:37:49.737329+05:30 499 Complex Analysis 3 8 1 -329 2019-11-24 18:37:49.750624+05:30 498 Computer Programming 3 8 1 -330 2019-11-24 18:37:49.76259+05:30 497 Abstract Algebra 3 8 1 -331 2019-11-24 18:37:49.775566+05:30 496 Topology 3 8 1 -332 2019-11-24 18:37:49.78827+05:30 495 Real Analysis 3 8 1 -333 2019-11-24 18:37:49.800943+05:30 494 Theory of Ordinary Differential Equations 3 8 1 -334 2019-11-24 18:37:49.8133+05:30 493 Complex Analysis-II 3 8 1 -335 2019-11-24 18:37:49.826111+05:30 492 Theory of Partial Differential Equations 3 8 1 -336 2019-11-24 18:37:49.83875+05:30 491 Topology 3 8 1 -337 2019-11-24 18:37:49.85149+05:30 490 Real Analysis-II 3 8 1 -338 2019-11-24 18:37:49.87208+05:30 489 THEORY OF ORDINARY DIFFERENTIAL EQUATIONS 3 8 1 -339 2019-11-24 18:37:49.885441+05:30 488 Technical Communication 3 8 1 -340 2019-11-24 18:37:49.897526+05:30 487 MATHEMATICAL IMAGING TECHNOLOGY 3 8 1 -341 2019-11-24 18:37:49.91039+05:30 486 Linear Programming 3 8 1 -342 2019-11-24 18:37:49.922626+05:30 485 Mathematical Statistics 3 8 1 -343 2019-11-24 18:37:49.935634+05:30 484 Abstract Algebra-I 3 8 1 -344 2019-11-24 18:37:49.947962+05:30 483 DESIGN AND ANALYSIS OF ALGORITHMS 3 8 1 -345 2019-11-24 18:37:49.96095+05:30 482 ORDINARY AND PARTIAL DIFFERENTIAL EQUATIONS 3 8 1 -346 2019-11-24 18:37:49.973345+05:30 481 DISCRETE MATHEMATICS 3 8 1 -347 2019-11-24 18:37:49.986224+05:30 480 Introduction to Computer Programming 3 8 1 -348 2019-11-24 18:37:49.998666+05:30 479 Mathematics-I 3 8 1 -349 2019-11-24 18:37:50.011539+05:30 478 Numerical Methods, Probability and Statistics 3 8 1 -350 2019-11-24 18:37:50.023936+05:30 477 Optimization Techniques 3 8 1 -351 2019-11-24 18:37:50.036906+05:30 476 Probability and Statistics 3 8 1 -352 2019-11-24 18:37:50.049127+05:30 475 MEASURE THEORY 3 8 1 -353 2019-11-24 18:37:50.06211+05:30 474 Statistical Inference 3 8 1 -354 2019-11-24 18:37:50.074492+05:30 473 COMPLEX ANALYSIS-I 3 8 1 -355 2019-11-24 18:37:50.087999+05:30 472 Real Analysis I 3 8 1 -356 2019-11-24 18:37:50.099752+05:30 471 Introduction to Mathematical Sciences 3 8 1 -357 2019-11-24 18:37:50.112749+05:30 470 Probability and Statistics 3 8 1 -358 2019-11-24 18:37:50.125216+05:30 469 Mathematical Methods 3 8 1 -359 2019-11-24 18:37:50.154683+05:30 468 DISSERTATION STAGE-II (CONTINUED FROM III SEMESTER) 3 8 1 -360 2019-11-24 18:37:50.166777+05:30 467 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 3 8 1 -361 2019-11-24 18:37:50.179774+05:30 466 SEMINAR 3 8 1 -362 2019-11-24 18:37:50.19218+05:30 465 Watershed modeling and simulation 3 8 1 -363 2019-11-24 18:37:50.205127+05:30 464 Soil and groundwater contamination modelling 3 8 1 -364 2019-11-24 18:37:50.217531+05:30 463 Experimental hydrology 3 8 1 -365 2019-11-24 18:37:50.230435+05:30 462 Remote sensing and GIS applications 3 8 1 -366 2019-11-24 18:37:50.243355+05:30 461 Environmental quality 3 8 1 -367 2019-11-24 18:37:50.255753+05:30 460 Watershed Behavior and Conservation Practices 3 8 1 -368 2019-11-24 18:37:50.268779+05:30 459 Geophysical investigations 3 8 1 -369 2019-11-24 18:37:50.281073+05:30 458 Groundwater hydrology 3 8 1 -370 2019-11-24 18:37:50.293991+05:30 457 Stochastic hydrology 3 8 1 -371 2019-11-24 18:37:50.306359+05:30 456 Irrigation and drainage engineering 3 8 1 -372 2019-11-24 18:37:50.31929+05:30 455 Engineering Hydrology 3 8 1 -373 2019-11-24 18:37:50.331962+05:30 454 RESEARCH METHODOLOGY IN LANGUAGE & LITERATURE 3 8 1 -374 2019-11-24 18:37:50.344904+05:30 453 RESEARCH METHODOLOGY IN SOCIAL SCIENCES 3 8 1 -375 2019-11-24 18:37:50.357318+05:30 452 UNDERSTANDING PERSONLALITY 3 8 1 -376 2019-11-24 18:37:50.369971+05:30 451 SEMINAR 3 8 1 -377 2019-11-24 18:37:50.382411+05:30 450 Advanced Topics in Growth Theory 3 8 1 -378 2019-11-24 18:37:50.395013+05:30 449 Ecological Economics 3 8 1 -379 2019-11-24 18:37:50.410807+05:30 448 Introduction to Research Methodology 3 8 1 -380 2019-11-24 18:37:50.42367+05:30 447 Issues in Indian Economy 3 8 1 -381 2019-11-24 18:37:50.436213+05:30 446 PUBLIC POLICY; THEORY AND PRACTICE 3 8 1 -382 2019-11-24 18:37:50.449174+05:30 445 ADVANCED ECONOMETRICS 3 8 1 -383 2019-11-24 18:37:50.461518+05:30 444 MONEY, BANKING AND FINANCIAL MARKETS 3 8 1 -384 2019-11-24 18:37:50.474296+05:30 443 DEVELOPMENT ECONOMICS 3 8 1 -385 2019-11-24 18:37:50.486886+05:30 442 MATHEMATICS FOR ECONOMISTS 3 8 1 -386 2019-11-24 18:37:50.500206+05:30 441 MACROECONOMICS I 3 8 1 -387 2019-11-24 18:37:50.51247+05:30 440 MICROECONOMICS I 3 8 1 -388 2019-11-24 18:37:50.525447+05:30 439 HSN-01 3 8 1 -389 2019-11-24 18:37:50.59511+05:30 438 UNDERSTANDING PERSONALITY 3 8 1 -390 2019-11-24 18:37:50.608044+05:30 437 Sociology 3 8 1 -391 2019-11-24 18:37:50.620559+05:30 436 Economics 3 8 1 -392 2019-11-24 18:37:50.641472+05:30 435 Technical Communication 3 8 1 -393 2019-11-24 18:37:50.653727+05:30 434 Society,Culture Built Environment 3 8 1 -394 2019-11-24 18:37:50.666516+05:30 433 Introduction to Psychology 3 8 1 -395 2019-11-24 18:37:50.679263+05:30 432 Communication Skills(Advance) 3 8 1 -396 2019-11-24 18:37:50.692162+05:30 431 Communication Skills(Basic) 3 8 1 -397 2019-11-24 18:37:50.704889+05:30 430 Technical Communication 3 8 1 -398 2019-11-24 18:37:50.717456+05:30 429 Communication skills (Basic) 3 8 1 -399 2019-11-24 18:37:50.729788+05:30 428 DISSERTATION STAGE-II (CONTINUED FROM III SEMESTER) 3 8 1 -400 2019-11-24 18:37:50.742718+05:30 427 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 3 8 1 -401 2019-11-24 18:37:50.755133+05:30 426 SEMINAR 3 8 1 -402 2019-11-24 18:37:50.768243+05:30 425 Analog VLSI Circuit Design 3 8 1 -403 2019-11-24 18:37:50.788675+05:30 424 Digital System Design 3 8 1 -404 2019-11-24 18:37:50.801415+05:30 423 Simulation Lab-1 3 8 1 -405 2019-11-24 18:37:50.813756+05:30 422 Microelectronics Lab-1 3 8 1 -406 2019-11-24 18:37:50.826932+05:30 421 Digital VLSI Circuit Design 3 8 1 -407 2019-11-24 18:37:50.839276+05:30 420 MOS Device Physics 3 8 1 -408 2019-11-24 18:37:50.852987+05:30 419 Microwave and Millimeter Wave Circuits 3 8 1 -409 2019-11-24 18:37:50.87355+05:30 418 Antenna Theory & Design 3 8 1 -410 2019-11-24 18:37:51.27596+05:30 417 Advanced EMFT 3 8 1 -411 2019-11-24 18:37:51.709029+05:30 416 Microwave Engineering 3 8 1 -412 2019-11-24 18:37:51.732471+05:30 415 Microwave Lab 3 8 1 -413 2019-11-24 18:37:51.759727+05:30 414 Telecommunication Networks 3 8 1 -414 2019-11-24 18:37:51.778341+05:30 413 Information and Communication Theory 3 8 1 -415 2019-11-24 18:37:51.79129+05:30 412 Digital Communication Systems 3 8 1 -416 2019-11-24 18:37:51.803699+05:30 411 Laboratory 3 8 1 -417 2019-11-24 18:37:51.817578+05:30 410 Training Seminar 3 8 1 -418 2019-11-24 18:37:51.829562+05:30 409 B.Tech. Project 3 8 1 -419 2019-11-24 18:37:51.842689+05:30 408 Technical Communication 3 8 1 -420 2019-11-24 18:37:51.871552+05:30 407 IC Application Laboratory 3 8 1 -421 2019-11-24 18:37:51.884133+05:30 406 Fundamentals of Microelectronics 3 8 1 -422 2019-11-24 18:37:51.896818+05:30 405 Microelectronic Devices,Technology and Circuits 3 8 1 -423 2019-11-24 18:37:51.909655+05:30 404 ELECTRONICS NETWORK THEORY 3 8 1 -424 2019-11-24 18:37:51.921899+05:30 403 SIGNALS AND SYSTEMS 3 8 1 -425 2019-11-24 18:37:51.93506+05:30 402 Introduction to Electronics and Communication Engineering 3 8 1 -426 2019-11-24 18:37:51.94725+05:30 401 SIGNALS AND SYSTEMS 3 8 1 -427 2019-11-24 18:37:51.968279+05:30 400 RF System Design and Analysis 3 8 1 -428 2019-11-24 18:37:51.981003+05:30 399 Radar Signal Processing 3 8 1 -429 2019-11-24 18:37:51.993626+05:30 398 Fiber Optic Systems 3 8 1 -430 2019-11-24 18:37:52.006084+05:30 397 Coding Theory and Applications 3 8 1 -431 2019-11-24 18:37:52.019181+05:30 396 Microwave Engineering 3 8 1 -432 2019-11-24 18:37:52.039547+05:30 395 Antenna Theory 3 8 1 -433 2019-11-24 18:37:52.052662+05:30 394 Communication Systems and Techniques 3 8 1 -434 2019-11-24 18:37:52.07305+05:30 393 Digital Electronic Circuits Laboratory 3 8 1 -435 2019-11-24 18:37:52.085976+05:30 392 Engineering Electromagnetics 3 8 1 -436 2019-11-24 18:37:52.106553+05:30 391 Automatic Control Systems 3 8 1 -437 2019-11-24 18:37:52.119448+05:30 390 Principles of Digital Communication 3 8 1 -438 2019-11-24 18:37:52.131908+05:30 389 Fundamental of Electronics 3 8 1 -439 2019-11-24 18:37:52.144816+05:30 388 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 3 8 1 -440 2019-11-24 18:37:52.157269+05:30 387 SEMINAR 3 8 1 -441 2019-11-24 18:37:52.170019+05:30 386 Modeling and Simulation 3 8 1 -442 2019-11-24 18:37:52.183324+05:30 385 Introduction to Robotics 3 8 1 -443 2019-11-24 18:37:52.203883+05:30 384 Smart Grid 3 8 1 -444 2019-11-24 18:37:52.216694+05:30 383 Power System Planning 3 8 1 -445 2019-11-24 18:37:52.229202+05:30 382 Enhanced Power Quality AC-DC Converters 3 8 1 -446 2019-11-24 18:37:52.249951+05:30 381 Advances in Signal and Image Processing 3 8 1 -447 2019-11-24 18:37:52.262382+05:30 380 Advanced System Engineering 3 8 1 -448 2019-11-24 18:37:52.275268+05:30 379 Intelligent Control Techniques 3 8 1 -449 2019-11-24 18:37:52.287721+05:30 378 Advanced Linear Control Systems 3 8 1 -450 2019-11-24 18:37:52.300846+05:30 377 EHV AC Transmission Systems 3 8 1 -451 2019-11-24 18:37:52.313114+05:30 376 Distribution System Analysis and Operation 3 8 1 -452 2019-11-24 18:37:52.32594+05:30 375 Power System Operation and Control 3 8 1 -453 2019-11-24 18:37:52.346685+05:30 374 Computer Aided Power System Analysis 3 8 1 -454 2019-11-24 18:37:52.367814+05:30 373 Advanced Electric Drives 3 8 1 -455 2019-11-24 18:37:52.388396+05:30 372 Analysis of Electrical Machines 3 8 1 -456 2019-11-24 18:37:52.401169+05:30 371 Advanced Power Electronics 3 8 1 -457 2019-11-24 18:37:52.413269+05:30 370 Biomedical Instrumentation 3 8 1 -458 2019-11-24 18:37:52.426347+05:30 369 Digital Signal and Image Processing 3 8 1 -459 2019-11-24 18:37:52.438941+05:30 368 Advanced Industrial and Electronic Instrumentation 3 8 1 -460 2019-11-24 18:37:52.451837+05:30 367 Training Seminar 3 8 1 -461 2019-11-24 18:37:52.464129+05:30 366 B.Tech. Project 3 8 1 -462 2019-11-24 18:37:52.476985+05:30 365 Technical Communication 3 8 1 -463 2019-11-24 18:37:52.48943+05:30 364 Embedded Systems 3 8 1 -464 2019-11-24 18:37:52.510481+05:30 363 Data Structures 3 8 1 -465 2019-11-24 18:37:52.522578+05:30 362 Signals and Systems 3 8 1 -466 2019-11-24 18:37:52.535545+05:30 361 Artificial Neural Networks 3 8 1 -467 2019-11-24 18:37:52.547727+05:30 360 Advanced Control Systems 3 8 1 -468 2019-11-24 18:37:52.560721+05:30 359 Power Electronics 3 8 1 -469 2019-11-24 18:37:52.573065+05:30 358 Power System Analysis & Control 3 8 1 -470 2019-11-24 18:37:52.586183+05:30 357 ENGINEERING ANALYSIS AND DESIGN 3 8 1 -471 2019-11-24 18:37:52.598469+05:30 356 DESIGN OF ELECTRONICS CIRCUITS 3 8 1 -472 2019-11-24 18:37:52.611356+05:30 355 DIGITAL ELECTRONICS AND CIRCUITS 3 8 1 -473 2019-11-24 18:37:52.623827+05:30 354 ELECTRICAL MACHINES-I 3 8 1 -474 2019-11-24 18:37:52.637284+05:30 353 Programming in C++ 3 8 1 -475 2019-11-24 18:37:52.657751+05:30 352 Network Theory 3 8 1 -476 2019-11-24 18:37:52.671742+05:30 351 Introduction to Electrical Engineering 3 8 1 -477 2019-11-24 18:37:52.691882+05:30 350 Instrumentation laboratory 3 8 1 -478 2019-11-24 18:37:52.705476+05:30 349 Electrical Science 3 8 1 -479 2019-11-24 18:37:52.726114+05:30 348 SEMINAR 3 8 1 -480 2019-11-24 18:37:52.738681+05:30 347 Plate Tectonics 3 8 1 -481 2019-11-24 18:37:52.759382+05:30 346 Well Logging 3 8 1 -482 2019-11-24 18:37:52.771988+05:30 345 Petroleum Geology 3 8 1 -483 2019-11-24 18:37:52.785085+05:30 344 Engineering Geology 3 8 1 -484 2019-11-24 18:37:52.805426+05:30 343 Indian Mineral Deposits 3 8 1 -485 2019-11-24 18:37:52.818757+05:30 342 Isotope Geology 3 8 1 -486 2019-11-24 18:37:52.839173+05:30 341 Seminar 3 8 1 -487 2019-11-24 18:37:52.859816+05:30 340 ADVANCED SEISMIC PROSPECTING 3 8 1 -488 2019-11-24 18:37:52.872192+05:30 339 DYNAMIC SYSTEMS IN EARTH SCIENCES 3 8 1 -489 2019-11-24 18:37:52.88536+05:30 338 Global Environment 3 8 1 -490 2019-11-24 18:37:52.905874+05:30 337 Micropaleontology and Paleoceanography 3 8 1 -491 2019-11-24 18:37:52.918939+05:30 336 ISOTOPE GEOLOGY 3 8 1 -492 2019-11-24 18:37:52.939211+05:30 335 Geophysical Prospecting 3 8 1 -493 2019-11-24 18:37:52.952297+05:30 334 Sedimentology and Stratigraphy 3 8 1 -494 2019-11-24 18:37:52.972871+05:30 333 Comprehensive Viva Voce 3 8 1 -495 2019-11-24 18:37:52.985685+05:30 332 Structural Geology 3 8 1 -496 2019-11-24 18:37:53.006189+05:30 331 Igneous Petrology 3 8 1 -497 2019-11-24 18:37:53.019137+05:30 330 Geochemistry 3 8 1 -498 2019-11-24 18:37:53.039645+05:30 329 Crystallography and Mineralogy 3 8 1 -499 2019-11-24 18:37:53.052734+05:30 328 Numerical Techniques and Computer Programming 3 8 1 -500 2019-11-24 18:37:53.064907+05:30 327 Comprehensive Viva Voce 3 8 1 -501 2019-11-24 18:37:53.086148+05:30 326 Seminar-I 3 8 1 -502 2019-11-24 18:37:53.098488+05:30 325 STRONG MOTION SEISMOGRAPH 3 8 1 -503 2019-11-24 18:37:53.111573+05:30 324 Geophysical Well logging 3 8 1 -504 2019-11-24 18:37:53.123839+05:30 323 Numerical Modelling in Geophysical 3 8 1 -505 2019-11-24 18:37:53.13665+05:30 322 PETROLEUM GEOLOGY 3 8 1 -506 2019-11-24 18:37:53.148923+05:30 321 HYDROGEOLOGY 3 8 1 -507 2019-11-24 18:37:53.162018+05:30 320 ENGINEERING GEOLOGY 3 8 1 -508 2019-11-24 18:37:53.23166+05:30 319 PRINCIPLES OF GIS 3 8 1 -509 2019-11-24 18:37:53.244551+05:30 318 PRINCIPLES OF REMOTE SENSING 3 8 1 -510 2019-11-24 18:37:53.256996+05:30 317 Technical Communication 3 8 1 -511 2019-11-24 18:37:53.269966+05:30 316 ROCK AND SOIL MECHANICS 3 8 1 -512 2019-11-24 18:37:53.290421+05:30 315 Seismology 3 8 1 -513 2019-11-24 18:37:53.303276+05:30 314 Gravity and Magnetic Prospecting 3 8 1 -514 2019-11-24 18:37:53.315873+05:30 313 Economic Geology 3 8 1 -515 2019-11-24 18:37:53.336987+05:30 312 Metamorphic Petrology 3 8 1 -516 2019-11-24 18:37:53.357951+05:30 311 Structural Geology-II 3 8 1 -517 2019-11-24 18:37:53.378595+05:30 310 GEOPHYSICAL PROSPECTING 3 8 1 -518 2019-11-24 18:37:53.39152+05:30 309 FIELD THEORY 3 8 1 -519 2019-11-24 18:37:53.403996+05:30 308 STRUCTURAL GEOLOGY-I 3 8 1 -520 2019-11-24 18:37:53.425075+05:30 307 PALEONTOLOGY 3 8 1 -521 2019-11-24 18:37:53.437654+05:30 306 BASIC PETROLOGY 3 8 1 -522 2019-11-24 18:37:53.458532+05:30 305 Computer Programming 3 8 1 -523 2019-11-24 18:37:53.471003+05:30 304 Introduction to Earth Sciences 3 8 1 -524 2019-11-24 18:37:53.483666+05:30 303 Electrical Prospecting 3 8 1 -525 2019-11-24 18:37:53.496194+05:30 302 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 3 8 1 -526 2019-11-24 18:37:53.509165+05:30 301 SEMINAR 3 8 1 -527 2019-11-24 18:37:53.521752+05:30 300 Principles of Seismology 3 8 1 -528 2019-11-24 18:37:53.534841+05:30 299 Machine Foundation 3 8 1 -529 2019-11-24 18:37:53.555285+05:30 298 Earthquake Resistant Design of Structures 3 8 1 -530 2019-11-24 18:37:53.5761+05:30 297 Vulnerability and Risk Analysis 3 8 1 -531 2019-11-24 18:37:53.591812+05:30 296 Seismological Modeling and Simulation 3 8 1 -532 2019-11-24 18:37:53.604645+05:30 295 Seismic Hazard Assessment 3 8 1 -533 2019-11-24 18:37:53.625608+05:30 294 Geotechnical Earthquake Engineering 3 8 1 -534 2019-11-24 18:37:53.66994+05:30 663 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 3 8 1 -535 2019-11-24 18:37:53.695347+05:30 293 Numerical Methods for Dynamic Systems 3 8 1 -536 2019-11-24 18:37:53.789988+05:30 292 Finite Element Method 3 8 1 -537 2019-11-24 18:37:53.823987+05:30 662 SEMINAR 3 8 1 -538 2019-11-24 18:37:54.051371+05:30 291 Engineering Seismology 3 8 1 -539 2019-11-24 18:37:54.267482+05:30 661 On Farm Development 3 8 1 -540 2019-11-24 18:37:54.692875+05:30 290 Vibration of Elastic Media 3 8 1 -542 2019-11-24 18:37:54.718291+05:30 289 Theory of Vibrations 3 8 1 -544 2019-11-24 18:37:54.743676+05:30 288 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 3 8 1 -546 2019-11-24 18:37:54.769186+05:30 287 SEMINAR 3 8 1 -548 2019-11-24 18:37:54.794397+05:30 286 Advanced Topics in Software Engineering 3 8 1 -550 2019-11-24 18:37:54.819696+05:30 285 Lab II (Project Lab) 3 8 1 -552 2019-11-24 18:37:54.845303+05:30 284 Lab I (Programming Lab) 3 8 1 -554 2019-11-24 18:37:54.870648+05:30 283 Advanced Computer Networks 3 8 1 -556 2019-11-24 18:37:54.895576+05:30 282 Advanced Operating Systems 3 8 1 -558 2019-11-24 18:37:54.921124+05:30 281 Advanced Algorithms 3 8 1 -560 2019-11-24 18:37:54.946312+05:30 280 Training Seminar 3 8 1 -562 2019-11-24 18:37:54.971608+05:30 279 B.Tech. Project 3 8 1 -564 2019-11-24 18:37:54.997088+05:30 278 Technical Communication 3 8 1 -566 2019-11-24 18:37:55.022222+05:30 277 Computer Network Laboratory 3 8 1 -568 2019-11-24 18:37:55.0478+05:30 276 Theory of Computation 3 8 1 -570 2019-11-24 18:37:55.072918+05:30 275 Computer Network 3 8 1 -572 2019-11-24 18:37:55.098291+05:30 274 DATA STRUCTURE LABORATORY 3 8 1 -574 2019-11-24 18:37:55.123493+05:30 273 COMPUTER ARCHITECTURE AND MICROPROCESSORS 3 8 1 -576 2019-11-24 18:37:55.149709+05:30 272 Fundamentals of Object Oriented Programming 3 8 1 -578 2019-11-24 18:37:55.174812+05:30 271 Introduction to Computer Science and Engineering 3 8 1 -580 2019-11-24 18:37:55.200463+05:30 270 Logic and Automated Reasoning 3 8 1 -582 2019-11-24 18:37:55.225376+05:30 269 Data Mining and Warehousing 3 8 1 -584 2019-11-24 18:37:55.250287+05:30 268 MACHINE LEARNING 3 8 1 -586 2019-11-24 18:37:55.276166+05:30 267 ARTIFICIAL INTELLIGENCE 3 8 1 -588 2019-11-24 18:37:55.30168+05:30 266 Compiler Design 3 8 1 -590 2019-11-24 18:37:55.326529+05:30 265 Data Base Management Systems 3 8 1 -592 2019-11-24 18:37:55.351634+05:30 264 OBJECT ORIENTED ANALYSIS AND DESIGN 3 8 1 -594 2019-11-24 18:37:55.376915+05:30 263 Data Structures 3 8 1 -596 2019-11-24 18:37:55.402577+05:30 262 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 3 8 1 -598 2019-11-24 18:37:55.427957+05:30 261 SEMINAR 3 8 1 -600 2019-11-24 18:37:55.453835+05:30 260 Geoinformatics for Landuse Surveys 3 8 1 -602 2019-11-24 18:37:55.479339+05:30 259 Planning, Design and Construction of Rural Roads 3 8 1 -604 2019-11-24 18:37:55.505299+05:30 258 Pavement Analysis and Design 3 8 1 -606 2019-11-24 18:37:55.529718+05:30 257 Traffic Engineering and Modeling 3 8 1 -608 2019-11-24 18:37:55.554978+05:30 256 Modeling, Simulation and Optimization 3 8 1 -610 2019-11-24 18:37:55.58038+05:30 255 Free Surface Flows 3 8 1 -612 2019-11-24 18:37:55.606028+05:30 254 Advanced Fluid Mechanics 3 8 1 -614 2019-11-24 18:37:55.631023+05:30 253 Advanced Hydrology 3 8 1 -616 2019-11-24 18:37:55.656409+05:30 252 Soil Dynamics and Machine Foundations 3 8 1 -618 2019-11-24 18:37:55.68163+05:30 251 Engineering Behaviour of Rocks 3 8 1 -620 2019-11-24 18:37:55.707146+05:30 250 Advanced Soil Mechanics 3 8 1 -622 2019-11-24 18:37:55.732093+05:30 249 Advanced Numerical Analysis 3 8 1 -624 2019-11-24 18:37:55.756982+05:30 248 FIELD SURVEY CAMP 3 8 1 -626 2019-11-24 18:37:55.782606+05:30 247 Principles of Photogrammetry 3 8 1 -628 2019-11-24 18:37:55.808256+05:30 246 Surveying Measurements and Adjustments 3 8 1 -630 2019-11-24 18:37:55.833569+05:30 245 Environmental Hydraulics 3 8 1 -632 2019-11-24 18:37:55.858865+05:30 244 Water Treatment 3 8 1 -634 2019-11-24 18:37:55.884933+05:30 243 Environmental Modeling and Simulation 3 8 1 -636 2019-11-24 18:37:55.910202+05:30 242 Training Seminar 3 8 1 -638 2019-11-24 18:37:55.935433+05:30 241 Advanced Highway Engineering 3 8 1 -640 2019-11-24 18:37:55.96095+05:30 240 Advanced Water and Wastewater Treatment 3 8 1 -642 2019-11-24 18:37:55.986085+05:30 239 WATER RESOURCE ENGINEERING 3 8 1 -644 2019-11-24 18:37:56.011415+05:30 238 B.Tech. Project 3 8 1 -646 2019-11-24 18:37:56.036778+05:30 237 Technical Communication 3 8 1 -648 2019-11-24 18:37:56.062071+05:30 236 Design of Reinforced Concrete Elements 3 8 1 -650 2019-11-24 18:37:56.087689+05:30 235 Soil Mechanicas 3 8 1 -652 2019-11-24 18:37:56.112945+05:30 234 Theory of Structures 3 8 1 -654 2019-11-24 18:37:56.137998+05:30 233 ENGINEERING GRAPHICS 3 8 1 -656 2019-11-24 18:37:56.163286+05:30 232 Highway and Traffic Engineering 3 8 1 -658 2019-11-24 18:37:56.189157+05:30 231 STRUCTURAL ANALYSIS-I 3 8 1 -660 2019-11-24 18:37:56.213974+05:30 230 CHANNEL HYDRAULICS 3 8 1 -662 2019-11-24 18:37:56.239298+05:30 229 GEOMATICS ENGINEERING-II 3 8 1 -664 2019-11-24 18:37:56.264674+05:30 228 Urban Mass Transit Systems 3 8 1 -666 2019-11-24 18:37:56.289851+05:30 227 Transportation Planning 3 8 1 -668 2019-11-24 18:37:56.50192+05:30 226 Road Traffic Safety 3 8 1 -670 2019-11-24 18:37:57.168564+05:30 225 Behaviour & Design of Steel Structures (Autumn) 3 8 1 -672 2019-11-24 18:37:57.210624+05:30 224 Industrial and Hazardous Waste Management 3 8 1 -674 2019-11-24 18:37:57.23599+05:30 223 Geometric Design 3 8 1 -676 2019-11-24 18:37:57.261309+05:30 222 Finite Element Analysis 3 8 1 -678 2019-11-24 18:37:57.287104+05:30 221 Structural Dynamics 3 8 1 -680 2019-11-24 18:37:57.31242+05:30 220 Advanced Concrete Design 3 8 1 -682 2019-11-24 18:37:57.33774+05:30 219 Continuum Mechanics 3 8 1 -684 2019-11-24 18:37:57.363056+05:30 218 Matrix Structural Analysis 3 8 1 -686 2019-11-24 18:37:57.388445+05:30 217 Geodesy and GPS Surveying 3 8 1 -688 2019-11-24 18:37:57.413747+05:30 216 Remote Sensing and Image Processing 3 8 1 -690 2019-11-24 18:37:57.439016+05:30 215 Environmental Chemistry 3 8 1 -692 2019-11-24 18:37:57.464337+05:30 214 Wastewater Treatment 3 8 1 -694 2019-11-24 18:37:57.489744+05:30 213 Design of Steel Elements 3 8 1 -696 2019-11-24 18:37:57.515222+05:30 212 Railway Engineering and Airport Planning 3 8 1 -698 2019-11-24 18:37:57.540271+05:30 211 Design of Steel Elements 3 8 1 -700 2019-11-24 18:37:57.565586+05:30 210 Waste Water Engineering 3 8 1 -702 2019-11-24 18:37:57.590914+05:30 209 Geomatics Engineering – I 3 8 1 -704 2019-11-24 18:37:57.616407+05:30 208 Introduction to Environmental Studies 3 8 1 -706 2019-11-24 18:37:57.641549+05:30 207 Numerical Methods and Computer Programming 3 8 1 -708 2019-11-24 18:37:57.667174+05:30 206 Solid Mechanics 3 8 1 -710 2019-11-24 18:37:57.692426+05:30 205 Introduction to Civil Engineering 3 8 1 -712 2019-11-24 18:37:57.717627+05:30 204 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 3 8 1 -714 2019-11-24 18:37:57.742974+05:30 203 SEMINAR 3 8 1 -716 2019-11-24 18:37:57.768488+05:30 202 Training Seminar 3 8 1 -541 2019-11-24 18:37:54.705414+05:30 660 Principles and Practices of Irrigation 3 8 1 -543 2019-11-24 18:37:54.730557+05:30 659 Design of Irrigation Structures and Drainage Works 3 8 1 -545 2019-11-24 18:37:54.757147+05:30 658 Construction Planning and Management 3 8 1 -547 2019-11-24 18:37:54.781515+05:30 657 Design of Hydro Mechanical Equipment 3 8 1 -549 2019-11-24 18:37:54.806863+05:30 656 Power System Protection Application 3 8 1 -551 2019-11-24 18:37:54.831964+05:30 655 Hydropower System Planning 3 8 1 -553 2019-11-24 18:37:54.857563+05:30 654 Hydro Generating Equipment 3 8 1 -555 2019-11-24 18:37:54.883062+05:30 653 Applied Hydrology 3 8 1 -557 2019-11-24 18:37:54.908285+05:30 652 Water Resources Planning and Management 3 8 1 -559 2019-11-24 18:37:54.933816+05:30 651 Design of Water Resources Structures 3 8 1 -561 2019-11-24 18:37:54.958847+05:30 650 System Design Techniques 3 8 1 -563 2019-11-24 18:37:54.984983+05:30 649 MATHEMATICAL AND COMPUTATIONAL TECHNIQUES 3 8 1 -565 2019-11-24 18:37:55.009856+05:30 648 Experimental Techniques 3 8 1 -567 2019-11-24 18:37:55.035171+05:30 647 Laboratory Work in Photonics 3 8 1 -569 2019-11-24 18:37:55.060467+05:30 646 Semiconductor Device Physics 3 8 1 -571 2019-11-24 18:37:55.08579+05:30 645 Computational Techniques and Programming 3 8 1 -573 2019-11-24 18:37:55.111147+05:30 644 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 3 8 1 -575 2019-11-24 18:37:55.137464+05:30 643 SEMINAR 3 8 1 -577 2019-11-24 18:37:55.162422+05:30 642 SEMINAR 3 8 1 -579 2019-11-24 18:37:55.187842+05:30 641 Numerical Analysis & Computer Programming 3 8 1 -581 2019-11-24 18:37:55.213063+05:30 640 Semiconductor Photonics 3 8 1 -583 2019-11-24 18:37:55.237941+05:30 639 Quantum Theory of Solids 3 8 1 -585 2019-11-24 18:37:55.263092+05:30 638 A Primer in Quantum Field Theory 3 8 1 -587 2019-11-24 18:37:55.289177+05:30 637 Advanced Characterization Techniques 3 8 1 -589 2019-11-24 18:37:55.314045+05:30 636 Advanced Nuclear Physics 3 8 1 -591 2019-11-24 18:37:55.339152+05:30 635 Advanced Laser Physics 3 8 1 -593 2019-11-24 18:37:55.364668+05:30 634 Advanced Condensed Matter Physics 3 8 1 -595 2019-11-24 18:37:55.390412+05:30 633 DISSERTATION STAGE-I 3 8 1 -597 2019-11-24 18:37:55.416127+05:30 632 SEMICONDUCTOR DEVICES AND APPLICATIONS 3 8 1 -599 2019-11-24 18:37:55.440928+05:30 631 Classical Mechanics 3 8 1 -601 2019-11-24 18:37:55.466165+05:30 630 Mathematical Physics 3 8 1 -603 2019-11-24 18:37:55.491474+05:30 629 Quantum Mechanics – I 3 8 1 -605 2019-11-24 18:37:55.516737+05:30 628 Training Seminar 3 8 1 -607 2019-11-24 18:37:55.5421+05:30 627 B.Tech. Project 3 8 1 -609 2019-11-24 18:37:55.567822+05:30 626 Nuclear Astrophysics 3 8 1 -611 2019-11-24 18:37:55.592834+05:30 625 Techincal Communication 3 8 1 -613 2019-11-24 18:37:55.618559+05:30 624 Laser & Photonics 3 8 1 -615 2019-11-24 18:37:55.643539+05:30 623 Signals and Systems 3 8 1 -617 2019-11-24 18:37:55.668884+05:30 622 Numerical Analysis and Computational Physics 3 8 1 -619 2019-11-24 18:37:55.694349+05:30 621 Applied Instrumentation 3 8 1 -621 2019-11-24 18:37:55.719364+05:30 620 Lab-based Project 3 8 1 -623 2019-11-24 18:37:55.7442+05:30 619 Microprocessors and Peripheral Devices 3 8 1 -625 2019-11-24 18:37:55.76971+05:30 618 Mathematical Physics 3 8 1 -627 2019-11-24 18:37:55.795335+05:30 617 Mechanics and Relativity 3 8 1 -629 2019-11-24 18:37:55.820981+05:30 616 Atomic Molecular and Laser Physics 3 8 1 -631 2019-11-24 18:37:55.845928+05:30 615 Computer Programming 3 8 1 -633 2019-11-24 18:37:55.871694+05:30 614 Introduction to Physical Science 3 8 1 -635 2019-11-24 18:37:55.897314+05:30 613 Modern Physics 3 8 1 -637 2019-11-24 18:37:55.923094+05:30 612 QUARK GLUON PLASMA & FINITE TEMPERATURE FIELD THEORY 3 8 1 -639 2019-11-24 18:37:55.948419+05:30 611 Optical Electronics 3 8 1 -641 2019-11-24 18:37:55.973706+05:30 610 Semiconductor Materials and Devices 3 8 1 -643 2019-11-24 18:37:55.999205+05:30 609 Laboratory Work 3 8 1 -645 2019-11-24 18:37:56.024376+05:30 608 Weather Forecasting 3 8 1 -647 2019-11-24 18:37:56.04972+05:30 607 Advanced Atmospheric Physics 3 8 1 -649 2019-11-24 18:37:56.075039+05:30 606 Physics of Earth’s Atmosphere 3 8 1 -651 2019-11-24 18:37:56.100344+05:30 605 Classical Electrodynamics 3 8 1 -653 2019-11-24 18:37:56.125692+05:30 604 Laboratory Work 3 8 1 -655 2019-11-24 18:37:56.15115+05:30 603 QUANTUM INFORMATION AND COMPUTING 3 8 1 -657 2019-11-24 18:37:56.176371+05:30 602 Plasma Physics and Applications 3 8 1 -659 2019-11-24 18:37:56.201852+05:30 601 Applied Optics 3 8 1 -661 2019-11-24 18:37:56.227103+05:30 600 Quantum Physics 3 8 1 -663 2019-11-24 18:37:56.252374+05:30 599 Engineering Analysis Design 3 8 1 -665 2019-11-24 18:37:56.27763+05:30 598 Quantum Mechanics and Statistical Mechanics 3 8 1 -667 2019-11-24 18:37:56.302994+05:30 597 Electrodynamics and Optics 3 8 1 -669 2019-11-24 18:37:57.150393+05:30 596 Applied Physics 3 8 1 -671 2019-11-24 18:37:57.182029+05:30 595 Electromagnetic Field Theory 3 8 1 -673 2019-11-24 18:37:57.223507+05:30 594 Mechanics 3 8 1 -675 2019-11-24 18:37:57.249255+05:30 593 Advanced Atmospheric Physics 3 8 1 -677 2019-11-24 18:37:57.274215+05:30 592 Elements of Nuclear and Particle Physics 3 8 1 -679 2019-11-24 18:37:57.29946+05:30 591 Physics of Earth’s Atmosphere 3 8 1 -681 2019-11-24 18:37:57.325007+05:30 590 Computational Physics 3 8 1 -683 2019-11-24 18:37:57.350457+05:30 589 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 3 8 1 -685 2019-11-24 18:37:57.375475+05:30 588 SEMINAR 3 8 1 -687 2019-11-24 18:37:57.400928+05:30 587 Converting Processes for Packaging 3 8 1 -689 2019-11-24 18:37:57.426099+05:30 586 Printing Technology 3 8 1 -691 2019-11-24 18:37:57.451596+05:30 585 Packaging Materials 3 8 1 -693 2019-11-24 18:37:57.477086+05:30 584 Packaging Principles, Processes and Sustainability 3 8 1 -695 2019-11-24 18:37:57.502084+05:30 583 Process Instrumentation and Control 3 8 1 -697 2019-11-24 18:37:57.527381+05:30 582 Advanced Numerical Methods and Statistics 3 8 1 -699 2019-11-24 18:37:57.552732+05:30 581 Paper Proprieties and Stock Preparation 3 8 1 -701 2019-11-24 18:37:57.578068+05:30 580 Chemical Recovery Process 3 8 1 -703 2019-11-24 18:37:57.6037+05:30 579 Pulping 3 8 1 -705 2019-11-24 18:37:57.628894+05:30 578 Printing Technology 3 8 1 -707 2019-11-24 18:37:57.653824+05:30 577 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 3 8 1 -709 2019-11-24 18:37:57.679306+05:30 576 SEMINAR 3 8 1 -711 2019-11-24 18:37:57.704654+05:30 575 Numerical Methods in Manufacturing 3 8 1 -713 2019-11-24 18:37:57.730009+05:30 574 Non-Traditional Machining Processes 3 8 1 -715 2019-11-24 18:37:57.755247+05:30 573 Materials Management 3 8 1 -717 2019-11-24 18:37:57.781067+05:30 572 Machine Tool Design and Numerical Control 3 8 1 -719 2019-11-24 18:37:57.806394+05:30 571 Design for Manufacturability 3 8 1 -721 2019-11-24 18:37:57.83186+05:30 570 Advanced Manufacturing Processes 3 8 1 -723 2019-11-24 18:37:57.856866+05:30 569 Quality Management 3 8 1 -725 2019-11-24 18:37:57.881773+05:30 568 Operations Management 3 8 1 -727 2019-11-24 18:37:57.907157+05:30 567 Computer Aided Design 3 8 1 -729 2019-11-24 18:37:57.933371+05:30 566 Advanced Mechanics of Solids 3 8 1 -731 2019-11-24 18:37:57.9588+05:30 565 Dynamics of Mechanical Systems 3 8 1 -733 2019-11-24 18:37:57.984276+05:30 564 Micro and Nano Scale Thermal Engineering 3 8 1 -735 2019-11-24 18:37:58.009637+05:30 563 Hydro-dynamic Machines 3 8 1 -737 2019-11-24 18:37:58.054568+05:30 562 Solar Energy 3 8 1 -739 2019-11-24 18:37:58.085517+05:30 561 Advanced Heat Transfer 3 8 1 -741 2019-11-24 18:37:58.11085+05:30 560 Advanced Fluid Mechanics 3 8 1 -743 2019-11-24 18:37:58.136202+05:30 559 Advanced Thermodynamics 3 8 1 -745 2019-11-24 18:37:58.161477+05:30 558 Modeling and Simulation 3 8 1 -747 2019-11-24 18:37:58.187285+05:30 557 Modeling and Simulation 3 8 1 -749 2019-11-24 18:37:58.212083+05:30 556 Robotics and Control 3 8 1 -751 2019-11-24 18:37:58.237541+05:30 555 Training Seminar 3 8 1 -753 2019-11-24 18:37:58.262743+05:30 554 B.Tech. Project 3 8 1 -755 2019-11-24 18:37:58.288288+05:30 553 Technical Communication 3 8 1 -757 2019-11-24 18:37:58.313653+05:30 552 Refrigeration and Air-Conditioning 3 8 1 -759 2019-11-24 18:37:58.338749+05:30 551 Industrial Management 3 8 1 -761 2019-11-24 18:37:58.364042+05:30 550 Vibration and Noise 3 8 1 -763 2019-11-24 18:37:58.389468+05:30 549 Operations Research 3 8 1 -765 2019-11-24 18:37:58.414619+05:30 548 Principles of Industrial Enigneering 3 8 1 -767 2019-11-24 18:37:58.440163+05:30 547 Dynamics of Machines 3 8 1 -769 2019-11-24 18:37:58.465458+05:30 546 THEORY OF MACHINES 3 8 1 -771 2019-11-24 18:37:58.49057+05:30 545 Energy Conversion 3 8 1 -773 2019-11-24 18:37:58.515925+05:30 544 THERMAL ENGINEERING 3 8 1 -775 2019-11-24 18:37:58.541177+05:30 543 FLUID MECHANICS 3 8 1 -777 2019-11-24 18:37:58.566499+05:30 542 MANUFACTURING TECHNOLOGY-II 3 8 1 -779 2019-11-24 18:37:58.591813+05:30 541 KINEMATICS OF MACHINES 3 8 1 -781 2019-11-24 18:37:58.617228+05:30 540 Non-Conventional Welding Processes 3 8 1 -783 2019-11-24 18:37:58.642458+05:30 539 Smart Materials, Structures, and Devices 3 8 1 -785 2019-11-24 18:37:58.668119+05:30 538 Advanced Mechanical Vibrations 3 8 1 -787 2019-11-24 18:37:58.693852+05:30 537 Finite Element Methods 3 8 1 -789 2019-11-24 18:37:58.719648+05:30 536 Computer Aided Mechanism Design 3 8 1 -791 2019-11-24 18:37:58.745185+05:30 535 Computational Fluid Dynamics & Heat Transfer 3 8 1 -793 2019-11-24 18:37:58.770611+05:30 534 Instrumentation and Experimental Methods 3 8 1 -795 2019-11-24 18:37:58.999012+05:30 533 Power Plants 3 8 1 -797 2019-11-24 18:37:59.575428+05:30 532 Work System Desing 3 8 1 -799 2019-11-24 18:37:59.601018+05:30 531 Theory of Production Processes-II 3 8 1 -801 2019-11-24 18:37:59.625635+05:30 530 Heat and Mass Transfer 3 8 1 -803 2019-11-24 18:37:59.65129+05:30 529 Machine Design 3 8 1 -805 2019-11-24 18:37:59.676505+05:30 528 Lab Based Project 3 8 1 -807 2019-11-24 18:37:59.701738+05:30 527 ENGINEERING ANALYSIS AND DESIGN 3 8 1 -809 2019-11-24 18:37:59.727162+05:30 526 Theory of Production Processes - I 3 8 1 -811 2019-11-24 18:37:59.75235+05:30 525 Fluid Mechanics 3 8 1 -813 2019-11-24 18:37:59.77759+05:30 524 Mechanical Engineering Drawing 3 8 1 -815 2019-11-24 18:37:59.803215+05:30 523 Engineering Thermodynamics 3 8 1 -817 2019-11-24 18:37:59.828205+05:30 522 Programming and Data Structure 3 8 1 -819 2019-11-24 18:37:59.853468+05:30 521 Introduction to Production and Industrial Engineering 3 8 1 -821 2019-11-24 18:37:59.87877+05:30 520 Introduction to Mechanical Engineering 3 8 1 -823 2019-11-24 18:37:59.905647+05:30 519 Advanced Manufacturing Processes 3 8 1 -825 2019-11-24 18:37:59.958036+05:30 518 ADVANCED NUMERICAL ANALYSIS 3 8 1 -827 2019-11-24 18:37:59.979477+05:30 517 SELECTED TOPICS IN ANALYSIS 3 8 1 -829 2019-11-24 18:38:00.005973+05:30 516 SEMINAR 3 8 1 -831 2019-11-24 18:38:00.030024+05:30 515 Seminar 3 8 1 -833 2019-11-24 18:38:00.055816+05:30 514 Orthogonal Polynomials and Special Functions 3 8 1 -835 2019-11-24 18:38:00.081122+05:30 513 Financial Mathematics 3 8 1 -837 2019-11-24 18:38:00.106639+05:30 512 Dynamical Systems 3 8 1 -839 2019-11-24 18:38:00.132089+05:30 511 CONTROL THEORY 3 8 1 -841 2019-11-24 18:38:00.15712+05:30 510 Coding Theory 3 8 1 -843 2019-11-24 18:38:00.182265+05:30 509 Advanced Numerical Analysis 3 8 1 -845 2019-11-24 18:38:00.207581+05:30 508 Mathematical Statistics 3 8 1 -847 2019-11-24 18:38:00.233372+05:30 507 SEMINAR 3 8 1 -849 2019-11-24 18:38:00.258306+05:30 506 OPERATIONS RESEARCH 3 8 1 -851 2019-11-24 18:38:00.283419+05:30 505 FUNCTIONAL ANALYSIS 3 8 1 -853 2019-11-24 18:38:00.309021+05:30 504 Functional Analysis 3 8 1 -855 2019-11-24 18:38:00.334556+05:30 503 Tensors and Differential Geometry 3 8 1 -857 2019-11-24 18:38:00.359059+05:30 502 Fluid Dynamics 3 8 1 -859 2019-11-24 18:38:00.384649+05:30 501 Mathematics 3 8 1 -861 2019-11-24 18:38:00.409844+05:30 500 SOFT COMPUTING 3 8 1 -863 2019-11-24 18:38:00.435534+05:30 499 Complex Analysis 3 8 1 -865 2019-11-24 18:38:00.461131+05:30 498 Computer Programming 3 8 1 -867 2019-11-24 18:38:00.486439+05:30 497 Abstract Algebra 3 8 1 -869 2019-11-24 18:38:00.512034+05:30 496 Topology 3 8 1 -871 2019-11-24 18:38:00.537507+05:30 495 Real Analysis 3 8 1 -873 2019-11-24 18:38:00.562611+05:30 494 Theory of Ordinary Differential Equations 3 8 1 -875 2019-11-24 18:38:00.588031+05:30 493 Complex Analysis-II 3 8 1 -877 2019-11-24 18:38:00.613385+05:30 492 Theory of Partial Differential Equations 3 8 1 -879 2019-11-24 18:38:00.638564+05:30 491 Topology 3 8 1 -881 2019-11-24 18:38:00.664484+05:30 490 Real Analysis-II 3 8 1 -883 2019-11-24 18:38:00.68986+05:30 489 THEORY OF ORDINARY DIFFERENTIAL EQUATIONS 3 8 1 -885 2019-11-24 18:38:00.715046+05:30 488 Technical Communication 3 8 1 -887 2019-11-24 18:38:00.74054+05:30 487 MATHEMATICAL IMAGING TECHNOLOGY 3 8 1 -889 2019-11-24 18:38:00.766047+05:30 486 Linear Programming 3 8 1 -891 2019-11-24 18:38:00.791264+05:30 485 Mathematical Statistics 3 8 1 -893 2019-11-24 18:38:00.816858+05:30 484 Abstract Algebra-I 3 8 1 -895 2019-11-24 18:38:00.849989+05:30 483 DESIGN AND ANALYSIS OF ALGORITHMS 3 8 1 -897 2019-11-24 18:38:00.875273+05:30 482 ORDINARY AND PARTIAL DIFFERENTIAL EQUATIONS 3 8 1 -899 2019-11-24 18:38:00.900988+05:30 481 DISCRETE MATHEMATICS 3 8 1 -718 2019-11-24 18:37:57.79373+05:30 201 B.Tech. Project 3 8 1 -720 2019-11-24 18:37:57.818837+05:30 200 Technical Communication 3 8 1 -722 2019-11-24 18:37:57.8442+05:30 199 Process Integration 3 8 1 -724 2019-11-24 18:37:57.869103+05:30 198 Optimization of Chemical Enigneering Processes 3 8 1 -726 2019-11-24 18:37:57.894334+05:30 197 Process Utilities and Safety 3 8 1 -728 2019-11-24 18:37:57.91974+05:30 196 Process Equipment Design* 3 8 1 -730 2019-11-24 18:37:57.945678+05:30 195 Process Dynamics and Control 3 8 1 -732 2019-11-24 18:37:57.971269+05:30 194 Fluid and Fluid Particle Mechanics 3 8 1 -734 2019-11-24 18:37:57.996735+05:30 193 CHEMICAL ENGINEERING THERMODYNAMICS 3 8 1 -736 2019-11-24 18:37:58.022235+05:30 192 Chemical Technology 3 8 1 -738 2019-11-24 18:37:58.072676+05:30 191 CHEMICAL ENGINEERING THERMODYNAMICS 3 8 1 -740 2019-11-24 18:37:58.098013+05:30 190 MECHANICAL OPERATION 3 8 1 -742 2019-11-24 18:37:58.123245+05:30 189 HEAT TRANSFER 3 8 1 -744 2019-11-24 18:37:58.148444+05:30 188 SEMINAR 3 8 1 -746 2019-11-24 18:37:58.173877+05:30 187 COMPUTATIONAL FLUID DYNAMICS 3 8 1 -748 2019-11-24 18:37:58.199482+05:30 186 Biochemical Engineering 3 8 1 -750 2019-11-24 18:37:58.224826+05:30 185 Advanced Reaction Engineering 3 8 1 -752 2019-11-24 18:37:58.250528+05:30 184 Advanced Transport Phenomena 3 8 1 -754 2019-11-24 18:37:58.275684+05:30 183 Mathematical Methods in Chemical Engineering 3 8 1 -756 2019-11-24 18:37:58.30112+05:30 182 Waste to Energy 3 8 1 -758 2019-11-24 18:37:58.326308+05:30 181 Polymer Physics and Rheology* 3 8 1 -760 2019-11-24 18:37:58.351585+05:30 180 Fluidization Engineering 3 8 1 -762 2019-11-24 18:37:58.376941+05:30 179 Computer Application in Chemical Engineering 3 8 1 -764 2019-11-24 18:37:58.402316+05:30 178 Enginering Analysis and Process Modeling 3 8 1 -766 2019-11-24 18:37:58.427542+05:30 177 Mass Transfer-II 3 8 1 -768 2019-11-24 18:37:58.453136+05:30 176 Mass Transfer -I 3 8 1 -770 2019-11-24 18:37:58.478161+05:30 175 Computer Programming and Numerical Methods 3 8 1 -772 2019-11-24 18:37:58.503525+05:30 174 Material and Energy Balance 3 8 1 -774 2019-11-24 18:37:58.528875+05:30 173 Introduction to Chemical Engineering 3 8 1 -776 2019-11-24 18:37:58.554547+05:30 172 Advanced Thermodynamics and Molecular Simulations 3 8 1 -778 2019-11-24 18:37:58.579397+05:30 171 DISSERTATION STAGE I 3 8 1 -780 2019-11-24 18:37:58.604885+05:30 170 SEMINAR 3 8 1 -782 2019-11-24 18:37:58.6301+05:30 169 ADVANCED TRANSPORT PROCESS 3 8 1 -784 2019-11-24 18:37:58.655453+05:30 168 RECOMBINANT DNA TECHNOLOGY 3 8 1 -786 2019-11-24 18:37:58.68177+05:30 167 REACTION KINETICS AND REACTOR DESIGN 3 8 1 -788 2019-11-24 18:37:58.706673+05:30 166 MICROBIOLOGY AND BIOCHEMISTRY 3 8 1 -790 2019-11-24 18:37:58.732422+05:30 165 Chemical Genetics and Drug Discovery 3 8 1 -792 2019-11-24 18:37:58.757377+05:30 164 Structural Biology 3 8 1 -794 2019-11-24 18:37:58.783133+05:30 163 Genomics and Proteomics 3 8 1 -796 2019-11-24 18:37:59.181958+05:30 162 Vaccine Development & Production 3 8 1 -798 2019-11-24 18:37:59.587455+05:30 161 Cell & Tissue Culture Technology 3 8 1 -800 2019-11-24 18:37:59.612813+05:30 160 Biotechnology Laboratory – III 3 8 1 -802 2019-11-24 18:37:59.638094+05:30 159 Seminar 3 8 1 -804 2019-11-24 18:37:59.663363+05:30 158 Genetic Engineering 3 8 1 -806 2019-11-24 18:37:59.688737+05:30 157 Biophysical Techniques 3 8 1 -808 2019-11-24 18:37:59.713985+05:30 156 DOWNSTREAM PROCESSING 3 8 1 -810 2019-11-24 18:37:59.73942+05:30 155 BIOREACTION ENGINEERING 3 8 1 -812 2019-11-24 18:37:59.764714+05:30 154 Technical Communication 3 8 1 -814 2019-11-24 18:37:59.789941+05:30 153 Cell & Developmental Biology 3 8 1 -816 2019-11-24 18:37:59.815262+05:30 152 Genetics & Molecular Biology 3 8 1 -818 2019-11-24 18:37:59.840636+05:30 151 Applied Microbiology 3 8 1 -820 2019-11-24 18:37:59.866184+05:30 150 Biotechnology Laboratory – I 3 8 1 -822 2019-11-24 18:37:59.891252+05:30 149 Biochemistry 3 8 1 -824 2019-11-24 18:37:59.94149+05:30 148 Training Seminar 3 8 1 -826 2019-11-24 18:37:59.967597+05:30 147 Drug Designing 3 8 1 -828 2019-11-24 18:37:59.991665+05:30 146 Protein Engineering 3 8 1 -830 2019-11-24 18:38:00.017366+05:30 145 Genomics and Proteomics 3 8 1 -832 2019-11-24 18:38:00.043327+05:30 144 B.Tech. Project 3 8 1 -834 2019-11-24 18:38:00.068857+05:30 143 Technical Communication 3 8 1 -836 2019-11-24 18:38:00.094102+05:30 142 CELL AND TISSUE ENGINEERING 3 8 1 -838 2019-11-24 18:38:00.119565+05:30 141 IMMUNOTECHNOLOGY 3 8 1 -840 2019-11-24 18:38:00.144961+05:30 140 GENETICS AND MOLECULAR BIOLOGY 3 8 1 -842 2019-11-24 18:38:00.170575+05:30 139 Computer Programming 3 8 1 -844 2019-11-24 18:38:00.195252+05:30 138 Introduction to Biotechnology 3 8 1 -846 2019-11-24 18:38:00.220552+05:30 137 Molecular Biophysics 3 8 1 -848 2019-11-24 18:38:00.246016+05:30 136 Animal Biotechnology 3 8 1 -850 2019-11-24 18:38:00.271094+05:30 135 Plant Biotechnology 3 8 1 -852 2019-11-24 18:38:00.296492+05:30 134 Bioseparation Engineering 3 8 1 -854 2019-11-24 18:38:00.321727+05:30 133 Bioprocess Engineering 3 8 1 -856 2019-11-24 18:38:00.346638+05:30 132 Chemical Kinetics and Reactor Design 3 8 1 -858 2019-11-24 18:38:00.372489+05:30 131 BIOINFORMATICS 3 8 1 -860 2019-11-24 18:38:00.397391+05:30 130 MICROBIOLOGY 3 8 1 -862 2019-11-24 18:38:00.423024+05:30 129 Professional Training 3 8 1 -864 2019-11-24 18:38:00.448738+05:30 128 Planning Studio-III 3 8 1 -866 2019-11-24 18:38:00.473738+05:30 127 DISSERTATION STAGE-I 3 8 1 -868 2019-11-24 18:38:00.499173+05:30 126 Professional Training 3 8 1 -870 2019-11-24 18:38:00.524424+05:30 125 Design Studio-III 3 8 1 -872 2019-11-24 18:38:00.549901+05:30 124 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 3 8 1 -874 2019-11-24 18:38:00.574965+05:30 123 Housing 3 8 1 -876 2019-11-24 18:38:00.600762+05:30 122 Planning Theory and Techniques 3 8 1 -878 2019-11-24 18:38:00.625666+05:30 121 Ecology and Sustainable Development 3 8 1 -880 2019-11-24 18:38:00.650955+05:30 120 Infrastructure Planning 3 8 1 -882 2019-11-24 18:38:00.677084+05:30 119 Socio Economics, Demography and Quantitative Techniques 3 8 1 -884 2019-11-24 18:38:00.702245+05:30 118 Planning Studio-I 3 8 1 -886 2019-11-24 18:38:00.727516+05:30 117 Computer Applications in Architecture 3 8 1 -888 2019-11-24 18:38:00.752998+05:30 116 Advanced Building Technologies 3 8 1 -890 2019-11-24 18:38:00.778228+05:30 115 Urban Design 3 8 1 -892 2019-11-24 18:38:00.80356+05:30 114 Contemporary Architecture- Theories and Trends 3 8 1 -894 2019-11-24 18:38:00.828975+05:30 113 Design Studio-I 3 8 1 -896 2019-11-24 18:38:00.8622+05:30 112 Live Project/Studio/Seminar-II 3 8 1 -898 2019-11-24 18:38:00.888228+05:30 111 Vastushastra 3 8 1 -900 2019-11-24 18:38:00.91297+05:30 110 Hill Architecture 3 8 1 -902 2019-11-24 18:38:00.938433+05:30 109 Urban Planning 3 8 1 -904 2019-11-24 18:38:00.963577+05:30 108 Thesis Project I 3 8 1 -906 2019-11-24 18:38:00.989421+05:30 107 Architectural Design-VII 3 8 1 -908 2019-11-24 18:38:01.015636+05:30 106 Live Project/ Studio/ Seminar-I 3 8 1 -910 2019-11-24 18:38:01.040094+05:30 105 Ekistics 3 8 1 -912 2019-11-24 18:38:01.122855+05:30 104 Working Drawing 3 8 1 -914 2019-11-24 18:38:01.14787+05:30 103 Sustainable Architecture 3 8 1 -916 2019-11-24 18:38:01.173354+05:30 102 Urban Design 3 8 1 -918 2019-11-24 18:38:01.198431+05:30 101 Architectural Design-VI 3 8 1 -920 2019-11-24 18:38:01.224007+05:30 100 MODERN INDIAN ARCHITECTURE 3 8 1 -922 2019-11-24 18:38:01.249822+05:30 99 Interior Design 3 8 1 -924 2019-11-24 18:38:01.27444+05:30 98 Computer Applications in Architecture 3 8 1 -926 2019-11-24 18:38:01.60747+05:30 97 Building Construction-IV 3 8 1 -928 2019-11-24 18:38:02.054652+05:30 96 Architectural Design-IV 3 8 1 -930 2019-11-24 18:38:02.194271+05:30 95 MEASURED DRAWING CAMP 3 8 1 -932 2019-11-24 18:38:02.219762+05:30 94 PRICIPLES OF ARCHITECTURE 3 8 1 -934 2019-11-24 18:38:02.244909+05:30 93 STRUCTURE AND ARCHITECTURE 3 8 1 -936 2019-11-24 18:38:02.27068+05:30 92 QUANTITY, PRICING AND SPECIFICATIONS 3 8 1 -938 2019-11-24 18:38:02.29605+05:30 91 HISTORY OF ARCHITECTUTRE I 3 8 1 -940 2019-11-24 18:38:02.32142+05:30 90 BUILDING CONSTRUCTION II 3 8 1 -942 2019-11-24 18:38:02.346741+05:30 89 Architectural Design-III 3 8 1 -944 2019-11-24 18:38:02.371922+05:30 88 ARCHITECTURAL DESIGN II 3 8 1 -946 2019-11-24 18:38:02.397356+05:30 87 Basic Design and Creative Workshop I 3 8 1 -948 2019-11-24 18:38:02.422658+05:30 86 Architectural Graphics I 3 8 1 -950 2019-11-24 18:38:02.448099+05:30 85 Visual Art I 3 8 1 -952 2019-11-24 18:38:02.485352+05:30 84 Introduction to Architecture 3 8 1 -954 2019-11-24 18:38:02.509977+05:30 83 SEMINAR 3 8 1 -956 2019-11-24 18:38:02.535474+05:30 82 Regional Planning 3 8 1 -958 2019-11-24 18:38:02.561047+05:30 81 Planning Legislation and Governance 3 8 1 -960 2019-11-24 18:38:02.586641+05:30 80 Modern World Architecture 3 8 1 -962 2019-11-24 18:38:02.620038+05:30 79 SEMINAR 3 8 1 -964 2019-11-24 18:38:02.645351+05:30 78 Advanced Characterization Techniques 3 8 1 -901 2019-11-24 18:38:00.925815+05:30 480 Introduction to Computer Programming 3 8 1 -903 2019-11-24 18:38:00.95169+05:30 479 Mathematics-I 3 8 1 -905 2019-11-24 18:38:00.976522+05:30 478 Numerical Methods, Probability and Statistics 3 8 1 -907 2019-11-24 18:38:01.001921+05:30 477 Optimization Techniques 3 8 1 -909 2019-11-24 18:38:01.027173+05:30 476 Probability and Statistics 3 8 1 -911 2019-11-24 18:38:01.052243+05:30 475 MEASURE THEORY 3 8 1 -913 2019-11-24 18:38:01.134784+05:30 474 Statistical Inference 3 8 1 -915 2019-11-24 18:38:01.160324+05:30 473 COMPLEX ANALYSIS-I 3 8 1 -917 2019-11-24 18:38:01.185756+05:30 472 Real Analysis I 3 8 1 -919 2019-11-24 18:38:01.210956+05:30 471 Introduction to Mathematical Sciences 3 8 1 -921 2019-11-24 18:38:01.23676+05:30 470 Probability and Statistics 3 8 1 -923 2019-11-24 18:38:01.261592+05:30 469 Mathematical Methods 3 8 1 -925 2019-11-24 18:38:01.441161+05:30 468 DISSERTATION STAGE-II (CONTINUED FROM III SEMESTER) 3 8 1 -927 2019-11-24 18:38:02.017536+05:30 467 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 3 8 1 -929 2019-11-24 18:38:02.124324+05:30 466 SEMINAR 3 8 1 -931 2019-11-24 18:38:02.207299+05:30 465 Watershed modeling and simulation 3 8 1 -933 2019-11-24 18:38:02.23309+05:30 464 Soil and groundwater contamination modelling 3 8 1 -935 2019-11-24 18:38:02.25782+05:30 463 Experimental hydrology 3 8 1 -937 2019-11-24 18:38:02.28337+05:30 462 Remote sensing and GIS applications 3 8 1 -939 2019-11-24 18:38:02.308429+05:30 461 Environmental quality 3 8 1 -941 2019-11-24 18:38:02.333814+05:30 460 Watershed Behavior and Conservation Practices 3 8 1 -943 2019-11-24 18:38:02.359278+05:30 459 Geophysical investigations 3 8 1 -945 2019-11-24 18:38:02.384439+05:30 458 Groundwater hydrology 3 8 1 -947 2019-11-24 18:38:02.409744+05:30 457 Stochastic hydrology 3 8 1 -949 2019-11-24 18:38:02.435098+05:30 456 Irrigation and drainage engineering 3 8 1 -951 2019-11-24 18:38:02.455979+05:30 455 Engineering Hydrology 3 8 1 -953 2019-11-24 18:38:02.497123+05:30 454 RESEARCH METHODOLOGY IN LANGUAGE & LITERATURE 3 8 1 -955 2019-11-24 18:38:02.522812+05:30 453 RESEARCH METHODOLOGY IN SOCIAL SCIENCES 3 8 1 -957 2019-11-24 18:38:02.547773+05:30 452 UNDERSTANDING PERSONLALITY 3 8 1 -959 2019-11-24 18:38:02.573384+05:30 451 SEMINAR 3 8 1 -961 2019-11-24 18:38:02.608011+05:30 450 Advanced Topics in Growth Theory 3 8 1 -963 2019-11-24 18:38:02.632739+05:30 449 Ecological Economics 3 8 1 -965 2019-11-24 18:38:02.657618+05:30 448 Introduction to Research Methodology 3 8 1 -966 2019-11-24 18:38:02.691196+05:30 447 Issues in Indian Economy 3 8 1 -967 2019-11-24 18:38:02.709227+05:30 446 PUBLIC POLICY; THEORY AND PRACTICE 3 8 1 -968 2019-11-24 18:38:02.726634+05:30 445 ADVANCED ECONOMETRICS 3 8 1 -969 2019-11-24 18:38:02.737809+05:30 444 MONEY, BANKING AND FINANCIAL MARKETS 3 8 1 -970 2019-11-24 18:38:02.749872+05:30 443 DEVELOPMENT ECONOMICS 3 8 1 -971 2019-11-24 18:38:02.762279+05:30 442 MATHEMATICS FOR ECONOMISTS 3 8 1 -972 2019-11-24 18:38:02.774723+05:30 441 MACROECONOMICS I 3 8 1 -973 2019-11-24 18:38:02.800504+05:30 440 MICROECONOMICS I 3 8 1 -974 2019-11-24 18:38:02.812962+05:30 439 HSN-01 3 8 1 -975 2019-11-24 18:38:02.825781+05:30 438 UNDERSTANDING PERSONALITY 3 8 1 -976 2019-11-24 18:38:02.838665+05:30 437 Sociology 3 8 1 -977 2019-11-24 18:38:02.851325+05:30 436 Economics 3 8 1 -978 2019-11-24 18:38:02.864822+05:30 435 Technical Communication 3 8 1 -979 2019-11-24 18:38:02.877199+05:30 434 Society,Culture Built Environment 3 8 1 -980 2019-11-24 18:38:02.890055+05:30 433 Introduction to Psychology 3 8 1 -981 2019-11-24 18:38:02.902615+05:30 432 Communication Skills(Advance) 3 8 1 -982 2019-11-24 18:38:02.915574+05:30 431 Communication Skills(Basic) 3 8 1 -983 2019-11-24 18:38:02.927733+05:30 430 Technical Communication 3 8 1 -984 2019-11-24 18:38:02.940862+05:30 429 Communication skills (Basic) 3 8 1 -985 2019-11-24 18:38:02.953561+05:30 428 DISSERTATION STAGE-II (CONTINUED FROM III SEMESTER) 3 8 1 -986 2019-11-24 18:38:02.966248+05:30 427 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 3 8 1 -987 2019-11-24 18:38:02.978872+05:30 426 SEMINAR 3 8 1 -988 2019-11-24 18:38:02.991499+05:30 425 Analog VLSI Circuit Design 3 8 1 -989 2019-11-24 18:38:03.004722+05:30 424 Digital System Design 3 8 1 -990 2019-11-24 18:38:03.017214+05:30 423 Simulation Lab-1 3 8 1 -991 2019-11-24 18:38:03.029686+05:30 422 Microelectronics Lab-1 3 8 1 -992 2019-11-24 18:38:03.046759+05:30 421 Digital VLSI Circuit Design 3 8 1 -993 2019-11-24 18:38:03.072009+05:30 420 MOS Device Physics 3 8 1 -994 2019-11-24 18:38:03.084759+05:30 419 Microwave and Millimeter Wave Circuits 3 8 1 -995 2019-11-24 18:38:03.097383+05:30 418 Antenna Theory & Design 3 8 1 -996 2019-11-24 18:38:03.109706+05:30 417 Advanced EMFT 3 8 1 -997 2019-11-24 18:38:03.122641+05:30 416 Microwave Engineering 3 8 1 -998 2019-11-24 18:38:03.134983+05:30 415 Microwave Lab 3 8 1 -999 2019-11-24 18:38:03.148149+05:30 414 Telecommunication Networks 3 8 1 -1000 2019-11-24 18:38:03.160403+05:30 413 Information and Communication Theory 3 8 1 -1001 2019-11-24 18:38:03.173097+05:30 412 Digital Communication Systems 3 8 1 -1002 2019-11-24 18:38:03.18557+05:30 411 Laboratory 3 8 1 -1003 2019-11-24 18:38:03.198115+05:30 410 Training Seminar 3 8 1 -1004 2019-11-24 18:38:03.21077+05:30 409 B.Tech. Project 3 8 1 -1005 2019-11-24 18:38:03.231997+05:30 408 Technical Communication 3 8 1 -1006 2019-11-24 18:38:03.244286+05:30 407 IC Application Laboratory 3 8 1 -1007 2019-11-24 18:38:03.256948+05:30 406 Fundamentals of Microelectronics 3 8 1 -1008 2019-11-24 18:38:03.269839+05:30 405 Microelectronic Devices,Technology and Circuits 3 8 1 -1009 2019-11-24 18:38:03.282293+05:30 404 ELECTRONICS NETWORK THEORY 3 8 1 -1010 2019-11-24 18:38:03.294631+05:30 403 SIGNALS AND SYSTEMS 3 8 1 -1011 2019-11-24 18:38:03.307544+05:30 402 Introduction to Electronics and Communication Engineering 3 8 1 -1012 2019-11-24 18:38:03.320369+05:30 401 SIGNALS AND SYSTEMS 3 8 1 -1013 2019-11-24 18:38:03.333216+05:30 400 RF System Design and Analysis 3 8 1 -1014 2019-11-24 18:38:03.345213+05:30 399 Radar Signal Processing 3 8 1 -1015 2019-11-24 18:38:03.35814+05:30 398 Fiber Optic Systems 3 8 1 -1016 2019-11-24 18:38:03.370619+05:30 397 Coding Theory and Applications 3 8 1 -1017 2019-11-24 18:38:03.383935+05:30 396 Microwave Engineering 3 8 1 -1018 2019-11-24 18:38:03.395956+05:30 395 Antenna Theory 3 8 1 -1019 2019-11-24 18:38:03.408979+05:30 394 Communication Systems and Techniques 3 8 1 -1020 2019-11-24 18:38:03.421654+05:30 393 Digital Electronic Circuits Laboratory 3 8 1 -1021 2019-11-24 18:38:03.434823+05:30 392 Engineering Electromagnetics 3 8 1 -1022 2019-11-24 18:38:03.447438+05:30 391 Automatic Control Systems 3 8 1 -1023 2019-11-24 18:38:03.459896+05:30 390 Principles of Digital Communication 3 8 1 -1024 2019-11-24 18:38:03.472851+05:30 389 Fundamental of Electronics 3 8 1 -1025 2019-11-24 18:38:03.485474+05:30 388 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 3 8 1 -1026 2019-11-24 18:38:03.498195+05:30 387 SEMINAR 3 8 1 -1027 2019-11-24 18:38:03.510354+05:30 386 Modeling and Simulation 3 8 1 -1028 2019-11-24 18:38:03.523454+05:30 385 Introduction to Robotics 3 8 1 -1029 2019-11-24 18:38:03.543958+05:30 384 Smart Grid 3 8 1 -1030 2019-11-24 18:38:03.557028+05:30 383 Power System Planning 3 8 1 -1031 2019-11-24 18:38:03.569287+05:30 382 Enhanced Power Quality AC-DC Converters 3 8 1 -1032 2019-11-24 18:38:03.582086+05:30 381 Advances in Signal and Image Processing 3 8 1 -1033 2019-11-24 18:38:03.594662+05:30 380 Advanced System Engineering 3 8 1 -1034 2019-11-24 18:38:03.608351+05:30 379 Intelligent Control Techniques 3 8 1 -1035 2019-11-24 18:38:03.621037+05:30 378 Advanced Linear Control Systems 3 8 1 -1036 2019-11-24 18:38:03.633771+05:30 377 EHV AC Transmission Systems 3 8 1 -1037 2019-11-24 18:38:03.645933+05:30 376 Distribution System Analysis and Operation 3 8 1 -1038 2019-11-24 18:38:03.658983+05:30 375 Power System Operation and Control 3 8 1 -1039 2019-11-24 18:38:03.671303+05:30 374 Computer Aided Power System Analysis 3 8 1 -1040 2019-11-24 18:38:03.684552+05:30 373 Advanced Electric Drives 3 8 1 -1041 2019-11-24 18:38:03.696763+05:30 372 Analysis of Electrical Machines 3 8 1 -1042 2019-11-24 18:38:03.709605+05:30 371 Advanced Power Electronics 3 8 1 -1043 2019-11-24 18:38:03.721828+05:30 370 Biomedical Instrumentation 3 8 1 -1044 2019-11-24 18:38:03.734805+05:30 369 Digital Signal and Image Processing 3 8 1 -1045 2019-11-24 18:38:03.747192+05:30 368 Advanced Industrial and Electronic Instrumentation 3 8 1 -1046 2019-11-24 18:38:03.760142+05:30 367 Training Seminar 3 8 1 -1047 2019-11-24 18:38:03.772566+05:30 366 B.Tech. Project 3 8 1 -1048 2019-11-24 18:38:03.801897+05:30 365 Technical Communication 3 8 1 -1049 2019-11-24 18:38:03.814219+05:30 364 Embedded Systems 3 8 1 -1050 2019-11-24 18:38:03.827307+05:30 363 Data Structures 3 8 1 -1051 2019-11-24 18:38:03.860713+05:30 362 Signals and Systems 3 8 1 -1052 2019-11-24 18:38:04.068118+05:30 361 Artificial Neural Networks 3 8 1 -1053 2019-11-24 18:38:04.265941+05:30 360 Advanced Control Systems 3 8 1 -1054 2019-11-24 18:38:04.685469+05:30 359 Power Electronics 3 8 1 -1055 2019-11-24 18:38:04.698599+05:30 358 Power System Analysis & Control 3 8 1 -1056 2019-11-24 18:38:04.710803+05:30 357 ENGINEERING ANALYSIS AND DESIGN 3 8 1 -1057 2019-11-24 18:38:04.723807+05:30 356 DESIGN OF ELECTRONICS CIRCUITS 3 8 1 -1058 2019-11-24 18:38:04.793367+05:30 355 DIGITAL ELECTRONICS AND CIRCUITS 3 8 1 -1059 2019-11-24 18:38:04.806293+05:30 354 ELECTRICAL MACHINES-I 3 8 1 -1060 2019-11-24 18:38:04.818748+05:30 353 Programming in C++ 3 8 1 -1061 2019-11-24 18:38:04.83178+05:30 352 Network Theory 3 8 1 -1062 2019-11-24 18:38:04.844054+05:30 351 Introduction to Electrical Engineering 3 8 1 -1063 2019-11-24 18:38:04.85695+05:30 350 Instrumentation laboratory 3 8 1 -1064 2019-11-24 18:38:04.869568+05:30 349 Electrical Science 3 8 1 -1065 2019-11-24 18:38:04.882486+05:30 348 SEMINAR 3 8 1 -1066 2019-11-24 18:38:04.89464+05:30 347 Plate Tectonics 3 8 1 -1067 2019-11-24 18:38:04.907869+05:30 346 Well Logging 3 8 1 -1068 2019-11-24 18:38:04.920351+05:30 345 Petroleum Geology 3 8 1 -1069 2019-11-24 18:38:04.933339+05:30 344 Engineering Geology 3 8 1 -1070 2019-11-24 18:38:04.953414+05:30 343 Indian Mineral Deposits 3 8 1 -1071 2019-11-24 18:38:04.96705+05:30 342 Isotope Geology 3 8 1 -1072 2019-11-24 18:38:04.986496+05:30 341 Seminar 3 8 1 -1073 2019-11-24 18:38:05.000373+05:30 340 ADVANCED SEISMIC PROSPECTING 3 8 1 -1074 2019-11-24 18:38:05.012252+05:30 339 DYNAMIC SYSTEMS IN EARTH SCIENCES 3 8 1 -1075 2019-11-24 18:38:05.025262+05:30 338 Global Environment 3 8 1 -1076 2019-11-24 18:38:05.038345+05:30 337 Micropaleontology and Paleoceanography 3 8 1 -1077 2019-11-24 18:38:05.05084+05:30 336 ISOTOPE GEOLOGY 3 8 1 -1078 2019-11-24 18:38:05.071027+05:30 335 Geophysical Prospecting 3 8 1 -1079 2019-11-24 18:38:05.08407+05:30 334 Sedimentology and Stratigraphy 3 8 1 -1080 2019-11-24 18:38:05.096341+05:30 333 Comprehensive Viva Voce 3 8 1 -1081 2019-11-24 18:38:05.109334+05:30 332 Structural Geology 3 8 1 -1082 2019-11-24 18:38:05.121475+05:30 331 Igneous Petrology 3 8 1 -1083 2019-11-24 18:38:05.134471+05:30 330 Geochemistry 3 8 1 -1084 2019-11-24 18:38:05.146985+05:30 329 Crystallography and Mineralogy 3 8 1 -1085 2019-11-24 18:38:05.159896+05:30 328 Numerical Techniques and Computer Programming 3 8 1 -1086 2019-11-24 18:38:05.172292+05:30 327 Comprehensive Viva Voce 3 8 1 -1087 2019-11-24 18:38:05.185157+05:30 326 Seminar-I 3 8 1 -1088 2019-11-24 18:38:05.1975+05:30 325 STRONG MOTION SEISMOGRAPH 3 8 1 -1089 2019-11-24 18:38:05.21058+05:30 324 Geophysical Well logging 3 8 1 -1090 2019-11-24 18:38:05.223471+05:30 323 Numerical Modelling in Geophysical 3 8 1 -1091 2019-11-24 18:38:05.236041+05:30 322 PETROLEUM GEOLOGY 3 8 1 -1092 2019-11-24 18:38:05.248782+05:30 321 HYDROGEOLOGY 3 8 1 -1093 2019-11-24 18:38:05.261222+05:30 320 ENGINEERING GEOLOGY 3 8 1 -1094 2019-11-24 18:38:05.274338+05:30 319 PRINCIPLES OF GIS 3 8 1 -1095 2019-11-24 18:38:05.287053+05:30 318 PRINCIPLES OF REMOTE SENSING 3 8 1 -1096 2019-11-24 18:38:05.299866+05:30 317 Technical Communication 3 8 1 -1097 2019-11-24 18:38:05.311381+05:30 316 ROCK AND SOIL MECHANICS 3 8 1 -1098 2019-11-24 18:38:05.324364+05:30 315 Seismology 3 8 1 -1099 2019-11-24 18:38:05.337047+05:30 314 Gravity and Magnetic Prospecting 3 8 1 -1100 2019-11-24 18:38:05.349741+05:30 313 Economic Geology 3 8 1 -1101 2019-11-24 18:38:05.427739+05:30 312 Metamorphic Petrology 3 8 1 -1102 2019-11-24 18:38:05.440705+05:30 311 Structural Geology-II 3 8 1 -1103 2019-11-24 18:38:05.457002+05:30 310 GEOPHYSICAL PROSPECTING 3 8 1 -1104 2019-11-24 18:38:05.470105+05:30 309 FIELD THEORY 3 8 1 -1105 2019-11-24 18:38:05.48193+05:30 308 STRUCTURAL GEOLOGY-I 3 8 1 -1106 2019-11-24 18:38:05.49485+05:30 307 PALEONTOLOGY 3 8 1 -1107 2019-11-24 18:38:05.507334+05:30 306 BASIC PETROLOGY 3 8 1 -1108 2019-11-24 18:38:05.520859+05:30 305 Computer Programming 3 8 1 -1109 2019-11-24 18:38:05.533178+05:30 304 Introduction to Earth Sciences 3 8 1 -1110 2019-11-24 18:38:05.545616+05:30 303 Electrical Prospecting 3 8 1 -1111 2019-11-24 18:38:05.558121+05:30 302 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 3 8 1 -1112 2019-11-24 18:38:05.571132+05:30 301 SEMINAR 3 8 1 -1113 2019-11-24 18:38:05.583705+05:30 300 Principles of Seismology 3 8 1 -1114 2019-11-24 18:38:05.596291+05:30 299 Machine Foundation 3 8 1 -1115 2019-11-24 18:38:05.608735+05:30 298 Earthquake Resistant Design of Structures 3 8 1 -1116 2019-11-24 18:38:05.621752+05:30 297 Vulnerability and Risk Analysis 3 8 1 -1117 2019-11-24 18:38:05.634008+05:30 296 Seismological Modeling and Simulation 3 8 1 -1118 2019-11-24 18:38:05.646694+05:30 295 Seismic Hazard Assessment 3 8 1 -1119 2019-11-24 18:38:05.659263+05:30 294 Geotechnical Earthquake Engineering 3 8 1 -1120 2019-11-24 18:38:05.672194+05:30 293 Numerical Methods for Dynamic Systems 3 8 1 -1121 2019-11-24 18:38:05.684929+05:30 292 Finite Element Method 3 8 1 -1122 2019-11-24 18:38:05.697599+05:30 291 Engineering Seismology 3 8 1 -1123 2019-11-24 18:38:05.709762+05:30 290 Vibration of Elastic Media 3 8 1 -1124 2019-11-24 18:38:05.722938+05:30 289 Theory of Vibrations 3 8 1 -1125 2019-11-24 18:38:05.735304+05:30 288 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 3 8 1 -1126 2019-11-24 18:38:05.748404+05:30 287 SEMINAR 3 8 1 -1127 2019-11-24 18:38:05.761017+05:30 286 Advanced Topics in Software Engineering 3 8 1 -1128 2019-11-24 18:38:05.773678+05:30 285 Lab II (Project Lab) 3 8 1 -1129 2019-11-24 18:38:05.785878+05:30 284 Lab I (Programming Lab) 3 8 1 -1130 2019-11-24 18:38:05.798815+05:30 283 Advanced Computer Networks 3 8 1 -1131 2019-11-24 18:38:05.811397+05:30 282 Advanced Operating Systems 3 8 1 -1132 2019-11-24 18:38:05.833376+05:30 281 Advanced Algorithms 3 8 1 -1133 2019-11-24 18:38:05.845629+05:30 280 Training Seminar 3 8 1 -1134 2019-11-24 18:38:05.858258+05:30 279 B.Tech. Project 3 8 1 -1135 2019-11-24 18:38:05.870671+05:30 278 Technical Communication 3 8 1 -1136 2019-11-24 18:38:05.883624+05:30 277 Computer Network Laboratory 3 8 1 -1137 2019-11-24 18:38:05.896011+05:30 276 Theory of Computation 3 8 1 -1138 2019-11-24 18:38:05.909001+05:30 275 Computer Network 3 8 1 -1139 2019-11-24 18:38:05.921483+05:30 274 DATA STRUCTURE LABORATORY 3 8 1 -1140 2019-11-24 18:38:05.934415+05:30 273 COMPUTER ARCHITECTURE AND MICROPROCESSORS 3 8 1 -1141 2019-11-24 18:38:05.947169+05:30 272 Fundamentals of Object Oriented Programming 3 8 1 -1142 2019-11-24 18:38:05.959513+05:30 271 Introduction to Computer Science and Engineering 3 8 1 -1143 2019-11-24 18:38:05.972442+05:30 270 Logic and Automated Reasoning 3 8 1 -1144 2019-11-24 18:38:05.984811+05:30 269 Data Mining and Warehousing 3 8 1 -1145 2019-11-24 18:38:05.997911+05:30 268 MACHINE LEARNING 3 8 1 -1146 2019-11-24 18:38:06.010261+05:30 267 ARTIFICIAL INTELLIGENCE 3 8 1 -1147 2019-11-24 18:38:06.023181+05:30 266 Compiler Design 3 8 1 -1148 2019-11-24 18:38:06.035389+05:30 265 Data Base Management Systems 3 8 1 -1149 2019-11-24 18:38:06.048338+05:30 264 OBJECT ORIENTED ANALYSIS AND DESIGN 3 8 1 -1150 2019-11-24 18:38:06.060891+05:30 263 Data Structures 3 8 1 -1151 2019-11-24 18:38:06.07365+05:30 262 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 3 8 1 -1152 2019-11-24 18:38:06.086381+05:30 261 SEMINAR 3 8 1 -1153 2019-11-24 18:38:06.099213+05:30 260 Geoinformatics for Landuse Surveys 3 8 1 -1154 2019-11-24 18:38:06.111475+05:30 259 Planning, Design and Construction of Rural Roads 3 8 1 -1155 2019-11-24 18:38:06.124357+05:30 258 Pavement Analysis and Design 3 8 1 -1156 2019-11-24 18:38:06.136893+05:30 257 Traffic Engineering and Modeling 3 8 1 -1157 2019-11-24 18:38:06.149894+05:30 256 Modeling, Simulation and Optimization 3 8 1 -1158 2019-11-24 18:38:06.162094+05:30 255 Free Surface Flows 3 8 1 -1159 2019-11-24 18:38:06.175014+05:30 254 Advanced Fluid Mechanics 3 8 1 -1160 2019-11-24 18:38:06.187699+05:30 253 Advanced Hydrology 3 8 1 -1161 2019-11-24 18:38:06.200426+05:30 252 Soil Dynamics and Machine Foundations 3 8 1 -1162 2019-11-24 18:38:06.212837+05:30 251 Engineering Behaviour of Rocks 3 8 1 -1163 2019-11-24 18:38:06.225744+05:30 250 Advanced Soil Mechanics 3 8 1 -1164 2019-11-24 18:38:06.238094+05:30 249 Advanced Numerical Analysis 3 8 1 -1165 2019-11-24 18:38:06.251266+05:30 248 FIELD SURVEY CAMP 3 8 1 -1166 2019-11-24 18:38:06.263581+05:30 247 Principles of Photogrammetry 3 8 1 -1167 2019-11-24 18:38:06.276296+05:30 246 Surveying Measurements and Adjustments 3 8 1 -1168 2019-11-24 18:38:06.288809+05:30 245 Environmental Hydraulics 3 8 1 -1169 2019-11-24 18:38:06.301659+05:30 244 Water Treatment 3 8 1 -1170 2019-11-24 18:38:06.314062+05:30 243 Environmental Modeling and Simulation 3 8 1 -1171 2019-11-24 18:38:06.326805+05:30 242 Training Seminar 3 8 1 -1172 2019-11-24 18:38:06.339366+05:30 241 Advanced Highway Engineering 3 8 1 -1173 2019-11-24 18:38:06.352202+05:30 240 Advanced Water and Wastewater Treatment 3 8 1 -1174 2019-11-24 18:38:06.364827+05:30 239 WATER RESOURCE ENGINEERING 3 8 1 -1175 2019-11-24 18:38:06.377142+05:30 238 B.Tech. Project 3 8 1 -1176 2019-11-24 18:38:06.389451+05:30 237 Technical Communication 3 8 1 -1177 2019-11-24 18:38:06.402295+05:30 236 Design of Reinforced Concrete Elements 3 8 1 -1178 2019-11-24 18:38:06.415322+05:30 235 Soil Mechanicas 3 8 1 -1179 2019-11-24 18:38:06.428102+05:30 234 Theory of Structures 3 8 1 -1180 2019-11-24 18:38:06.44116+05:30 233 ENGINEERING GRAPHICS 3 8 1 -1181 2019-11-24 18:38:06.453862+05:30 232 Highway and Traffic Engineering 3 8 1 -1182 2019-11-24 18:38:06.64542+05:30 231 STRUCTURAL ANALYSIS-I 3 8 1 -1183 2019-11-24 18:38:06.82784+05:30 230 CHANNEL HYDRAULICS 3 8 1 -1184 2019-11-24 18:38:07.271047+05:30 229 GEOMATICS ENGINEERING-II 3 8 1 -1185 2019-11-24 18:38:07.283862+05:30 228 Urban Mass Transit Systems 3 8 1 -1186 2019-11-24 18:38:07.296185+05:30 227 Transportation Planning 3 8 1 -1187 2019-11-24 18:38:07.308976+05:30 226 Road Traffic Safety 3 8 1 -1188 2019-11-24 18:38:07.321567+05:30 225 Behaviour & Design of Steel Structures (Autumn) 3 8 1 -1189 2019-11-24 18:38:07.334766+05:30 224 Industrial and Hazardous Waste Management 3 8 1 -1190 2019-11-24 18:38:07.346944+05:30 223 Geometric Design 3 8 1 -1191 2019-11-24 18:38:07.359887+05:30 222 Finite Element Analysis 3 8 1 -1192 2019-11-24 18:38:07.372101+05:30 221 Structural Dynamics 3 8 1 -1193 2019-11-24 18:38:07.38513+05:30 220 Advanced Concrete Design 3 8 1 -1194 2019-11-24 18:38:07.397529+05:30 219 Continuum Mechanics 3 8 1 -1195 2019-11-24 18:38:07.410523+05:30 218 Matrix Structural Analysis 3 8 1 -1196 2019-11-24 18:38:07.422639+05:30 217 Geodesy and GPS Surveying 3 8 1 -1197 2019-11-24 18:38:07.435335+05:30 216 Remote Sensing and Image Processing 3 8 1 -1198 2019-11-24 18:38:07.447549+05:30 215 Environmental Chemistry 3 8 1 -1199 2019-11-24 18:38:07.46094+05:30 214 Wastewater Treatment 3 8 1 -1200 2019-11-24 18:38:07.473162+05:30 213 Design of Steel Elements 3 8 1 -1201 2019-11-24 18:38:07.485966+05:30 212 Railway Engineering and Airport Planning 3 8 1 -1202 2019-11-24 18:38:07.498527+05:30 211 Design of Steel Elements 3 8 1 -1203 2019-11-24 18:38:07.512319+05:30 210 Waste Water Engineering 3 8 1 -1204 2019-11-24 18:38:07.524865+05:30 209 Geomatics Engineering – I 3 8 1 -1205 2019-11-24 18:38:07.537823+05:30 208 Introduction to Environmental Studies 3 8 1 -1206 2019-11-24 18:38:07.550765+05:30 207 Numerical Methods and Computer Programming 3 8 1 -1207 2019-11-24 18:38:07.562874+05:30 206 Solid Mechanics 3 8 1 -1208 2019-11-24 18:38:07.576047+05:30 205 Introduction to Civil Engineering 3 8 1 -1209 2019-11-24 18:38:07.596542+05:30 204 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 3 8 1 -1210 2019-11-24 18:38:07.609467+05:30 203 SEMINAR 3 8 1 -1211 2019-11-24 18:38:07.621831+05:30 202 Training Seminar 3 8 1 -1212 2019-11-24 18:38:07.634921+05:30 201 B.Tech. Project 3 8 1 -1213 2019-11-24 18:38:07.64704+05:30 200 Technical Communication 3 8 1 -1214 2019-11-24 18:38:07.660054+05:30 199 Process Integration 3 8 1 -1215 2019-11-24 18:38:07.672184+05:30 198 Optimization of Chemical Enigneering Processes 3 8 1 -1216 2019-11-24 18:38:07.68529+05:30 197 Process Utilities and Safety 3 8 1 -1217 2019-11-24 18:38:07.697815+05:30 196 Process Equipment Design* 3 8 1 -1218 2019-11-24 18:38:07.710677+05:30 195 Process Dynamics and Control 3 8 1 -1219 2019-11-24 18:38:07.723085+05:30 194 Fluid and Fluid Particle Mechanics 3 8 1 -1220 2019-11-24 18:38:07.744176+05:30 193 CHEMICAL ENGINEERING THERMODYNAMICS 3 8 1 -1221 2019-11-24 18:38:07.764959+05:30 192 Chemical Technology 3 8 1 -1222 2019-11-24 18:38:07.782597+05:30 191 CHEMICAL ENGINEERING THERMODYNAMICS 3 8 1 -1223 2019-11-24 18:38:07.846993+05:30 190 MECHANICAL OPERATION 3 8 1 -1224 2019-11-24 18:38:07.91733+05:30 189 HEAT TRANSFER 3 8 1 -1225 2019-11-24 18:38:07.929707+05:30 188 SEMINAR 3 8 1 -1226 2019-11-24 18:38:08.00014+05:30 187 COMPUTATIONAL FLUID DYNAMICS 3 8 1 -1227 2019-11-24 18:38:08.012565+05:30 186 Biochemical Engineering 3 8 1 -1228 2019-11-24 18:38:08.02498+05:30 185 Advanced Reaction Engineering 3 8 1 -1229 2019-11-24 18:38:08.03792+05:30 184 Advanced Transport Phenomena 3 8 1 -1230 2019-11-24 18:38:08.073009+05:30 183 Mathematical Methods in Chemical Engineering 3 8 1 -1231 2019-11-24 18:38:08.084554+05:30 182 Waste to Energy 3 8 1 -1232 2019-11-24 18:38:08.096824+05:30 181 Polymer Physics and Rheology* 3 8 1 -1233 2019-11-24 18:38:08.109779+05:30 180 Fluidization Engineering 3 8 1 -1234 2019-11-24 18:38:08.122155+05:30 179 Computer Application in Chemical Engineering 3 8 1 -1235 2019-11-24 18:38:08.135005+05:30 178 Enginering Analysis and Process Modeling 3 8 1 -1236 2019-11-24 18:38:08.147407+05:30 177 Mass Transfer-II 3 8 1 -1237 2019-11-24 18:38:08.160383+05:30 176 Mass Transfer -I 3 8 1 -1238 2019-11-24 18:38:08.172926+05:30 175 Computer Programming and Numerical Methods 3 8 1 -1239 2019-11-24 18:38:08.201996+05:30 174 Material and Energy Balance 3 8 1 -1240 2019-11-24 18:38:08.272136+05:30 173 Introduction to Chemical Engineering 3 8 1 -1241 2019-11-24 18:38:08.342307+05:30 172 Advanced Thermodynamics and Molecular Simulations 3 8 1 -1242 2019-11-24 18:38:08.412651+05:30 171 DISSERTATION STAGE I 3 8 1 -1243 2019-11-24 18:38:08.425033+05:30 170 SEMINAR 3 8 1 -1244 2019-11-24 18:38:08.437937+05:30 169 ADVANCED TRANSPORT PROCESS 3 8 1 -1245 2019-11-24 18:38:08.507009+05:30 168 RECOMBINANT DNA TECHNOLOGY 3 8 1 -1246 2019-11-24 18:38:08.519884+05:30 167 REACTION KINETICS AND REACTOR DESIGN 3 8 1 -1247 2019-11-24 18:38:08.532471+05:30 166 MICROBIOLOGY AND BIOCHEMISTRY 3 8 1 -1248 2019-11-24 18:38:08.545649+05:30 165 Chemical Genetics and Drug Discovery 3 8 1 -1249 2019-11-24 18:38:08.558166+05:30 164 Structural Biology 3 8 1 -1250 2019-11-24 18:38:08.571258+05:30 163 Genomics and Proteomics 3 8 1 -1251 2019-11-24 18:38:08.583609+05:30 162 Vaccine Development & Production 3 8 1 -1252 2019-11-24 18:38:08.596313+05:30 161 Cell & Tissue Culture Technology 3 8 1 -1253 2019-11-24 18:38:08.608915+05:30 160 Biotechnology Laboratory – III 3 8 1 -1254 2019-11-24 18:38:08.621691+05:30 159 Seminar 3 8 1 -1255 2019-11-24 18:38:08.637698+05:30 158 Genetic Engineering 3 8 1 -1256 2019-11-24 18:38:08.650746+05:30 157 Biophysical Techniques 3 8 1 -1257 2019-11-24 18:38:08.663005+05:30 156 DOWNSTREAM PROCESSING 3 8 1 -1258 2019-11-24 18:38:08.675928+05:30 155 BIOREACTION ENGINEERING 3 8 1 -1259 2019-11-24 18:38:08.688367+05:30 154 Technical Communication 3 8 1 -1260 2019-11-24 18:38:08.701169+05:30 153 Cell & Developmental Biology 3 8 1 -1261 2019-11-24 18:38:08.713637+05:30 152 Genetics & Molecular Biology 3 8 1 -1262 2019-11-24 18:38:08.72665+05:30 151 Applied Microbiology 3 8 1 -1263 2019-11-24 18:38:08.738908+05:30 150 Biotechnology Laboratory – I 3 8 1 -1264 2019-11-24 18:38:08.75197+05:30 149 Biochemistry 3 8 1 -1265 2019-11-24 18:38:08.764477+05:30 148 Training Seminar 3 8 1 -1266 2019-11-24 18:38:08.777487+05:30 147 Drug Designing 3 8 1 -1267 2019-11-24 18:38:08.78955+05:30 146 Protein Engineering 3 8 1 -1268 2019-11-24 18:38:08.802613+05:30 145 Genomics and Proteomics 3 8 1 -1269 2019-11-24 18:38:08.815034+05:30 144 B.Tech. Project 3 8 1 -1270 2019-11-24 18:38:08.828005+05:30 143 Technical Communication 3 8 1 -1271 2019-11-24 18:38:08.840162+05:30 142 CELL AND TISSUE ENGINEERING 3 8 1 -1272 2019-11-24 18:38:08.853341+05:30 141 IMMUNOTECHNOLOGY 3 8 1 -1273 2019-11-24 18:38:08.865491+05:30 140 GENETICS AND MOLECULAR BIOLOGY 3 8 1 -1274 2019-11-24 18:38:08.878405+05:30 139 Computer Programming 3 8 1 -1275 2019-11-24 18:38:08.890835+05:30 138 Introduction to Biotechnology 3 8 1 -1276 2019-11-24 18:38:08.903954+05:30 137 Molecular Biophysics 3 8 1 -1277 2019-11-24 18:38:08.916225+05:30 136 Animal Biotechnology 3 8 1 -1278 2019-11-24 18:38:08.937719+05:30 135 Plant Biotechnology 3 8 1 -1279 2019-11-24 18:38:08.949664+05:30 134 Bioseparation Engineering 3 8 1 -1280 2019-11-24 18:38:08.962668+05:30 133 Bioprocess Engineering 3 8 1 -1281 2019-11-24 18:38:08.974972+05:30 132 Chemical Kinetics and Reactor Design 3 8 1 -1282 2019-11-24 18:38:08.98791+05:30 131 BIOINFORMATICS 3 8 1 -1283 2019-11-24 18:38:09.000218+05:30 130 MICROBIOLOGY 3 8 1 -1284 2019-11-24 18:38:09.022016+05:30 129 Professional Training 3 8 1 -1285 2019-11-24 18:38:09.034392+05:30 128 Planning Studio-III 3 8 1 -1286 2019-11-24 18:38:09.047572+05:30 127 DISSERTATION STAGE-I 3 8 1 -1287 2019-11-24 18:38:09.059941+05:30 126 Professional Training 3 8 1 -1288 2019-11-24 18:38:09.072942+05:30 125 Design Studio-III 3 8 1 -1289 2019-11-24 18:38:09.085329+05:30 124 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 3 8 1 -1290 2019-11-24 18:38:09.098188+05:30 123 Housing 3 8 1 -1291 2019-11-24 18:38:09.110506+05:30 122 Planning Theory and Techniques 3 8 1 -1292 2019-11-24 18:38:09.123549+05:30 121 Ecology and Sustainable Development 3 8 1 -1293 2019-11-24 18:38:09.136462+05:30 120 Infrastructure Planning 3 8 1 -1386 2020-02-19 17:49:53.74024+05:30 25 cmnzmcxz, 3 11 1 -1294 2019-11-24 18:38:09.148896+05:30 119 Socio Economics, Demography and Quantitative Techniques 3 8 1 -1295 2019-11-24 18:38:09.161782+05:30 118 Planning Studio-I 3 8 1 -1296 2019-11-24 18:38:09.174142+05:30 117 Computer Applications in Architecture 3 8 1 -1297 2019-11-24 18:38:09.187141+05:30 116 Advanced Building Technologies 3 8 1 -1298 2019-11-24 18:38:09.222788+05:30 115 Urban Design 3 8 1 -1299 2019-11-24 18:38:09.257102+05:30 114 Contemporary Architecture- Theories and Trends 3 8 1 -1300 2019-11-24 18:38:09.280778+05:30 113 Design Studio-I 3 8 1 -1301 2019-11-24 18:38:09.627571+05:30 112 Live Project/Studio/Seminar-II 3 8 1 -1302 2019-11-24 18:38:10.045431+05:30 111 Vastushastra 3 8 1 -1303 2019-11-24 18:38:10.115512+05:30 110 Hill Architecture 3 8 1 -1304 2019-11-24 18:38:10.184901+05:30 109 Urban Planning 3 8 1 -1305 2019-11-24 18:38:10.221108+05:30 108 Thesis Project I 3 8 1 -1306 2019-11-24 18:38:10.240537+05:30 107 Architectural Design-VII 3 8 1 -1307 2019-11-24 18:38:10.25248+05:30 106 Live Project/ Studio/ Seminar-I 3 8 1 -1308 2019-11-24 18:38:10.265411+05:30 105 Ekistics 3 8 1 -1309 2019-11-24 18:38:10.278274+05:30 104 Working Drawing 3 8 1 -1310 2019-11-24 18:38:10.290916+05:30 103 Sustainable Architecture 3 8 1 -1311 2019-11-24 18:38:10.32835+05:30 102 Urban Design 3 8 1 -1312 2019-11-24 18:38:10.341063+05:30 101 Architectural Design-VI 3 8 1 -1313 2019-11-24 18:38:10.353748+05:30 100 MODERN INDIAN ARCHITECTURE 3 8 1 -1314 2019-11-24 18:38:10.366016+05:30 99 Interior Design 3 8 1 -1315 2019-11-24 18:38:10.395382+05:30 98 Computer Applications in Architecture 3 8 1 -1316 2019-11-24 18:38:10.407945+05:30 97 Building Construction-IV 3 8 1 -1317 2019-11-24 18:38:10.420985+05:30 96 Architectural Design-IV 3 8 1 -1318 2019-11-24 18:38:10.43338+05:30 95 MEASURED DRAWING CAMP 3 8 1 -1319 2019-11-24 18:38:10.446084+05:30 94 PRICIPLES OF ARCHITECTURE 3 8 1 -1320 2019-11-24 18:38:10.458439+05:30 93 STRUCTURE AND ARCHITECTURE 3 8 1 -1321 2019-11-24 18:38:10.471552+05:30 92 QUANTITY, PRICING AND SPECIFICATIONS 3 8 1 -1322 2019-11-24 18:38:10.48394+05:30 91 HISTORY OF ARCHITECTUTRE I 3 8 1 -1323 2019-11-24 18:38:10.496696+05:30 90 BUILDING CONSTRUCTION II 3 8 1 -1324 2019-11-24 18:38:10.509316+05:30 89 Architectural Design-III 3 8 1 -1325 2019-11-24 18:38:10.522098+05:30 88 ARCHITECTURAL DESIGN II 3 8 1 -1326 2019-11-24 18:38:10.534554+05:30 87 Basic Design and Creative Workshop I 3 8 1 -1327 2019-11-24 18:38:10.547507+05:30 86 Architectural Graphics I 3 8 1 -1328 2019-11-24 18:38:10.559557+05:30 85 Visual Art I 3 8 1 -1329 2019-11-24 18:38:10.572376+05:30 84 Introduction to Architecture 3 8 1 -1330 2019-11-24 18:38:10.584672+05:30 83 SEMINAR 3 8 1 -1331 2019-11-24 18:38:10.597299+05:30 82 Regional Planning 3 8 1 -1332 2019-11-24 18:38:10.609656+05:30 81 Planning Legislation and Governance 3 8 1 -1333 2019-11-24 18:38:10.622761+05:30 80 Modern World Architecture 3 8 1 -1334 2019-11-24 18:38:10.63542+05:30 79 SEMINAR 3 8 1 -1335 2019-11-24 18:38:10.648338+05:30 78 Advanced Characterization Techniques 3 8 1 -1336 2019-11-24 18:38:41.54875+05:30 94 Water Resources Development and Management 3 7 1 -1337 2019-11-24 18:38:41.972006+05:30 93 Physics 3 7 1 -1338 2019-11-24 18:38:41.996545+05:30 92 Polymer and Process Engineering 3 7 1 -1339 2019-11-24 18:38:42.039213+05:30 91 Paper Technology 3 7 1 -1340 2019-11-24 18:38:42.051158+05:30 90 Metallurgical and Materials Engineering 3 7 1 -1341 2019-11-24 18:38:42.062923+05:30 89 Mechanical and Industrial Engineering 3 7 1 -1342 2019-11-24 18:38:42.07576+05:30 88 Mathematics 3 7 1 -1343 2019-11-24 18:38:42.088499+05:30 87 Management Studies 3 7 1 -1344 2019-11-24 18:38:42.101074+05:30 86 Hydrology 3 7 1 -1345 2019-11-24 18:38:42.114043+05:30 85 Humanities and Social Sciences 3 7 1 -1346 2019-11-24 18:38:42.139229+05:30 84 Electronics and Communication Engineering 3 7 1 -1347 2019-11-24 18:38:42.152155+05:30 83 Electrical Engineering 3 7 1 -1348 2019-11-24 18:38:42.165021+05:30 82 Earth Sciences 3 7 1 -1349 2019-11-24 18:38:42.177501+05:30 81 Earthquake 3 7 1 -1350 2019-11-24 18:38:42.189896+05:30 80 Computer Science and Engineering 3 7 1 -1351 2019-11-24 18:38:42.203082+05:30 79 Civil Engineering 3 7 1 -1352 2019-11-24 18:38:42.215442+05:30 78 Chemistry 3 7 1 -1353 2019-11-24 18:38:42.229093+05:30 77 Chemical Engineering 3 7 1 -1354 2019-11-24 18:38:42.24134+05:30 76 Biotechnology 3 7 1 -1355 2019-11-24 18:38:42.254229+05:30 75 Architecture and Planning 3 7 1 -1356 2019-11-24 18:38:42.266802+05:30 74 Applied Science and Engineering 3 7 1 -1357 2019-11-24 18:38:42.279485+05:30 73 Hydro and Renewable Energy 3 7 1 -1358 2019-11-24 19:18:10.657609+05:30 26 ECN-212 End term solution.PDF 2 [{"changed": {"fields": ["filetype"]}}] 10 1 -1359 2019-11-24 19:18:16.406004+05:30 25 ECN-212 quiz 2 solution.PDF 2 [{"changed": {"fields": ["filetype"]}}] 10 1 -1360 2019-11-26 23:45:40.120774+05:30 26 ECN-212 End term solution.PDF 2 [{"changed": {"fields": ["finalized"]}}] 10 1 -1361 2019-11-26 23:45:46.701918+05:30 25 ECN-212 quiz 2 solution.PDF 2 [{"changed": {"fields": ["finalized"]}}] 10 1 -1362 2019-12-26 14:55:27.993648+05:30 26 ECN-212 End term solution.PDF 2 [{"changed": {"fields": ["filetype"]}}] 10 1 -1363 2019-12-26 14:55:35.352011+05:30 26 ECN-212 End term solution.PDF 2 [{"changed": {"fields": ["filetype"]}}] 10 1 -1364 2019-12-26 14:55:42.861594+05:30 25 ECN-212 quiz 2 solution.PDF 2 [{"changed": {"fields": ["filetype"]}}] 10 1 -1365 2019-12-28 14:59:01.392535+05:30 1 Ayan 1 [{"added": {}}] 12 1 -1366 2019-12-28 15:09:58.228991+05:30 1 Ayan 2 [{"changed": {"fields": ["department"]}}] 12 1 -1367 2019-12-28 15:32:21.365372+05:30 1 R.C.Hibberler 2 [{"changed": {"fields": ["filetype"]}}] 11 1 -1368 2019-12-28 15:55:05.086939+05:30 2 Advik 1 [{"added": {}}] 12 1 -1369 2020-01-22 22:25:09.879734+05:30 26 ECN-212 End term solution.PDF 2 [] 10 1 -1370 2020-02-17 15:41:30.05166+05:30 1 Ayan 3 12 1 -1371 2020-02-17 15:41:37.783429+05:30 2 Advik 3 12 1 -1372 2020-02-17 15:42:39.419559+05:30 5 darkrider 3 12 1 -1373 2020-02-17 23:46:42.689288+05:30 5 Tutorial 1 1 [{"added": {}}] 11 1 -1374 2020-02-18 00:22:09.765697+05:30 5 Tutorial 1 3 11 1 -1375 2020-02-18 00:33:21.018189+05:30 6 Tutorial 1 1 [{"added": {}}] 11 1 -1376 2020-02-19 17:49:53.44127+05:30 35 mcdnms 3 11 1 -1377 2020-02-19 17:49:53.614522+05:30 34 ddsfsd 3 11 1 -1378 2020-02-19 17:49:53.626865+05:30 33 czxc 3 11 1 -1379 2020-02-19 17:49:53.639017+05:30 32 saSAAD 3 11 1 -1380 2020-02-19 17:49:53.651912+05:30 31 mflemflksd 3 11 1 -1381 2020-02-19 17:49:53.677266+05:30 30 dsads 3 11 1 -1382 2020-02-19 17:49:53.689651+05:30 29 dmsndkanskm 3 11 1 -1383 2020-02-19 17:49:53.702549+05:30 28 msdlkadmlas 3 11 1 -1384 2020-02-19 17:49:53.714902+05:30 27 mckldmslc 3 11 1 -1385 2020-02-19 17:49:53.728112+05:30 26 cnancam 3 11 1 -1389 2020-02-19 17:49:53.778647+05:30 22 djaksdnkjas 3 11 1 -1390 2020-02-19 17:49:53.790839+05:30 21 ndkjadns 3 11 1 -1391 2020-02-19 17:49:53.803719+05:30 20 dmsa dmskd 3 11 1 -1392 2020-02-19 17:49:53.816194+05:30 19 cjkdnk 3 11 1 -1393 2020-02-19 17:49:53.829109+05:30 18 ncksad 3 11 1 -1394 2020-02-19 17:49:53.841453+05:30 17 dsadas 3 11 1 -1395 2020-02-19 17:49:53.854416+05:30 16 ncmznc,m 3 11 1 -1396 2020-02-19 17:49:53.866808+05:30 15 fdfd 3 11 1 -1397 2020-02-19 17:49:53.880535+05:30 14 tut 1 3 11 1 -1398 2020-02-19 17:49:53.89209+05:30 13 book 1 3 11 1 -1399 2020-02-19 17:49:54.01109+05:30 12 cdnms,d 3 11 1 -1400 2020-02-19 17:49:54.02392+05:30 11 cnxm,zc 3 11 1 -1401 2020-02-19 17:49:54.039887+05:30 10 nkldnks 3 11 1 -1402 2020-02-19 17:49:54.052902+05:30 9 nkjsndakcj 3 11 1 -1403 2020-02-19 17:49:54.065239+05:30 8 bjkdsbfc 3 11 1 -1404 2020-02-19 17:49:54.078164+05:30 7 R.C.Hibberler 3 11 1 -1405 2020-02-19 17:49:54.090569+05:30 6 Tutorial 1 3 11 1 -1406 2020-02-19 17:50:09.936114+05:30 43 circuitverse.png 3 13 1 -1407 2020-02-19 17:50:10.061328+05:30 42 blackclover.jpg 3 13 1 -1408 2020-02-19 17:50:10.203331+05:30 41 circuitverse.png 3 13 1 -1409 2020-02-19 17:50:10.347084+05:30 40 blackclover.jpg 3 13 1 -1410 2020-02-19 17:50:10.498397+05:30 39 circuitverse.png 3 13 1 -1411 2020-02-19 17:50:10.642258+05:30 38 blackclover.jpg 3 13 1 -1412 2020-02-19 17:50:10.794014+05:30 37 circuitverse.png 3 13 1 -1413 2020-02-19 17:50:10.937252+05:30 36 blackclover.jpg 3 13 1 -1414 2020-02-19 17:50:11.080458+05:30 35 circuitverse.png 3 13 1 -1415 2020-02-19 17:50:11.257625+05:30 34 blackclover.jpg 3 13 1 -1416 2020-02-19 17:50:11.408973+05:30 33 circuitverse.png 3 13 1 -1417 2020-02-19 17:50:11.569086+05:30 32 blackclover.jpg 3 13 1 -1418 2020-02-19 17:50:11.712343+05:30 31 circuitverse.png 3 13 1 -1419 2020-02-19 17:50:11.872773+05:30 30 blackclover.jpg 3 13 1 -1420 2020-02-19 17:50:12.031894+05:30 29 deathnote.jpg 3 13 1 -1421 2020-02-19 17:50:12.20853+05:30 28 circuitverse.png 3 13 1 -1422 2020-02-19 17:50:12.367915+05:30 27 blackclover.jpg 3 13 1 -1423 2020-02-19 17:50:12.50434+05:30 26 deathnote.jpg 3 13 1 -1424 2020-02-19 17:50:12.51587+05:30 25 deathnote.jpg 3 13 1 -1425 2020-02-19 17:50:12.528792+05:30 24 circuitverse.png 3 13 1 -1426 2020-02-19 17:50:12.541587+05:30 23 blackclover.jpg 3 13 1 -1427 2020-02-19 17:50:12.554141+05:30 22 circuitverse.png 3 13 1 -1428 2020-02-19 17:50:12.566465+05:30 21 deathnote.jpg 3 13 1 -1429 2020-02-19 17:50:12.579371+05:30 20 blackclover.jpg 3 13 1 -1430 2020-02-19 17:50:12.592506+05:30 19 circuitverse.png 3 13 1 -1431 2020-02-19 17:50:12.604697+05:30 18 deathparade.jpg 3 13 1 -1432 2020-02-19 17:50:12.617113+05:30 17 circuitverse.png 3 13 1 -1433 2020-02-19 17:50:12.629992+05:30 16 blackclover.jpg 3 13 1 -1434 2020-02-19 17:50:12.643086+05:30 15 circuitverse.png 3 13 1 -1435 2020-02-19 17:50:12.655742+05:30 14 blackclover.jpg 3 13 1 -1436 2020-02-19 17:50:12.667703+05:30 13 circuitverse.png 3 13 1 -1437 2020-02-19 17:50:12.680642+05:30 12 blackclover.jpg 3 13 1 -1438 2020-02-19 17:50:12.693202+05:30 11 circuitverse.png 3 13 1 -1439 2020-02-19 17:50:12.714066+05:30 10 blackclover.jpg 3 13 1 -1440 2020-02-19 17:50:12.727058+05:30 9 circuitverse.png 3 13 1 -1441 2020-02-19 17:50:12.739935+05:30 8 blackclover.jpg 3 13 1 -1442 2020-02-19 17:50:12.752428+05:30 7 circuitverse.png 3 13 1 -1443 2020-02-19 17:50:12.764757+05:30 6 deathparade.jpg 3 13 1 -1444 2020-02-19 17:50:12.777788+05:30 5 Dororo.jpeg 3 13 1 -1445 2020-02-19 17:50:12.790201+05:30 4 deathnote.jpg 3 13 1 -1446 2020-02-19 17:50:12.802946+05:30 3 blackclover.jpg 3 13 1 -1447 2020-02-19 17:50:12.815358+05:30 2 asdf 3 13 1 -1448 2020-02-19 17:50:12.828374+05:30 1 asdf 3 13 1 -1449 2020-02-19 19:15:46.455439+05:30 116 Water Resources Development and Management 3 7 1 -1450 2020-02-19 19:15:46.741383+05:30 115 Physics 3 7 1 -1451 2020-02-19 19:15:46.75346+05:30 114 Polymer and Process Engineering 3 7 1 -1452 2020-02-19 19:15:46.766373+05:30 113 Paper Technology 3 7 1 -1453 2020-02-19 19:15:46.779921+05:30 112 Metallurgical and Materials Engineering 3 7 1 -1454 2020-02-19 19:15:46.791785+05:30 111 Mechanical and Industrial Engineering 3 7 1 -1455 2020-02-19 19:15:46.804639+05:30 110 Mathematics 3 7 1 -1456 2020-02-19 19:15:46.81704+05:30 109 Management Studies 3 7 1 -1457 2020-02-19 19:15:46.830061+05:30 108 Hydrology 3 7 1 -1458 2020-02-19 19:15:46.842492+05:30 107 Humanities and Social Sciences 3 7 1 -1459 2020-02-19 19:15:46.920611+05:30 106 Electronics and Communication Engineering 3 7 1 -1460 2020-02-19 19:15:46.990928+05:30 105 Electrical Engineering 3 7 1 -1461 2020-02-19 19:15:47.003245+05:30 104 Earth Sciences 3 7 1 -1462 2020-02-19 19:15:47.015963+05:30 103 Earthquake 3 7 1 -1463 2020-02-19 19:15:47.029003+05:30 102 Computer Science and Engineering 3 7 1 -1464 2020-02-19 19:15:47.041439+05:30 101 Civil Engineering 3 7 1 -1465 2020-02-19 19:15:47.054544+05:30 100 Chemistry 3 7 1 -1466 2020-02-19 19:15:47.066936+05:30 99 Chemical Engineering 3 7 1 -1467 2020-02-19 19:15:47.080571+05:30 98 Biotechnology 3 7 1 -1468 2020-02-19 19:15:47.092692+05:30 97 Architecture and Planning 3 7 1 -1469 2020-02-19 19:15:47.105206+05:30 96 Applied Science and Engineering 3 7 1 -1470 2020-02-19 19:15:47.175317+05:30 95 Hydro and Renewable Energy 3 7 1 -\. - - --- --- Data for Name: django_migrations; Type: TABLE DATA; Schema: public; Owner: ayan --- - -COPY public.django_migrations (id, app, name, applied) FROM stdin; -1 contenttypes 0001_initial 2019-08-31 03:34:25.204817+05:30 -2 auth 0001_initial 2019-08-31 03:34:25.807013+05:30 -3 admin 0001_initial 2019-08-31 03:34:26.870559+05:30 -4 admin 0002_logentry_remove_auto_add 2019-08-31 03:34:27.013709+05:30 -5 admin 0003_logentry_add_action_flag_choices 2019-08-31 03:34:27.066471+05:30 -6 contenttypes 0002_remove_content_type_name 2019-08-31 03:34:27.113268+05:30 -7 auth 0002_alter_permission_name_max_length 2019-08-31 03:34:27.129521+05:30 -8 auth 0003_alter_user_email_max_length 2019-08-31 03:34:27.153178+05:30 -9 auth 0004_alter_user_username_opts 2019-08-31 03:34:27.173814+05:30 -10 auth 0005_alter_user_last_login_null 2019-08-31 03:34:27.196307+05:30 -11 auth 0006_require_contenttypes_0002 2019-08-31 03:34:27.211548+05:30 -12 auth 0007_alter_validators_add_error_messages 2019-08-31 03:34:27.254953+05:30 -13 auth 0008_alter_user_username_max_length 2019-08-31 03:34:27.320613+05:30 -14 auth 0009_alter_user_last_name_max_length 2019-08-31 03:34:27.36175+05:30 -15 auth 0010_alter_group_name_max_length 2019-08-31 03:34:27.395961+05:30 -16 auth 0011_update_proxy_permissions 2019-08-31 03:34:27.426645+05:30 -17 corsheaders 0001_initial 2019-08-31 03:34:27.495425+05:30 -18 rest_api 0001_initial 2019-08-31 03:34:27.558583+05:30 -19 rest_api 0002_department_url 2019-08-31 03:34:27.58581+05:30 -20 rest_api 0003_course 2019-08-31 03:34:27.647361+05:30 -21 rest_api 0004_auto_20190830_2153 2019-08-31 03:34:27.784405+05:30 -22 sessions 0001_initial 2019-08-31 03:34:28.216194+05:30 -23 rest_api 0005_file 2019-08-31 04:33:40.929149+05:30 -24 rest_api 0006_auto_20191003_1214 2019-10-03 17:47:55.066226+05:30 -25 rest_api 0007_auto_20191003_1215 2019-10-03 17:47:55.239688+05:30 -26 rest_api 0008_auto_20191003_1224 2019-10-03 17:54:04.879985+05:30 -27 rest_api 0009_file_file 2019-10-07 21:11:48.327955+05:30 -28 rest_api 0010_auto_20191007_1553 2019-10-07 21:23:37.785282+05:30 -29 rest_api 0011_auto_20191007_1556 2019-10-07 21:26:40.4983+05:30 -30 rest_api 0012_auto_20191007_1610 2019-10-07 21:40:17.000639+05:30 -31 rest_api 0013_auto_20191007_1710 2019-10-07 22:40:24.640878+05:30 -32 rest_api 0014_auto_20191007_1749 2019-10-07 23:20:01.380828+05:30 -33 rest_api 0015_auto_20191007_2136 2019-10-08 03:06:47.055683+05:30 -34 rest_api 0016_auto_20191014_1632 2019-10-14 22:02:32.792965+05:30 -35 rest_api 0017_auto_20191014_1711 2019-10-14 22:41:56.57645+05:30 -36 rest_api 0018_auto_20191014_1712 2019-10-14 22:42:34.027493+05:30 -37 rest_api 0019_auto_20191022_1439 2019-10-22 20:09:59.266119+05:30 -38 rest_api 0020_auto_20191030_1511 2019-10-30 20:41:48.124455+05:30 -39 rest_api 0019_auto_20191031_1024 2019-10-31 15:54:13.209732+05:30 -40 rest_api 0020_file_size 2019-10-31 16:16:23.467534+05:30 -41 rest_api 0021_file_fileext 2019-10-31 16:40:11.160831+05:30 -42 rest_api 0022_auto_20191031_1122 2019-10-31 16:52:21.111029+05:30 -43 rest_api 0023_auto_20191103_1613 2019-11-03 21:44:02.623601+05:30 -44 rest_api 0024_auto_20191124_1223 2019-11-24 17:53:45.66404+05:30 -45 rest_api 0025_auto_20191126_1724 2019-11-26 22:55:12.679557+05:30 -46 rest_api 0026_auto_20191126_1730 2019-11-26 23:00:59.217881+05:30 -47 rest_api 0027_file_finalized 2019-11-26 23:44:57.418044+05:30 -48 rest_api 0028_merge_20191226_0724 2019-12-26 12:54:21.360256+05:30 -49 rest_api 0029_auto_20191226_0924 2019-12-26 14:54:47.499571+05:30 -50 rest_api 0030_upload_title 2019-12-26 15:38:48.869386+05:30 -51 rest_api 0031_auto_20191226_1027 2019-12-26 16:00:51.804372+05:30 -52 rest_api 0032_auto_20191228_0928 2019-12-28 14:58:31.31823+05:30 -53 rest_api 0033_auto_20191228_0958 2019-12-28 15:29:08.579078+05:30 -54 rest_api 0034_auto_20200127_1608 2020-01-27 21:39:00.007069+05:30 -55 rest_api 0035_upload_filetype 2020-01-29 05:15:36.287651+05:30 -56 rest_api 0036_remove_user_department 2020-02-13 00:13:52.990389+05:30 -57 rest_api 0037_user_courses 2020-02-13 14:41:10.006461+05:30 -58 rest_api 0038_request_date 2020-02-18 00:32:41.947796+05:30 -59 rest_api 0039_upload_date 2020-02-18 19:38:08.929326+05:30 -60 rest_api 0040_auto_20200218_1534 2020-02-18 21:04:19.932249+05:30 -61 rest_api 0041_courserequest 2020-02-18 21:20:28.990528+05:30 -62 rest_api 0042_courserequest_date 2020-02-18 21:28:25.879881+05:30 -63 rest_api 0043_upload_status 2020-02-19 17:59:38.750588+05:30 -64 rest_api 0044_auto_20200407_2005 2020-04-08 01:35:24.558658+05:30 -65 users 0001_initial 2020-04-08 01:35:24.998658+05:30 -\. - - --- --- Data for Name: django_session; Type: TABLE DATA; Schema: public; Owner: ayan --- - -COPY public.django_session (session_key, session_data, expire_date) FROM stdin; -7o4m4gi683ngfbgtrd4boqdr3ymhrmpo MGQwNzU0Y2FlMmY4OTVhMjc5NjQzMmVjZjIwYzgyNDU3NjYzZTE0YTp7Il9hdXRoX3VzZXJfaWQiOiIxIiwiX2F1dGhfdXNlcl9iYWNrZW5kIjoiZGphbmdvLmNvbnRyaWIuYXV0aC5iYWNrZW5kcy5Nb2RlbEJhY2tlbmQiLCJfYXV0aF91c2VyX2hhc2giOiI2YjQ2MWUyYjJiNWYxNjhkNWVkYWUxNWE5YjNkNmMwZTVmYWEyZTQ1In0= 2019-09-14 03:36:15.6475+05:30 -6u927wty7bauw3hrgjf05m9v7ceinqrr MGQwNzU0Y2FlMmY4OTVhMjc5NjQzMmVjZjIwYzgyNDU3NjYzZTE0YTp7Il9hdXRoX3VzZXJfaWQiOiIxIiwiX2F1dGhfdXNlcl9iYWNrZW5kIjoiZGphbmdvLmNvbnRyaWIuYXV0aC5iYWNrZW5kcy5Nb2RlbEJhY2tlbmQiLCJfYXV0aF91c2VyX2hhc2giOiI2YjQ2MWUyYjJiNWYxNjhkNWVkYWUxNWE5YjNkNmMwZTVmYWEyZTQ1In0= 2019-10-05 03:42:23.466624+05:30 -kcornx24qad8lybhmkdzxut0fbo0v24p MGQwNzU0Y2FlMmY4OTVhMjc5NjQzMmVjZjIwYzgyNDU3NjYzZTE0YTp7Il9hdXRoX3VzZXJfaWQiOiIxIiwiX2F1dGhfdXNlcl9iYWNrZW5kIjoiZGphbmdvLmNvbnRyaWIuYXV0aC5iYWNrZW5kcy5Nb2RlbEJhY2tlbmQiLCJfYXV0aF91c2VyX2hhc2giOiI2YjQ2MWUyYjJiNWYxNjhkNWVkYWUxNWE5YjNkNmMwZTVmYWEyZTQ1In0= 2019-10-21 21:08:28.988476+05:30 -k5dxdl9enq2r5iskqquhmx20g0kmv8zz MGQwNzU0Y2FlMmY4OTVhMjc5NjQzMmVjZjIwYzgyNDU3NjYzZTE0YTp7Il9hdXRoX3VzZXJfaWQiOiIxIiwiX2F1dGhfdXNlcl9iYWNrZW5kIjoiZGphbmdvLmNvbnRyaWIuYXV0aC5iYWNrZW5kcy5Nb2RlbEJhY2tlbmQiLCJfYXV0aF91c2VyX2hhc2giOiI2YjQ2MWUyYjJiNWYxNjhkNWVkYWUxNWE5YjNkNmMwZTVmYWEyZTQ1In0= 2019-11-05 20:11:19.106654+05:30 -i48mahob9r8em13vx0kwo4trairt9hbn MGQwNzU0Y2FlMmY4OTVhMjc5NjQzMmVjZjIwYzgyNDU3NjYzZTE0YTp7Il9hdXRoX3VzZXJfaWQiOiIxIiwiX2F1dGhfdXNlcl9iYWNrZW5kIjoiZGphbmdvLmNvbnRyaWIuYXV0aC5iYWNrZW5kcy5Nb2RlbEJhY2tlbmQiLCJfYXV0aF91c2VyX2hhc2giOiI2YjQ2MWUyYjJiNWYxNjhkNWVkYWUxNWE5YjNkNmMwZTVmYWEyZTQ1In0= 2019-12-08 17:38:22.046113+05:30 -xxay5199jkuedf2qbirjlnlhp28h1205 MGQwNzU0Y2FlMmY4OTVhMjc5NjQzMmVjZjIwYzgyNDU3NjYzZTE0YTp7Il9hdXRoX3VzZXJfaWQiOiIxIiwiX2F1dGhfdXNlcl9iYWNrZW5kIjoiZGphbmdvLmNvbnRyaWIuYXV0aC5iYWNrZW5kcy5Nb2RlbEJhY2tlbmQiLCJfYXV0aF91c2VyX2hhc2giOiI2YjQ2MWUyYjJiNWYxNjhkNWVkYWUxNWE5YjNkNmMwZTVmYWEyZTQ1In0= 2019-12-09 00:27:52.415646+05:30 -b5p11uvqhzv93cqbtspwj691qxc5bwbd MGQwNzU0Y2FlMmY4OTVhMjc5NjQzMmVjZjIwYzgyNDU3NjYzZTE0YTp7Il9hdXRoX3VzZXJfaWQiOiIxIiwiX2F1dGhfdXNlcl9iYWNrZW5kIjoiZGphbmdvLmNvbnRyaWIuYXV0aC5iYWNrZW5kcy5Nb2RlbEJhY2tlbmQiLCJfYXV0aF91c2VyX2hhc2giOiI2YjQ2MWUyYjJiNWYxNjhkNWVkYWUxNWE5YjNkNmMwZTVmYWEyZTQ1In0= 2020-01-09 14:55:15.002822+05:30 -vsktfn59wa7s4pg0jr1zgtovfgmbtyxu MGQwNzU0Y2FlMmY4OTVhMjc5NjQzMmVjZjIwYzgyNDU3NjYzZTE0YTp7Il9hdXRoX3VzZXJfaWQiOiIxIiwiX2F1dGhfdXNlcl9iYWNrZW5kIjoiZGphbmdvLmNvbnRyaWIuYXV0aC5iYWNrZW5kcy5Nb2RlbEJhY2tlbmQiLCJfYXV0aF91c2VyX2hhc2giOiI2YjQ2MWUyYjJiNWYxNjhkNWVkYWUxNWE5YjNkNmMwZTVmYWEyZTQ1In0= 2020-02-05 22:24:26.954061+05:30 -xob8htr6a71jnw7ustfknm0jt9urgpft MGQwNzU0Y2FlMmY4OTVhMjc5NjQzMmVjZjIwYzgyNDU3NjYzZTE0YTp7Il9hdXRoX3VzZXJfaWQiOiIxIiwiX2F1dGhfdXNlcl9iYWNrZW5kIjoiZGphbmdvLmNvbnRyaWIuYXV0aC5iYWNrZW5kcy5Nb2RlbEJhY2tlbmQiLCJfYXV0aF91c2VyX2hhc2giOiI2YjQ2MWUyYjJiNWYxNjhkNWVkYWUxNWE5YjNkNmMwZTVmYWEyZTQ1In0= 2020-02-27 00:11:12.609634+05:30 -ruvywij1q91vup5hpc8i6i45aqpi11je MGQwNzU0Y2FlMmY4OTVhMjc5NjQzMmVjZjIwYzgyNDU3NjYzZTE0YTp7Il9hdXRoX3VzZXJfaWQiOiIxIiwiX2F1dGhfdXNlcl9iYWNrZW5kIjoiZGphbmdvLmNvbnRyaWIuYXV0aC5iYWNrZW5kcy5Nb2RlbEJhY2tlbmQiLCJfYXV0aF91c2VyX2hhc2giOiI2YjQ2MWUyYjJiNWYxNjhkNWVkYWUxNWE5YjNkNmMwZTVmYWEyZTQ1In0= 2020-04-12 13:21:41.423674+05:30 -\. - - --- --- Data for Name: rest_api_department; Type: TABLE DATA; Schema: public; Owner: ayan --- - -COPY public.rest_api_department (id, title, abbreviation, imageurl) FROM stdin; -117 Hydro and Renewable Energy HRED hred.png -118 Applied Science and Engineering ASED ased.png -119 Architecture and Planning ARCD arcd.png -120 Biotechnology BTD btd.png -121 Chemical Engineering CHED ched.png -122 Chemistry CYD cyd.png -123 Civil Engineering CED ced.png -124 Computer Science and Engineering CSED csed.png -125 Earthquake EQD eqd.png -126 Earth Sciences ESD esd.png -127 Electrical Engineering EED eed.png -128 Electronics and Communication Engineering ECED eced.png -129 Humanities and Social Sciences HSD hsd.png -130 Hydrology HYD hyd.png -131 Management Studies MSD msd.png -132 Mathematics MAD mad.png -133 Mechanical and Industrial Engineering MIED mied.png -134 Metallurgical and Materials Engineering MMED mmed.png -135 Paper Technology PTD ptd.png -136 Polymer and Process Engineering PPED pped.png -137 Physics PHD phd.png -138 Water Resources Development and Management WRDMD wrdmd.png -139 Demo DDED dded.png -\. - - --- --- Data for Name: rest_api_course; Type: TABLE DATA; Schema: public; Owner: ayan --- - -COPY public.rest_api_course (id, title, department_id, code) FROM stdin; -1250 Advanced Characterization Techniques 118 AS-901 -1251 SEMINAR 118 ASN-700 -1252 Modern World Architecture 119 ARN-210 -1253 Planning Legislation and Governance 119 ARN-661 -1254 Regional Planning 119 ARN-676 -1255 SEMINAR 119 ARN-700 -1256 Introduction to Architecture 119 ARN-101 -1257 Visual Art I 119 ARN-103 -1258 Architectural Graphics I 119 ARN-105 -1259 Basic Design and Creative Workshop I 119 ARN-107 -1260 ARCHITECTURAL DESIGN II 119 ARN-201 -1261 Architectural Design-III 119 ARN-202 -1262 BUILDING CONSTRUCTION II 119 ARN-203 -1263 HISTORY OF ARCHITECTUTRE I 119 ARN-205 -1264 QUANTITY, PRICING AND SPECIFICATIONS 119 ARN-207 -1265 STRUCTURE AND ARCHITECTURE 119 ARN-209 -1266 PRICIPLES OF ARCHITECTURE 119 ARN-211 -1267 MEASURED DRAWING CAMP 119 ARN-213 -1268 Architectural Design-IV 119 ARN-301 -1269 Building Construction-IV 119 ARN-303 -1270 Computer Applications in Architecture 119 ARN-305 -1271 Interior Design 119 ARN-307 -1272 MODERN INDIAN ARCHITECTURE 119 ARN-311 -1273 Architectural Design-VI 119 ARN-401 -1274 Urban Design 119 ARN-403 -1275 Sustainable Architecture 119 ARN-405 -1276 Working Drawing 119 ARN-407 -1277 Ekistics 119 ARN-411 -1278 Live Project/ Studio/ Seminar-I 119 ARN-415 -1279 Architectural Design-VII 119 ARN-501 -1280 Thesis Project I 119 ARN-503 -1281 Urban Planning 119 ARN-505 -1282 Hill Architecture 119 ARN-507 -1283 Vastushastra 119 ARN-513 -1284 Live Project/Studio/Seminar-II 119 ARN-515 -1285 Design Studio-I 119 ARN-601 -1286 Contemporary Architecture- Theories and Trends 119 ARN-603 -1287 Urban Design 119 ARN-605 -1288 Advanced Building Technologies 119 ARN-607 -1289 Computer Applications in Architecture 119 ARN-609 -1290 Planning Studio-I 119 ARN-651 -1291 Socio Economics, Demography and Quantitative Techniques 119 ARN-653 -1292 Infrastructure Planning 119 ARN-654 -1293 Ecology and Sustainable Development 119 ARN-655 -1294 Planning Theory and Techniques 119 ARN-657 -1295 Housing 119 ARN-659 -1296 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 119 ARN-701A -1297 Design Studio-III 119 ARN-703 -1298 Professional Training 119 ARN-705 -1299 DISSERTATION STAGE-I 119 ARN-751A -1300 Planning Studio-III 119 ARN-753 -1301 Professional Training 119 ARN-755 -1302 MICROBIOLOGY 120 BTN-203 -1303 BIOINFORMATICS 120 BTN-205 -1304 Chemical Kinetics and Reactor Design 120 BTN-292 -1305 Bioprocess Engineering 120 BTN-301 -1306 Bioseparation Engineering 120 BTN-302 -1307 Plant Biotechnology 120 BTN-303 -1308 Animal Biotechnology 120 BTN-305 -1309 Molecular Biophysics 120 BTN-342 -1310 CELL AND TISSUE ENGINEERING 120 BTN-345 -1311 Introduction to Biotechnology 120 BTN-101 -1312 Computer Programming 120 BTN-103 -1313 GENETICS AND MOLECULAR BIOLOGY 120 BTN-201 -1314 IMMUNOTECHNOLOGY 120 BTN-207 -1315 Technical Communication 120 BTN-391 -1316 B.Tech. Project 120 BTN-400A -1317 Genomics and Proteomics 120 BTN-445 -1318 Protein Engineering 120 BTN-447 -1319 Drug Designing 120 BTN-455 -1320 Training Seminar 120 BTN-499 -1321 Biochemistry 120 BTN-512 -1322 Biotechnology Laboratory – I 120 BTN-513 -1323 Applied Microbiology 120 BTN-514 -1324 Genetics & Molecular Biology 120 BTN-515 -1325 Cell & Developmental Biology 120 BTN-516 -1326 Technical Communication 120 BTN-524 -1327 BIOREACTION ENGINEERING 120 BTN-531 -1328 DOWNSTREAM PROCESSING 120 BTN-532 -1329 Biophysical Techniques 120 BTN-611 -1330 Genetic Engineering 120 BTN-612 -1331 Seminar 120 BTN-613 -1332 Biotechnology Laboratory – III 120 BTN-614 -1333 Cell & Tissue Culture Technology 120 BTN-621 -1334 Vaccine Development & Production 120 BTN-625 -1335 Genomics and Proteomics 120 BTN-629 -1336 Structural Biology 120 BTN-632 -1337 Chemical Genetics and Drug Discovery 120 BTN-635 -1338 MICROBIOLOGY AND BIOCHEMISTRY 120 BTN-651 -1339 REACTION KINETICS AND REACTOR DESIGN 120 BTN-655 -1340 RECOMBINANT DNA TECHNOLOGY 120 BTN-657 -1341 ADVANCED TRANSPORT PROCESS 120 BTN-658 -1342 SEMINAR 120 BTN-700 -1343 DISSERTATION STAGE I 120 BTN-701A -1344 Advanced Thermodynamics and Molecular Simulations 121 CHE-507 -1345 Introduction to Chemical Engineering 121 CHN-101 -1346 Material and Energy Balance 121 CHN-102 -1347 Computer Programming and Numerical Methods 121 CHN-103 -1348 Mass Transfer -I 121 CHN-202 -1349 Mass Transfer 121 CHN-212 -1350 Mass Transfer-II 121 CHN-301 -1351 Computer Application in Chemical Engineering 121 CHN-323 -1352 Fluidization Engineering 121 CHN-326 -1353 Polymer Physics and Rheology* 121 CHN-411 -1354 Mathematical Methods in Chemical Engineering 121 CHE-501 -1355 Advanced Transport Phenomena 121 CHE-503 -1356 Advanced Reaction Engineering 121 CHE-505 -1357 Biochemical Engineering 121 CHE-513 -1358 COMPUTATIONAL FLUID DYNAMICS 121 CHE-515 -1359 SEMINAR 121 CHE-700 -1360 HEAT TRANSFER 121 CHN-201 -1361 MECHANICAL OPERATION 121 CHN-203 -1362 CHEMICAL ENGINEERING THERMODYNAMICS 121 CHN-205 -1363 Chemical Technology 121 CHN-206 -1364 CHEMICAL ENGINEERING THERMODYNAMICS 121 CHN-207 -1365 Fluid and Fluid Particle Mechanics 121 CHN-211 -1366 Enginering Analysis and Process Modeling 121 CHN-302 -1367 Process Dynamics and Control 121 CHN-303 -1368 Process Equipment Design* 121 CHN-305 -1369 Process Utilities and Safety 121 CHN-306 -1370 Optimization of Chemical Enigneering Processes 121 CHN-322 -1371 Process Integration 121 CHN-325 -1372 Technical Communication 121 CHN-391 -1373 B.Tech. Project 121 CHN-400A -1374 Training Seminar 121 CHN-499 -1375 SEMINAR 121 CHN-700 -1376 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 121 CHN-701A -1377 Water Supply Engineering 123 CE-104 -1378 Introduction to Civil Engineering 123 CEN-101 -1379 Solid Mechanics 123 CEN-102 -1380 Numerical Methods and Computer Programming 123 CEN-103 -1381 Introduction to Environmental Studies 123 CEN-105 -1382 Geomatics Engineering – I 123 CEN-106 -1383 Waste Water Engineering 123 CEN-202 -1384 Highway and Traffic Engineering 123 CEN-210 -1385 Design of Steel Elements 123 CEN-305 -1386 Railway Engineering and Airport Planning 123 CEN-307 -1387 Wastewater Treatment 123 CEN-503 -1388 Environmental Chemistry 123 CEN-504 -1389 Remote Sensing and Image Processing 123 CEN-513 -1390 Geodesy and GPS Surveying 123 CEN-514 -1391 Matrix Structural Analysis 123 CEN-541 -1392 Continuum Mechanics 123 CEN-542 -1393 Advanced Concrete Design 123 CEN-543 -1394 Structural Dynamics 123 CEN-544 -1395 Finite Element Analysis 123 CEN-545 -1396 Geometric Design 123 CEN-564 -1397 Industrial and Hazardous Waste Management 123 CEN-603 -1398 Behaviour & Design of Steel Structures (Autumn) 123 CEN-641 -1399 Road Traffic Safety 123 CEN-665 -1400 Transportation Planning 123 CEN-669 -1401 Urban Mass Transit Systems 123 CE-664 -1402 GEOMATICS ENGINEERING-II 123 CEN-203 -1403 CHANNEL HYDRAULICS 123 CEN-205 -1404 STRUCTURAL ANALYSIS-I 123 CEN-207 -1405 ENGINEERING GRAPHICS 123 CEN-291 -1406 Theory of Structures 123 CEN-292 -1407 Soil Mechanicas 123 CEN-303 -1408 Design of Reinforced Concrete Elements 123 CEN-381 -1409 Technical Communication 123 CEN-391 -1410 Design of Steel Elements 123 CEN-392 -1411 B.Tech. Project 123 CEN-400A -1412 WATER RESOURCE ENGINEERING 123 CEN-412 -1413 Advanced Water and Wastewater Treatment 123 CEN-421 -1414 Advanced Highway Engineering 123 CEN-431 -1415 Training Seminar 123 CEN-499 -1416 Environmental Modeling and Simulation 123 CEN-501 -1417 Water Treatment 123 CEN-502 -1418 Environmental Hydraulics 123 CEN-505 -1419 Surveying Measurements and Adjustments 123 CEN-511 -1420 Principles of Photogrammetry 123 CEN-512 -1421 FIELD SURVEY CAMP 123 CEN-515 -1422 Advanced Numerical Analysis 123 CEN-521 -1423 Advanced Soil Mechanics 123 CEN-522 -1424 Engineering Behaviour of Rocks 123 CEN-523 -1425 Soil Dynamics and Machine Foundations 123 CEN-524 -1426 Advanced Hydrology 123 CEN-531 -1427 Advanced Fluid Mechanics 123 CEN-532 -1428 Free Surface Flows 123 CEN-533 -1429 Modeling, Simulation and Optimization 123 CEN-534 -1430 Traffic Engineering and Modeling 123 CEN-561 -1431 Pavement Analysis and Design 123 CEN-562 -1432 Planning, Design and Construction of Rural Roads 123 CEN-563 -1433 Geoinformatics for Landuse Surveys 123 CEN-616 -1434 SEMINAR 123 CEN-700 -1435 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 123 CEN-701A -1436 Data Structures 124 CSN-102 -1437 OBJECT ORIENTED ANALYSIS AND DESIGN 124 CSN-291 -1438 Data Base Management Systems 124 CSN-351 -1439 Compiler Design 124 CSN-352 -1440 ARTIFICIAL INTELLIGENCE 124 CSN-371 -1441 MACHINE LEARNING 124 CSN-382 -1442 Data Mining and Warehousing 124 CSN-515 -1443 Logic and Automated Reasoning 124 CSN-518 -1444 Introduction to Computer Science and Engineering 124 CSN-101 -1445 Fundamentals of Object Oriented Programming 124 CSN-103 -1446 COMPUTER ARCHITECTURE AND MICROPROCESSORS 124 CSN-221 -1447 DATA STRUCTURE LABORATORY 124 CSN-261 -1448 Computer Network 124 CSN-341 -1449 Theory of Computation 124 CSN-353 -1450 Computer Network Laboratory 124 CSN-361 -1451 Technical Communication 124 CSN-391 -1452 B.Tech. Project 124 CSN-400A -1453 Training Seminar 124 CSN-499 -1454 Advanced Algorithms 124 CSN-501 -1455 Advanced Operating Systems 124 CSN-502 -1456 Advanced Computer Networks 124 CSN-503 -1457 Lab I (Programming Lab) 124 CSN-504 -1458 Lab II (Project Lab) 124 CSN-505 -1459 Advanced Topics in Software Engineering 124 CSN-517 -1460 SEMINAR 124 CSN-700 -1461 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 124 CSN-701A -1462 Theory of Vibrations 125 EQN-501 -1463 Vibration of Elastic Media 125 EQN-502 -1464 Engineering Seismology 125 EQN-503 -1465 Finite Element Method 125 EQN-504 -1466 Numerical Methods for Dynamic Systems 125 EQN-513 -1467 Geotechnical Earthquake Engineering 125 EQN-521 -1468 Seismic Hazard Assessment 125 EQN-525 -1469 Seismological Modeling and Simulation 125 EQN-531 -1470 Vulnerability and Risk Analysis 125 EQN-532 -1471 Earthquake Resistant Design of Structures 125 EQN-563 -1472 Machine Foundation 125 EQN-572 -1473 Principles of Seismology 125 EQN-598 -1474 SEMINAR 125 EQN-700 -1475 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 125 EQN-701A -1476 Electrical Prospecting 126 ESN-323 -1477 Introduction to Earth Sciences 126 ESN-101 -1478 Computer Programming 126 ESN-103 -1479 BASIC PETROLOGY 126 ESN-201 -1480 PALEONTOLOGY 126 ESN-203 -1481 STRUCTURAL GEOLOGY-I 126 ESN-205 -1482 FIELD THEORY 126 ESN-221 -1483 GEOPHYSICAL PROSPECTING 126 ESN-223 -1484 Structural Geology-II 126 ESN-301 -1485 Metamorphic Petrology 126 ESN-303 -1486 Economic Geology 126 ESN-305 -1487 Gravity and Magnetic Prospecting 126 ESN-321 -1488 Seismology 126 ESN-325 -1489 ROCK AND SOIL MECHANICS 126 ESN-345 -1490 Technical Communication 126 ESN-391 -1491 PRINCIPLES OF REMOTE SENSING 126 ESN-401 -1492 PRINCIPLES OF GIS 126 ESN-403 -1493 ENGINEERING GEOLOGY 126 ESN-405 -1494 HYDROGEOLOGY 126 ESN-407 -1495 PETROLEUM GEOLOGY 126 ESN-409 -1496 Numerical Modelling in Geophysical 126 ESN-421 -1497 Geophysical Well logging 126 ESN-423 -1498 STRONG MOTION SEISMOGRAPH 126 ESN-477 -1499 Seminar-I 126 ESN-499 -1500 Comprehensive Viva Voce 126 ESN-509 -1501 Numerical Techniques and Computer Programming 126 ESN-510 -1502 Crystallography and Mineralogy 126 ESN-511 -1503 Geochemistry 126 ESN-512 -1504 Igneous Petrology 126 ESN-513 -1505 Structural Geology 126 ESN-514 -1506 Comprehensive Viva Voce 126 ESN-529 -1507 Sedimentology and Stratigraphy 126 ESN-531 -1508 Geophysical Prospecting 126 ESN-532 -1509 ISOTOPE GEOLOGY 126 ESN-547 -1510 Micropaleontology and Paleoceanography 126 ESN-551 -1511 Global Environment 126 ESN-553 -1512 DYNAMIC SYSTEMS IN EARTH SCIENCES 126 ESN-579 -1513 ADVANCED SEISMIC PROSPECTING 126 ESN-581 -1514 Seminar 126 ESN-599 -1515 Isotope Geology 126 ESN-603 -1516 Indian Mineral Deposits 126 ESN-606 -1517 Engineering Geology 126 ESN-607 -1518 Petroleum Geology 126 ESN-609 -1519 Well Logging 126 ESN-610 -1520 Plate Tectonics 126 ESN-611 -1521 SEMINAR 126 ESN-700 -1522 Electrical Science 127 EEN-112 -1523 Instrumentation laboratory 127 EEN-523 -1524 Introduction to Electrical Engineering 127 EEN-101 -1525 Network Theory 127 EEN-102 -1526 Programming in C++ 127 EEN-103 -1527 ELECTRICAL MACHINES-I 127 EEN-201 -1528 DIGITAL ELECTRONICS AND CIRCUITS 127 EEN-203 -1529 DESIGN OF ELECTRONICS CIRCUITS 127 EEN-205 -1530 ENGINEERING ANALYSIS AND DESIGN 127 EEN-291 -1531 Power System Analysis & Control 127 EEN-301 -1532 Power Electronics 127 EEN-303 -1533 Advanced Control Systems 127 EEN-305 -1534 Artificial Neural Networks 127 EEN-351 -1535 Signals and Systems 127 EEN-356 -1536 Data Structures 127 EEN-358 -1537 Embedded Systems 127 EEN-360 -1538 Technical Communication 127 EEN-391 -1539 B.Tech. Project 127 EEN-400A -1540 Training Seminar 127 EEN-499 -1541 Advanced Industrial and Electronic Instrumentation 127 EEN-520 -1542 Digital Signal and Image Processing 127 EEN-521 -1543 Biomedical Instrumentation 127 EEN-522 -1544 Advanced Power Electronics 127 EEN-540 -1545 Analysis of Electrical Machines 127 EEN-541 -1546 Advanced Electric Drives 127 EEN-542 -1547 Computer Aided Power System Analysis 127 EEN-560 -1548 Power System Operation and Control 127 EEN-561 -1549 Distribution System Analysis and Operation 127 EEN-562 -1550 EHV AC Transmission Systems 127 EEN-563 -1551 Advanced Linear Control Systems 127 EEN-580 -1552 Intelligent Control Techniques 127 EEN-581 -1553 Advanced System Engineering 127 EEN-582 -1554 Advances in Signal and Image Processing 127 EEN-626 -1555 Enhanced Power Quality AC-DC Converters 127 EEN-649 -1556 Power System Planning 127 EEN-661 -1557 Smart Grid 127 EEN-672 -1558 Introduction to Robotics 127 EEN-683 -1559 Modeling and Simulation 127 EEN-689 -1560 SEMINAR 127 EEN-700 -1561 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 127 EEN-701A -1562 Fundamental of Electronics 128 ECN-102 -1563 Principles of Digital Communication 128 ECN-212 -1564 Automatic Control Systems 128 ECN-222 -1565 Engineering Electromagnetics 128 ECN-232 -1566 Digital Electronic Circuits Laboratory 128 ECN-252 -1567 Communication Systems and Techniques 128 ECN-311 -1568 Antenna Theory 128 ECN-331 -1569 Microwave Engineering 128 ECN-333 -1570 Coding Theory and Applications 128 ECN-515 -1571 Fiber Optic Systems 128 ECN-539 -1572 Radar Signal Processing 128 ECN-550 -1573 RF System Design and Analysis 128 ECN-556 -1574 Microelectronics Lab-1 128 ECN-575 -1575 SIGNALS AND SYSTEMS 128 EC-202 -1576 Introduction to Electronics and Communication Engineering 128 ECN-101 -1577 SIGNALS AND SYSTEMS 128 ECN-203 -1578 ELECTRONICS NETWORK THEORY 128 ECN-291 -1579 Microelectronic Devices,Technology and Circuits 128 ECN-341 -1580 Fundamentals of Microelectronics 128 ECN-343 -1581 IC Application Laboratory 128 ECN-351 -1582 Technical Communication 128 ECN-391 -1583 B.Tech. Project 128 ECN-400A -1584 Training Seminar 128 ECN-499 -1585 Laboratory 128 ECN-510 -1586 Digital Communication Systems 128 ECN-511 -1587 Information and Communication Theory 128 ECN-512 -1588 Telecommunication Networks 128 ECN-513 -1589 Microwave Lab 128 ECN-530 -1590 Microwave Engineering 128 ECN-531 -1591 Advanced EMFT 128 ECN-532 -1592 Antenna Theory & Design 128 ECN-534 -1593 Microwave and Millimeter Wave Circuits 128 ECN-554 -1594 MOS Device Physics 128 ECN-572 -1595 Digital VLSI Circuit Design 128 ECN-573 -1596 Simulation Lab-1 128 ECN-576 -1597 Digital System Design 128 ECN-578 -1598 Analog VLSI Circuit Design 128 ECN-581 -1599 SEMINAR 128 ECN-700 -1600 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 128 ECN-701A -1601 DISSERTATION STAGE-II (CONTINUED FROM III SEMESTER) 128 ECN-701B -1602 Communication skills (Basic) 129 HS-001A -1603 Technical Communication 129 HS-501 -1604 Communication Skills(Basic) 129 HSN-001A -1605 Communication Skills(Advance) 129 HSN-001B -1606 Introduction to Psychology 129 HSN-002 -1607 Society,Culture Built Environment 129 HSN-351 -1608 Technical Communication 129 HSN-501 -1609 Economics 129 HSS-01 -1610 Sociology 129 HSS-02 -1611 UNDERSTANDING PERSONALITY 129 HS-902 -1612 HSN-01 129 HSN-01 -1613 MICROECONOMICS I 129 HSN-502 -1614 MACROECONOMICS I 129 HSN-503 -1615 MATHEMATICS FOR ECONOMISTS 129 HSN-504 -1616 DEVELOPMENT ECONOMICS 129 HSN-505 -1617 MONEY, BANKING AND FINANCIAL MARKETS 129 HSN-506 -1618 ADVANCED ECONOMETRICS 129 HSN-512 -1619 PUBLIC POLICY; THEORY AND PRACTICE 129 HSN-513 -1620 Issues in Indian Economy 129 HSN-601 -1621 Introduction to Research Methodology 129 HSN-602 -1622 Ecological Economics 129 HSN-604 -1623 Advanced Topics in Growth Theory 129 HSN-607 -1624 SEMINAR 129 HSN-700 -1625 UNDERSTANDING PERSONLALITY 129 HSN-902 -1626 RESEARCH METHODOLOGY IN SOCIAL SCIENCES 129 HSN-908 -1627 RESEARCH METHODOLOGY IN LANGUAGE & LITERATURE 129 HSN-911 -1628 Engineering Hydrology 130 HYN-102 -1629 Irrigation and drainage engineering 130 HYN-562 -1630 Stochastic hydrology 130 HYN-522 -1631 Groundwater hydrology 130 HYN-527 -1632 Geophysical investigations 130 HYN-529 -1633 Watershed Behavior and Conservation Practices 130 HYN-531 -1634 Environmental quality 130 HYN-535 -1635 Remote sensing and GIS applications 130 HYN-537 -1636 Experimental hydrology 130 HYN-553 -1637 Soil and groundwater contamination modelling 130 HYN-560 -1638 Watershed modeling and simulation 130 HYN-571 -1639 SEMINAR 130 HYN-700 -1640 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 130 HYN-701A -1641 DISSERTATION STAGE-II (CONTINUED FROM III SEMESTER) 130 HYN-701B -1642 Mathematical Methods 132 MAN-002 -1643 Probability and Statistics 132 MAN-006 -1644 Real Analysis I 132 MAN-104 -1645 Theory of Computation 132 MAN-304 -1646 Combinatorial Mathematics 132 MAN-322 -1647 Complex Analysis-II 132 MAN-510 -1648 Complex Analysis 132 MAN-520 -1649 Combinatorial Mathematics 132 MAN-646 -1650 Probability and Statistics 132 MA-501C -1651 Optimization Techniques 132 MA-501E -1652 Numerical Methods, Probability and Statistics 132 MA-501F -1653 Mathematics-I 132 MAN-001 -1654 Introduction to Mathematical Sciences 132 MAN-101 -1655 Introduction to Computer Programming 132 MAN-103 -1656 COMPLEX ANALYSIS-I 132 MAN-201 -1657 DISCRETE MATHEMATICS 132 MAN-203 -1658 ORDINARY AND PARTIAL DIFFERENTIAL EQUATIONS 132 MAN-205 -1659 DESIGN AND ANALYSIS OF ALGORITHMS 132 MAN-291 -1660 Abstract Algebra-I 132 MAN-301 -1661 Mathematical Statistics 132 MAN-303 -1662 Linear Programming 132 MAN-305 -1663 MATHEMATICAL IMAGING TECHNOLOGY 132 MAN-325 -1664 Technical Communication 132 MAN-391 -1665 THEORY OF ORDINARY DIFFERENTIAL EQUATIONS 132 MAN-501 -1666 Real Analysis-II 132 MAN-503 -1667 Topology 132 MAN-505 -1668 Statistical Inference 132 MAN-507 -1669 Theory of Partial Differential Equations 132 MAN-508 -1670 Theory of Ordinary Differential Equations 132 MAN-511 -1671 Real Analysis 132 MAN-513 -1672 Topology 132 MAN-515 -1673 Abstract Algebra 132 MAN-517 -1674 Computer Programming 132 MAN-519 -1675 SOFT COMPUTING 132 MAN-526 -1676 Mathematics 132 MAN-561 -1677 Fluid Dynamics 132 MAN-601 -1678 Tensors and Differential Geometry 132 MAN-603 -1679 Functional Analysis 132 MAN-605 -1680 FUNCTIONAL ANALYSIS 132 MAN-611 -1681 OPERATIONS RESEARCH 132 MAN-613 -1682 SEMINAR 132 MAN-615 -1683 Mathematical Statistics 132 MAN-629 -1684 Advanced Numerical Analysis 132 MAN-642 -1685 Coding Theory 132 MAN-645 -1686 CONTROL THEORY 132 MAN-647 -1687 Dynamical Systems 132 MAN-648 -1688 Financial Mathematics 132 MAN-649 -1689 MEASURE THEORY 132 MAN-651 -1690 Orthogonal Polynomials and Special Functions 132 MAN-654 -1691 Seminar 132 MAN-699 -1692 SEMINAR 132 MAN-900 -1693 SELECTED TOPICS IN ANALYSIS 132 MAN-901 -1694 ADVANCED NUMERICAL ANALYSIS 132 MAN-902 -1695 Advanced Manufacturing Processes 133 MI-572 -1696 Introduction to Mechanical Engineering 133 MIN-101A -1697 Introduction to Production and Industrial Engineering 133 MIN-101B -1698 Programming and Data Structure 133 MIN-103 -1699 Engineering Thermodynamics 133 MIN-106 -1700 Mechanical Engineering Drawing 133 MIN-108 -1701 Fluid Mechanics 133 MIN-110 -1702 ENGINEERING ANALYSIS AND DESIGN 133 MIN-291 -1703 Lab Based Project 133 MIN-300 -1704 Machine Design 133 MIN-302 -1705 Heat and Mass Transfer 133 MIN-305 -1706 Theory of Production Processes-II 133 MIN-309 -1707 Work System Desing 133 MIN-313 -1708 Power Plants 133 MIN-343 -1709 Instrumentation and Experimental Methods 133 MIN-500 -1710 Computational Fluid Dynamics & Heat Transfer 133 MIN-527 -1711 Computer Aided Mechanism Design 133 MIN-554 -1712 Finite Element Methods 133 MIN-557 -1713 Advanced Mechanical Vibrations 133 MIN-561 -1714 Smart Materials, Structures, and Devices 133 MIN-565 -1715 KINEMATICS OF MACHINES 133 MIN-201 -1716 MANUFACTURING TECHNOLOGY-II 133 MIN-203 -1717 FLUID MECHANICS 133 MIN-205 -1718 THERMAL ENGINEERING 133 MIN-209 -1719 Energy Conversion 133 MIN-210 -1720 THEORY OF MACHINES 133 MIN-211 -1721 Theory of Production Processes - I 133 MIN-216 -1722 Dynamics of Machines 133 MIN-301 -1723 Principles of Industrial Enigneering 133 MIN-303 -1724 Operations Research 133 MIN-311 -1725 Vibration and Noise 133 MIN-321 -1726 Industrial Management 133 MIN-333 -1727 Refrigeration and Air-Conditioning 133 MIN-340 -1728 Technical Communication 133 MIN-391 -1729 B.Tech. Project 133 MIN-400A -1730 Training Seminar 133 MIN-499 -1731 Robotics and Control 133 MIN-502 -1732 Modeling and Simulation 133 MIN-511A -1733 Modeling and Simulation 133 MIN-511B -1734 Advanced Thermodynamics 133 MIN-520 -1735 Advanced Fluid Mechanics 133 MIN-521 -1736 Advanced Heat Transfer 133 MIN-522 -1737 Solar Energy 133 MIN-525 -1738 Hydro-dynamic Machines 133 MIN-531 -1739 Micro and Nano Scale Thermal Engineering 133 MIN-539 -1740 Dynamics of Mechanical Systems 133 MIN-551 -1741 Advanced Mechanics of Solids 133 MIN-552 -1742 Computer Aided Design 133 MIN-559 -1743 Operations Management 133 MIN-570 -1744 Quality Management 133 MIN-571 -1745 Advanced Manufacturing Processes 133 MIN-572 -1746 Design for Manufacturability 133 MIN-573 -1747 Machine Tool Design and Numerical Control 133 MIN-576 -1748 Materials Management 133 MIN-583 -1749 Non-Traditional Machining Processes 133 MIN-588 -1750 Non-Conventional Welding Processes 133 MIN-593 -1751 Numerical Methods in Manufacturing 133 MIN-606 -1752 SEMINAR 133 MIN-700 -1753 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 133 MIN-701A -1754 Printing Technology 136 PP-545 -1755 Pulping 136 PPN-501 -1756 Chemical Recovery Process 136 PPN-503 -1757 Paper Proprieties and Stock Preparation 136 PPN-505 -1758 Advanced Numerical Methods and Statistics 136 PPN-515 -1759 Process Instrumentation and Control 136 PPN-523 -1760 Packaging Principles, Processes and Sustainability 136 PPN-541 -1761 Packaging Materials 136 PPN-543 -1762 Printing Technology 136 PPN-545 -1763 Converting Processes for Packaging 136 PPN-547 -1764 SEMINAR 136 PPN-700 -1765 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 136 PPN-701A -1766 Computational Physics 137 PH-511(O) -1767 Physics of Earth’s Atmosphere 137 PH-512 -1768 Elements of Nuclear and Particle Physics 137 PH-514 -1769 Advanced Atmospheric Physics 137 PH-603 -1770 Mechanics 137 PHN-001 -1771 Electromagnetic Field Theory 137 PHN-003 -1772 Applied Physics 137 PHN-004 -1773 Electrodynamics and Optics 137 PHN-005 -1774 Quantum Mechanics and Statistical Mechanics 137 PHN-006 -1775 Engineering Analysis Design 137 PHN-205 -1776 Quantum Physics 137 PHN-211 -1777 Applied Optics 137 PHN-214 -1778 Plasma Physics and Applications 137 PHN-317 -1779 QUANTUM INFORMATION AND COMPUTING 137 PHN-427 -1780 Laboratory Work 137 PHN-502 -1781 Classical Electrodynamics 137 PHN-507 -1782 Physics of Earth’s Atmosphere 137 PHN-512 -1783 Advanced Atmospheric Physics 137 PHN-603 -1784 Weather Forecasting 137 PHN-629 -1785 Laboratory Work 137 PHN-701 -1786 Semiconductor Materials and Devices 137 PHN-703 -1787 Optical Electronics 137 PHN-713 -1788 QUARK GLUON PLASMA & FINITE TEMPERATURE FIELD THEORY 137 PH-920 -1789 Modern Physics 137 PHN-007 -1790 Introduction to Physical Science 137 PHN-101 -1791 Computer Programming 137 PHN-103 -1792 Atomic Molecular and Laser Physics 137 PHN-204 -1793 Mechanics and Relativity 137 PHN-207 -1794 Mathematical Physics 137 PHN-209 -1795 Microprocessors and Peripheral Devices 137 PHN-210 -1796 Lab-based Project 137 PHN-300 -1797 Applied Instrumentation 137 PHN-310 -1798 Numerical Analysis and Computational Physics 137 PHN-311 -1799 Signals and Systems 137 PHN-313 -1800 Laser & Photonics 137 PHN-315 -1801 Techincal Communication 137 PHN-319 -1802 Nuclear Astrophysics 137 PHN-331 -1803 B.Tech. Project 137 PHN-400A -1804 Training Seminar 137 PHN-499 -1805 Quantum Mechanics – I 137 PHN-503 -1806 Mathematical Physics 137 PHN-505 -1807 Classical Mechanics 137 PHN-509 -1808 SEMICONDUCTOR DEVICES AND APPLICATIONS 137 PHN-513 -1809 DISSERTATION STAGE-I 137 PHN-600A -1810 Advanced Condensed Matter Physics 137 PHN-601 -1811 Advanced Laser Physics 137 PHN-605 -1812 Advanced Nuclear Physics 137 PHN-607 -1813 Advanced Characterization Techniques 137 PHN-617 -1814 A Primer in Quantum Field Theory 137 PHN-619 -1815 Quantum Theory of Solids 137 PHN-627 -1816 Semiconductor Photonics 137 PHN-637 -1817 Numerical Analysis & Computer Programming 137 PHN-643 -1818 SEMINAR 137 PHN-699 -1819 SEMINAR 137 PHN-700 -1820 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 137 PHN-701A -1821 Computational Techniques and Programming 137 PHN-707 -1822 Semiconductor Device Physics 137 PHN-709 -1823 Laboratory Work in Photonics 137 PHN-711 -1824 Experimental Techniques 137 PHN-788 -1825 MATHEMATICAL AND COMPUTATIONAL TECHNIQUES 137 PHN-789 -1826 System Design Techniques 138 WRN-501 -1827 Design of Water Resources Structures 138 WRN-502 -1828 Water Resources Planning and Management 138 WRN-503 -1829 Applied Hydrology 138 WRN-504 -1830 Hydro Generating Equipment 138 WRN-531 -1831 Hydropower System Planning 138 WRN-532 -1832 Power System Protection Application 138 WRN-533 -1833 Design of Hydro Mechanical Equipment 138 WRN-551 -1834 Construction Planning and Management 138 WRN-552 -1835 Design of Irrigation Structures and Drainage Works 138 WRN-571 -1836 Principles and Practices of Irrigation 138 WRN-573 -1837 On Farm Development 138 WRN-575 -1838 SEMINAR 138 WRN-700 -1839 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 138 WRN-701A -\. - - --- --- Data for Name: rest_api_file; Type: TABLE DATA; Schema: public; Owner: ayan --- - -COPY public.rest_api_file (id, downloads, date_modified, filetype, course_id, driveid, title, size, fileext, finalized) FROM stdin; -\. - - --- --- Data for Name: users_user; Type: TABLE DATA; Schema: public; Owner: ayan --- - -COPY public.users_user (id, falcon_id, username, email, profile_image, courses, role) FROM stdin; -\. - - --- --- Data for Name: users_courserequest; Type: TABLE DATA; Schema: public; Owner: ayan --- - -COPY public.users_courserequest (id, status, department, course, code, date, user_id) FROM stdin; -\. - - --- --- Data for Name: users_filerequest; Type: TABLE DATA; Schema: public; Owner: ayan --- - -COPY public.users_filerequest (id, filetype, status, title, date, course_id, user_id) FROM stdin; -\. - - --- --- Data for Name: users_upload; Type: TABLE DATA; Schema: public; Owner: ayan --- - -COPY public.users_upload (id, driveid, resolved, status, title, filetype, date, course_id, user_id) FROM stdin; -\. - - --- --- Name: auth_group_id_seq; Type: SEQUENCE SET; Schema: public; Owner: ayan --- - -SELECT pg_catalog.setval('public.auth_group_id_seq', 1, false); - - --- --- Name: auth_group_permissions_id_seq; Type: SEQUENCE SET; Schema: public; Owner: ayan --- - -SELECT pg_catalog.setval('public.auth_group_permissions_id_seq', 1, false); - - --- --- Name: auth_permission_id_seq; Type: SEQUENCE SET; Schema: public; Owner: ayan --- - -SELECT pg_catalog.setval('public.auth_permission_id_seq', 76, true); - - --- --- Name: auth_user_groups_id_seq; Type: SEQUENCE SET; Schema: public; Owner: ayan --- - -SELECT pg_catalog.setval('public.auth_user_groups_id_seq', 1, false); - - --- --- Name: auth_user_id_seq; Type: SEQUENCE SET; Schema: public; Owner: ayan --- - -SELECT pg_catalog.setval('public.auth_user_id_seq', 1, true); - - --- --- Name: auth_user_user_permissions_id_seq; Type: SEQUENCE SET; Schema: public; Owner: ayan --- - -SELECT pg_catalog.setval('public.auth_user_user_permissions_id_seq', 1, false); - - --- --- Name: corsheaders_corsmodel_id_seq; Type: SEQUENCE SET; Schema: public; Owner: ayan --- - -SELECT pg_catalog.setval('public.corsheaders_corsmodel_id_seq', 1, false); - - --- --- Name: django_admin_log_id_seq; Type: SEQUENCE SET; Schema: public; Owner: ayan --- - -SELECT pg_catalog.setval('public.django_admin_log_id_seq', 1470, true); - - --- --- Name: django_content_type_id_seq; Type: SEQUENCE SET; Schema: public; Owner: ayan --- - -SELECT pg_catalog.setval('public.django_content_type_id_seq', 18, true); - - --- --- Name: django_migrations_id_seq; Type: SEQUENCE SET; Schema: public; Owner: ayan --- - -SELECT pg_catalog.setval('public.django_migrations_id_seq', 65, true); - - --- --- Name: rest_api_course_id_seq; Type: SEQUENCE SET; Schema: public; Owner: ayan --- - -SELECT pg_catalog.setval('public.rest_api_course_id_seq', 1839, true); - - --- --- Name: rest_api_department_id_seq; Type: SEQUENCE SET; Schema: public; Owner: ayan --- - -SELECT pg_catalog.setval('public.rest_api_department_id_seq', 139, true); - - --- --- Name: rest_api_file_id_seq; Type: SEQUENCE SET; Schema: public; Owner: ayan --- - -SELECT pg_catalog.setval('public.rest_api_file_id_seq', 26, true); - - --- --- Name: users_courserequest_id_seq; Type: SEQUENCE SET; Schema: public; Owner: ayan --- - -SELECT pg_catalog.setval('public.users_courserequest_id_seq', 1, false); - - --- --- Name: users_filerequest_id_seq; Type: SEQUENCE SET; Schema: public; Owner: ayan --- - -SELECT pg_catalog.setval('public.users_filerequest_id_seq', 1, false); - - --- --- Name: users_upload_id_seq; Type: SEQUENCE SET; Schema: public; Owner: ayan --- - -SELECT pg_catalog.setval('public.users_upload_id_seq', 1, false); - - --- --- Name: users_user_id_seq; Type: SEQUENCE SET; Schema: public; Owner: ayan --- - -SELECT pg_catalog.setval('public.users_user_id_seq', 1, false); - - --- --- PostgreSQL database dump complete --- - +-- +-- PostgreSQL database cluster dump +-- + +SET default_transaction_read_only = off; + +SET client_encoding = 'UTF8'; +SET standard_conforming_strings = on; + +-- +-- Drop databases +-- + +DROP DATABASE studyportal; + + + + +-- +-- Drop roles +-- + +DROP ROLE postgres; +DROP ROLE studyportal; + + +-- +-- Roles +-- + +CREATE ROLE postgres; +ALTER ROLE postgres WITH SUPERUSER INHERIT CREATEROLE CREATEDB LOGIN REPLICATION BYPASSRLS; +CREATE ROLE studyportal; +ALTER ROLE studyportal WITH SUPERUSER INHERIT NOCREATEROLE NOCREATEDB LOGIN NOREPLICATION NOBYPASSRLS PASSWORD 'md51b7b27c87013ec53a86ec35a5821862b'; + + + + + + +-- +-- Database creation +-- + +CREATE DATABASE studyportal WITH TEMPLATE = template0 OWNER = postgres; +REVOKE CONNECT,TEMPORARY ON DATABASE template1 FROM PUBLIC; +GRANT CONNECT ON DATABASE template1 TO PUBLIC; + + +\connect postgres + +SET default_transaction_read_only = off; + +-- +-- PostgreSQL database dump +-- + +-- Dumped from database version 10.3 +-- Dumped by pg_dump version 10.3 + +SET statement_timeout = 0; +SET lock_timeout = 0; +SET idle_in_transaction_session_timeout = 0; +SET client_encoding = 'UTF8'; +SET standard_conforming_strings = on; +SELECT pg_catalog.set_config('search_path', '', false); +SET check_function_bodies = false; +SET client_min_messages = warning; +SET row_security = off; + +-- +-- Name: DATABASE postgres; Type: COMMENT; Schema: -; Owner: postgres +-- + +COMMENT ON DATABASE postgres IS 'default administrative connection database'; + + +-- +-- Name: plpgsql; Type: EXTENSION; Schema: -; Owner: +-- + +CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog; + + +-- +-- Name: EXTENSION plpgsql; Type: COMMENT; Schema: -; Owner: +-- + +COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language'; + + +-- +-- PostgreSQL database dump complete +-- + +\connect studyportal + +SET default_transaction_read_only = off; + +-- +-- PostgreSQL database dump +-- + +-- Dumped from database version 10.3 +-- Dumped by pg_dump version 10.3 + +SET statement_timeout = 0; +SET lock_timeout = 0; +SET idle_in_transaction_session_timeout = 0; +SET client_encoding = 'UTF8'; +SET standard_conforming_strings = on; +SELECT pg_catalog.set_config('search_path', '', false); +SET check_function_bodies = false; +SET client_min_messages = warning; +SET row_security = off; + +-- +-- Name: plpgsql; Type: EXTENSION; Schema: -; Owner: +-- + +CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog; + + +-- +-- Name: EXTENSION plpgsql; Type: COMMENT; Schema: -; Owner: +-- + +COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language'; + + +SET default_tablespace = ''; + +SET default_with_oids = false; + +-- +-- Name: auth_group; Type: TABLE; Schema: public; Owner: studyportal +-- + +CREATE TABLE public.auth_group ( + id integer NOT NULL, + name character varying(150) NOT NULL +); + + +ALTER TABLE public.auth_group OWNER TO studyportal; + +-- +-- Name: auth_group_id_seq; Type: SEQUENCE; Schema: public; Owner: studyportal +-- + +CREATE SEQUENCE public.auth_group_id_seq + AS integer + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.auth_group_id_seq OWNER TO studyportal; + +-- +-- Name: auth_group_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: studyportal +-- + +ALTER SEQUENCE public.auth_group_id_seq OWNED BY public.auth_group.id; + + +-- +-- Name: auth_group_permissions; Type: TABLE; Schema: public; Owner: studyportal +-- + +CREATE TABLE public.auth_group_permissions ( + id integer NOT NULL, + group_id integer NOT NULL, + permission_id integer NOT NULL +); + + +ALTER TABLE public.auth_group_permissions OWNER TO studyportal; + +-- +-- Name: auth_group_permissions_id_seq; Type: SEQUENCE; Schema: public; Owner: studyportal +-- + +CREATE SEQUENCE public.auth_group_permissions_id_seq + AS integer + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.auth_group_permissions_id_seq OWNER TO studyportal; + +-- +-- Name: auth_group_permissions_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: studyportal +-- + +ALTER SEQUENCE public.auth_group_permissions_id_seq OWNED BY public.auth_group_permissions.id; + + +-- +-- Name: auth_permission; Type: TABLE; Schema: public; Owner: studyportal +-- + +CREATE TABLE public.auth_permission ( + id integer NOT NULL, + name character varying(255) NOT NULL, + content_type_id integer NOT NULL, + codename character varying(100) NOT NULL +); + + +ALTER TABLE public.auth_permission OWNER TO studyportal; + +-- +-- Name: auth_permission_id_seq; Type: SEQUENCE; Schema: public; Owner: studyportal +-- + +CREATE SEQUENCE public.auth_permission_id_seq + AS integer + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.auth_permission_id_seq OWNER TO studyportal; + +-- +-- Name: auth_permission_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: studyportal +-- + +ALTER SEQUENCE public.auth_permission_id_seq OWNED BY public.auth_permission.id; + + +-- +-- Name: auth_user; Type: TABLE; Schema: public; Owner: studyportal +-- + +CREATE TABLE public.auth_user ( + id integer NOT NULL, + password character varying(128) NOT NULL, + last_login timestamp with time zone, + is_superuser boolean NOT NULL, + username character varying(150) NOT NULL, + first_name character varying(30) NOT NULL, + last_name character varying(150) NOT NULL, + email character varying(254) NOT NULL, + is_staff boolean NOT NULL, + is_active boolean NOT NULL, + date_joined timestamp with time zone NOT NULL +); + + +ALTER TABLE public.auth_user OWNER TO studyportal; + +-- +-- Name: auth_user_groups; Type: TABLE; Schema: public; Owner: studyportal +-- + +CREATE TABLE public.auth_user_groups ( + id integer NOT NULL, + user_id integer NOT NULL, + group_id integer NOT NULL +); + + +ALTER TABLE public.auth_user_groups OWNER TO studyportal; + +-- +-- Name: auth_user_groups_id_seq; Type: SEQUENCE; Schema: public; Owner: studyportal +-- + +CREATE SEQUENCE public.auth_user_groups_id_seq + AS integer + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.auth_user_groups_id_seq OWNER TO studyportal; + +-- +-- Name: auth_user_groups_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: studyportal +-- + +ALTER SEQUENCE public.auth_user_groups_id_seq OWNED BY public.auth_user_groups.id; + + +-- +-- Name: auth_user_id_seq; Type: SEQUENCE; Schema: public; Owner: studyportal +-- + +CREATE SEQUENCE public.auth_user_id_seq + AS integer + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.auth_user_id_seq OWNER TO studyportal; + +-- +-- Name: auth_user_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: studyportal +-- + +ALTER SEQUENCE public.auth_user_id_seq OWNED BY public.auth_user.id; + + +-- +-- Name: auth_user_user_permissions; Type: TABLE; Schema: public; Owner: studyportal +-- + +CREATE TABLE public.auth_user_user_permissions ( + id integer NOT NULL, + user_id integer NOT NULL, + permission_id integer NOT NULL +); + + +ALTER TABLE public.auth_user_user_permissions OWNER TO studyportal; + +-- +-- Name: auth_user_user_permissions_id_seq; Type: SEQUENCE; Schema: public; Owner: studyportal +-- + +CREATE SEQUENCE public.auth_user_user_permissions_id_seq + AS integer + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.auth_user_user_permissions_id_seq OWNER TO studyportal; + +-- +-- Name: auth_user_user_permissions_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: studyportal +-- + +ALTER SEQUENCE public.auth_user_user_permissions_id_seq OWNED BY public.auth_user_user_permissions.id; + + +-- +-- Name: django_admin_log; Type: TABLE; Schema: public; Owner: studyportal +-- + +CREATE TABLE public.django_admin_log ( + id integer NOT NULL, + action_time timestamp with time zone NOT NULL, + object_id text, + object_repr character varying(200) NOT NULL, + action_flag smallint NOT NULL, + change_message text NOT NULL, + content_type_id integer, + user_id integer NOT NULL, + CONSTRAINT django_admin_log_action_flag_check CHECK ((action_flag >= 0)) +); + + +ALTER TABLE public.django_admin_log OWNER TO studyportal; + +-- +-- Name: django_admin_log_id_seq; Type: SEQUENCE; Schema: public; Owner: studyportal +-- + +CREATE SEQUENCE public.django_admin_log_id_seq + AS integer + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.django_admin_log_id_seq OWNER TO studyportal; + +-- +-- Name: django_admin_log_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: studyportal +-- + +ALTER SEQUENCE public.django_admin_log_id_seq OWNED BY public.django_admin_log.id; + + +-- +-- Name: django_content_type; Type: TABLE; Schema: public; Owner: studyportal +-- + +CREATE TABLE public.django_content_type ( + id integer NOT NULL, + app_label character varying(100) NOT NULL, + model character varying(100) NOT NULL +); + + +ALTER TABLE public.django_content_type OWNER TO studyportal; + +-- +-- Name: django_content_type_id_seq; Type: SEQUENCE; Schema: public; Owner: studyportal +-- + +CREATE SEQUENCE public.django_content_type_id_seq + AS integer + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.django_content_type_id_seq OWNER TO studyportal; + +-- +-- Name: django_content_type_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: studyportal +-- + +ALTER SEQUENCE public.django_content_type_id_seq OWNED BY public.django_content_type.id; + + +-- +-- Name: django_migrations; Type: TABLE; Schema: public; Owner: studyportal +-- + +CREATE TABLE public.django_migrations ( + id integer NOT NULL, + app character varying(255) NOT NULL, + name character varying(255) NOT NULL, + applied timestamp with time zone NOT NULL +); + + +ALTER TABLE public.django_migrations OWNER TO studyportal; + +-- +-- Name: django_migrations_id_seq; Type: SEQUENCE; Schema: public; Owner: studyportal +-- + +CREATE SEQUENCE public.django_migrations_id_seq + AS integer + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.django_migrations_id_seq OWNER TO studyportal; + +-- +-- Name: django_migrations_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: studyportal +-- + +ALTER SEQUENCE public.django_migrations_id_seq OWNED BY public.django_migrations.id; + + +-- +-- Name: django_session; Type: TABLE; Schema: public; Owner: studyportal +-- + +CREATE TABLE public.django_session ( + session_key character varying(40) NOT NULL, + session_data text NOT NULL, + expire_date timestamp with time zone NOT NULL +); + + +ALTER TABLE public.django_session OWNER TO studyportal; + +-- +-- Name: rest_api_course; Type: TABLE; Schema: public; Owner: studyportal +-- + +CREATE TABLE public.rest_api_course ( + id integer NOT NULL, + title character varying(200) NOT NULL, + department_id integer, + code character varying(10) NOT NULL +); + + +ALTER TABLE public.rest_api_course OWNER TO studyportal; + +-- +-- Name: rest_api_course_id_seq; Type: SEQUENCE; Schema: public; Owner: studyportal +-- + +CREATE SEQUENCE public.rest_api_course_id_seq + AS integer + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.rest_api_course_id_seq OWNER TO studyportal; + +-- +-- Name: rest_api_course_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: studyportal +-- + +ALTER SEQUENCE public.rest_api_course_id_seq OWNED BY public.rest_api_course.id; + + +-- +-- Name: rest_api_department; Type: TABLE; Schema: public; Owner: studyportal +-- + +CREATE TABLE public.rest_api_department ( + id integer NOT NULL, + title character varying(100) NOT NULL, + abbreviation character varying(10) NOT NULL, + imageurl character varying(100) NOT NULL +); + + +ALTER TABLE public.rest_api_department OWNER TO studyportal; + +-- +-- Name: rest_api_department_id_seq; Type: SEQUENCE; Schema: public; Owner: studyportal +-- + +CREATE SEQUENCE public.rest_api_department_id_seq + AS integer + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.rest_api_department_id_seq OWNER TO studyportal; + +-- +-- Name: rest_api_department_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: studyportal +-- + +ALTER SEQUENCE public.rest_api_department_id_seq OWNED BY public.rest_api_department.id; + + +-- +-- Name: rest_api_file; Type: TABLE; Schema: public; Owner: studyportal +-- + +CREATE TABLE public.rest_api_file ( + id integer NOT NULL, + downloads integer NOT NULL, + date_modified date NOT NULL, + filetype character varying(20) NOT NULL, + course_id integer NOT NULL, + driveid character varying(50) NOT NULL, + title character varying(100) NOT NULL, + size character varying(10) NOT NULL, + fileext character varying(10) NOT NULL, + finalized boolean NOT NULL +); + + +ALTER TABLE public.rest_api_file OWNER TO studyportal; + +-- +-- Name: rest_api_file_id_seq; Type: SEQUENCE; Schema: public; Owner: studyportal +-- + +CREATE SEQUENCE public.rest_api_file_id_seq + AS integer + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.rest_api_file_id_seq OWNER TO studyportal; + +-- +-- Name: rest_api_file_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: studyportal +-- + +ALTER SEQUENCE public.rest_api_file_id_seq OWNED BY public.rest_api_file.id; + + +-- +-- Name: users_courserequest; Type: TABLE; Schema: public; Owner: studyportal +-- + +CREATE TABLE public.users_courserequest ( + id integer NOT NULL, + status integer NOT NULL, + department character varying(100) NOT NULL, + course character varying(100) NOT NULL, + code character varying(8) NOT NULL, + date date NOT NULL, + user_id integer NOT NULL +); + + +ALTER TABLE public.users_courserequest OWNER TO studyportal; + +-- +-- Name: users_courserequest_id_seq; Type: SEQUENCE; Schema: public; Owner: studyportal +-- + +CREATE SEQUENCE public.users_courserequest_id_seq + AS integer + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.users_courserequest_id_seq OWNER TO studyportal; + +-- +-- Name: users_courserequest_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: studyportal +-- + +ALTER SEQUENCE public.users_courserequest_id_seq OWNED BY public.users_courserequest.id; + + +-- +-- Name: users_filerequest; Type: TABLE; Schema: public; Owner: studyportal +-- + +CREATE TABLE public.users_filerequest ( + id integer NOT NULL, + filetype character varying(20) NOT NULL, + status integer NOT NULL, + title character varying(100) NOT NULL, + date date NOT NULL, + course_id integer NOT NULL, + user_id integer NOT NULL +); + + +ALTER TABLE public.users_filerequest OWNER TO studyportal; + +-- +-- Name: users_filerequest_id_seq; Type: SEQUENCE; Schema: public; Owner: studyportal +-- + +CREATE SEQUENCE public.users_filerequest_id_seq + AS integer + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.users_filerequest_id_seq OWNER TO studyportal; + +-- +-- Name: users_filerequest_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: studyportal +-- + +ALTER SEQUENCE public.users_filerequest_id_seq OWNED BY public.users_filerequest.id; + + +-- +-- Name: users_upload; Type: TABLE; Schema: public; Owner: studyportal +-- + +CREATE TABLE public.users_upload ( + id integer NOT NULL, + driveid character varying(50) NOT NULL, + resolved boolean NOT NULL, + status integer NOT NULL, + title character varying(100) NOT NULL, + filetype character varying(20) NOT NULL, + date date NOT NULL, + course_id integer NOT NULL, + user_id integer NOT NULL +); + + +ALTER TABLE public.users_upload OWNER TO studyportal; + +-- +-- Name: users_upload_id_seq; Type: SEQUENCE; Schema: public; Owner: studyportal +-- + +CREATE SEQUENCE public.users_upload_id_seq + AS integer + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.users_upload_id_seq OWNER TO studyportal; + +-- +-- Name: users_upload_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: studyportal +-- + +ALTER SEQUENCE public.users_upload_id_seq OWNED BY public.users_upload.id; + + +-- +-- Name: users_user; Type: TABLE; Schema: public; Owner: studyportal +-- + +CREATE TABLE public.users_user ( + id integer NOT NULL, + falcon_id integer NOT NULL, + username character varying(100) NOT NULL, + email character varying(100) NOT NULL, + profile_image character varying(500) NOT NULL, + courses integer[] NOT NULL, + role character varying(20) NOT NULL +); + + +ALTER TABLE public.users_user OWNER TO studyportal; + +-- +-- Name: users_user_id_seq; Type: SEQUENCE; Schema: public; Owner: studyportal +-- + +CREATE SEQUENCE public.users_user_id_seq + AS integer + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.users_user_id_seq OWNER TO studyportal; + +-- +-- Name: users_user_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: studyportal +-- + +ALTER SEQUENCE public.users_user_id_seq OWNED BY public.users_user.id; + + +-- +-- Name: auth_group id; Type: DEFAULT; Schema: public; Owner: studyportal +-- + +ALTER TABLE ONLY public.auth_group ALTER COLUMN id SET DEFAULT nextval('public.auth_group_id_seq'::regclass); + + +-- +-- Name: auth_group_permissions id; Type: DEFAULT; Schema: public; Owner: studyportal +-- + +ALTER TABLE ONLY public.auth_group_permissions ALTER COLUMN id SET DEFAULT nextval('public.auth_group_permissions_id_seq'::regclass); + + +-- +-- Name: auth_permission id; Type: DEFAULT; Schema: public; Owner: studyportal +-- + +ALTER TABLE ONLY public.auth_permission ALTER COLUMN id SET DEFAULT nextval('public.auth_permission_id_seq'::regclass); + + +-- +-- Name: auth_user id; Type: DEFAULT; Schema: public; Owner: studyportal +-- + +ALTER TABLE ONLY public.auth_user ALTER COLUMN id SET DEFAULT nextval('public.auth_user_id_seq'::regclass); + + +-- +-- Name: auth_user_groups id; Type: DEFAULT; Schema: public; Owner: studyportal +-- + +ALTER TABLE ONLY public.auth_user_groups ALTER COLUMN id SET DEFAULT nextval('public.auth_user_groups_id_seq'::regclass); + + +-- +-- Name: auth_user_user_permissions id; Type: DEFAULT; Schema: public; Owner: studyportal +-- + +ALTER TABLE ONLY public.auth_user_user_permissions ALTER COLUMN id SET DEFAULT nextval('public.auth_user_user_permissions_id_seq'::regclass); + + +-- +-- Name: django_admin_log id; Type: DEFAULT; Schema: public; Owner: studyportal +-- + +ALTER TABLE ONLY public.django_admin_log ALTER COLUMN id SET DEFAULT nextval('public.django_admin_log_id_seq'::regclass); + + +-- +-- Name: django_content_type id; Type: DEFAULT; Schema: public; Owner: studyportal +-- + +ALTER TABLE ONLY public.django_content_type ALTER COLUMN id SET DEFAULT nextval('public.django_content_type_id_seq'::regclass); + + +-- +-- Name: django_migrations id; Type: DEFAULT; Schema: public; Owner: studyportal +-- + +ALTER TABLE ONLY public.django_migrations ALTER COLUMN id SET DEFAULT nextval('public.django_migrations_id_seq'::regclass); + + +-- +-- Name: rest_api_course id; Type: DEFAULT; Schema: public; Owner: studyportal +-- + +ALTER TABLE ONLY public.rest_api_course ALTER COLUMN id SET DEFAULT nextval('public.rest_api_course_id_seq'::regclass); + + +-- +-- Name: rest_api_department id; Type: DEFAULT; Schema: public; Owner: studyportal +-- + +ALTER TABLE ONLY public.rest_api_department ALTER COLUMN id SET DEFAULT nextval('public.rest_api_department_id_seq'::regclass); + + +-- +-- Name: rest_api_file id; Type: DEFAULT; Schema: public; Owner: studyportal +-- + +ALTER TABLE ONLY public.rest_api_file ALTER COLUMN id SET DEFAULT nextval('public.rest_api_file_id_seq'::regclass); + + +-- +-- Name: users_courserequest id; Type: DEFAULT; Schema: public; Owner: studyportal +-- + +ALTER TABLE ONLY public.users_courserequest ALTER COLUMN id SET DEFAULT nextval('public.users_courserequest_id_seq'::regclass); + + +-- +-- Name: users_filerequest id; Type: DEFAULT; Schema: public; Owner: studyportal +-- + +ALTER TABLE ONLY public.users_filerequest ALTER COLUMN id SET DEFAULT nextval('public.users_filerequest_id_seq'::regclass); + + +-- +-- Name: users_upload id; Type: DEFAULT; Schema: public; Owner: studyportal +-- + +ALTER TABLE ONLY public.users_upload ALTER COLUMN id SET DEFAULT nextval('public.users_upload_id_seq'::regclass); + + +-- +-- Name: users_user id; Type: DEFAULT; Schema: public; Owner: studyportal +-- + +ALTER TABLE ONLY public.users_user ALTER COLUMN id SET DEFAULT nextval('public.users_user_id_seq'::regclass); + + +-- +-- Data for Name: auth_group; Type: TABLE DATA; Schema: public; Owner: studyportal +-- + +COPY public.auth_group (id, name) FROM stdin; +\. + + +-- +-- Data for Name: auth_group_permissions; Type: TABLE DATA; Schema: public; Owner: studyportal +-- + +COPY public.auth_group_permissions (id, group_id, permission_id) FROM stdin; +\. + + +-- +-- Data for Name: auth_permission; Type: TABLE DATA; Schema: public; Owner: studyportal +-- + +COPY public.auth_permission (id, name, content_type_id, codename) FROM stdin; +1 Can add log entry 1 add_logentry +2 Can change log entry 1 change_logentry +3 Can delete log entry 1 delete_logentry +4 Can view log entry 1 view_logentry +5 Can add permission 2 add_permission +6 Can change permission 2 change_permission +7 Can delete permission 2 delete_permission +8 Can view permission 2 view_permission +9 Can add group 3 add_group +10 Can change group 3 change_group +11 Can delete group 3 delete_group +12 Can view group 3 view_group +13 Can add user 4 add_user +14 Can change user 4 change_user +15 Can delete user 4 delete_user +16 Can view user 4 view_user +17 Can add content type 5 add_contenttype +18 Can change content type 5 change_contenttype +19 Can delete content type 5 delete_contenttype +20 Can view content type 5 view_contenttype +21 Can add session 6 add_session +22 Can change session 6 change_session +23 Can delete session 6 delete_session +24 Can view session 6 view_session +25 Can add department 7 add_department +26 Can change department 7 change_department +27 Can delete department 7 delete_department +28 Can view department 7 view_department +29 Can add course 8 add_course +30 Can change course 8 change_course +31 Can delete course 8 delete_course +32 Can view course 8 view_course +33 Can add file 9 add_file +34 Can change file 9 change_file +35 Can delete file 9 delete_file +36 Can view file 9 view_file +37 Can add user 10 add_user +38 Can change user 10 change_user +39 Can delete user 10 delete_user +40 Can view user 10 view_user +41 Can add upload 11 add_upload +42 Can change upload 11 change_upload +43 Can delete upload 11 delete_upload +44 Can view upload 11 view_upload +45 Can add file request 12 add_filerequest +46 Can change file request 12 change_filerequest +47 Can delete file request 12 delete_filerequest +48 Can view file request 12 view_filerequest +49 Can add course request 13 add_courserequest +50 Can change course request 13 change_courserequest +51 Can delete course request 13 delete_courserequest +52 Can view course request 13 view_courserequest +\. + + +-- +-- Data for Name: auth_user; Type: TABLE DATA; Schema: public; Owner: studyportal +-- + +COPY public.auth_user (id, password, last_login, is_superuser, username, first_name, last_name, email, is_staff, is_active, date_joined) FROM stdin; +1 pbkdf2_sha256$150000$NSqeqhzctjkB$gJSDjWvJuLiX87ahBb/O70+Oq2KclTzEGgEzG+nEPyc= \N f studyportal test@test.test f t 2020-04-21 04:47:51.542059+00 +\. + + +-- +-- Data for Name: auth_user_groups; Type: TABLE DATA; Schema: public; Owner: studyportal +-- + +COPY public.auth_user_groups (id, user_id, group_id) FROM stdin; +\. + + +-- +-- Data for Name: auth_user_user_permissions; Type: TABLE DATA; Schema: public; Owner: studyportal +-- + +COPY public.auth_user_user_permissions (id, user_id, permission_id) FROM stdin; +\. + + +-- +-- Data for Name: django_admin_log; Type: TABLE DATA; Schema: public; Owner: studyportal +-- + +COPY public.django_admin_log (id, action_time, object_id, object_repr, action_flag, change_message, content_type_id, user_id) FROM stdin; +1 2019-08-30 22:06:50.287472+00 1 Electrical Engineering 1 [{"added": {}}] 7 1 +2 2019-08-30 22:07:04.31955+00 1 Network Theory 1 [{"added": {}}] 8 1 +3 2019-08-30 22:24:25.119222+00 1 Electrical Engineering 2 [] 7 1 +4 2019-08-30 22:24:31.322563+00 1 Network Theory 2 [] 8 1 +5 2019-08-30 23:04:34.019852+00 1 Tutorial 1 1 [{"added": {}}] 10 1 +6 2019-08-31 10:52:31.953574+00 20 Network Theory 1 [{"added": {}}] 8 1 +7 2019-08-31 10:53:07.668362+00 21 Analog Electronic 1 [{"added": {}}] 8 1 +8 2019-09-01 13:10:23.758295+00 3 Electronics and Communication Engineering 1 [{"added": {}}] 7 1 +9 2019-09-01 13:10:49.934904+00 22 Semiconductor Devices 1 [{"added": {}}] 8 1 +10 2019-09-01 13:22:11.421957+00 4 Production and Industrial Engineering 1 [{"added": {}}] 7 1 +11 2019-09-01 13:22:48.474841+00 5 Polymer Science And Engineering 1 [{"added": {}}] 7 1 +12 2019-09-01 13:23:45.669+00 6 Computer Science and Engineering 1 [{"added": {}}] 7 1 +13 2019-09-01 13:24:02.81564+00 7 Mechanical Engineering 1 [{"added": {}}] 7 1 +14 2019-09-01 13:24:22.464381+00 8 Applied Mathematics 1 [{"added": {}}] 7 1 +15 2019-09-01 13:26:00.579686+00 9 Metallurgical and Materials Engineering 1 [{"added": {}}] 7 1 +16 2019-09-01 13:26:38.397921+00 10 Civil Engineering 1 [{"added": {}}] 7 1 +17 2019-09-01 13:27:07.875368+00 11 Biotechnology 1 [{"added": {}}] 7 1 +18 2019-09-01 13:27:53.777036+00 12 Engineering Physics 1 [{"added": {}}] 7 1 +19 2019-09-01 18:16:37.651322+00 2 Tutorial 1 1 [{"added": {}}] 10 1 +20 2019-09-01 19:14:01.017669+00 23 Digital Logic Design 1 [{"added": {}}] 8 1 +21 2019-09-21 19:28:42.730454+00 1 Electrical Engineering 2 [{"changed": {"fields": ["url"]}}] 7 1 +22 2019-09-28 23:45:20.479451+00 1 Electrical Engineering 2 [{"changed": {"fields": ["url"]}}] 7 1 +23 2019-09-28 23:46:19.869223+00 12 Engineering Physics 2 [{"changed": {"fields": ["url"]}}] 7 1 +24 2019-09-28 23:46:56.184047+00 11 Biotechnology 2 [{"changed": {"fields": ["url"]}}] 7 1 +25 2019-09-28 23:46:58.799201+00 11 Biotechnology 2 [] 7 1 +26 2019-09-28 23:47:12.120682+00 10 Civil Engineering 2 [{"changed": {"fields": ["url"]}}] 7 1 +27 2019-09-28 23:47:49.040713+00 9 Metallurgical and Materials Engineering 2 [{"changed": {"fields": ["url"]}}] 7 1 +28 2019-09-28 23:48:21.688429+00 8 Applied Mathematics 2 [{"changed": {"fields": ["url"]}}] 7 1 +29 2019-09-28 23:48:55.520266+00 7 Mechanical Engineering 2 [{"changed": {"fields": ["url"]}}] 7 1 +30 2019-09-28 23:49:07.410987+00 6 Computer Science and Engineering 2 [{"changed": {"fields": ["url"]}}] 7 1 +31 2019-09-28 23:49:39.884534+00 5 Polymer Science And Engineering 2 [{"changed": {"fields": ["url"]}}] 7 1 +32 2019-09-28 23:49:50.937692+00 4 Production and Industrial Engineering 2 [{"changed": {"fields": ["url"]}}] 7 1 +33 2019-09-28 23:50:16.116946+00 3 Electronics and Communication Engineering 2 [{"changed": {"fields": ["url"]}}] 7 1 +34 2019-09-28 23:50:33.387465+00 2 Chemical Engineering 2 [{"changed": {"fields": ["url"]}}] 7 1 +35 2019-09-28 23:51:02.159236+00 5 Polymer Science And Engineering 2 [{"changed": {"fields": ["url"]}}] 7 1 +36 2019-09-28 23:51:14.854116+00 12 Engineering Physics 2 [{"changed": {"fields": ["url"]}}] 7 1 +37 2019-10-03 12:17:28.879348+00 2 Tutorial 1 3 10 1 +38 2019-10-03 12:24:43.554002+00 3 Tutorial-1 1 [{"added": {}}] 10 1 +39 2019-10-07 15:38:48.113809+00 3 Tutorial-1 3 10 1 +40 2019-10-07 15:42:30.92814+00 4 Tutorial-1 1 [{"added": {}}] 10 1 +41 2019-10-07 15:55:24.814566+00 4 Tutorial-1 3 10 1 +42 2019-10-07 15:57:19.56742+00 5 Tutorial-1 1 [{"added": {}}] 10 1 +43 2019-10-07 16:10:00.295493+00 5 Tutorial-1 3 10 1 +44 2019-10-07 16:12:17.597176+00 6 Tutorial-1 1 [{"added": {}}] 10 1 +45 2019-10-07 16:13:41.290064+00 6 Tutorial-1 3 10 1 +46 2019-10-07 16:15:25.811711+00 7 Tutorial-1 1 [{"added": {}}] 10 1 +47 2019-10-07 16:17:31.121135+00 7 Tutorial-1 2 [{"changed": {"fields": ["file"]}}] 10 1 +48 2019-10-07 16:19:09.948481+00 7 Tutorial-1 2 [{"changed": {"fields": ["filetype"]}}] 10 1 +49 2019-10-07 16:19:42.176864+00 7 Tutorial-1 2 [{"changed": {"fields": ["file"]}}] 10 1 +50 2019-10-07 16:20:03.280286+00 7 Tutorial-1 2 [{"changed": {"fields": ["file"]}}] 10 1 +51 2019-10-07 16:20:48.796738+00 7 Tutorial-1 2 [{"changed": {"fields": ["file"]}}] 10 1 +52 2019-10-07 16:21:07.962575+00 7 Tutorial-1 2 [{"changed": {"fields": ["file", "filetype"]}}] 10 1 +53 2019-10-07 16:21:32.1278+00 7 Tutorial-1 2 [{"changed": {"fields": ["file", "filetype"]}}] 10 1 +54 2019-10-07 17:13:10.331447+00 7 files/exampapers/Booking_Details.pdf 2 [] 10 1 +55 2019-10-07 17:35:30.822267+00 7 files/exampapers/Booking_Details.pdf 2 [] 10 1 +56 2019-10-07 17:38:06.569891+00 7 files/exampapers/Booking_Details.pdf 3 10 1 +57 2019-10-07 17:38:26.276963+00 8 files/tutorials/air_asia.pdf 1 [{"added": {}}] 10 1 +58 2019-10-07 20:05:42.408579+00 8 Tutorial-1 2 [{"changed": {"fields": ["title", "size", "fileext"]}}] 10 1 +59 2019-10-07 20:26:19.493557+00 9 Tutorial 2 1 [{"added": {}}] 10 1 +60 2019-10-07 20:27:03.270698+00 9 Network Thory-E Kandestal 2 [{"changed": {"fields": ["title"]}}] 10 1 +61 2019-10-07 21:32:30.629132+00 8 Tutorial-1 3 10 1 +62 2019-10-07 21:32:37.546398+00 9 Network Thory-E Kandestal 3 10 1 +63 2019-10-07 21:37:57.588343+00 11 files/tutorials/bash_9a7gZHO.sh 1 [{"added": {}}] 10 1 +64 2019-10-07 21:45:00.894022+00 12 ayan 1 [{"added": {}}] 10 1 +65 2019-10-07 22:28:48.008136+00 13 Ayan_Choudhary_s_CV 1 [{"added": {}}] 10 1 +66 2019-10-07 22:29:52.396627+00 14 image 1 [{"added": {}}] 10 1 +67 2019-10-14 17:13:10.811133+00 15 Booking_Details 1 [{"added": {}}] 10 1 +68 2019-10-30 15:09:51.765372+00 62 Electrical Machines 3 8 1 +69 2019-10-30 15:10:09.729271+00 61 Electrical Machines 3 8 1 +70 2019-10-30 15:10:09.760195+00 60 Electrical Machines 3 8 1 +71 2019-10-30 15:10:09.804347+00 59 Electrical Machines 3 8 1 +72 2019-10-30 15:10:09.847407+00 58 Electrical Machines 3 8 1 +73 2019-10-30 15:10:09.890957+00 57 Electrical Machines 3 8 1 +74 2019-10-30 15:10:09.91068+00 56 Electrical Machines 3 8 1 +75 2019-10-30 15:10:09.923135+00 55 Electrical Machines 3 8 1 +76 2019-10-31 08:18:03.561102+00 72 Electrical Machines 3 8 1 +77 2019-10-31 08:23:03.544984+00 73 Electrical Machines 3 8 1 +78 2019-10-31 08:23:22.222201+00 74 Electrical Machines 3 8 1 +79 2019-10-31 09:20:25.019963+00 15 Booking_Details 3 10 1 +80 2019-10-31 09:20:25.10833+00 14 image 3 10 1 +81 2019-10-31 09:20:25.120539+00 13 Ayan_Choudhary_s_CV 3 10 1 +82 2019-10-31 09:20:25.133455+00 12 ayan 3 10 1 +83 2019-10-31 09:20:25.145842+00 11 bash_9a7gZHO 3 10 1 +1387 2020-02-19 12:19:53.753122+00 24 nkansn 3 11 1 +84 2019-10-31 14:42:36.013471+00 75 Structural Analysis - 1 2 [{"changed": {"fields": ["department"]}}] 8 1 +85 2019-11-01 16:57:52.215454+00 16 Geo Physical Technology 3 7 1 +86 2019-11-03 15:58:51.079131+00 76 Digital Electronic 1 [{"added": {}}] 8 1 +87 2019-11-03 16:12:16.723202+00 18 PDF 3 10 1 +88 2019-11-03 16:12:17.249831+00 17 PDF 3 10 1 +89 2019-11-03 16:22:20.074742+00 22 ECN-212 End term solution.PDF 3 10 1 +90 2019-11-03 16:22:20.146644+00 21 ECN-212 quiz 2 solution.PDF 3 10 1 +91 2019-11-03 16:25:35.028127+00 24 ECN-212 End term solution.PDF 3 10 1 +92 2019-11-03 16:25:35.162977+00 23 ECN-212 quiz 2 solution.PDF 3 10 1 +93 2019-11-24 12:24:44.497669+00 50 Water Resources Development and Management 3 7 1 +94 2019-11-24 12:24:45.21382+00 49 Physics 3 7 1 +95 2019-11-24 12:24:45.226342+00 48 Polymer and Process Engineering 3 7 1 +96 2019-11-24 12:24:45.2386+00 47 Paper Technology 3 7 1 +97 2019-11-24 12:24:45.251355+00 46 Metallurgical and Materials Engineering 3 7 1 +98 2019-11-24 12:24:45.263929+00 45 Mechanical and Industrial Engineering 3 7 1 +99 2019-11-24 12:24:45.277148+00 44 Mathematics 3 7 1 +100 2019-11-24 12:24:45.289158+00 43 Management Studies 3 7 1 +101 2019-11-24 12:24:45.302102+00 42 Hydrology 3 7 1 +102 2019-11-24 12:24:45.314546+00 41 Humanities and Social Sciences 3 7 1 +103 2019-11-24 12:24:45.327429+00 40 Electronics and Communication Engineering 3 7 1 +104 2019-11-24 12:24:45.339816+00 39 Electrical Engineering 3 7 1 +105 2019-11-24 12:24:45.352784+00 38 Earth Sciences 3 7 1 +106 2019-11-24 12:24:45.365316+00 37 Earthquake 3 7 1 +107 2019-11-24 12:24:45.378121+00 36 Computer Science and Engineering 3 7 1 +108 2019-11-24 12:24:45.39061+00 35 Civil Engineering 3 7 1 +109 2019-11-24 12:24:45.403283+00 34 Chemistry 3 7 1 +110 2019-11-24 12:24:45.415805+00 33 Chemical Engineering 3 7 1 +111 2019-11-24 12:24:45.428877+00 32 Biotechnology 3 7 1 +112 2019-11-24 12:24:45.441173+00 31 Architecture and Planning 3 7 1 +113 2019-11-24 12:24:45.454032+00 30 Applied Science and Engineering 3 7 1 +114 2019-11-24 12:24:45.466402+00 29 Hydro and Renewable Energy 3 7 1 +115 2019-11-24 12:24:45.487406+00 28 Physics 3 7 1 +116 2019-11-24 12:24:45.499865+00 27 Paper Technology 3 7 1 +117 2019-11-24 12:24:45.513243+00 26 Mathematics 3 7 1 +118 2019-11-24 12:24:45.525314+00 25 Management Studies 3 7 1 +119 2019-11-24 12:24:45.538197+00 24 Hydrology 3 7 1 +120 2019-11-24 12:24:45.550578+00 23 Humanities and Social Sciences 3 7 1 +121 2019-11-24 12:24:45.563445+00 22 Electrical Engineering 3 7 1 +122 2019-11-24 12:24:45.57562+00 21 Earth Sciences 3 7 1 +123 2019-11-24 12:24:45.588294+00 20 Earthquake 3 7 1 +124 2019-11-24 12:24:45.60082+00 19 Civil Engineering 3 7 1 +125 2019-11-24 12:24:45.613964+00 18 Chemistry 3 7 1 +126 2019-11-24 12:24:45.626746+00 17 Biotechnology 3 7 1 +127 2019-11-24 12:24:45.639346+00 15 Geo Physical Technology 3 7 1 +128 2019-11-24 12:24:45.652266+00 14 Geotechnology 3 7 1 +129 2019-11-24 12:24:45.664961+00 13 Textile Engineering 3 7 1 +130 2019-11-24 12:24:45.677714+00 12 Engineering Physics 3 7 1 +131 2019-11-24 12:24:45.690098+00 11 Biotechnology 3 7 1 +132 2019-11-24 12:24:45.703099+00 10 Civil Engineering 3 7 1 +133 2019-11-24 12:24:45.715301+00 9 Metallurgical and Materials Engineering 3 7 1 +134 2019-11-24 12:24:45.728368+00 8 Applied Mathematics 3 7 1 +135 2019-11-24 12:24:45.740847+00 7 Mechanical Engineering 3 7 1 +136 2019-11-24 12:24:45.753659+00 6 Computer Science and Engineering 3 7 1 +137 2019-11-24 12:24:45.765918+00 5 Polymer Science And Engineering 3 7 1 +138 2019-11-24 12:24:45.778933+00 4 Production and Industrial Engineering 3 7 1 +139 2019-11-24 12:24:45.794905+00 3 Electronics and Communication Engineering 3 7 1 +140 2019-11-24 12:24:45.807774+00 2 Chemical Engineering 3 7 1 +141 2019-11-24 12:24:45.820362+00 1 Electrical Engineering 3 7 1 +142 2019-11-24 12:25:54.937495+00 72 Water Resources Development and Management 3 7 1 +143 2019-11-24 12:25:55.316912+00 71 Physics 3 7 1 +144 2019-11-24 12:25:55.516329+00 70 Polymer and Process Engineering 3 7 1 +145 2019-11-24 12:25:55.783961+00 69 Paper Technology 3 7 1 +146 2019-11-24 12:25:55.972369+00 68 Metallurgical and Materials Engineering 3 7 1 +147 2019-11-24 12:25:56.132009+00 67 Mechanical and Industrial Engineering 3 7 1 +148 2019-11-24 12:25:56.311779+00 66 Mathematics 3 7 1 +149 2019-11-24 12:25:56.51721+00 65 Management Studies 3 7 1 +150 2019-11-24 12:25:56.705686+00 64 Hydrology 3 7 1 +151 2019-11-24 12:25:56.877536+00 63 Humanities and Social Sciences 3 7 1 +152 2019-11-24 12:25:57.173766+00 62 Electronics and Communication Engineering 3 7 1 +153 2019-11-24 12:25:57.329031+00 61 Electrical Engineering 3 7 1 +154 2019-11-24 12:25:57.646289+00 60 Earth Sciences 3 7 1 +155 2019-11-24 12:25:57.797086+00 59 Earthquake 3 7 1 +156 2019-11-24 12:25:57.939833+00 58 Computer Science and Engineering 3 7 1 +157 2019-11-24 12:25:58.092144+00 57 Civil Engineering 3 7 1 +158 2019-11-24 12:25:58.22709+00 56 Chemistry 3 7 1 +159 2019-11-24 12:25:58.362757+00 55 Chemical Engineering 3 7 1 +160 2019-11-24 12:25:58.505943+00 54 Biotechnology 3 7 1 +161 2019-11-24 12:25:58.674344+00 53 Architecture and Planning 3 7 1 +162 2019-11-24 12:25:58.817388+00 52 Applied Science and Engineering 3 7 1 +163 2019-11-24 12:25:58.969347+00 51 Hydro and Renewable Energy 3 7 1 +164 2019-11-24 13:07:46.348197+00 663 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 3 8 1 +165 2019-11-24 13:07:46.441522+00 662 SEMINAR 3 8 1 +166 2019-11-24 13:07:46.453867+00 661 On Farm Development 3 8 1 +167 2019-11-24 13:07:46.466845+00 660 Principles and Practices of Irrigation 3 8 1 +168 2019-11-24 13:07:46.479344+00 659 Design of Irrigation Structures and Drainage Works 3 8 1 +169 2019-11-24 13:07:46.492059+00 658 Construction Planning and Management 3 8 1 +170 2019-11-24 13:07:46.517504+00 657 Design of Hydro Mechanical Equipment 3 8 1 +171 2019-11-24 13:07:46.529896+00 656 Power System Protection Application 3 8 1 +172 2019-11-24 13:07:46.542834+00 655 Hydropower System Planning 3 8 1 +173 2019-11-24 13:07:46.555145+00 654 Hydro Generating Equipment 3 8 1 +174 2019-11-24 13:07:46.56808+00 653 Applied Hydrology 3 8 1 +175 2019-11-24 13:07:46.580466+00 652 Water Resources Planning and Management 3 8 1 +176 2019-11-24 13:07:46.593604+00 651 Design of Water Resources Structures 3 8 1 +177 2019-11-24 13:07:46.605729+00 650 System Design Techniques 3 8 1 +178 2019-11-24 13:07:46.700837+00 649 MATHEMATICAL AND COMPUTATIONAL TECHNIQUES 3 8 1 +179 2019-11-24 13:07:46.712877+00 648 Experimental Techniques 3 8 1 +180 2019-11-24 13:07:46.726566+00 647 Laboratory Work in Photonics 3 8 1 +181 2019-11-24 13:07:46.739038+00 646 Semiconductor Device Physics 3 8 1 +182 2019-11-24 13:07:46.751928+00 645 Computational Techniques and Programming 3 8 1 +183 2019-11-24 13:07:46.764765+00 644 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 3 8 1 +184 2019-11-24 13:07:46.777338+00 643 SEMINAR 3 8 1 +185 2019-11-24 13:07:46.790028+00 642 SEMINAR 3 8 1 +186 2019-11-24 13:07:46.802452+00 641 Numerical Analysis & Computer Programming 3 8 1 +187 2019-11-24 13:07:46.815704+00 640 Semiconductor Photonics 3 8 1 +188 2019-11-24 13:07:46.827768+00 639 Quantum Theory of Solids 3 8 1 +189 2019-11-24 13:07:46.840715+00 638 A Primer in Quantum Field Theory 3 8 1 +190 2019-11-24 13:07:46.853353+00 637 Advanced Characterization Techniques 3 8 1 +191 2019-11-24 13:07:46.865987+00 636 Advanced Nuclear Physics 3 8 1 +192 2019-11-24 13:07:46.87836+00 635 Advanced Laser Physics 3 8 1 +193 2019-11-24 13:07:46.891343+00 634 Advanced Condensed Matter Physics 3 8 1 +194 2019-11-24 13:07:46.903994+00 633 DISSERTATION STAGE-I 3 8 1 +195 2019-11-24 13:07:46.916754+00 632 SEMICONDUCTOR DEVICES AND APPLICATIONS 3 8 1 +196 2019-11-24 13:07:46.929254+00 631 Classical Mechanics 3 8 1 +197 2019-11-24 13:07:46.941912+00 630 Mathematical Physics 3 8 1 +198 2019-11-24 13:07:46.954334+00 629 Quantum Mechanics – I 3 8 1 +199 2019-11-24 13:07:46.967321+00 628 Training Seminar 3 8 1 +200 2019-11-24 13:07:46.979773+00 627 B.Tech. Project 3 8 1 +201 2019-11-24 13:07:46.992548+00 626 Nuclear Astrophysics 3 8 1 +202 2019-11-24 13:07:47.005299+00 625 Techincal Communication 3 8 1 +203 2019-11-24 13:07:47.017918+00 624 Laser & Photonics 3 8 1 +204 2019-11-24 13:07:47.030355+00 623 Signals and Systems 3 8 1 +205 2019-11-24 13:07:47.043207+00 622 Numerical Analysis and Computational Physics 3 8 1 +206 2019-11-24 13:07:47.055512+00 621 Applied Instrumentation 3 8 1 +207 2019-11-24 13:07:47.068788+00 620 Lab-based Project 3 8 1 +208 2019-11-24 13:07:47.080932+00 619 Microprocessors and Peripheral Devices 3 8 1 +209 2019-11-24 13:07:47.093794+00 618 Mathematical Physics 3 8 1 +210 2019-11-24 13:07:47.106217+00 617 Mechanics and Relativity 3 8 1 +211 2019-11-24 13:07:47.119147+00 616 Atomic Molecular and Laser Physics 3 8 1 +212 2019-11-24 13:07:47.131561+00 615 Computer Programming 3 8 1 +213 2019-11-24 13:07:47.144463+00 614 Introduction to Physical Science 3 8 1 +214 2019-11-24 13:07:47.156832+00 613 Modern Physics 3 8 1 +215 2019-11-24 13:07:47.16978+00 612 QUARK GLUON PLASMA & FINITE TEMPERATURE FIELD THEORY 3 8 1 +216 2019-11-24 13:07:47.181992+00 611 Optical Electronics 3 8 1 +217 2019-11-24 13:07:47.19487+00 610 Semiconductor Materials and Devices 3 8 1 +218 2019-11-24 13:07:47.207032+00 609 Laboratory Work 3 8 1 +219 2019-11-24 13:07:47.220232+00 608 Weather Forecasting 3 8 1 +220 2019-11-24 13:07:47.232536+00 607 Advanced Atmospheric Physics 3 8 1 +221 2019-11-24 13:07:47.2453+00 606 Physics of Earth’s Atmosphere 3 8 1 +222 2019-11-24 13:07:47.25839+00 605 Classical Electrodynamics 3 8 1 +223 2019-11-24 13:07:47.270738+00 604 Laboratory Work 3 8 1 +224 2019-11-24 13:07:47.283881+00 603 QUANTUM INFORMATION AND COMPUTING 3 8 1 +225 2019-11-24 13:07:47.296247+00 602 Plasma Physics and Applications 3 8 1 +226 2019-11-24 13:07:47.309331+00 601 Applied Optics 3 8 1 +227 2019-11-24 13:07:47.321721+00 600 Quantum Physics 3 8 1 +228 2019-11-24 13:07:47.33464+00 599 Engineering Analysis Design 3 8 1 +229 2019-11-24 13:07:47.346979+00 598 Quantum Mechanics and Statistical Mechanics 3 8 1 +230 2019-11-24 13:07:47.359996+00 597 Electrodynamics and Optics 3 8 1 +231 2019-11-24 13:07:47.372299+00 596 Applied Physics 3 8 1 +232 2019-11-24 13:07:47.385357+00 595 Electromagnetic Field Theory 3 8 1 +233 2019-11-24 13:07:47.397662+00 594 Mechanics 3 8 1 +234 2019-11-24 13:07:47.410566+00 593 Advanced Atmospheric Physics 3 8 1 +235 2019-11-24 13:07:47.426697+00 592 Elements of Nuclear and Particle Physics 3 8 1 +236 2019-11-24 13:07:47.439638+00 591 Physics of Earth’s Atmosphere 3 8 1 +237 2019-11-24 13:07:47.451921+00 590 Computational Physics 3 8 1 +238 2019-11-24 13:07:47.464848+00 589 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 3 8 1 +239 2019-11-24 13:07:47.477201+00 588 SEMINAR 3 8 1 +240 2019-11-24 13:07:47.490121+00 587 Converting Processes for Packaging 3 8 1 +241 2019-11-24 13:07:47.502522+00 586 Printing Technology 3 8 1 +242 2019-11-24 13:07:47.51556+00 585 Packaging Materials 3 8 1 +243 2019-11-24 13:07:47.528025+00 584 Packaging Principles, Processes and Sustainability 3 8 1 +244 2019-11-24 13:07:47.541069+00 583 Process Instrumentation and Control 3 8 1 +245 2019-11-24 13:07:47.553237+00 582 Advanced Numerical Methods and Statistics 3 8 1 +246 2019-11-24 13:07:47.56607+00 581 Paper Proprieties and Stock Preparation 3 8 1 +247 2019-11-24 13:07:47.578437+00 580 Chemical Recovery Process 3 8 1 +248 2019-11-24 13:07:47.591459+00 579 Pulping 3 8 1 +249 2019-11-24 13:07:47.604089+00 578 Printing Technology 3 8 1 +250 2019-11-24 13:07:47.616783+00 577 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 3 8 1 +251 2019-11-24 13:07:47.629352+00 576 SEMINAR 3 8 1 +252 2019-11-24 13:07:47.642007+00 575 Numerical Methods in Manufacturing 3 8 1 +253 2019-11-24 13:07:47.654836+00 574 Non-Traditional Machining Processes 3 8 1 +254 2019-11-24 13:07:47.667425+00 573 Materials Management 3 8 1 +255 2019-11-24 13:07:47.679687+00 572 Machine Tool Design and Numerical Control 3 8 1 +256 2019-11-24 13:07:47.692915+00 571 Design for Manufacturability 3 8 1 +257 2019-11-24 13:07:47.705294+00 570 Advanced Manufacturing Processes 3 8 1 +258 2019-11-24 13:07:47.717931+00 569 Quality Management 3 8 1 +259 2019-11-24 13:07:47.730422+00 568 Operations Management 3 8 1 +260 2019-11-24 13:07:47.743242+00 567 Computer Aided Design 3 8 1 +261 2019-11-24 13:07:47.755636+00 566 Advanced Mechanics of Solids 3 8 1 +262 2019-11-24 13:07:47.768903+00 565 Dynamics of Mechanical Systems 3 8 1 +263 2019-11-24 13:07:47.781012+00 564 Micro and Nano Scale Thermal Engineering 3 8 1 +264 2019-11-24 13:07:47.794705+00 563 Hydro-dynamic Machines 3 8 1 +265 2019-11-24 13:07:47.807151+00 562 Solar Energy 3 8 1 +1388 2020-02-19 12:19:53.765557+00 23 dasasd 3 11 1 +266 2019-11-24 13:07:47.819886+00 561 Advanced Heat Transfer 3 8 1 +267 2019-11-24 13:07:47.832344+00 560 Advanced Fluid Mechanics 3 8 1 +268 2019-11-24 13:07:47.845377+00 559 Advanced Thermodynamics 3 8 1 +269 2019-11-24 13:07:47.857583+00 558 Modeling and Simulation 3 8 1 +270 2019-11-24 13:07:47.870501+00 557 Modeling and Simulation 3 8 1 +271 2019-11-24 13:07:47.883108+00 556 Robotics and Control 3 8 1 +272 2019-11-24 13:07:47.895838+00 555 Training Seminar 3 8 1 +273 2019-11-24 13:07:47.909039+00 554 B.Tech. Project 3 8 1 +274 2019-11-24 13:07:47.921592+00 553 Technical Communication 3 8 1 +275 2019-11-24 13:07:47.934073+00 552 Refrigeration and Air-Conditioning 3 8 1 +276 2019-11-24 13:07:47.946596+00 551 Industrial Management 3 8 1 +277 2019-11-24 13:07:47.95949+00 550 Vibration and Noise 3 8 1 +278 2019-11-24 13:07:47.971995+00 549 Operations Research 3 8 1 +279 2019-11-24 13:07:47.984429+00 548 Principles of Industrial Enigneering 3 8 1 +280 2019-11-24 13:07:47.996664+00 547 Dynamics of Machines 3 8 1 +281 2019-11-24 13:07:48.022749+00 546 THEORY OF MACHINES 3 8 1 +282 2019-11-24 13:07:48.048461+00 545 Energy Conversion 3 8 1 +283 2019-11-24 13:07:48.073134+00 544 THERMAL ENGINEERING 3 8 1 +284 2019-11-24 13:07:48.099319+00 543 FLUID MECHANICS 3 8 1 +285 2019-11-24 13:07:48.124542+00 542 MANUFACTURING TECHNOLOGY-II 3 8 1 +286 2019-11-24 13:07:48.150437+00 541 KINEMATICS OF MACHINES 3 8 1 +287 2019-11-24 13:07:48.392386+00 540 Non-Conventional Welding Processes 3 8 1 +288 2019-11-24 13:07:49.15385+00 539 Smart Materials, Structures, and Devices 3 8 1 +289 2019-11-24 13:07:49.179989+00 538 Advanced Mechanical Vibrations 3 8 1 +290 2019-11-24 13:07:49.191964+00 537 Finite Element Methods 3 8 1 +291 2019-11-24 13:07:49.204751+00 536 Computer Aided Mechanism Design 3 8 1 +292 2019-11-24 13:07:49.230658+00 535 Computational Fluid Dynamics & Heat Transfer 3 8 1 +293 2019-11-24 13:07:49.255487+00 534 Instrumentation and Experimental Methods 3 8 1 +294 2019-11-24 13:07:49.269289+00 533 Power Plants 3 8 1 +295 2019-11-24 13:07:49.295266+00 532 Work System Desing 3 8 1 +296 2019-11-24 13:07:49.320172+00 531 Theory of Production Processes-II 3 8 1 +297 2019-11-24 13:07:49.343651+00 530 Heat and Mass Transfer 3 8 1 +298 2019-11-24 13:07:49.35634+00 529 Machine Design 3 8 1 +299 2019-11-24 13:07:49.370684+00 528 Lab Based Project 3 8 1 +300 2019-11-24 13:07:49.381958+00 527 ENGINEERING ANALYSIS AND DESIGN 3 8 1 +301 2019-11-24 13:07:49.394233+00 526 Theory of Production Processes - I 3 8 1 +302 2019-11-24 13:07:49.407183+00 525 Fluid Mechanics 3 8 1 +303 2019-11-24 13:07:49.41955+00 524 Mechanical Engineering Drawing 3 8 1 +304 2019-11-24 13:07:49.43292+00 523 Engineering Thermodynamics 3 8 1 +305 2019-11-24 13:07:49.44531+00 522 Programming and Data Structure 3 8 1 +306 2019-11-24 13:07:49.457975+00 521 Introduction to Production and Industrial Engineering 3 8 1 +307 2019-11-24 13:07:49.470435+00 520 Introduction to Mechanical Engineering 3 8 1 +308 2019-11-24 13:07:49.483753+00 519 Advanced Manufacturing Processes 3 8 1 +309 2019-11-24 13:07:49.495893+00 518 ADVANCED NUMERICAL ANALYSIS 3 8 1 +310 2019-11-24 13:07:49.508846+00 517 SELECTED TOPICS IN ANALYSIS 3 8 1 +311 2019-11-24 13:07:49.521052+00 516 SEMINAR 3 8 1 +312 2019-11-24 13:07:49.533962+00 515 Seminar 3 8 1 +313 2019-11-24 13:07:49.546498+00 514 Orthogonal Polynomials and Special Functions 3 8 1 +314 2019-11-24 13:07:49.559392+00 513 Financial Mathematics 3 8 1 +315 2019-11-24 13:07:49.571917+00 512 Dynamical Systems 3 8 1 +316 2019-11-24 13:07:49.584887+00 511 CONTROL THEORY 3 8 1 +317 2019-11-24 13:07:49.597143+00 510 Coding Theory 3 8 1 +318 2019-11-24 13:07:49.610122+00 509 Advanced Numerical Analysis 3 8 1 +319 2019-11-24 13:07:49.622677+00 508 Mathematical Statistics 3 8 1 +320 2019-11-24 13:07:49.635518+00 507 SEMINAR 3 8 1 +321 2019-11-24 13:07:49.647767+00 506 OPERATIONS RESEARCH 3 8 1 +322 2019-11-24 13:07:49.660743+00 505 FUNCTIONAL ANALYSIS 3 8 1 +323 2019-11-24 13:07:49.673174+00 504 Functional Analysis 3 8 1 +324 2019-11-24 13:07:49.686719+00 503 Tensors and Differential Geometry 3 8 1 +325 2019-11-24 13:07:49.699015+00 502 Fluid Dynamics 3 8 1 +326 2019-11-24 13:07:49.711812+00 501 Mathematics 3 8 1 +327 2019-11-24 13:07:49.724936+00 500 SOFT COMPUTING 3 8 1 +328 2019-11-24 13:07:49.737329+00 499 Complex Analysis 3 8 1 +329 2019-11-24 13:07:49.750624+00 498 Computer Programming 3 8 1 +330 2019-11-24 13:07:49.76259+00 497 Abstract Algebra 3 8 1 +331 2019-11-24 13:07:49.775566+00 496 Topology 3 8 1 +332 2019-11-24 13:07:49.78827+00 495 Real Analysis 3 8 1 +333 2019-11-24 13:07:49.800943+00 494 Theory of Ordinary Differential Equations 3 8 1 +334 2019-11-24 13:07:49.8133+00 493 Complex Analysis-II 3 8 1 +335 2019-11-24 13:07:49.826111+00 492 Theory of Partial Differential Equations 3 8 1 +336 2019-11-24 13:07:49.83875+00 491 Topology 3 8 1 +337 2019-11-24 13:07:49.85149+00 490 Real Analysis-II 3 8 1 +338 2019-11-24 13:07:49.87208+00 489 THEORY OF ORDINARY DIFFERENTIAL EQUATIONS 3 8 1 +339 2019-11-24 13:07:49.885441+00 488 Technical Communication 3 8 1 +340 2019-11-24 13:07:49.897526+00 487 MATHEMATICAL IMAGING TECHNOLOGY 3 8 1 +341 2019-11-24 13:07:49.91039+00 486 Linear Programming 3 8 1 +342 2019-11-24 13:07:49.922626+00 485 Mathematical Statistics 3 8 1 +343 2019-11-24 13:07:49.935634+00 484 Abstract Algebra-I 3 8 1 +344 2019-11-24 13:07:49.947962+00 483 DESIGN AND ANALYSIS OF ALGORITHMS 3 8 1 +345 2019-11-24 13:07:49.96095+00 482 ORDINARY AND PARTIAL DIFFERENTIAL EQUATIONS 3 8 1 +346 2019-11-24 13:07:49.973345+00 481 DISCRETE MATHEMATICS 3 8 1 +347 2019-11-24 13:07:49.986224+00 480 Introduction to Computer Programming 3 8 1 +348 2019-11-24 13:07:49.998666+00 479 Mathematics-I 3 8 1 +349 2019-11-24 13:07:50.011539+00 478 Numerical Methods, Probability and Statistics 3 8 1 +350 2019-11-24 13:07:50.023936+00 477 Optimization Techniques 3 8 1 +351 2019-11-24 13:07:50.036906+00 476 Probability and Statistics 3 8 1 +352 2019-11-24 13:07:50.049127+00 475 MEASURE THEORY 3 8 1 +353 2019-11-24 13:07:50.06211+00 474 Statistical Inference 3 8 1 +354 2019-11-24 13:07:50.074492+00 473 COMPLEX ANALYSIS-I 3 8 1 +355 2019-11-24 13:07:50.087999+00 472 Real Analysis I 3 8 1 +356 2019-11-24 13:07:50.099752+00 471 Introduction to Mathematical Sciences 3 8 1 +357 2019-11-24 13:07:50.112749+00 470 Probability and Statistics 3 8 1 +358 2019-11-24 13:07:50.125216+00 469 Mathematical Methods 3 8 1 +359 2019-11-24 13:07:50.154683+00 468 DISSERTATION STAGE-II (CONTINUED FROM III SEMESTER) 3 8 1 +360 2019-11-24 13:07:50.166777+00 467 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 3 8 1 +361 2019-11-24 13:07:50.179774+00 466 SEMINAR 3 8 1 +362 2019-11-24 13:07:50.19218+00 465 Watershed modeling and simulation 3 8 1 +363 2019-11-24 13:07:50.205127+00 464 Soil and groundwater contamination modelling 3 8 1 +364 2019-11-24 13:07:50.217531+00 463 Experimental hydrology 3 8 1 +365 2019-11-24 13:07:50.230435+00 462 Remote sensing and GIS applications 3 8 1 +366 2019-11-24 13:07:50.243355+00 461 Environmental quality 3 8 1 +367 2019-11-24 13:07:50.255753+00 460 Watershed Behavior and Conservation Practices 3 8 1 +368 2019-11-24 13:07:50.268779+00 459 Geophysical investigations 3 8 1 +369 2019-11-24 13:07:50.281073+00 458 Groundwater hydrology 3 8 1 +370 2019-11-24 13:07:50.293991+00 457 Stochastic hydrology 3 8 1 +371 2019-11-24 13:07:50.306359+00 456 Irrigation and drainage engineering 3 8 1 +372 2019-11-24 13:07:50.31929+00 455 Engineering Hydrology 3 8 1 +373 2019-11-24 13:07:50.331962+00 454 RESEARCH METHODOLOGY IN LANGUAGE & LITERATURE 3 8 1 +374 2019-11-24 13:07:50.344904+00 453 RESEARCH METHODOLOGY IN SOCIAL SCIENCES 3 8 1 +375 2019-11-24 13:07:50.357318+00 452 UNDERSTANDING PERSONLALITY 3 8 1 +376 2019-11-24 13:07:50.369971+00 451 SEMINAR 3 8 1 +377 2019-11-24 13:07:50.382411+00 450 Advanced Topics in Growth Theory 3 8 1 +378 2019-11-24 13:07:50.395013+00 449 Ecological Economics 3 8 1 +379 2019-11-24 13:07:50.410807+00 448 Introduction to Research Methodology 3 8 1 +380 2019-11-24 13:07:50.42367+00 447 Issues in Indian Economy 3 8 1 +381 2019-11-24 13:07:50.436213+00 446 PUBLIC POLICY; THEORY AND PRACTICE 3 8 1 +382 2019-11-24 13:07:50.449174+00 445 ADVANCED ECONOMETRICS 3 8 1 +383 2019-11-24 13:07:50.461518+00 444 MONEY, BANKING AND FINANCIAL MARKETS 3 8 1 +384 2019-11-24 13:07:50.474296+00 443 DEVELOPMENT ECONOMICS 3 8 1 +385 2019-11-24 13:07:50.486886+00 442 MATHEMATICS FOR ECONOMISTS 3 8 1 +386 2019-11-24 13:07:50.500206+00 441 MACROECONOMICS I 3 8 1 +387 2019-11-24 13:07:50.51247+00 440 MICROECONOMICS I 3 8 1 +388 2019-11-24 13:07:50.525447+00 439 HSN-01 3 8 1 +389 2019-11-24 13:07:50.59511+00 438 UNDERSTANDING PERSONALITY 3 8 1 +390 2019-11-24 13:07:50.608044+00 437 Sociology 3 8 1 +391 2019-11-24 13:07:50.620559+00 436 Economics 3 8 1 +392 2019-11-24 13:07:50.641472+00 435 Technical Communication 3 8 1 +393 2019-11-24 13:07:50.653727+00 434 Society,Culture Built Environment 3 8 1 +394 2019-11-24 13:07:50.666516+00 433 Introduction to Psychology 3 8 1 +395 2019-11-24 13:07:50.679263+00 432 Communication Skills(Advance) 3 8 1 +396 2019-11-24 13:07:50.692162+00 431 Communication Skills(Basic) 3 8 1 +397 2019-11-24 13:07:50.704889+00 430 Technical Communication 3 8 1 +398 2019-11-24 13:07:50.717456+00 429 Communication skills (Basic) 3 8 1 +399 2019-11-24 13:07:50.729788+00 428 DISSERTATION STAGE-II (CONTINUED FROM III SEMESTER) 3 8 1 +400 2019-11-24 13:07:50.742718+00 427 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 3 8 1 +401 2019-11-24 13:07:50.755133+00 426 SEMINAR 3 8 1 +402 2019-11-24 13:07:50.768243+00 425 Analog VLSI Circuit Design 3 8 1 +403 2019-11-24 13:07:50.788675+00 424 Digital System Design 3 8 1 +404 2019-11-24 13:07:50.801415+00 423 Simulation Lab-1 3 8 1 +405 2019-11-24 13:07:50.813756+00 422 Microelectronics Lab-1 3 8 1 +406 2019-11-24 13:07:50.826932+00 421 Digital VLSI Circuit Design 3 8 1 +407 2019-11-24 13:07:50.839276+00 420 MOS Device Physics 3 8 1 +408 2019-11-24 13:07:50.852987+00 419 Microwave and Millimeter Wave Circuits 3 8 1 +409 2019-11-24 13:07:50.87355+00 418 Antenna Theory & Design 3 8 1 +410 2019-11-24 13:07:51.27596+00 417 Advanced EMFT 3 8 1 +411 2019-11-24 13:07:51.709029+00 416 Microwave Engineering 3 8 1 +412 2019-11-24 13:07:51.732471+00 415 Microwave Lab 3 8 1 +413 2019-11-24 13:07:51.759727+00 414 Telecommunication Networks 3 8 1 +414 2019-11-24 13:07:51.778341+00 413 Information and Communication Theory 3 8 1 +415 2019-11-24 13:07:51.79129+00 412 Digital Communication Systems 3 8 1 +416 2019-11-24 13:07:51.803699+00 411 Laboratory 3 8 1 +417 2019-11-24 13:07:51.817578+00 410 Training Seminar 3 8 1 +418 2019-11-24 13:07:51.829562+00 409 B.Tech. Project 3 8 1 +419 2019-11-24 13:07:51.842689+00 408 Technical Communication 3 8 1 +420 2019-11-24 13:07:51.871552+00 407 IC Application Laboratory 3 8 1 +421 2019-11-24 13:07:51.884133+00 406 Fundamentals of Microelectronics 3 8 1 +422 2019-11-24 13:07:51.896818+00 405 Microelectronic Devices,Technology and Circuits 3 8 1 +423 2019-11-24 13:07:51.909655+00 404 ELECTRONICS NETWORK THEORY 3 8 1 +424 2019-11-24 13:07:51.921899+00 403 SIGNALS AND SYSTEMS 3 8 1 +425 2019-11-24 13:07:51.93506+00 402 Introduction to Electronics and Communication Engineering 3 8 1 +426 2019-11-24 13:07:51.94725+00 401 SIGNALS AND SYSTEMS 3 8 1 +427 2019-11-24 13:07:51.968279+00 400 RF System Design and Analysis 3 8 1 +428 2019-11-24 13:07:51.981003+00 399 Radar Signal Processing 3 8 1 +429 2019-11-24 13:07:51.993626+00 398 Fiber Optic Systems 3 8 1 +430 2019-11-24 13:07:52.006084+00 397 Coding Theory and Applications 3 8 1 +431 2019-11-24 13:07:52.019181+00 396 Microwave Engineering 3 8 1 +432 2019-11-24 13:07:52.039547+00 395 Antenna Theory 3 8 1 +433 2019-11-24 13:07:52.052662+00 394 Communication Systems and Techniques 3 8 1 +434 2019-11-24 13:07:52.07305+00 393 Digital Electronic Circuits Laboratory 3 8 1 +435 2019-11-24 13:07:52.085976+00 392 Engineering Electromagnetics 3 8 1 +436 2019-11-24 13:07:52.106553+00 391 Automatic Control Systems 3 8 1 +437 2019-11-24 13:07:52.119448+00 390 Principles of Digital Communication 3 8 1 +438 2019-11-24 13:07:52.131908+00 389 Fundamental of Electronics 3 8 1 +439 2019-11-24 13:07:52.144816+00 388 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 3 8 1 +440 2019-11-24 13:07:52.157269+00 387 SEMINAR 3 8 1 +441 2019-11-24 13:07:52.170019+00 386 Modeling and Simulation 3 8 1 +442 2019-11-24 13:07:52.183324+00 385 Introduction to Robotics 3 8 1 +443 2019-11-24 13:07:52.203883+00 384 Smart Grid 3 8 1 +444 2019-11-24 13:07:52.216694+00 383 Power System Planning 3 8 1 +445 2019-11-24 13:07:52.229202+00 382 Enhanced Power Quality AC-DC Converters 3 8 1 +446 2019-11-24 13:07:52.249951+00 381 Advances in Signal and Image Processing 3 8 1 +447 2019-11-24 13:07:52.262382+00 380 Advanced System Engineering 3 8 1 +448 2019-11-24 13:07:52.275268+00 379 Intelligent Control Techniques 3 8 1 +449 2019-11-24 13:07:52.287721+00 378 Advanced Linear Control Systems 3 8 1 +450 2019-11-24 13:07:52.300846+00 377 EHV AC Transmission Systems 3 8 1 +451 2019-11-24 13:07:52.313114+00 376 Distribution System Analysis and Operation 3 8 1 +452 2019-11-24 13:07:52.32594+00 375 Power System Operation and Control 3 8 1 +453 2019-11-24 13:07:52.346685+00 374 Computer Aided Power System Analysis 3 8 1 +454 2019-11-24 13:07:52.367814+00 373 Advanced Electric Drives 3 8 1 +455 2019-11-24 13:07:52.388396+00 372 Analysis of Electrical Machines 3 8 1 +456 2019-11-24 13:07:52.401169+00 371 Advanced Power Electronics 3 8 1 +457 2019-11-24 13:07:52.413269+00 370 Biomedical Instrumentation 3 8 1 +458 2019-11-24 13:07:52.426347+00 369 Digital Signal and Image Processing 3 8 1 +459 2019-11-24 13:07:52.438941+00 368 Advanced Industrial and Electronic Instrumentation 3 8 1 +460 2019-11-24 13:07:52.451837+00 367 Training Seminar 3 8 1 +461 2019-11-24 13:07:52.464129+00 366 B.Tech. Project 3 8 1 +462 2019-11-24 13:07:52.476985+00 365 Technical Communication 3 8 1 +463 2019-11-24 13:07:52.48943+00 364 Embedded Systems 3 8 1 +464 2019-11-24 13:07:52.510481+00 363 Data Structures 3 8 1 +465 2019-11-24 13:07:52.522578+00 362 Signals and Systems 3 8 1 +466 2019-11-24 13:07:52.535545+00 361 Artificial Neural Networks 3 8 1 +467 2019-11-24 13:07:52.547727+00 360 Advanced Control Systems 3 8 1 +468 2019-11-24 13:07:52.560721+00 359 Power Electronics 3 8 1 +469 2019-11-24 13:07:52.573065+00 358 Power System Analysis & Control 3 8 1 +470 2019-11-24 13:07:52.586183+00 357 ENGINEERING ANALYSIS AND DESIGN 3 8 1 +471 2019-11-24 13:07:52.598469+00 356 DESIGN OF ELECTRONICS CIRCUITS 3 8 1 +472 2019-11-24 13:07:52.611356+00 355 DIGITAL ELECTRONICS AND CIRCUITS 3 8 1 +473 2019-11-24 13:07:52.623827+00 354 ELECTRICAL MACHINES-I 3 8 1 +474 2019-11-24 13:07:52.637284+00 353 Programming in C++ 3 8 1 +475 2019-11-24 13:07:52.657751+00 352 Network Theory 3 8 1 +476 2019-11-24 13:07:52.671742+00 351 Introduction to Electrical Engineering 3 8 1 +477 2019-11-24 13:07:52.691882+00 350 Instrumentation laboratory 3 8 1 +478 2019-11-24 13:07:52.705476+00 349 Electrical Science 3 8 1 +479 2019-11-24 13:07:52.726114+00 348 SEMINAR 3 8 1 +480 2019-11-24 13:07:52.738681+00 347 Plate Tectonics 3 8 1 +481 2019-11-24 13:07:52.759382+00 346 Well Logging 3 8 1 +482 2019-11-24 13:07:52.771988+00 345 Petroleum Geology 3 8 1 +483 2019-11-24 13:07:52.785085+00 344 Engineering Geology 3 8 1 +484 2019-11-24 13:07:52.805426+00 343 Indian Mineral Deposits 3 8 1 +485 2019-11-24 13:07:52.818757+00 342 Isotope Geology 3 8 1 +486 2019-11-24 13:07:52.839173+00 341 Seminar 3 8 1 +487 2019-11-24 13:07:52.859816+00 340 ADVANCED SEISMIC PROSPECTING 3 8 1 +488 2019-11-24 13:07:52.872192+00 339 DYNAMIC SYSTEMS IN EARTH SCIENCES 3 8 1 +489 2019-11-24 13:07:52.88536+00 338 Global Environment 3 8 1 +490 2019-11-24 13:07:52.905874+00 337 Micropaleontology and Paleoceanography 3 8 1 +491 2019-11-24 13:07:52.918939+00 336 ISOTOPE GEOLOGY 3 8 1 +492 2019-11-24 13:07:52.939211+00 335 Geophysical Prospecting 3 8 1 +493 2019-11-24 13:07:52.952297+00 334 Sedimentology and Stratigraphy 3 8 1 +494 2019-11-24 13:07:52.972871+00 333 Comprehensive Viva Voce 3 8 1 +495 2019-11-24 13:07:52.985685+00 332 Structural Geology 3 8 1 +496 2019-11-24 13:07:53.006189+00 331 Igneous Petrology 3 8 1 +497 2019-11-24 13:07:53.019137+00 330 Geochemistry 3 8 1 +498 2019-11-24 13:07:53.039645+00 329 Crystallography and Mineralogy 3 8 1 +499 2019-11-24 13:07:53.052734+00 328 Numerical Techniques and Computer Programming 3 8 1 +500 2019-11-24 13:07:53.064907+00 327 Comprehensive Viva Voce 3 8 1 +501 2019-11-24 13:07:53.086148+00 326 Seminar-I 3 8 1 +502 2019-11-24 13:07:53.098488+00 325 STRONG MOTION SEISMOGRAPH 3 8 1 +503 2019-11-24 13:07:53.111573+00 324 Geophysical Well logging 3 8 1 +504 2019-11-24 13:07:53.123839+00 323 Numerical Modelling in Geophysical 3 8 1 +505 2019-11-24 13:07:53.13665+00 322 PETROLEUM GEOLOGY 3 8 1 +506 2019-11-24 13:07:53.148923+00 321 HYDROGEOLOGY 3 8 1 +507 2019-11-24 13:07:53.162018+00 320 ENGINEERING GEOLOGY 3 8 1 +508 2019-11-24 13:07:53.23166+00 319 PRINCIPLES OF GIS 3 8 1 +509 2019-11-24 13:07:53.244551+00 318 PRINCIPLES OF REMOTE SENSING 3 8 1 +510 2019-11-24 13:07:53.256996+00 317 Technical Communication 3 8 1 +511 2019-11-24 13:07:53.269966+00 316 ROCK AND SOIL MECHANICS 3 8 1 +512 2019-11-24 13:07:53.290421+00 315 Seismology 3 8 1 +513 2019-11-24 13:07:53.303276+00 314 Gravity and Magnetic Prospecting 3 8 1 +514 2019-11-24 13:07:53.315873+00 313 Economic Geology 3 8 1 +515 2019-11-24 13:07:53.336987+00 312 Metamorphic Petrology 3 8 1 +516 2019-11-24 13:07:53.357951+00 311 Structural Geology-II 3 8 1 +517 2019-11-24 13:07:53.378595+00 310 GEOPHYSICAL PROSPECTING 3 8 1 +518 2019-11-24 13:07:53.39152+00 309 FIELD THEORY 3 8 1 +519 2019-11-24 13:07:53.403996+00 308 STRUCTURAL GEOLOGY-I 3 8 1 +520 2019-11-24 13:07:53.425075+00 307 PALEONTOLOGY 3 8 1 +521 2019-11-24 13:07:53.437654+00 306 BASIC PETROLOGY 3 8 1 +522 2019-11-24 13:07:53.458532+00 305 Computer Programming 3 8 1 +523 2019-11-24 13:07:53.471003+00 304 Introduction to Earth Sciences 3 8 1 +524 2019-11-24 13:07:53.483666+00 303 Electrical Prospecting 3 8 1 +525 2019-11-24 13:07:53.496194+00 302 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 3 8 1 +526 2019-11-24 13:07:53.509165+00 301 SEMINAR 3 8 1 +527 2019-11-24 13:07:53.521752+00 300 Principles of Seismology 3 8 1 +528 2019-11-24 13:07:53.534841+00 299 Machine Foundation 3 8 1 +529 2019-11-24 13:07:53.555285+00 298 Earthquake Resistant Design of Structures 3 8 1 +530 2019-11-24 13:07:53.5761+00 297 Vulnerability and Risk Analysis 3 8 1 +531 2019-11-24 13:07:53.591812+00 296 Seismological Modeling and Simulation 3 8 1 +532 2019-11-24 13:07:53.604645+00 295 Seismic Hazard Assessment 3 8 1 +533 2019-11-24 13:07:53.625608+00 294 Geotechnical Earthquake Engineering 3 8 1 +534 2019-11-24 13:07:53.66994+00 663 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 3 8 1 +535 2019-11-24 13:07:53.695347+00 293 Numerical Methods for Dynamic Systems 3 8 1 +536 2019-11-24 13:07:53.789988+00 292 Finite Element Method 3 8 1 +537 2019-11-24 13:07:53.823987+00 662 SEMINAR 3 8 1 +538 2019-11-24 13:07:54.051371+00 291 Engineering Seismology 3 8 1 +539 2019-11-24 13:07:54.267482+00 661 On Farm Development 3 8 1 +540 2019-11-24 13:07:54.692875+00 290 Vibration of Elastic Media 3 8 1 +542 2019-11-24 13:07:54.718291+00 289 Theory of Vibrations 3 8 1 +544 2019-11-24 13:07:54.743676+00 288 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 3 8 1 +546 2019-11-24 13:07:54.769186+00 287 SEMINAR 3 8 1 +548 2019-11-24 13:07:54.794397+00 286 Advanced Topics in Software Engineering 3 8 1 +550 2019-11-24 13:07:54.819696+00 285 Lab II (Project Lab) 3 8 1 +552 2019-11-24 13:07:54.845303+00 284 Lab I (Programming Lab) 3 8 1 +554 2019-11-24 13:07:54.870648+00 283 Advanced Computer Networks 3 8 1 +556 2019-11-24 13:07:54.895576+00 282 Advanced Operating Systems 3 8 1 +558 2019-11-24 13:07:54.921124+00 281 Advanced Algorithms 3 8 1 +560 2019-11-24 13:07:54.946312+00 280 Training Seminar 3 8 1 +562 2019-11-24 13:07:54.971608+00 279 B.Tech. Project 3 8 1 +564 2019-11-24 13:07:54.997088+00 278 Technical Communication 3 8 1 +566 2019-11-24 13:07:55.022222+00 277 Computer Network Laboratory 3 8 1 +568 2019-11-24 13:07:55.0478+00 276 Theory of Computation 3 8 1 +570 2019-11-24 13:07:55.072918+00 275 Computer Network 3 8 1 +572 2019-11-24 13:07:55.098291+00 274 DATA STRUCTURE LABORATORY 3 8 1 +574 2019-11-24 13:07:55.123493+00 273 COMPUTER ARCHITECTURE AND MICROPROCESSORS 3 8 1 +576 2019-11-24 13:07:55.149709+00 272 Fundamentals of Object Oriented Programming 3 8 1 +578 2019-11-24 13:07:55.174812+00 271 Introduction to Computer Science and Engineering 3 8 1 +580 2019-11-24 13:07:55.200463+00 270 Logic and Automated Reasoning 3 8 1 +582 2019-11-24 13:07:55.225376+00 269 Data Mining and Warehousing 3 8 1 +584 2019-11-24 13:07:55.250287+00 268 MACHINE LEARNING 3 8 1 +586 2019-11-24 13:07:55.276166+00 267 ARTIFICIAL INTELLIGENCE 3 8 1 +588 2019-11-24 13:07:55.30168+00 266 Compiler Design 3 8 1 +590 2019-11-24 13:07:55.326529+00 265 Data Base Management Systems 3 8 1 +592 2019-11-24 13:07:55.351634+00 264 OBJECT ORIENTED ANALYSIS AND DESIGN 3 8 1 +594 2019-11-24 13:07:55.376915+00 263 Data Structures 3 8 1 +596 2019-11-24 13:07:55.402577+00 262 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 3 8 1 +598 2019-11-24 13:07:55.427957+00 261 SEMINAR 3 8 1 +600 2019-11-24 13:07:55.453835+00 260 Geoinformatics for Landuse Surveys 3 8 1 +602 2019-11-24 13:07:55.479339+00 259 Planning, Design and Construction of Rural Roads 3 8 1 +604 2019-11-24 13:07:55.505299+00 258 Pavement Analysis and Design 3 8 1 +606 2019-11-24 13:07:55.529718+00 257 Traffic Engineering and Modeling 3 8 1 +608 2019-11-24 13:07:55.554978+00 256 Modeling, Simulation and Optimization 3 8 1 +610 2019-11-24 13:07:55.58038+00 255 Free Surface Flows 3 8 1 +612 2019-11-24 13:07:55.606028+00 254 Advanced Fluid Mechanics 3 8 1 +614 2019-11-24 13:07:55.631023+00 253 Advanced Hydrology 3 8 1 +616 2019-11-24 13:07:55.656409+00 252 Soil Dynamics and Machine Foundations 3 8 1 +618 2019-11-24 13:07:55.68163+00 251 Engineering Behaviour of Rocks 3 8 1 +620 2019-11-24 13:07:55.707146+00 250 Advanced Soil Mechanics 3 8 1 +622 2019-11-24 13:07:55.732093+00 249 Advanced Numerical Analysis 3 8 1 +624 2019-11-24 13:07:55.756982+00 248 FIELD SURVEY CAMP 3 8 1 +626 2019-11-24 13:07:55.782606+00 247 Principles of Photogrammetry 3 8 1 +628 2019-11-24 13:07:55.808256+00 246 Surveying Measurements and Adjustments 3 8 1 +630 2019-11-24 13:07:55.833569+00 245 Environmental Hydraulics 3 8 1 +632 2019-11-24 13:07:55.858865+00 244 Water Treatment 3 8 1 +634 2019-11-24 13:07:55.884933+00 243 Environmental Modeling and Simulation 3 8 1 +636 2019-11-24 13:07:55.910202+00 242 Training Seminar 3 8 1 +638 2019-11-24 13:07:55.935433+00 241 Advanced Highway Engineering 3 8 1 +640 2019-11-24 13:07:55.96095+00 240 Advanced Water and Wastewater Treatment 3 8 1 +642 2019-11-24 13:07:55.986085+00 239 WATER RESOURCE ENGINEERING 3 8 1 +644 2019-11-24 13:07:56.011415+00 238 B.Tech. Project 3 8 1 +646 2019-11-24 13:07:56.036778+00 237 Technical Communication 3 8 1 +648 2019-11-24 13:07:56.062071+00 236 Design of Reinforced Concrete Elements 3 8 1 +650 2019-11-24 13:07:56.087689+00 235 Soil Mechanicas 3 8 1 +652 2019-11-24 13:07:56.112945+00 234 Theory of Structures 3 8 1 +654 2019-11-24 13:07:56.137998+00 233 ENGINEERING GRAPHICS 3 8 1 +656 2019-11-24 13:07:56.163286+00 232 Highway and Traffic Engineering 3 8 1 +658 2019-11-24 13:07:56.189157+00 231 STRUCTURAL ANALYSIS-I 3 8 1 +660 2019-11-24 13:07:56.213974+00 230 CHANNEL HYDRAULICS 3 8 1 +662 2019-11-24 13:07:56.239298+00 229 GEOMATICS ENGINEERING-II 3 8 1 +664 2019-11-24 13:07:56.264674+00 228 Urban Mass Transit Systems 3 8 1 +666 2019-11-24 13:07:56.289851+00 227 Transportation Planning 3 8 1 +668 2019-11-24 13:07:56.50192+00 226 Road Traffic Safety 3 8 1 +670 2019-11-24 13:07:57.168564+00 225 Behaviour & Design of Steel Structures (Autumn) 3 8 1 +672 2019-11-24 13:07:57.210624+00 224 Industrial and Hazardous Waste Management 3 8 1 +674 2019-11-24 13:07:57.23599+00 223 Geometric Design 3 8 1 +676 2019-11-24 13:07:57.261309+00 222 Finite Element Analysis 3 8 1 +678 2019-11-24 13:07:57.287104+00 221 Structural Dynamics 3 8 1 +680 2019-11-24 13:07:57.31242+00 220 Advanced Concrete Design 3 8 1 +682 2019-11-24 13:07:57.33774+00 219 Continuum Mechanics 3 8 1 +684 2019-11-24 13:07:57.363056+00 218 Matrix Structural Analysis 3 8 1 +686 2019-11-24 13:07:57.388445+00 217 Geodesy and GPS Surveying 3 8 1 +688 2019-11-24 13:07:57.413747+00 216 Remote Sensing and Image Processing 3 8 1 +690 2019-11-24 13:07:57.439016+00 215 Environmental Chemistry 3 8 1 +692 2019-11-24 13:07:57.464337+00 214 Wastewater Treatment 3 8 1 +694 2019-11-24 13:07:57.489744+00 213 Design of Steel Elements 3 8 1 +696 2019-11-24 13:07:57.515222+00 212 Railway Engineering and Airport Planning 3 8 1 +698 2019-11-24 13:07:57.540271+00 211 Design of Steel Elements 3 8 1 +700 2019-11-24 13:07:57.565586+00 210 Waste Water Engineering 3 8 1 +702 2019-11-24 13:07:57.590914+00 209 Geomatics Engineering – I 3 8 1 +704 2019-11-24 13:07:57.616407+00 208 Introduction to Environmental Studies 3 8 1 +706 2019-11-24 13:07:57.641549+00 207 Numerical Methods and Computer Programming 3 8 1 +708 2019-11-24 13:07:57.667174+00 206 Solid Mechanics 3 8 1 +710 2019-11-24 13:07:57.692426+00 205 Introduction to Civil Engineering 3 8 1 +712 2019-11-24 13:07:57.717627+00 204 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 3 8 1 +714 2019-11-24 13:07:57.742974+00 203 SEMINAR 3 8 1 +716 2019-11-24 13:07:57.768488+00 202 Training Seminar 3 8 1 +541 2019-11-24 13:07:54.705414+00 660 Principles and Practices of Irrigation 3 8 1 +543 2019-11-24 13:07:54.730557+00 659 Design of Irrigation Structures and Drainage Works 3 8 1 +545 2019-11-24 13:07:54.757147+00 658 Construction Planning and Management 3 8 1 +547 2019-11-24 13:07:54.781515+00 657 Design of Hydro Mechanical Equipment 3 8 1 +549 2019-11-24 13:07:54.806863+00 656 Power System Protection Application 3 8 1 +551 2019-11-24 13:07:54.831964+00 655 Hydropower System Planning 3 8 1 +553 2019-11-24 13:07:54.857563+00 654 Hydro Generating Equipment 3 8 1 +555 2019-11-24 13:07:54.883062+00 653 Applied Hydrology 3 8 1 +557 2019-11-24 13:07:54.908285+00 652 Water Resources Planning and Management 3 8 1 +559 2019-11-24 13:07:54.933816+00 651 Design of Water Resources Structures 3 8 1 +561 2019-11-24 13:07:54.958847+00 650 System Design Techniques 3 8 1 +563 2019-11-24 13:07:54.984983+00 649 MATHEMATICAL AND COMPUTATIONAL TECHNIQUES 3 8 1 +565 2019-11-24 13:07:55.009856+00 648 Experimental Techniques 3 8 1 +567 2019-11-24 13:07:55.035171+00 647 Laboratory Work in Photonics 3 8 1 +569 2019-11-24 13:07:55.060467+00 646 Semiconductor Device Physics 3 8 1 +571 2019-11-24 13:07:55.08579+00 645 Computational Techniques and Programming 3 8 1 +573 2019-11-24 13:07:55.111147+00 644 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 3 8 1 +575 2019-11-24 13:07:55.137464+00 643 SEMINAR 3 8 1 +577 2019-11-24 13:07:55.162422+00 642 SEMINAR 3 8 1 +579 2019-11-24 13:07:55.187842+00 641 Numerical Analysis & Computer Programming 3 8 1 +581 2019-11-24 13:07:55.213063+00 640 Semiconductor Photonics 3 8 1 +583 2019-11-24 13:07:55.237941+00 639 Quantum Theory of Solids 3 8 1 +585 2019-11-24 13:07:55.263092+00 638 A Primer in Quantum Field Theory 3 8 1 +587 2019-11-24 13:07:55.289177+00 637 Advanced Characterization Techniques 3 8 1 +589 2019-11-24 13:07:55.314045+00 636 Advanced Nuclear Physics 3 8 1 +591 2019-11-24 13:07:55.339152+00 635 Advanced Laser Physics 3 8 1 +593 2019-11-24 13:07:55.364668+00 634 Advanced Condensed Matter Physics 3 8 1 +595 2019-11-24 13:07:55.390412+00 633 DISSERTATION STAGE-I 3 8 1 +597 2019-11-24 13:07:55.416127+00 632 SEMICONDUCTOR DEVICES AND APPLICATIONS 3 8 1 +599 2019-11-24 13:07:55.440928+00 631 Classical Mechanics 3 8 1 +601 2019-11-24 13:07:55.466165+00 630 Mathematical Physics 3 8 1 +603 2019-11-24 13:07:55.491474+00 629 Quantum Mechanics – I 3 8 1 +605 2019-11-24 13:07:55.516737+00 628 Training Seminar 3 8 1 +607 2019-11-24 13:07:55.5421+00 627 B.Tech. Project 3 8 1 +609 2019-11-24 13:07:55.567822+00 626 Nuclear Astrophysics 3 8 1 +611 2019-11-24 13:07:55.592834+00 625 Techincal Communication 3 8 1 +613 2019-11-24 13:07:55.618559+00 624 Laser & Photonics 3 8 1 +615 2019-11-24 13:07:55.643539+00 623 Signals and Systems 3 8 1 +617 2019-11-24 13:07:55.668884+00 622 Numerical Analysis and Computational Physics 3 8 1 +619 2019-11-24 13:07:55.694349+00 621 Applied Instrumentation 3 8 1 +621 2019-11-24 13:07:55.719364+00 620 Lab-based Project 3 8 1 +623 2019-11-24 13:07:55.7442+00 619 Microprocessors and Peripheral Devices 3 8 1 +625 2019-11-24 13:07:55.76971+00 618 Mathematical Physics 3 8 1 +627 2019-11-24 13:07:55.795335+00 617 Mechanics and Relativity 3 8 1 +629 2019-11-24 13:07:55.820981+00 616 Atomic Molecular and Laser Physics 3 8 1 +631 2019-11-24 13:07:55.845928+00 615 Computer Programming 3 8 1 +633 2019-11-24 13:07:55.871694+00 614 Introduction to Physical Science 3 8 1 +635 2019-11-24 13:07:55.897314+00 613 Modern Physics 3 8 1 +637 2019-11-24 13:07:55.923094+00 612 QUARK GLUON PLASMA & FINITE TEMPERATURE FIELD THEORY 3 8 1 +639 2019-11-24 13:07:55.948419+00 611 Optical Electronics 3 8 1 +641 2019-11-24 13:07:55.973706+00 610 Semiconductor Materials and Devices 3 8 1 +643 2019-11-24 13:07:55.999205+00 609 Laboratory Work 3 8 1 +645 2019-11-24 13:07:56.024376+00 608 Weather Forecasting 3 8 1 +647 2019-11-24 13:07:56.04972+00 607 Advanced Atmospheric Physics 3 8 1 +649 2019-11-24 13:07:56.075039+00 606 Physics of Earth’s Atmosphere 3 8 1 +651 2019-11-24 13:07:56.100344+00 605 Classical Electrodynamics 3 8 1 +653 2019-11-24 13:07:56.125692+00 604 Laboratory Work 3 8 1 +655 2019-11-24 13:07:56.15115+00 603 QUANTUM INFORMATION AND COMPUTING 3 8 1 +657 2019-11-24 13:07:56.176371+00 602 Plasma Physics and Applications 3 8 1 +659 2019-11-24 13:07:56.201852+00 601 Applied Optics 3 8 1 +661 2019-11-24 13:07:56.227103+00 600 Quantum Physics 3 8 1 +663 2019-11-24 13:07:56.252374+00 599 Engineering Analysis Design 3 8 1 +665 2019-11-24 13:07:56.27763+00 598 Quantum Mechanics and Statistical Mechanics 3 8 1 +667 2019-11-24 13:07:56.302994+00 597 Electrodynamics and Optics 3 8 1 +669 2019-11-24 13:07:57.150393+00 596 Applied Physics 3 8 1 +671 2019-11-24 13:07:57.182029+00 595 Electromagnetic Field Theory 3 8 1 +673 2019-11-24 13:07:57.223507+00 594 Mechanics 3 8 1 +675 2019-11-24 13:07:57.249255+00 593 Advanced Atmospheric Physics 3 8 1 +677 2019-11-24 13:07:57.274215+00 592 Elements of Nuclear and Particle Physics 3 8 1 +679 2019-11-24 13:07:57.29946+00 591 Physics of Earth’s Atmosphere 3 8 1 +681 2019-11-24 13:07:57.325007+00 590 Computational Physics 3 8 1 +683 2019-11-24 13:07:57.350457+00 589 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 3 8 1 +685 2019-11-24 13:07:57.375475+00 588 SEMINAR 3 8 1 +687 2019-11-24 13:07:57.400928+00 587 Converting Processes for Packaging 3 8 1 +689 2019-11-24 13:07:57.426099+00 586 Printing Technology 3 8 1 +691 2019-11-24 13:07:57.451596+00 585 Packaging Materials 3 8 1 +693 2019-11-24 13:07:57.477086+00 584 Packaging Principles, Processes and Sustainability 3 8 1 +695 2019-11-24 13:07:57.502084+00 583 Process Instrumentation and Control 3 8 1 +697 2019-11-24 13:07:57.527381+00 582 Advanced Numerical Methods and Statistics 3 8 1 +699 2019-11-24 13:07:57.552732+00 581 Paper Proprieties and Stock Preparation 3 8 1 +701 2019-11-24 13:07:57.578068+00 580 Chemical Recovery Process 3 8 1 +703 2019-11-24 13:07:57.6037+00 579 Pulping 3 8 1 +705 2019-11-24 13:07:57.628894+00 578 Printing Technology 3 8 1 +707 2019-11-24 13:07:57.653824+00 577 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 3 8 1 +709 2019-11-24 13:07:57.679306+00 576 SEMINAR 3 8 1 +711 2019-11-24 13:07:57.704654+00 575 Numerical Methods in Manufacturing 3 8 1 +713 2019-11-24 13:07:57.730009+00 574 Non-Traditional Machining Processes 3 8 1 +715 2019-11-24 13:07:57.755247+00 573 Materials Management 3 8 1 +717 2019-11-24 13:07:57.781067+00 572 Machine Tool Design and Numerical Control 3 8 1 +719 2019-11-24 13:07:57.806394+00 571 Design for Manufacturability 3 8 1 +721 2019-11-24 13:07:57.83186+00 570 Advanced Manufacturing Processes 3 8 1 +723 2019-11-24 13:07:57.856866+00 569 Quality Management 3 8 1 +725 2019-11-24 13:07:57.881773+00 568 Operations Management 3 8 1 +727 2019-11-24 13:07:57.907157+00 567 Computer Aided Design 3 8 1 +729 2019-11-24 13:07:57.933371+00 566 Advanced Mechanics of Solids 3 8 1 +731 2019-11-24 13:07:57.9588+00 565 Dynamics of Mechanical Systems 3 8 1 +733 2019-11-24 13:07:57.984276+00 564 Micro and Nano Scale Thermal Engineering 3 8 1 +735 2019-11-24 13:07:58.009637+00 563 Hydro-dynamic Machines 3 8 1 +737 2019-11-24 13:07:58.054568+00 562 Solar Energy 3 8 1 +739 2019-11-24 13:07:58.085517+00 561 Advanced Heat Transfer 3 8 1 +741 2019-11-24 13:07:58.11085+00 560 Advanced Fluid Mechanics 3 8 1 +743 2019-11-24 13:07:58.136202+00 559 Advanced Thermodynamics 3 8 1 +745 2019-11-24 13:07:58.161477+00 558 Modeling and Simulation 3 8 1 +747 2019-11-24 13:07:58.187285+00 557 Modeling and Simulation 3 8 1 +749 2019-11-24 13:07:58.212083+00 556 Robotics and Control 3 8 1 +751 2019-11-24 13:07:58.237541+00 555 Training Seminar 3 8 1 +753 2019-11-24 13:07:58.262743+00 554 B.Tech. Project 3 8 1 +755 2019-11-24 13:07:58.288288+00 553 Technical Communication 3 8 1 +757 2019-11-24 13:07:58.313653+00 552 Refrigeration and Air-Conditioning 3 8 1 +759 2019-11-24 13:07:58.338749+00 551 Industrial Management 3 8 1 +761 2019-11-24 13:07:58.364042+00 550 Vibration and Noise 3 8 1 +763 2019-11-24 13:07:58.389468+00 549 Operations Research 3 8 1 +765 2019-11-24 13:07:58.414619+00 548 Principles of Industrial Enigneering 3 8 1 +767 2019-11-24 13:07:58.440163+00 547 Dynamics of Machines 3 8 1 +769 2019-11-24 13:07:58.465458+00 546 THEORY OF MACHINES 3 8 1 +771 2019-11-24 13:07:58.49057+00 545 Energy Conversion 3 8 1 +773 2019-11-24 13:07:58.515925+00 544 THERMAL ENGINEERING 3 8 1 +775 2019-11-24 13:07:58.541177+00 543 FLUID MECHANICS 3 8 1 +777 2019-11-24 13:07:58.566499+00 542 MANUFACTURING TECHNOLOGY-II 3 8 1 +779 2019-11-24 13:07:58.591813+00 541 KINEMATICS OF MACHINES 3 8 1 +781 2019-11-24 13:07:58.617228+00 540 Non-Conventional Welding Processes 3 8 1 +783 2019-11-24 13:07:58.642458+00 539 Smart Materials, Structures, and Devices 3 8 1 +785 2019-11-24 13:07:58.668119+00 538 Advanced Mechanical Vibrations 3 8 1 +787 2019-11-24 13:07:58.693852+00 537 Finite Element Methods 3 8 1 +789 2019-11-24 13:07:58.719648+00 536 Computer Aided Mechanism Design 3 8 1 +791 2019-11-24 13:07:58.745185+00 535 Computational Fluid Dynamics & Heat Transfer 3 8 1 +793 2019-11-24 13:07:58.770611+00 534 Instrumentation and Experimental Methods 3 8 1 +795 2019-11-24 13:07:58.999012+00 533 Power Plants 3 8 1 +797 2019-11-24 13:07:59.575428+00 532 Work System Desing 3 8 1 +799 2019-11-24 13:07:59.601018+00 531 Theory of Production Processes-II 3 8 1 +801 2019-11-24 13:07:59.625635+00 530 Heat and Mass Transfer 3 8 1 +803 2019-11-24 13:07:59.65129+00 529 Machine Design 3 8 1 +805 2019-11-24 13:07:59.676505+00 528 Lab Based Project 3 8 1 +807 2019-11-24 13:07:59.701738+00 527 ENGINEERING ANALYSIS AND DESIGN 3 8 1 +809 2019-11-24 13:07:59.727162+00 526 Theory of Production Processes - I 3 8 1 +811 2019-11-24 13:07:59.75235+00 525 Fluid Mechanics 3 8 1 +813 2019-11-24 13:07:59.77759+00 524 Mechanical Engineering Drawing 3 8 1 +815 2019-11-24 13:07:59.803215+00 523 Engineering Thermodynamics 3 8 1 +817 2019-11-24 13:07:59.828205+00 522 Programming and Data Structure 3 8 1 +819 2019-11-24 13:07:59.853468+00 521 Introduction to Production and Industrial Engineering 3 8 1 +821 2019-11-24 13:07:59.87877+00 520 Introduction to Mechanical Engineering 3 8 1 +823 2019-11-24 13:07:59.905647+00 519 Advanced Manufacturing Processes 3 8 1 +825 2019-11-24 13:07:59.958036+00 518 ADVANCED NUMERICAL ANALYSIS 3 8 1 +827 2019-11-24 13:07:59.979477+00 517 SELECTED TOPICS IN ANALYSIS 3 8 1 +829 2019-11-24 13:08:00.005973+00 516 SEMINAR 3 8 1 +831 2019-11-24 13:08:00.030024+00 515 Seminar 3 8 1 +833 2019-11-24 13:08:00.055816+00 514 Orthogonal Polynomials and Special Functions 3 8 1 +835 2019-11-24 13:08:00.081122+00 513 Financial Mathematics 3 8 1 +837 2019-11-24 13:08:00.106639+00 512 Dynamical Systems 3 8 1 +839 2019-11-24 13:08:00.132089+00 511 CONTROL THEORY 3 8 1 +841 2019-11-24 13:08:00.15712+00 510 Coding Theory 3 8 1 +843 2019-11-24 13:08:00.182265+00 509 Advanced Numerical Analysis 3 8 1 +845 2019-11-24 13:08:00.207581+00 508 Mathematical Statistics 3 8 1 +847 2019-11-24 13:08:00.233372+00 507 SEMINAR 3 8 1 +849 2019-11-24 13:08:00.258306+00 506 OPERATIONS RESEARCH 3 8 1 +851 2019-11-24 13:08:00.283419+00 505 FUNCTIONAL ANALYSIS 3 8 1 +853 2019-11-24 13:08:00.309021+00 504 Functional Analysis 3 8 1 +855 2019-11-24 13:08:00.334556+00 503 Tensors and Differential Geometry 3 8 1 +857 2019-11-24 13:08:00.359059+00 502 Fluid Dynamics 3 8 1 +859 2019-11-24 13:08:00.384649+00 501 Mathematics 3 8 1 +861 2019-11-24 13:08:00.409844+00 500 SOFT COMPUTING 3 8 1 +863 2019-11-24 13:08:00.435534+00 499 Complex Analysis 3 8 1 +865 2019-11-24 13:08:00.461131+00 498 Computer Programming 3 8 1 +867 2019-11-24 13:08:00.486439+00 497 Abstract Algebra 3 8 1 +869 2019-11-24 13:08:00.512034+00 496 Topology 3 8 1 +871 2019-11-24 13:08:00.537507+00 495 Real Analysis 3 8 1 +873 2019-11-24 13:08:00.562611+00 494 Theory of Ordinary Differential Equations 3 8 1 +875 2019-11-24 13:08:00.588031+00 493 Complex Analysis-II 3 8 1 +877 2019-11-24 13:08:00.613385+00 492 Theory of Partial Differential Equations 3 8 1 +879 2019-11-24 13:08:00.638564+00 491 Topology 3 8 1 +881 2019-11-24 13:08:00.664484+00 490 Real Analysis-II 3 8 1 +883 2019-11-24 13:08:00.68986+00 489 THEORY OF ORDINARY DIFFERENTIAL EQUATIONS 3 8 1 +885 2019-11-24 13:08:00.715046+00 488 Technical Communication 3 8 1 +887 2019-11-24 13:08:00.74054+00 487 MATHEMATICAL IMAGING TECHNOLOGY 3 8 1 +889 2019-11-24 13:08:00.766047+00 486 Linear Programming 3 8 1 +891 2019-11-24 13:08:00.791264+00 485 Mathematical Statistics 3 8 1 +893 2019-11-24 13:08:00.816858+00 484 Abstract Algebra-I 3 8 1 +895 2019-11-24 13:08:00.849989+00 483 DESIGN AND ANALYSIS OF ALGORITHMS 3 8 1 +897 2019-11-24 13:08:00.875273+00 482 ORDINARY AND PARTIAL DIFFERENTIAL EQUATIONS 3 8 1 +899 2019-11-24 13:08:00.900988+00 481 DISCRETE MATHEMATICS 3 8 1 +718 2019-11-24 13:07:57.79373+00 201 B.Tech. Project 3 8 1 +720 2019-11-24 13:07:57.818837+00 200 Technical Communication 3 8 1 +722 2019-11-24 13:07:57.8442+00 199 Process Integration 3 8 1 +724 2019-11-24 13:07:57.869103+00 198 Optimization of Chemical Enigneering Processes 3 8 1 +726 2019-11-24 13:07:57.894334+00 197 Process Utilities and Safety 3 8 1 +728 2019-11-24 13:07:57.91974+00 196 Process Equipment Design* 3 8 1 +730 2019-11-24 13:07:57.945678+00 195 Process Dynamics and Control 3 8 1 +732 2019-11-24 13:07:57.971269+00 194 Fluid and Fluid Particle Mechanics 3 8 1 +734 2019-11-24 13:07:57.996735+00 193 CHEMICAL ENGINEERING THERMODYNAMICS 3 8 1 +736 2019-11-24 13:07:58.022235+00 192 Chemical Technology 3 8 1 +738 2019-11-24 13:07:58.072676+00 191 CHEMICAL ENGINEERING THERMODYNAMICS 3 8 1 +740 2019-11-24 13:07:58.098013+00 190 MECHANICAL OPERATION 3 8 1 +742 2019-11-24 13:07:58.123245+00 189 HEAT TRANSFER 3 8 1 +744 2019-11-24 13:07:58.148444+00 188 SEMINAR 3 8 1 +746 2019-11-24 13:07:58.173877+00 187 COMPUTATIONAL FLUID DYNAMICS 3 8 1 +748 2019-11-24 13:07:58.199482+00 186 Biochemical Engineering 3 8 1 +750 2019-11-24 13:07:58.224826+00 185 Advanced Reaction Engineering 3 8 1 +752 2019-11-24 13:07:58.250528+00 184 Advanced Transport Phenomena 3 8 1 +754 2019-11-24 13:07:58.275684+00 183 Mathematical Methods in Chemical Engineering 3 8 1 +756 2019-11-24 13:07:58.30112+00 182 Waste to Energy 3 8 1 +758 2019-11-24 13:07:58.326308+00 181 Polymer Physics and Rheology* 3 8 1 +760 2019-11-24 13:07:58.351585+00 180 Fluidization Engineering 3 8 1 +762 2019-11-24 13:07:58.376941+00 179 Computer Application in Chemical Engineering 3 8 1 +764 2019-11-24 13:07:58.402316+00 178 Enginering Analysis and Process Modeling 3 8 1 +766 2019-11-24 13:07:58.427542+00 177 Mass Transfer-II 3 8 1 +768 2019-11-24 13:07:58.453136+00 176 Mass Transfer -I 3 8 1 +770 2019-11-24 13:07:58.478161+00 175 Computer Programming and Numerical Methods 3 8 1 +772 2019-11-24 13:07:58.503525+00 174 Material and Energy Balance 3 8 1 +774 2019-11-24 13:07:58.528875+00 173 Introduction to Chemical Engineering 3 8 1 +776 2019-11-24 13:07:58.554547+00 172 Advanced Thermodynamics and Molecular Simulations 3 8 1 +778 2019-11-24 13:07:58.579397+00 171 DISSERTATION STAGE I 3 8 1 +780 2019-11-24 13:07:58.604885+00 170 SEMINAR 3 8 1 +782 2019-11-24 13:07:58.6301+00 169 ADVANCED TRANSPORT PROCESS 3 8 1 +784 2019-11-24 13:07:58.655453+00 168 RECOMBINANT DNA TECHNOLOGY 3 8 1 +786 2019-11-24 13:07:58.68177+00 167 REACTION KINETICS AND REACTOR DESIGN 3 8 1 +788 2019-11-24 13:07:58.706673+00 166 MICROBIOLOGY AND BIOCHEMISTRY 3 8 1 +790 2019-11-24 13:07:58.732422+00 165 Chemical Genetics and Drug Discovery 3 8 1 +792 2019-11-24 13:07:58.757377+00 164 Structural Biology 3 8 1 +794 2019-11-24 13:07:58.783133+00 163 Genomics and Proteomics 3 8 1 +796 2019-11-24 13:07:59.181958+00 162 Vaccine Development & Production 3 8 1 +798 2019-11-24 13:07:59.587455+00 161 Cell & Tissue Culture Technology 3 8 1 +800 2019-11-24 13:07:59.612813+00 160 Biotechnology Laboratory – III 3 8 1 +802 2019-11-24 13:07:59.638094+00 159 Seminar 3 8 1 +804 2019-11-24 13:07:59.663363+00 158 Genetic Engineering 3 8 1 +806 2019-11-24 13:07:59.688737+00 157 Biophysical Techniques 3 8 1 +808 2019-11-24 13:07:59.713985+00 156 DOWNSTREAM PROCESSING 3 8 1 +810 2019-11-24 13:07:59.73942+00 155 BIOREACTION ENGINEERING 3 8 1 +812 2019-11-24 13:07:59.764714+00 154 Technical Communication 3 8 1 +814 2019-11-24 13:07:59.789941+00 153 Cell & Developmental Biology 3 8 1 +816 2019-11-24 13:07:59.815262+00 152 Genetics & Molecular Biology 3 8 1 +818 2019-11-24 13:07:59.840636+00 151 Applied Microbiology 3 8 1 +820 2019-11-24 13:07:59.866184+00 150 Biotechnology Laboratory – I 3 8 1 +822 2019-11-24 13:07:59.891252+00 149 Biochemistry 3 8 1 +824 2019-11-24 13:07:59.94149+00 148 Training Seminar 3 8 1 +826 2019-11-24 13:07:59.967597+00 147 Drug Designing 3 8 1 +828 2019-11-24 13:07:59.991665+00 146 Protein Engineering 3 8 1 +830 2019-11-24 13:08:00.017366+00 145 Genomics and Proteomics 3 8 1 +832 2019-11-24 13:08:00.043327+00 144 B.Tech. Project 3 8 1 +834 2019-11-24 13:08:00.068857+00 143 Technical Communication 3 8 1 +836 2019-11-24 13:08:00.094102+00 142 CELL AND TISSUE ENGINEERING 3 8 1 +838 2019-11-24 13:08:00.119565+00 141 IMMUNOTECHNOLOGY 3 8 1 +840 2019-11-24 13:08:00.144961+00 140 GENETICS AND MOLECULAR BIOLOGY 3 8 1 +842 2019-11-24 13:08:00.170575+00 139 Computer Programming 3 8 1 +844 2019-11-24 13:08:00.195252+00 138 Introduction to Biotechnology 3 8 1 +846 2019-11-24 13:08:00.220552+00 137 Molecular Biophysics 3 8 1 +848 2019-11-24 13:08:00.246016+00 136 Animal Biotechnology 3 8 1 +850 2019-11-24 13:08:00.271094+00 135 Plant Biotechnology 3 8 1 +852 2019-11-24 13:08:00.296492+00 134 Bioseparation Engineering 3 8 1 +854 2019-11-24 13:08:00.321727+00 133 Bioprocess Engineering 3 8 1 +856 2019-11-24 13:08:00.346638+00 132 Chemical Kinetics and Reactor Design 3 8 1 +858 2019-11-24 13:08:00.372489+00 131 BIOINFORMATICS 3 8 1 +860 2019-11-24 13:08:00.397391+00 130 MICROBIOLOGY 3 8 1 +862 2019-11-24 13:08:00.423024+00 129 Professional Training 3 8 1 +864 2019-11-24 13:08:00.448738+00 128 Planning Studio-III 3 8 1 +866 2019-11-24 13:08:00.473738+00 127 DISSERTATION STAGE-I 3 8 1 +868 2019-11-24 13:08:00.499173+00 126 Professional Training 3 8 1 +870 2019-11-24 13:08:00.524424+00 125 Design Studio-III 3 8 1 +872 2019-11-24 13:08:00.549901+00 124 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 3 8 1 +874 2019-11-24 13:08:00.574965+00 123 Housing 3 8 1 +876 2019-11-24 13:08:00.600762+00 122 Planning Theory and Techniques 3 8 1 +878 2019-11-24 13:08:00.625666+00 121 Ecology and Sustainable Development 3 8 1 +880 2019-11-24 13:08:00.650955+00 120 Infrastructure Planning 3 8 1 +882 2019-11-24 13:08:00.677084+00 119 Socio Economics, Demography and Quantitative Techniques 3 8 1 +884 2019-11-24 13:08:00.702245+00 118 Planning Studio-I 3 8 1 +886 2019-11-24 13:08:00.727516+00 117 Computer Applications in Architecture 3 8 1 +888 2019-11-24 13:08:00.752998+00 116 Advanced Building Technologies 3 8 1 +890 2019-11-24 13:08:00.778228+00 115 Urban Design 3 8 1 +892 2019-11-24 13:08:00.80356+00 114 Contemporary Architecture- Theories and Trends 3 8 1 +894 2019-11-24 13:08:00.828975+00 113 Design Studio-I 3 8 1 +896 2019-11-24 13:08:00.8622+00 112 Live Project/Studio/Seminar-II 3 8 1 +898 2019-11-24 13:08:00.888228+00 111 Vastushastra 3 8 1 +900 2019-11-24 13:08:00.91297+00 110 Hill Architecture 3 8 1 +902 2019-11-24 13:08:00.938433+00 109 Urban Planning 3 8 1 +904 2019-11-24 13:08:00.963577+00 108 Thesis Project I 3 8 1 +906 2019-11-24 13:08:00.989421+00 107 Architectural Design-VII 3 8 1 +908 2019-11-24 13:08:01.015636+00 106 Live Project/ Studio/ Seminar-I 3 8 1 +910 2019-11-24 13:08:01.040094+00 105 Ekistics 3 8 1 +912 2019-11-24 13:08:01.122855+00 104 Working Drawing 3 8 1 +914 2019-11-24 13:08:01.14787+00 103 Sustainable Architecture 3 8 1 +916 2019-11-24 13:08:01.173354+00 102 Urban Design 3 8 1 +918 2019-11-24 13:08:01.198431+00 101 Architectural Design-VI 3 8 1 +920 2019-11-24 13:08:01.224007+00 100 MODERN INDIAN ARCHITECTURE 3 8 1 +922 2019-11-24 13:08:01.249822+00 99 Interior Design 3 8 1 +924 2019-11-24 13:08:01.27444+00 98 Computer Applications in Architecture 3 8 1 +926 2019-11-24 13:08:01.60747+00 97 Building Construction-IV 3 8 1 +928 2019-11-24 13:08:02.054652+00 96 Architectural Design-IV 3 8 1 +930 2019-11-24 13:08:02.194271+00 95 MEASURED DRAWING CAMP 3 8 1 +932 2019-11-24 13:08:02.219762+00 94 PRICIPLES OF ARCHITECTURE 3 8 1 +934 2019-11-24 13:08:02.244909+00 93 STRUCTURE AND ARCHITECTURE 3 8 1 +936 2019-11-24 13:08:02.27068+00 92 QUANTITY, PRICING AND SPECIFICATIONS 3 8 1 +938 2019-11-24 13:08:02.29605+00 91 HISTORY OF ARCHITECTUTRE I 3 8 1 +940 2019-11-24 13:08:02.32142+00 90 BUILDING CONSTRUCTION II 3 8 1 +942 2019-11-24 13:08:02.346741+00 89 Architectural Design-III 3 8 1 +944 2019-11-24 13:08:02.371922+00 88 ARCHITECTURAL DESIGN II 3 8 1 +946 2019-11-24 13:08:02.397356+00 87 Basic Design and Creative Workshop I 3 8 1 +948 2019-11-24 13:08:02.422658+00 86 Architectural Graphics I 3 8 1 +950 2019-11-24 13:08:02.448099+00 85 Visual Art I 3 8 1 +952 2019-11-24 13:08:02.485352+00 84 Introduction to Architecture 3 8 1 +954 2019-11-24 13:08:02.509977+00 83 SEMINAR 3 8 1 +956 2019-11-24 13:08:02.535474+00 82 Regional Planning 3 8 1 +958 2019-11-24 13:08:02.561047+00 81 Planning Legislation and Governance 3 8 1 +960 2019-11-24 13:08:02.586641+00 80 Modern World Architecture 3 8 1 +962 2019-11-24 13:08:02.620038+00 79 SEMINAR 3 8 1 +964 2019-11-24 13:08:02.645351+00 78 Advanced Characterization Techniques 3 8 1 +901 2019-11-24 13:08:00.925815+00 480 Introduction to Computer Programming 3 8 1 +903 2019-11-24 13:08:00.95169+00 479 Mathematics-I 3 8 1 +905 2019-11-24 13:08:00.976522+00 478 Numerical Methods, Probability and Statistics 3 8 1 +907 2019-11-24 13:08:01.001921+00 477 Optimization Techniques 3 8 1 +909 2019-11-24 13:08:01.027173+00 476 Probability and Statistics 3 8 1 +911 2019-11-24 13:08:01.052243+00 475 MEASURE THEORY 3 8 1 +913 2019-11-24 13:08:01.134784+00 474 Statistical Inference 3 8 1 +915 2019-11-24 13:08:01.160324+00 473 COMPLEX ANALYSIS-I 3 8 1 +917 2019-11-24 13:08:01.185756+00 472 Real Analysis I 3 8 1 +919 2019-11-24 13:08:01.210956+00 471 Introduction to Mathematical Sciences 3 8 1 +921 2019-11-24 13:08:01.23676+00 470 Probability and Statistics 3 8 1 +923 2019-11-24 13:08:01.261592+00 469 Mathematical Methods 3 8 1 +925 2019-11-24 13:08:01.441161+00 468 DISSERTATION STAGE-II (CONTINUED FROM III SEMESTER) 3 8 1 +927 2019-11-24 13:08:02.017536+00 467 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 3 8 1 +929 2019-11-24 13:08:02.124324+00 466 SEMINAR 3 8 1 +931 2019-11-24 13:08:02.207299+00 465 Watershed modeling and simulation 3 8 1 +933 2019-11-24 13:08:02.23309+00 464 Soil and groundwater contamination modelling 3 8 1 +935 2019-11-24 13:08:02.25782+00 463 Experimental hydrology 3 8 1 +937 2019-11-24 13:08:02.28337+00 462 Remote sensing and GIS applications 3 8 1 +939 2019-11-24 13:08:02.308429+00 461 Environmental quality 3 8 1 +941 2019-11-24 13:08:02.333814+00 460 Watershed Behavior and Conservation Practices 3 8 1 +943 2019-11-24 13:08:02.359278+00 459 Geophysical investigations 3 8 1 +945 2019-11-24 13:08:02.384439+00 458 Groundwater hydrology 3 8 1 +947 2019-11-24 13:08:02.409744+00 457 Stochastic hydrology 3 8 1 +949 2019-11-24 13:08:02.435098+00 456 Irrigation and drainage engineering 3 8 1 +951 2019-11-24 13:08:02.455979+00 455 Engineering Hydrology 3 8 1 +953 2019-11-24 13:08:02.497123+00 454 RESEARCH METHODOLOGY IN LANGUAGE & LITERATURE 3 8 1 +955 2019-11-24 13:08:02.522812+00 453 RESEARCH METHODOLOGY IN SOCIAL SCIENCES 3 8 1 +957 2019-11-24 13:08:02.547773+00 452 UNDERSTANDING PERSONLALITY 3 8 1 +959 2019-11-24 13:08:02.573384+00 451 SEMINAR 3 8 1 +961 2019-11-24 13:08:02.608011+00 450 Advanced Topics in Growth Theory 3 8 1 +963 2019-11-24 13:08:02.632739+00 449 Ecological Economics 3 8 1 +965 2019-11-24 13:08:02.657618+00 448 Introduction to Research Methodology 3 8 1 +966 2019-11-24 13:08:02.691196+00 447 Issues in Indian Economy 3 8 1 +967 2019-11-24 13:08:02.709227+00 446 PUBLIC POLICY; THEORY AND PRACTICE 3 8 1 +968 2019-11-24 13:08:02.726634+00 445 ADVANCED ECONOMETRICS 3 8 1 +969 2019-11-24 13:08:02.737809+00 444 MONEY, BANKING AND FINANCIAL MARKETS 3 8 1 +970 2019-11-24 13:08:02.749872+00 443 DEVELOPMENT ECONOMICS 3 8 1 +971 2019-11-24 13:08:02.762279+00 442 MATHEMATICS FOR ECONOMISTS 3 8 1 +972 2019-11-24 13:08:02.774723+00 441 MACROECONOMICS I 3 8 1 +973 2019-11-24 13:08:02.800504+00 440 MICROECONOMICS I 3 8 1 +974 2019-11-24 13:08:02.812962+00 439 HSN-01 3 8 1 +975 2019-11-24 13:08:02.825781+00 438 UNDERSTANDING PERSONALITY 3 8 1 +976 2019-11-24 13:08:02.838665+00 437 Sociology 3 8 1 +977 2019-11-24 13:08:02.851325+00 436 Economics 3 8 1 +978 2019-11-24 13:08:02.864822+00 435 Technical Communication 3 8 1 +979 2019-11-24 13:08:02.877199+00 434 Society,Culture Built Environment 3 8 1 +980 2019-11-24 13:08:02.890055+00 433 Introduction to Psychology 3 8 1 +981 2019-11-24 13:08:02.902615+00 432 Communication Skills(Advance) 3 8 1 +982 2019-11-24 13:08:02.915574+00 431 Communication Skills(Basic) 3 8 1 +983 2019-11-24 13:08:02.927733+00 430 Technical Communication 3 8 1 +984 2019-11-24 13:08:02.940862+00 429 Communication skills (Basic) 3 8 1 +985 2019-11-24 13:08:02.953561+00 428 DISSERTATION STAGE-II (CONTINUED FROM III SEMESTER) 3 8 1 +986 2019-11-24 13:08:02.966248+00 427 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 3 8 1 +987 2019-11-24 13:08:02.978872+00 426 SEMINAR 3 8 1 +988 2019-11-24 13:08:02.991499+00 425 Analog VLSI Circuit Design 3 8 1 +989 2019-11-24 13:08:03.004722+00 424 Digital System Design 3 8 1 +990 2019-11-24 13:08:03.017214+00 423 Simulation Lab-1 3 8 1 +991 2019-11-24 13:08:03.029686+00 422 Microelectronics Lab-1 3 8 1 +992 2019-11-24 13:08:03.046759+00 421 Digital VLSI Circuit Design 3 8 1 +993 2019-11-24 13:08:03.072009+00 420 MOS Device Physics 3 8 1 +994 2019-11-24 13:08:03.084759+00 419 Microwave and Millimeter Wave Circuits 3 8 1 +995 2019-11-24 13:08:03.097383+00 418 Antenna Theory & Design 3 8 1 +996 2019-11-24 13:08:03.109706+00 417 Advanced EMFT 3 8 1 +997 2019-11-24 13:08:03.122641+00 416 Microwave Engineering 3 8 1 +998 2019-11-24 13:08:03.134983+00 415 Microwave Lab 3 8 1 +999 2019-11-24 13:08:03.148149+00 414 Telecommunication Networks 3 8 1 +1000 2019-11-24 13:08:03.160403+00 413 Information and Communication Theory 3 8 1 +1001 2019-11-24 13:08:03.173097+00 412 Digital Communication Systems 3 8 1 +1002 2019-11-24 13:08:03.18557+00 411 Laboratory 3 8 1 +1003 2019-11-24 13:08:03.198115+00 410 Training Seminar 3 8 1 +1004 2019-11-24 13:08:03.21077+00 409 B.Tech. Project 3 8 1 +1005 2019-11-24 13:08:03.231997+00 408 Technical Communication 3 8 1 +1006 2019-11-24 13:08:03.244286+00 407 IC Application Laboratory 3 8 1 +1007 2019-11-24 13:08:03.256948+00 406 Fundamentals of Microelectronics 3 8 1 +1008 2019-11-24 13:08:03.269839+00 405 Microelectronic Devices,Technology and Circuits 3 8 1 +1009 2019-11-24 13:08:03.282293+00 404 ELECTRONICS NETWORK THEORY 3 8 1 +1010 2019-11-24 13:08:03.294631+00 403 SIGNALS AND SYSTEMS 3 8 1 +1011 2019-11-24 13:08:03.307544+00 402 Introduction to Electronics and Communication Engineering 3 8 1 +1012 2019-11-24 13:08:03.320369+00 401 SIGNALS AND SYSTEMS 3 8 1 +1013 2019-11-24 13:08:03.333216+00 400 RF System Design and Analysis 3 8 1 +1014 2019-11-24 13:08:03.345213+00 399 Radar Signal Processing 3 8 1 +1015 2019-11-24 13:08:03.35814+00 398 Fiber Optic Systems 3 8 1 +1016 2019-11-24 13:08:03.370619+00 397 Coding Theory and Applications 3 8 1 +1017 2019-11-24 13:08:03.383935+00 396 Microwave Engineering 3 8 1 +1018 2019-11-24 13:08:03.395956+00 395 Antenna Theory 3 8 1 +1019 2019-11-24 13:08:03.408979+00 394 Communication Systems and Techniques 3 8 1 +1020 2019-11-24 13:08:03.421654+00 393 Digital Electronic Circuits Laboratory 3 8 1 +1021 2019-11-24 13:08:03.434823+00 392 Engineering Electromagnetics 3 8 1 +1022 2019-11-24 13:08:03.447438+00 391 Automatic Control Systems 3 8 1 +1023 2019-11-24 13:08:03.459896+00 390 Principles of Digital Communication 3 8 1 +1024 2019-11-24 13:08:03.472851+00 389 Fundamental of Electronics 3 8 1 +1025 2019-11-24 13:08:03.485474+00 388 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 3 8 1 +1026 2019-11-24 13:08:03.498195+00 387 SEMINAR 3 8 1 +1027 2019-11-24 13:08:03.510354+00 386 Modeling and Simulation 3 8 1 +1028 2019-11-24 13:08:03.523454+00 385 Introduction to Robotics 3 8 1 +1029 2019-11-24 13:08:03.543958+00 384 Smart Grid 3 8 1 +1030 2019-11-24 13:08:03.557028+00 383 Power System Planning 3 8 1 +1031 2019-11-24 13:08:03.569287+00 382 Enhanced Power Quality AC-DC Converters 3 8 1 +1032 2019-11-24 13:08:03.582086+00 381 Advances in Signal and Image Processing 3 8 1 +1033 2019-11-24 13:08:03.594662+00 380 Advanced System Engineering 3 8 1 +1034 2019-11-24 13:08:03.608351+00 379 Intelligent Control Techniques 3 8 1 +1035 2019-11-24 13:08:03.621037+00 378 Advanced Linear Control Systems 3 8 1 +1036 2019-11-24 13:08:03.633771+00 377 EHV AC Transmission Systems 3 8 1 +1037 2019-11-24 13:08:03.645933+00 376 Distribution System Analysis and Operation 3 8 1 +1038 2019-11-24 13:08:03.658983+00 375 Power System Operation and Control 3 8 1 +1039 2019-11-24 13:08:03.671303+00 374 Computer Aided Power System Analysis 3 8 1 +1040 2019-11-24 13:08:03.684552+00 373 Advanced Electric Drives 3 8 1 +1041 2019-11-24 13:08:03.696763+00 372 Analysis of Electrical Machines 3 8 1 +1042 2019-11-24 13:08:03.709605+00 371 Advanced Power Electronics 3 8 1 +1043 2019-11-24 13:08:03.721828+00 370 Biomedical Instrumentation 3 8 1 +1044 2019-11-24 13:08:03.734805+00 369 Digital Signal and Image Processing 3 8 1 +1045 2019-11-24 13:08:03.747192+00 368 Advanced Industrial and Electronic Instrumentation 3 8 1 +1046 2019-11-24 13:08:03.760142+00 367 Training Seminar 3 8 1 +1047 2019-11-24 13:08:03.772566+00 366 B.Tech. Project 3 8 1 +1048 2019-11-24 13:08:03.801897+00 365 Technical Communication 3 8 1 +1049 2019-11-24 13:08:03.814219+00 364 Embedded Systems 3 8 1 +1050 2019-11-24 13:08:03.827307+00 363 Data Structures 3 8 1 +1051 2019-11-24 13:08:03.860713+00 362 Signals and Systems 3 8 1 +1052 2019-11-24 13:08:04.068118+00 361 Artificial Neural Networks 3 8 1 +1053 2019-11-24 13:08:04.265941+00 360 Advanced Control Systems 3 8 1 +1054 2019-11-24 13:08:04.685469+00 359 Power Electronics 3 8 1 +1055 2019-11-24 13:08:04.698599+00 358 Power System Analysis & Control 3 8 1 +1056 2019-11-24 13:08:04.710803+00 357 ENGINEERING ANALYSIS AND DESIGN 3 8 1 +1057 2019-11-24 13:08:04.723807+00 356 DESIGN OF ELECTRONICS CIRCUITS 3 8 1 +1058 2019-11-24 13:08:04.793367+00 355 DIGITAL ELECTRONICS AND CIRCUITS 3 8 1 +1059 2019-11-24 13:08:04.806293+00 354 ELECTRICAL MACHINES-I 3 8 1 +1060 2019-11-24 13:08:04.818748+00 353 Programming in C++ 3 8 1 +1061 2019-11-24 13:08:04.83178+00 352 Network Theory 3 8 1 +1062 2019-11-24 13:08:04.844054+00 351 Introduction to Electrical Engineering 3 8 1 +1063 2019-11-24 13:08:04.85695+00 350 Instrumentation laboratory 3 8 1 +1064 2019-11-24 13:08:04.869568+00 349 Electrical Science 3 8 1 +1065 2019-11-24 13:08:04.882486+00 348 SEMINAR 3 8 1 +1066 2019-11-24 13:08:04.89464+00 347 Plate Tectonics 3 8 1 +1067 2019-11-24 13:08:04.907869+00 346 Well Logging 3 8 1 +1068 2019-11-24 13:08:04.920351+00 345 Petroleum Geology 3 8 1 +1069 2019-11-24 13:08:04.933339+00 344 Engineering Geology 3 8 1 +1070 2019-11-24 13:08:04.953414+00 343 Indian Mineral Deposits 3 8 1 +1071 2019-11-24 13:08:04.96705+00 342 Isotope Geology 3 8 1 +1072 2019-11-24 13:08:04.986496+00 341 Seminar 3 8 1 +1073 2019-11-24 13:08:05.000373+00 340 ADVANCED SEISMIC PROSPECTING 3 8 1 +1074 2019-11-24 13:08:05.012252+00 339 DYNAMIC SYSTEMS IN EARTH SCIENCES 3 8 1 +1075 2019-11-24 13:08:05.025262+00 338 Global Environment 3 8 1 +1076 2019-11-24 13:08:05.038345+00 337 Micropaleontology and Paleoceanography 3 8 1 +1077 2019-11-24 13:08:05.05084+00 336 ISOTOPE GEOLOGY 3 8 1 +1078 2019-11-24 13:08:05.071027+00 335 Geophysical Prospecting 3 8 1 +1079 2019-11-24 13:08:05.08407+00 334 Sedimentology and Stratigraphy 3 8 1 +1080 2019-11-24 13:08:05.096341+00 333 Comprehensive Viva Voce 3 8 1 +1081 2019-11-24 13:08:05.109334+00 332 Structural Geology 3 8 1 +1082 2019-11-24 13:08:05.121475+00 331 Igneous Petrology 3 8 1 +1083 2019-11-24 13:08:05.134471+00 330 Geochemistry 3 8 1 +1084 2019-11-24 13:08:05.146985+00 329 Crystallography and Mineralogy 3 8 1 +1085 2019-11-24 13:08:05.159896+00 328 Numerical Techniques and Computer Programming 3 8 1 +1086 2019-11-24 13:08:05.172292+00 327 Comprehensive Viva Voce 3 8 1 +1087 2019-11-24 13:08:05.185157+00 326 Seminar-I 3 8 1 +1088 2019-11-24 13:08:05.1975+00 325 STRONG MOTION SEISMOGRAPH 3 8 1 +1089 2019-11-24 13:08:05.21058+00 324 Geophysical Well logging 3 8 1 +1090 2019-11-24 13:08:05.223471+00 323 Numerical Modelling in Geophysical 3 8 1 +1091 2019-11-24 13:08:05.236041+00 322 PETROLEUM GEOLOGY 3 8 1 +1092 2019-11-24 13:08:05.248782+00 321 HYDROGEOLOGY 3 8 1 +1093 2019-11-24 13:08:05.261222+00 320 ENGINEERING GEOLOGY 3 8 1 +1094 2019-11-24 13:08:05.274338+00 319 PRINCIPLES OF GIS 3 8 1 +1095 2019-11-24 13:08:05.287053+00 318 PRINCIPLES OF REMOTE SENSING 3 8 1 +1096 2019-11-24 13:08:05.299866+00 317 Technical Communication 3 8 1 +1097 2019-11-24 13:08:05.311381+00 316 ROCK AND SOIL MECHANICS 3 8 1 +1098 2019-11-24 13:08:05.324364+00 315 Seismology 3 8 1 +1099 2019-11-24 13:08:05.337047+00 314 Gravity and Magnetic Prospecting 3 8 1 +1100 2019-11-24 13:08:05.349741+00 313 Economic Geology 3 8 1 +1101 2019-11-24 13:08:05.427739+00 312 Metamorphic Petrology 3 8 1 +1102 2019-11-24 13:08:05.440705+00 311 Structural Geology-II 3 8 1 +1103 2019-11-24 13:08:05.457002+00 310 GEOPHYSICAL PROSPECTING 3 8 1 +1104 2019-11-24 13:08:05.470105+00 309 FIELD THEORY 3 8 1 +1105 2019-11-24 13:08:05.48193+00 308 STRUCTURAL GEOLOGY-I 3 8 1 +1106 2019-11-24 13:08:05.49485+00 307 PALEONTOLOGY 3 8 1 +1107 2019-11-24 13:08:05.507334+00 306 BASIC PETROLOGY 3 8 1 +1108 2019-11-24 13:08:05.520859+00 305 Computer Programming 3 8 1 +1109 2019-11-24 13:08:05.533178+00 304 Introduction to Earth Sciences 3 8 1 +1110 2019-11-24 13:08:05.545616+00 303 Electrical Prospecting 3 8 1 +1111 2019-11-24 13:08:05.558121+00 302 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 3 8 1 +1112 2019-11-24 13:08:05.571132+00 301 SEMINAR 3 8 1 +1113 2019-11-24 13:08:05.583705+00 300 Principles of Seismology 3 8 1 +1114 2019-11-24 13:08:05.596291+00 299 Machine Foundation 3 8 1 +1115 2019-11-24 13:08:05.608735+00 298 Earthquake Resistant Design of Structures 3 8 1 +1116 2019-11-24 13:08:05.621752+00 297 Vulnerability and Risk Analysis 3 8 1 +1117 2019-11-24 13:08:05.634008+00 296 Seismological Modeling and Simulation 3 8 1 +1118 2019-11-24 13:08:05.646694+00 295 Seismic Hazard Assessment 3 8 1 +1119 2019-11-24 13:08:05.659263+00 294 Geotechnical Earthquake Engineering 3 8 1 +1120 2019-11-24 13:08:05.672194+00 293 Numerical Methods for Dynamic Systems 3 8 1 +1121 2019-11-24 13:08:05.684929+00 292 Finite Element Method 3 8 1 +1122 2019-11-24 13:08:05.697599+00 291 Engineering Seismology 3 8 1 +1123 2019-11-24 13:08:05.709762+00 290 Vibration of Elastic Media 3 8 1 +1124 2019-11-24 13:08:05.722938+00 289 Theory of Vibrations 3 8 1 +1125 2019-11-24 13:08:05.735304+00 288 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 3 8 1 +1126 2019-11-24 13:08:05.748404+00 287 SEMINAR 3 8 1 +1127 2019-11-24 13:08:05.761017+00 286 Advanced Topics in Software Engineering 3 8 1 +1128 2019-11-24 13:08:05.773678+00 285 Lab II (Project Lab) 3 8 1 +1129 2019-11-24 13:08:05.785878+00 284 Lab I (Programming Lab) 3 8 1 +1130 2019-11-24 13:08:05.798815+00 283 Advanced Computer Networks 3 8 1 +1131 2019-11-24 13:08:05.811397+00 282 Advanced Operating Systems 3 8 1 +1132 2019-11-24 13:08:05.833376+00 281 Advanced Algorithms 3 8 1 +1133 2019-11-24 13:08:05.845629+00 280 Training Seminar 3 8 1 +1134 2019-11-24 13:08:05.858258+00 279 B.Tech. Project 3 8 1 +1135 2019-11-24 13:08:05.870671+00 278 Technical Communication 3 8 1 +1136 2019-11-24 13:08:05.883624+00 277 Computer Network Laboratory 3 8 1 +1137 2019-11-24 13:08:05.896011+00 276 Theory of Computation 3 8 1 +1138 2019-11-24 13:08:05.909001+00 275 Computer Network 3 8 1 +1139 2019-11-24 13:08:05.921483+00 274 DATA STRUCTURE LABORATORY 3 8 1 +1140 2019-11-24 13:08:05.934415+00 273 COMPUTER ARCHITECTURE AND MICROPROCESSORS 3 8 1 +1141 2019-11-24 13:08:05.947169+00 272 Fundamentals of Object Oriented Programming 3 8 1 +1142 2019-11-24 13:08:05.959513+00 271 Introduction to Computer Science and Engineering 3 8 1 +1143 2019-11-24 13:08:05.972442+00 270 Logic and Automated Reasoning 3 8 1 +1144 2019-11-24 13:08:05.984811+00 269 Data Mining and Warehousing 3 8 1 +1145 2019-11-24 13:08:05.997911+00 268 MACHINE LEARNING 3 8 1 +1146 2019-11-24 13:08:06.010261+00 267 ARTIFICIAL INTELLIGENCE 3 8 1 +1147 2019-11-24 13:08:06.023181+00 266 Compiler Design 3 8 1 +1148 2019-11-24 13:08:06.035389+00 265 Data Base Management Systems 3 8 1 +1149 2019-11-24 13:08:06.048338+00 264 OBJECT ORIENTED ANALYSIS AND DESIGN 3 8 1 +1150 2019-11-24 13:08:06.060891+00 263 Data Structures 3 8 1 +1151 2019-11-24 13:08:06.07365+00 262 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 3 8 1 +1152 2019-11-24 13:08:06.086381+00 261 SEMINAR 3 8 1 +1153 2019-11-24 13:08:06.099213+00 260 Geoinformatics for Landuse Surveys 3 8 1 +1154 2019-11-24 13:08:06.111475+00 259 Planning, Design and Construction of Rural Roads 3 8 1 +1155 2019-11-24 13:08:06.124357+00 258 Pavement Analysis and Design 3 8 1 +1156 2019-11-24 13:08:06.136893+00 257 Traffic Engineering and Modeling 3 8 1 +1157 2019-11-24 13:08:06.149894+00 256 Modeling, Simulation and Optimization 3 8 1 +1158 2019-11-24 13:08:06.162094+00 255 Free Surface Flows 3 8 1 +1159 2019-11-24 13:08:06.175014+00 254 Advanced Fluid Mechanics 3 8 1 +1160 2019-11-24 13:08:06.187699+00 253 Advanced Hydrology 3 8 1 +1161 2019-11-24 13:08:06.200426+00 252 Soil Dynamics and Machine Foundations 3 8 1 +1162 2019-11-24 13:08:06.212837+00 251 Engineering Behaviour of Rocks 3 8 1 +1163 2019-11-24 13:08:06.225744+00 250 Advanced Soil Mechanics 3 8 1 +1164 2019-11-24 13:08:06.238094+00 249 Advanced Numerical Analysis 3 8 1 +1165 2019-11-24 13:08:06.251266+00 248 FIELD SURVEY CAMP 3 8 1 +1166 2019-11-24 13:08:06.263581+00 247 Principles of Photogrammetry 3 8 1 +1167 2019-11-24 13:08:06.276296+00 246 Surveying Measurements and Adjustments 3 8 1 +1168 2019-11-24 13:08:06.288809+00 245 Environmental Hydraulics 3 8 1 +1169 2019-11-24 13:08:06.301659+00 244 Water Treatment 3 8 1 +1170 2019-11-24 13:08:06.314062+00 243 Environmental Modeling and Simulation 3 8 1 +1171 2019-11-24 13:08:06.326805+00 242 Training Seminar 3 8 1 +1172 2019-11-24 13:08:06.339366+00 241 Advanced Highway Engineering 3 8 1 +1173 2019-11-24 13:08:06.352202+00 240 Advanced Water and Wastewater Treatment 3 8 1 +1174 2019-11-24 13:08:06.364827+00 239 WATER RESOURCE ENGINEERING 3 8 1 +1175 2019-11-24 13:08:06.377142+00 238 B.Tech. Project 3 8 1 +1176 2019-11-24 13:08:06.389451+00 237 Technical Communication 3 8 1 +1177 2019-11-24 13:08:06.402295+00 236 Design of Reinforced Concrete Elements 3 8 1 +1178 2019-11-24 13:08:06.415322+00 235 Soil Mechanicas 3 8 1 +1179 2019-11-24 13:08:06.428102+00 234 Theory of Structures 3 8 1 +1180 2019-11-24 13:08:06.44116+00 233 ENGINEERING GRAPHICS 3 8 1 +1181 2019-11-24 13:08:06.453862+00 232 Highway and Traffic Engineering 3 8 1 +1182 2019-11-24 13:08:06.64542+00 231 STRUCTURAL ANALYSIS-I 3 8 1 +1183 2019-11-24 13:08:06.82784+00 230 CHANNEL HYDRAULICS 3 8 1 +1184 2019-11-24 13:08:07.271047+00 229 GEOMATICS ENGINEERING-II 3 8 1 +1185 2019-11-24 13:08:07.283862+00 228 Urban Mass Transit Systems 3 8 1 +1186 2019-11-24 13:08:07.296185+00 227 Transportation Planning 3 8 1 +1187 2019-11-24 13:08:07.308976+00 226 Road Traffic Safety 3 8 1 +1188 2019-11-24 13:08:07.321567+00 225 Behaviour & Design of Steel Structures (Autumn) 3 8 1 +1189 2019-11-24 13:08:07.334766+00 224 Industrial and Hazardous Waste Management 3 8 1 +1190 2019-11-24 13:08:07.346944+00 223 Geometric Design 3 8 1 +1191 2019-11-24 13:08:07.359887+00 222 Finite Element Analysis 3 8 1 +1192 2019-11-24 13:08:07.372101+00 221 Structural Dynamics 3 8 1 +1193 2019-11-24 13:08:07.38513+00 220 Advanced Concrete Design 3 8 1 +1194 2019-11-24 13:08:07.397529+00 219 Continuum Mechanics 3 8 1 +1195 2019-11-24 13:08:07.410523+00 218 Matrix Structural Analysis 3 8 1 +1196 2019-11-24 13:08:07.422639+00 217 Geodesy and GPS Surveying 3 8 1 +1197 2019-11-24 13:08:07.435335+00 216 Remote Sensing and Image Processing 3 8 1 +1198 2019-11-24 13:08:07.447549+00 215 Environmental Chemistry 3 8 1 +1199 2019-11-24 13:08:07.46094+00 214 Wastewater Treatment 3 8 1 +1200 2019-11-24 13:08:07.473162+00 213 Design of Steel Elements 3 8 1 +1201 2019-11-24 13:08:07.485966+00 212 Railway Engineering and Airport Planning 3 8 1 +1202 2019-11-24 13:08:07.498527+00 211 Design of Steel Elements 3 8 1 +1203 2019-11-24 13:08:07.512319+00 210 Waste Water Engineering 3 8 1 +1204 2019-11-24 13:08:07.524865+00 209 Geomatics Engineering – I 3 8 1 +1205 2019-11-24 13:08:07.537823+00 208 Introduction to Environmental Studies 3 8 1 +1206 2019-11-24 13:08:07.550765+00 207 Numerical Methods and Computer Programming 3 8 1 +1207 2019-11-24 13:08:07.562874+00 206 Solid Mechanics 3 8 1 +1208 2019-11-24 13:08:07.576047+00 205 Introduction to Civil Engineering 3 8 1 +1209 2019-11-24 13:08:07.596542+00 204 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 3 8 1 +1210 2019-11-24 13:08:07.609467+00 203 SEMINAR 3 8 1 +1211 2019-11-24 13:08:07.621831+00 202 Training Seminar 3 8 1 +1212 2019-11-24 13:08:07.634921+00 201 B.Tech. Project 3 8 1 +1213 2019-11-24 13:08:07.64704+00 200 Technical Communication 3 8 1 +1214 2019-11-24 13:08:07.660054+00 199 Process Integration 3 8 1 +1215 2019-11-24 13:08:07.672184+00 198 Optimization of Chemical Enigneering Processes 3 8 1 +1216 2019-11-24 13:08:07.68529+00 197 Process Utilities and Safety 3 8 1 +1217 2019-11-24 13:08:07.697815+00 196 Process Equipment Design* 3 8 1 +1218 2019-11-24 13:08:07.710677+00 195 Process Dynamics and Control 3 8 1 +1219 2019-11-24 13:08:07.723085+00 194 Fluid and Fluid Particle Mechanics 3 8 1 +1220 2019-11-24 13:08:07.744176+00 193 CHEMICAL ENGINEERING THERMODYNAMICS 3 8 1 +1221 2019-11-24 13:08:07.764959+00 192 Chemical Technology 3 8 1 +1222 2019-11-24 13:08:07.782597+00 191 CHEMICAL ENGINEERING THERMODYNAMICS 3 8 1 +1223 2019-11-24 13:08:07.846993+00 190 MECHANICAL OPERATION 3 8 1 +1224 2019-11-24 13:08:07.91733+00 189 HEAT TRANSFER 3 8 1 +1225 2019-11-24 13:08:07.929707+00 188 SEMINAR 3 8 1 +1226 2019-11-24 13:08:08.00014+00 187 COMPUTATIONAL FLUID DYNAMICS 3 8 1 +1227 2019-11-24 13:08:08.012565+00 186 Biochemical Engineering 3 8 1 +1228 2019-11-24 13:08:08.02498+00 185 Advanced Reaction Engineering 3 8 1 +1229 2019-11-24 13:08:08.03792+00 184 Advanced Transport Phenomena 3 8 1 +1230 2019-11-24 13:08:08.073009+00 183 Mathematical Methods in Chemical Engineering 3 8 1 +1231 2019-11-24 13:08:08.084554+00 182 Waste to Energy 3 8 1 +1232 2019-11-24 13:08:08.096824+00 181 Polymer Physics and Rheology* 3 8 1 +1233 2019-11-24 13:08:08.109779+00 180 Fluidization Engineering 3 8 1 +1234 2019-11-24 13:08:08.122155+00 179 Computer Application in Chemical Engineering 3 8 1 +1235 2019-11-24 13:08:08.135005+00 178 Enginering Analysis and Process Modeling 3 8 1 +1236 2019-11-24 13:08:08.147407+00 177 Mass Transfer-II 3 8 1 +1237 2019-11-24 13:08:08.160383+00 176 Mass Transfer -I 3 8 1 +1238 2019-11-24 13:08:08.172926+00 175 Computer Programming and Numerical Methods 3 8 1 +1239 2019-11-24 13:08:08.201996+00 174 Material and Energy Balance 3 8 1 +1240 2019-11-24 13:08:08.272136+00 173 Introduction to Chemical Engineering 3 8 1 +1241 2019-11-24 13:08:08.342307+00 172 Advanced Thermodynamics and Molecular Simulations 3 8 1 +1242 2019-11-24 13:08:08.412651+00 171 DISSERTATION STAGE I 3 8 1 +1243 2019-11-24 13:08:08.425033+00 170 SEMINAR 3 8 1 +1244 2019-11-24 13:08:08.437937+00 169 ADVANCED TRANSPORT PROCESS 3 8 1 +1245 2019-11-24 13:08:08.507009+00 168 RECOMBINANT DNA TECHNOLOGY 3 8 1 +1246 2019-11-24 13:08:08.519884+00 167 REACTION KINETICS AND REACTOR DESIGN 3 8 1 +1247 2019-11-24 13:08:08.532471+00 166 MICROBIOLOGY AND BIOCHEMISTRY 3 8 1 +1248 2019-11-24 13:08:08.545649+00 165 Chemical Genetics and Drug Discovery 3 8 1 +1249 2019-11-24 13:08:08.558166+00 164 Structural Biology 3 8 1 +1250 2019-11-24 13:08:08.571258+00 163 Genomics and Proteomics 3 8 1 +1251 2019-11-24 13:08:08.583609+00 162 Vaccine Development & Production 3 8 1 +1252 2019-11-24 13:08:08.596313+00 161 Cell & Tissue Culture Technology 3 8 1 +1253 2019-11-24 13:08:08.608915+00 160 Biotechnology Laboratory – III 3 8 1 +1254 2019-11-24 13:08:08.621691+00 159 Seminar 3 8 1 +1255 2019-11-24 13:08:08.637698+00 158 Genetic Engineering 3 8 1 +1256 2019-11-24 13:08:08.650746+00 157 Biophysical Techniques 3 8 1 +1257 2019-11-24 13:08:08.663005+00 156 DOWNSTREAM PROCESSING 3 8 1 +1258 2019-11-24 13:08:08.675928+00 155 BIOREACTION ENGINEERING 3 8 1 +1259 2019-11-24 13:08:08.688367+00 154 Technical Communication 3 8 1 +1260 2019-11-24 13:08:08.701169+00 153 Cell & Developmental Biology 3 8 1 +1261 2019-11-24 13:08:08.713637+00 152 Genetics & Molecular Biology 3 8 1 +1262 2019-11-24 13:08:08.72665+00 151 Applied Microbiology 3 8 1 +1263 2019-11-24 13:08:08.738908+00 150 Biotechnology Laboratory – I 3 8 1 +1264 2019-11-24 13:08:08.75197+00 149 Biochemistry 3 8 1 +1265 2019-11-24 13:08:08.764477+00 148 Training Seminar 3 8 1 +1266 2019-11-24 13:08:08.777487+00 147 Drug Designing 3 8 1 +1267 2019-11-24 13:08:08.78955+00 146 Protein Engineering 3 8 1 +1268 2019-11-24 13:08:08.802613+00 145 Genomics and Proteomics 3 8 1 +1269 2019-11-24 13:08:08.815034+00 144 B.Tech. Project 3 8 1 +1270 2019-11-24 13:08:08.828005+00 143 Technical Communication 3 8 1 +1271 2019-11-24 13:08:08.840162+00 142 CELL AND TISSUE ENGINEERING 3 8 1 +1272 2019-11-24 13:08:08.853341+00 141 IMMUNOTECHNOLOGY 3 8 1 +1273 2019-11-24 13:08:08.865491+00 140 GENETICS AND MOLECULAR BIOLOGY 3 8 1 +1274 2019-11-24 13:08:08.878405+00 139 Computer Programming 3 8 1 +1275 2019-11-24 13:08:08.890835+00 138 Introduction to Biotechnology 3 8 1 +1276 2019-11-24 13:08:08.903954+00 137 Molecular Biophysics 3 8 1 +1277 2019-11-24 13:08:08.916225+00 136 Animal Biotechnology 3 8 1 +1278 2019-11-24 13:08:08.937719+00 135 Plant Biotechnology 3 8 1 +1279 2019-11-24 13:08:08.949664+00 134 Bioseparation Engineering 3 8 1 +1280 2019-11-24 13:08:08.962668+00 133 Bioprocess Engineering 3 8 1 +1281 2019-11-24 13:08:08.974972+00 132 Chemical Kinetics and Reactor Design 3 8 1 +1282 2019-11-24 13:08:08.98791+00 131 BIOINFORMATICS 3 8 1 +1283 2019-11-24 13:08:09.000218+00 130 MICROBIOLOGY 3 8 1 +1284 2019-11-24 13:08:09.022016+00 129 Professional Training 3 8 1 +1285 2019-11-24 13:08:09.034392+00 128 Planning Studio-III 3 8 1 +1286 2019-11-24 13:08:09.047572+00 127 DISSERTATION STAGE-I 3 8 1 +1287 2019-11-24 13:08:09.059941+00 126 Professional Training 3 8 1 +1288 2019-11-24 13:08:09.072942+00 125 Design Studio-III 3 8 1 +1289 2019-11-24 13:08:09.085329+00 124 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 3 8 1 +1290 2019-11-24 13:08:09.098188+00 123 Housing 3 8 1 +1291 2019-11-24 13:08:09.110506+00 122 Planning Theory and Techniques 3 8 1 +1292 2019-11-24 13:08:09.123549+00 121 Ecology and Sustainable Development 3 8 1 +1293 2019-11-24 13:08:09.136462+00 120 Infrastructure Planning 3 8 1 +1386 2020-02-19 12:19:53.74024+00 25 cmnzmcxz, 3 11 1 +1294 2019-11-24 13:08:09.148896+00 119 Socio Economics, Demography and Quantitative Techniques 3 8 1 +1295 2019-11-24 13:08:09.161782+00 118 Planning Studio-I 3 8 1 +1296 2019-11-24 13:08:09.174142+00 117 Computer Applications in Architecture 3 8 1 +1297 2019-11-24 13:08:09.187141+00 116 Advanced Building Technologies 3 8 1 +1298 2019-11-24 13:08:09.222788+00 115 Urban Design 3 8 1 +1299 2019-11-24 13:08:09.257102+00 114 Contemporary Architecture- Theories and Trends 3 8 1 +1300 2019-11-24 13:08:09.280778+00 113 Design Studio-I 3 8 1 +1301 2019-11-24 13:08:09.627571+00 112 Live Project/Studio/Seminar-II 3 8 1 +1302 2019-11-24 13:08:10.045431+00 111 Vastushastra 3 8 1 +1303 2019-11-24 13:08:10.115512+00 110 Hill Architecture 3 8 1 +1304 2019-11-24 13:08:10.184901+00 109 Urban Planning 3 8 1 +1305 2019-11-24 13:08:10.221108+00 108 Thesis Project I 3 8 1 +1306 2019-11-24 13:08:10.240537+00 107 Architectural Design-VII 3 8 1 +1307 2019-11-24 13:08:10.25248+00 106 Live Project/ Studio/ Seminar-I 3 8 1 +1308 2019-11-24 13:08:10.265411+00 105 Ekistics 3 8 1 +1309 2019-11-24 13:08:10.278274+00 104 Working Drawing 3 8 1 +1310 2019-11-24 13:08:10.290916+00 103 Sustainable Architecture 3 8 1 +1311 2019-11-24 13:08:10.32835+00 102 Urban Design 3 8 1 +1312 2019-11-24 13:08:10.341063+00 101 Architectural Design-VI 3 8 1 +1313 2019-11-24 13:08:10.353748+00 100 MODERN INDIAN ARCHITECTURE 3 8 1 +1314 2019-11-24 13:08:10.366016+00 99 Interior Design 3 8 1 +1315 2019-11-24 13:08:10.395382+00 98 Computer Applications in Architecture 3 8 1 +1316 2019-11-24 13:08:10.407945+00 97 Building Construction-IV 3 8 1 +1317 2019-11-24 13:08:10.420985+00 96 Architectural Design-IV 3 8 1 +1318 2019-11-24 13:08:10.43338+00 95 MEASURED DRAWING CAMP 3 8 1 +1319 2019-11-24 13:08:10.446084+00 94 PRICIPLES OF ARCHITECTURE 3 8 1 +1320 2019-11-24 13:08:10.458439+00 93 STRUCTURE AND ARCHITECTURE 3 8 1 +1321 2019-11-24 13:08:10.471552+00 92 QUANTITY, PRICING AND SPECIFICATIONS 3 8 1 +1322 2019-11-24 13:08:10.48394+00 91 HISTORY OF ARCHITECTUTRE I 3 8 1 +1323 2019-11-24 13:08:10.496696+00 90 BUILDING CONSTRUCTION II 3 8 1 +1324 2019-11-24 13:08:10.509316+00 89 Architectural Design-III 3 8 1 +1325 2019-11-24 13:08:10.522098+00 88 ARCHITECTURAL DESIGN II 3 8 1 +1326 2019-11-24 13:08:10.534554+00 87 Basic Design and Creative Workshop I 3 8 1 +1327 2019-11-24 13:08:10.547507+00 86 Architectural Graphics I 3 8 1 +1328 2019-11-24 13:08:10.559557+00 85 Visual Art I 3 8 1 +1329 2019-11-24 13:08:10.572376+00 84 Introduction to Architecture 3 8 1 +1330 2019-11-24 13:08:10.584672+00 83 SEMINAR 3 8 1 +1331 2019-11-24 13:08:10.597299+00 82 Regional Planning 3 8 1 +1332 2019-11-24 13:08:10.609656+00 81 Planning Legislation and Governance 3 8 1 +1333 2019-11-24 13:08:10.622761+00 80 Modern World Architecture 3 8 1 +1334 2019-11-24 13:08:10.63542+00 79 SEMINAR 3 8 1 +1335 2019-11-24 13:08:10.648338+00 78 Advanced Characterization Techniques 3 8 1 +1336 2019-11-24 13:08:41.54875+00 94 Water Resources Development and Management 3 7 1 +1337 2019-11-24 13:08:41.972006+00 93 Physics 3 7 1 +1338 2019-11-24 13:08:41.996545+00 92 Polymer and Process Engineering 3 7 1 +1339 2019-11-24 13:08:42.039213+00 91 Paper Technology 3 7 1 +1340 2019-11-24 13:08:42.051158+00 90 Metallurgical and Materials Engineering 3 7 1 +1341 2019-11-24 13:08:42.062923+00 89 Mechanical and Industrial Engineering 3 7 1 +1342 2019-11-24 13:08:42.07576+00 88 Mathematics 3 7 1 +1343 2019-11-24 13:08:42.088499+00 87 Management Studies 3 7 1 +1344 2019-11-24 13:08:42.101074+00 86 Hydrology 3 7 1 +1345 2019-11-24 13:08:42.114043+00 85 Humanities and Social Sciences 3 7 1 +1346 2019-11-24 13:08:42.139229+00 84 Electronics and Communication Engineering 3 7 1 +1347 2019-11-24 13:08:42.152155+00 83 Electrical Engineering 3 7 1 +1348 2019-11-24 13:08:42.165021+00 82 Earth Sciences 3 7 1 +1349 2019-11-24 13:08:42.177501+00 81 Earthquake 3 7 1 +1350 2019-11-24 13:08:42.189896+00 80 Computer Science and Engineering 3 7 1 +1351 2019-11-24 13:08:42.203082+00 79 Civil Engineering 3 7 1 +1352 2019-11-24 13:08:42.215442+00 78 Chemistry 3 7 1 +1353 2019-11-24 13:08:42.229093+00 77 Chemical Engineering 3 7 1 +1354 2019-11-24 13:08:42.24134+00 76 Biotechnology 3 7 1 +1355 2019-11-24 13:08:42.254229+00 75 Architecture and Planning 3 7 1 +1356 2019-11-24 13:08:42.266802+00 74 Applied Science and Engineering 3 7 1 +1357 2019-11-24 13:08:42.279485+00 73 Hydro and Renewable Energy 3 7 1 +1358 2019-11-24 13:48:10.657609+00 26 ECN-212 End term solution.PDF 2 [{"changed": {"fields": ["filetype"]}}] 10 1 +1359 2019-11-24 13:48:16.406004+00 25 ECN-212 quiz 2 solution.PDF 2 [{"changed": {"fields": ["filetype"]}}] 10 1 +1360 2019-11-26 18:15:40.120774+00 26 ECN-212 End term solution.PDF 2 [{"changed": {"fields": ["finalized"]}}] 10 1 +1361 2019-11-26 18:15:46.701918+00 25 ECN-212 quiz 2 solution.PDF 2 [{"changed": {"fields": ["finalized"]}}] 10 1 +1362 2019-12-26 09:25:27.993648+00 26 ECN-212 End term solution.PDF 2 [{"changed": {"fields": ["filetype"]}}] 10 1 +1363 2019-12-26 09:25:35.352011+00 26 ECN-212 End term solution.PDF 2 [{"changed": {"fields": ["filetype"]}}] 10 1 +1364 2019-12-26 09:25:42.861594+00 25 ECN-212 quiz 2 solution.PDF 2 [{"changed": {"fields": ["filetype"]}}] 10 1 +1365 2019-12-28 09:29:01.392535+00 1 Ayan 1 [{"added": {}}] 12 1 +1366 2019-12-28 09:39:58.228991+00 1 Ayan 2 [{"changed": {"fields": ["department"]}}] 12 1 +1367 2019-12-28 10:02:21.365372+00 1 R.C.Hibberler 2 [{"changed": {"fields": ["filetype"]}}] 11 1 +1368 2019-12-28 10:25:05.086939+00 2 Advik 1 [{"added": {}}] 12 1 +1369 2020-01-22 16:55:09.879734+00 26 ECN-212 End term solution.PDF 2 [] 10 1 +1370 2020-02-17 10:11:30.05166+00 1 Ayan 3 12 1 +1371 2020-02-17 10:11:37.783429+00 2 Advik 3 12 1 +1372 2020-02-17 10:12:39.419559+00 5 darkrider 3 12 1 +1373 2020-02-17 18:16:42.689288+00 5 Tutorial 1 1 [{"added": {}}] 11 1 +1374 2020-02-17 18:52:09.765697+00 5 Tutorial 1 3 11 1 +1375 2020-02-17 19:03:21.018189+00 6 Tutorial 1 1 [{"added": {}}] 11 1 +1376 2020-02-19 12:19:53.44127+00 35 mcdnms 3 11 1 +1377 2020-02-19 12:19:53.614522+00 34 ddsfsd 3 11 1 +1378 2020-02-19 12:19:53.626865+00 33 czxc 3 11 1 +1379 2020-02-19 12:19:53.639017+00 32 saSAAD 3 11 1 +1380 2020-02-19 12:19:53.651912+00 31 mflemflksd 3 11 1 +1381 2020-02-19 12:19:53.677266+00 30 dsads 3 11 1 +1382 2020-02-19 12:19:53.689651+00 29 dmsndkanskm 3 11 1 +1383 2020-02-19 12:19:53.702549+00 28 msdlkadmlas 3 11 1 +1384 2020-02-19 12:19:53.714902+00 27 mckldmslc 3 11 1 +1385 2020-02-19 12:19:53.728112+00 26 cnancam 3 11 1 +1389 2020-02-19 12:19:53.778647+00 22 djaksdnkjas 3 11 1 +1390 2020-02-19 12:19:53.790839+00 21 ndkjadns 3 11 1 +1391 2020-02-19 12:19:53.803719+00 20 dmsa dmskd 3 11 1 +1392 2020-02-19 12:19:53.816194+00 19 cjkdnk 3 11 1 +1393 2020-02-19 12:19:53.829109+00 18 ncksad 3 11 1 +1394 2020-02-19 12:19:53.841453+00 17 dsadas 3 11 1 +1395 2020-02-19 12:19:53.854416+00 16 ncmznc,m 3 11 1 +1396 2020-02-19 12:19:53.866808+00 15 fdfd 3 11 1 +1397 2020-02-19 12:19:53.880535+00 14 tut 1 3 11 1 +1398 2020-02-19 12:19:53.89209+00 13 book 1 3 11 1 +1399 2020-02-19 12:19:54.01109+00 12 cdnms,d 3 11 1 +1400 2020-02-19 12:19:54.02392+00 11 cnxm,zc 3 11 1 +1401 2020-02-19 12:19:54.039887+00 10 nkldnks 3 11 1 +1402 2020-02-19 12:19:54.052902+00 9 nkjsndakcj 3 11 1 +1403 2020-02-19 12:19:54.065239+00 8 bjkdsbfc 3 11 1 +1404 2020-02-19 12:19:54.078164+00 7 R.C.Hibberler 3 11 1 +1405 2020-02-19 12:19:54.090569+00 6 Tutorial 1 3 11 1 +1406 2020-02-19 12:20:09.936114+00 43 circuitverse.png 3 13 1 +1407 2020-02-19 12:20:10.061328+00 42 blackclover.jpg 3 13 1 +1408 2020-02-19 12:20:10.203331+00 41 circuitverse.png 3 13 1 +1409 2020-02-19 12:20:10.347084+00 40 blackclover.jpg 3 13 1 +1410 2020-02-19 12:20:10.498397+00 39 circuitverse.png 3 13 1 +1411 2020-02-19 12:20:10.642258+00 38 blackclover.jpg 3 13 1 +1412 2020-02-19 12:20:10.794014+00 37 circuitverse.png 3 13 1 +1413 2020-02-19 12:20:10.937252+00 36 blackclover.jpg 3 13 1 +1414 2020-02-19 12:20:11.080458+00 35 circuitverse.png 3 13 1 +1415 2020-02-19 12:20:11.257625+00 34 blackclover.jpg 3 13 1 +1416 2020-02-19 12:20:11.408973+00 33 circuitverse.png 3 13 1 +1417 2020-02-19 12:20:11.569086+00 32 blackclover.jpg 3 13 1 +1418 2020-02-19 12:20:11.712343+00 31 circuitverse.png 3 13 1 +1419 2020-02-19 12:20:11.872773+00 30 blackclover.jpg 3 13 1 +1420 2020-02-19 12:20:12.031894+00 29 deathnote.jpg 3 13 1 +1421 2020-02-19 12:20:12.20853+00 28 circuitverse.png 3 13 1 +1422 2020-02-19 12:20:12.367915+00 27 blackclover.jpg 3 13 1 +1423 2020-02-19 12:20:12.50434+00 26 deathnote.jpg 3 13 1 +1424 2020-02-19 12:20:12.51587+00 25 deathnote.jpg 3 13 1 +1425 2020-02-19 12:20:12.528792+00 24 circuitverse.png 3 13 1 +1426 2020-02-19 12:20:12.541587+00 23 blackclover.jpg 3 13 1 +1427 2020-02-19 12:20:12.554141+00 22 circuitverse.png 3 13 1 +1428 2020-02-19 12:20:12.566465+00 21 deathnote.jpg 3 13 1 +1429 2020-02-19 12:20:12.579371+00 20 blackclover.jpg 3 13 1 +1430 2020-02-19 12:20:12.592506+00 19 circuitverse.png 3 13 1 +1431 2020-02-19 12:20:12.604697+00 18 deathparade.jpg 3 13 1 +1432 2020-02-19 12:20:12.617113+00 17 circuitverse.png 3 13 1 +1433 2020-02-19 12:20:12.629992+00 16 blackclover.jpg 3 13 1 +1434 2020-02-19 12:20:12.643086+00 15 circuitverse.png 3 13 1 +1435 2020-02-19 12:20:12.655742+00 14 blackclover.jpg 3 13 1 +1436 2020-02-19 12:20:12.667703+00 13 circuitverse.png 3 13 1 +1437 2020-02-19 12:20:12.680642+00 12 blackclover.jpg 3 13 1 +1438 2020-02-19 12:20:12.693202+00 11 circuitverse.png 3 13 1 +1439 2020-02-19 12:20:12.714066+00 10 blackclover.jpg 3 13 1 +1440 2020-02-19 12:20:12.727058+00 9 circuitverse.png 3 13 1 +1441 2020-02-19 12:20:12.739935+00 8 blackclover.jpg 3 13 1 +1442 2020-02-19 12:20:12.752428+00 7 circuitverse.png 3 13 1 +1443 2020-02-19 12:20:12.764757+00 6 deathparade.jpg 3 13 1 +1444 2020-02-19 12:20:12.777788+00 5 Dororo.jpeg 3 13 1 +1445 2020-02-19 12:20:12.790201+00 4 deathnote.jpg 3 13 1 +1446 2020-02-19 12:20:12.802946+00 3 blackclover.jpg 3 13 1 +1447 2020-02-19 12:20:12.815358+00 2 asdf 3 13 1 +1448 2020-02-19 12:20:12.828374+00 1 asdf 3 13 1 +1449 2020-02-19 13:45:46.455439+00 116 Water Resources Development and Management 3 7 1 +1450 2020-02-19 13:45:46.741383+00 115 Physics 3 7 1 +1451 2020-02-19 13:45:46.75346+00 114 Polymer and Process Engineering 3 7 1 +1452 2020-02-19 13:45:46.766373+00 113 Paper Technology 3 7 1 +1453 2020-02-19 13:45:46.779921+00 112 Metallurgical and Materials Engineering 3 7 1 +1454 2020-02-19 13:45:46.791785+00 111 Mechanical and Industrial Engineering 3 7 1 +1455 2020-02-19 13:45:46.804639+00 110 Mathematics 3 7 1 +1456 2020-02-19 13:45:46.81704+00 109 Management Studies 3 7 1 +1457 2020-02-19 13:45:46.830061+00 108 Hydrology 3 7 1 +1458 2020-02-19 13:45:46.842492+00 107 Humanities and Social Sciences 3 7 1 +1459 2020-02-19 13:45:46.920611+00 106 Electronics and Communication Engineering 3 7 1 +1460 2020-02-19 13:45:46.990928+00 105 Electrical Engineering 3 7 1 +1461 2020-02-19 13:45:47.003245+00 104 Earth Sciences 3 7 1 +1462 2020-02-19 13:45:47.015963+00 103 Earthquake 3 7 1 +1463 2020-02-19 13:45:47.029003+00 102 Computer Science and Engineering 3 7 1 +1464 2020-02-19 13:45:47.041439+00 101 Civil Engineering 3 7 1 +1465 2020-02-19 13:45:47.054544+00 100 Chemistry 3 7 1 +1466 2020-02-19 13:45:47.066936+00 99 Chemical Engineering 3 7 1 +1467 2020-02-19 13:45:47.080571+00 98 Biotechnology 3 7 1 +1468 2020-02-19 13:45:47.092692+00 97 Architecture and Planning 3 7 1 +1469 2020-02-19 13:45:47.105206+00 96 Applied Science and Engineering 3 7 1 +1470 2020-02-19 13:45:47.175317+00 95 Hydro and Renewable Energy 3 7 1 +\. + + +-- +-- Data for Name: django_content_type; Type: TABLE DATA; Schema: public; Owner: studyportal +-- + +COPY public.django_content_type (id, app_label, model) FROM stdin; +1 admin logentry +2 auth permission +3 auth group +4 auth user +5 contenttypes contenttype +6 sessions session +7 rest_api department +8 rest_api course +9 rest_api file +10 users user +11 users upload +12 users filerequest +13 users courserequest +\. + + +-- +-- Data for Name: django_migrations; Type: TABLE DATA; Schema: public; Owner: studyportal +-- + +COPY public.django_migrations (id, app, name, applied) FROM stdin; +1 contenttypes 0001_initial 2020-04-21 04:46:50.815834+00 +2 auth 0001_initial 2020-04-21 04:46:51.267857+00 +3 admin 0001_initial 2020-04-21 04:46:51.877263+00 +4 admin 0002_logentry_remove_auto_add 2020-04-21 04:46:51.935797+00 +5 admin 0003_logentry_add_action_flag_choices 2020-04-21 04:46:51.951519+00 +6 contenttypes 0002_remove_content_type_name 2020-04-21 04:46:51.995498+00 +7 auth 0002_alter_permission_name_max_length 2020-04-21 04:46:52.012435+00 +8 auth 0003_alter_user_email_max_length 2020-04-21 04:46:52.032474+00 +9 auth 0004_alter_user_username_opts 2020-04-21 04:46:52.054022+00 +10 auth 0005_alter_user_last_login_null 2020-04-21 04:46:52.070341+00 +11 auth 0006_require_contenttypes_0002 2020-04-21 04:46:52.080437+00 +12 auth 0007_alter_validators_add_error_messages 2020-04-21 04:46:52.4582+00 +13 auth 0008_alter_user_username_max_length 2020-04-21 04:46:52.487624+00 +14 auth 0009_alter_user_last_name_max_length 2020-04-21 04:46:52.502443+00 +15 auth 0010_alter_group_name_max_length 2020-04-21 04:46:52.522297+00 +16 auth 0011_update_proxy_permissions 2020-04-21 04:46:52.542773+00 +17 rest_api 0001_initial 2020-04-21 04:46:52.625661+00 +18 rest_api 0002_department_url 2020-04-21 04:46:52.655064+00 +19 rest_api 0003_course 2020-04-21 04:46:52.681877+00 +20 rest_api 0004_auto_20190830_2153 2020-04-21 04:46:54.240855+00 +21 rest_api 0005_file 2020-04-21 04:46:54.269148+00 +22 rest_api 0006_auto_20191003_1214 2020-04-21 04:46:54.323049+00 +23 rest_api 0007_auto_20191003_1215 2020-04-21 04:46:54.36131+00 +24 rest_api 0008_auto_20191003_1224 2020-04-21 04:46:54.379424+00 +25 rest_api 0009_file_file 2020-04-21 04:46:54.424263+00 +26 rest_api 0010_auto_20191007_1553 2020-04-21 04:46:57.131314+00 +27 rest_api 0011_auto_20191007_1556 2020-04-21 04:46:57.187674+00 +28 rest_api 0012_auto_20191007_1610 2020-04-21 04:46:57.236327+00 +29 rest_api 0013_auto_20191007_1710 2020-04-21 04:46:57.259631+00 +30 rest_api 0014_auto_20191007_1749 2020-04-21 04:46:57.397688+00 +31 rest_api 0015_auto_20191007_2136 2020-04-21 04:46:57.434335+00 +32 rest_api 0016_auto_20191014_1632 2020-04-21 04:46:57.452871+00 +33 rest_api 0017_auto_20191014_1711 2020-04-21 04:46:57.469895+00 +34 rest_api 0018_auto_20191014_1712 2020-04-21 04:46:57.481056+00 +35 rest_api 0019_auto_20191031_1024 2020-04-21 04:46:57.878797+00 +36 rest_api 0020_file_size 2020-04-21 04:46:57.925868+00 +37 rest_api 0021_file_fileext 2020-04-21 04:46:57.97637+00 +38 rest_api 0022_auto_20191031_1122 2020-04-21 04:46:58.022838+00 +39 rest_api 0023_auto_20191103_1613 2020-04-21 04:46:58.641662+00 +40 rest_api 0024_auto_20191124_1223 2020-04-21 04:46:58.654608+00 +41 rest_api 0025_auto_20191126_1724 2020-04-21 04:46:58.715034+00 +42 rest_api 0026_auto_20191126_1730 2020-04-21 04:46:58.756393+00 +43 rest_api 0027_file_finalized 2020-04-21 04:46:58.800435+00 +44 rest_api 0019_auto_20191022_1439 2020-04-21 04:46:58.819634+00 +45 rest_api 0028_merge_20191226_0724 2020-04-21 04:46:58.82587+00 +46 rest_api 0029_auto_20191226_0924 2020-04-21 04:46:58.864999+00 +47 rest_api 0030_upload_title 2020-04-21 04:46:59.09719+00 +48 rest_api 0031_auto_20191226_1027 2020-04-21 04:46:59.123224+00 +49 rest_api 0032_auto_20191228_0928 2020-04-21 04:46:59.13932+00 +50 rest_api 0033_auto_20191228_0958 2020-04-21 04:46:59.153897+00 +51 rest_api 0034_auto_20200127_1608 2020-04-21 04:46:59.193955+00 +52 rest_api 0035_upload_filetype 2020-04-21 04:46:59.758784+00 +53 rest_api 0036_remove_user_department 2020-04-21 04:46:59.78113+00 +54 rest_api 0037_user_courses 2020-04-21 04:46:59.828929+00 +55 rest_api 0038_request_date 2020-04-21 04:46:59.902852+00 +56 rest_api 0039_upload_date 2020-04-21 04:46:59.962785+00 +57 rest_api 0040_auto_20200218_1534 2020-04-21 04:46:59.997072+00 +58 rest_api 0041_courserequest 2020-04-21 04:47:00.333629+00 +59 rest_api 0042_courserequest_date 2020-04-21 04:47:00.393044+00 +60 rest_api 0043_upload_status 2020-04-21 04:47:00.464266+00 +61 rest_api 0044_auto_20200407_2005 2020-04-21 04:47:00.532229+00 +62 sessions 0001_initial 2020-04-21 04:47:00.585126+00 +63 users 0001_initial 2020-04-21 04:47:01.034612+00 +66 rest_api 0045_auto_20200422_0506 2020-04-22 05:06:47.739848+00 +67 rest_api 0046_auto_20200422_0520 2020-04-22 05:20:56.547614+00 +\. + + +-- +-- Data for Name: django_session; Type: TABLE DATA; Schema: public; Owner: studyportal +-- + +COPY public.django_session (session_key, session_data, expire_date) FROM stdin; +7o4m4gi683ngfbgtrd4boqdr3ymhrmpo MGQwNzU0Y2FlMmY4OTVhMjc5NjQzMmVjZjIwYzgyNDU3NjYzZTE0YTp7Il9hdXRoX3VzZXJfaWQiOiIxIiwiX2F1dGhfdXNlcl9iYWNrZW5kIjoiZGphbmdvLmNvbnRyaWIuYXV0aC5iYWNrZW5kcy5Nb2RlbEJhY2tlbmQiLCJfYXV0aF91c2VyX2hhc2giOiI2YjQ2MWUyYjJiNWYxNjhkNWVkYWUxNWE5YjNkNmMwZTVmYWEyZTQ1In0= 2019-09-13 22:06:15.6475+00 +6u927wty7bauw3hrgjf05m9v7ceinqrr MGQwNzU0Y2FlMmY4OTVhMjc5NjQzMmVjZjIwYzgyNDU3NjYzZTE0YTp7Il9hdXRoX3VzZXJfaWQiOiIxIiwiX2F1dGhfdXNlcl9iYWNrZW5kIjoiZGphbmdvLmNvbnRyaWIuYXV0aC5iYWNrZW5kcy5Nb2RlbEJhY2tlbmQiLCJfYXV0aF91c2VyX2hhc2giOiI2YjQ2MWUyYjJiNWYxNjhkNWVkYWUxNWE5YjNkNmMwZTVmYWEyZTQ1In0= 2019-10-04 22:12:23.466624+00 +kcornx24qad8lybhmkdzxut0fbo0v24p MGQwNzU0Y2FlMmY4OTVhMjc5NjQzMmVjZjIwYzgyNDU3NjYzZTE0YTp7Il9hdXRoX3VzZXJfaWQiOiIxIiwiX2F1dGhfdXNlcl9iYWNrZW5kIjoiZGphbmdvLmNvbnRyaWIuYXV0aC5iYWNrZW5kcy5Nb2RlbEJhY2tlbmQiLCJfYXV0aF91c2VyX2hhc2giOiI2YjQ2MWUyYjJiNWYxNjhkNWVkYWUxNWE5YjNkNmMwZTVmYWEyZTQ1In0= 2019-10-21 15:38:28.988476+00 +k5dxdl9enq2r5iskqquhmx20g0kmv8zz MGQwNzU0Y2FlMmY4OTVhMjc5NjQzMmVjZjIwYzgyNDU3NjYzZTE0YTp7Il9hdXRoX3VzZXJfaWQiOiIxIiwiX2F1dGhfdXNlcl9iYWNrZW5kIjoiZGphbmdvLmNvbnRyaWIuYXV0aC5iYWNrZW5kcy5Nb2RlbEJhY2tlbmQiLCJfYXV0aF91c2VyX2hhc2giOiI2YjQ2MWUyYjJiNWYxNjhkNWVkYWUxNWE5YjNkNmMwZTVmYWEyZTQ1In0= 2019-11-05 14:41:19.106654+00 +i48mahob9r8em13vx0kwo4trairt9hbn MGQwNzU0Y2FlMmY4OTVhMjc5NjQzMmVjZjIwYzgyNDU3NjYzZTE0YTp7Il9hdXRoX3VzZXJfaWQiOiIxIiwiX2F1dGhfdXNlcl9iYWNrZW5kIjoiZGphbmdvLmNvbnRyaWIuYXV0aC5iYWNrZW5kcy5Nb2RlbEJhY2tlbmQiLCJfYXV0aF91c2VyX2hhc2giOiI2YjQ2MWUyYjJiNWYxNjhkNWVkYWUxNWE5YjNkNmMwZTVmYWEyZTQ1In0= 2019-12-08 12:08:22.046113+00 +xxay5199jkuedf2qbirjlnlhp28h1205 MGQwNzU0Y2FlMmY4OTVhMjc5NjQzMmVjZjIwYzgyNDU3NjYzZTE0YTp7Il9hdXRoX3VzZXJfaWQiOiIxIiwiX2F1dGhfdXNlcl9iYWNrZW5kIjoiZGphbmdvLmNvbnRyaWIuYXV0aC5iYWNrZW5kcy5Nb2RlbEJhY2tlbmQiLCJfYXV0aF91c2VyX2hhc2giOiI2YjQ2MWUyYjJiNWYxNjhkNWVkYWUxNWE5YjNkNmMwZTVmYWEyZTQ1In0= 2019-12-08 18:57:52.415646+00 +b5p11uvqhzv93cqbtspwj691qxc5bwbd MGQwNzU0Y2FlMmY4OTVhMjc5NjQzMmVjZjIwYzgyNDU3NjYzZTE0YTp7Il9hdXRoX3VzZXJfaWQiOiIxIiwiX2F1dGhfdXNlcl9iYWNrZW5kIjoiZGphbmdvLmNvbnRyaWIuYXV0aC5iYWNrZW5kcy5Nb2RlbEJhY2tlbmQiLCJfYXV0aF91c2VyX2hhc2giOiI2YjQ2MWUyYjJiNWYxNjhkNWVkYWUxNWE5YjNkNmMwZTVmYWEyZTQ1In0= 2020-01-09 09:25:15.002822+00 +vsktfn59wa7s4pg0jr1zgtovfgmbtyxu MGQwNzU0Y2FlMmY4OTVhMjc5NjQzMmVjZjIwYzgyNDU3NjYzZTE0YTp7Il9hdXRoX3VzZXJfaWQiOiIxIiwiX2F1dGhfdXNlcl9iYWNrZW5kIjoiZGphbmdvLmNvbnRyaWIuYXV0aC5iYWNrZW5kcy5Nb2RlbEJhY2tlbmQiLCJfYXV0aF91c2VyX2hhc2giOiI2YjQ2MWUyYjJiNWYxNjhkNWVkYWUxNWE5YjNkNmMwZTVmYWEyZTQ1In0= 2020-02-05 16:54:26.954061+00 +xob8htr6a71jnw7ustfknm0jt9urgpft MGQwNzU0Y2FlMmY4OTVhMjc5NjQzMmVjZjIwYzgyNDU3NjYzZTE0YTp7Il9hdXRoX3VzZXJfaWQiOiIxIiwiX2F1dGhfdXNlcl9iYWNrZW5kIjoiZGphbmdvLmNvbnRyaWIuYXV0aC5iYWNrZW5kcy5Nb2RlbEJhY2tlbmQiLCJfYXV0aF91c2VyX2hhc2giOiI2YjQ2MWUyYjJiNWYxNjhkNWVkYWUxNWE5YjNkNmMwZTVmYWEyZTQ1In0= 2020-02-26 18:41:12.609634+00 +ruvywij1q91vup5hpc8i6i45aqpi11je MGQwNzU0Y2FlMmY4OTVhMjc5NjQzMmVjZjIwYzgyNDU3NjYzZTE0YTp7Il9hdXRoX3VzZXJfaWQiOiIxIiwiX2F1dGhfdXNlcl9iYWNrZW5kIjoiZGphbmdvLmNvbnRyaWIuYXV0aC5iYWNrZW5kcy5Nb2RlbEJhY2tlbmQiLCJfYXV0aF91c2VyX2hhc2giOiI2YjQ2MWUyYjJiNWYxNjhkNWVkYWUxNWE5YjNkNmMwZTVmYWEyZTQ1In0= 2020-04-12 07:51:41.423674+00 +\. + + +-- +-- Data for Name: rest_api_course; Type: TABLE DATA; Schema: public; Owner: studyportal +-- + +COPY public.rest_api_course (id, title, department_id, code) FROM stdin; +1250 Advanced Characterization Techniques 118 AS-901 +1251 SEMINAR 118 ASN-700 +1252 Modern World Architecture 119 ARN-210 +1253 Planning Legislation and Governance 119 ARN-661 +1254 Regional Planning 119 ARN-676 +1255 SEMINAR 119 ARN-700 +1256 Introduction to Architecture 119 ARN-101 +1257 Visual Art I 119 ARN-103 +1258 Architectural Graphics I 119 ARN-105 +1259 Basic Design and Creative Workshop I 119 ARN-107 +1260 ARCHITECTURAL DESIGN II 119 ARN-201 +1261 Architectural Design-III 119 ARN-202 +1262 BUILDING CONSTRUCTION II 119 ARN-203 +1263 HISTORY OF ARCHITECTUTRE I 119 ARN-205 +1264 QUANTITY, PRICING AND SPECIFICATIONS 119 ARN-207 +1265 STRUCTURE AND ARCHITECTURE 119 ARN-209 +1266 PRICIPLES OF ARCHITECTURE 119 ARN-211 +1267 MEASURED DRAWING CAMP 119 ARN-213 +1268 Architectural Design-IV 119 ARN-301 +1269 Building Construction-IV 119 ARN-303 +1270 Computer Applications in Architecture 119 ARN-305 +1271 Interior Design 119 ARN-307 +1272 MODERN INDIAN ARCHITECTURE 119 ARN-311 +1273 Architectural Design-VI 119 ARN-401 +1274 Urban Design 119 ARN-403 +1275 Sustainable Architecture 119 ARN-405 +1276 Working Drawing 119 ARN-407 +1277 Ekistics 119 ARN-411 +1278 Live Project/ Studio/ Seminar-I 119 ARN-415 +1279 Architectural Design-VII 119 ARN-501 +1280 Thesis Project I 119 ARN-503 +1281 Urban Planning 119 ARN-505 +1282 Hill Architecture 119 ARN-507 +1283 Vastushastra 119 ARN-513 +1284 Live Project/Studio/Seminar-II 119 ARN-515 +1285 Design Studio-I 119 ARN-601 +1286 Contemporary Architecture- Theories and Trends 119 ARN-603 +1287 Urban Design 119 ARN-605 +1288 Advanced Building Technologies 119 ARN-607 +1289 Computer Applications in Architecture 119 ARN-609 +1290 Planning Studio-I 119 ARN-651 +1291 Socio Economics, Demography and Quantitative Techniques 119 ARN-653 +1292 Infrastructure Planning 119 ARN-654 +1293 Ecology and Sustainable Development 119 ARN-655 +1294 Planning Theory and Techniques 119 ARN-657 +1295 Housing 119 ARN-659 +1296 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 119 ARN-701A +1297 Design Studio-III 119 ARN-703 +1298 Professional Training 119 ARN-705 +1299 DISSERTATION STAGE-I 119 ARN-751A +1300 Planning Studio-III 119 ARN-753 +1301 Professional Training 119 ARN-755 +1302 MICROBIOLOGY 120 BTN-203 +1303 BIOINFORMATICS 120 BTN-205 +1304 Chemical Kinetics and Reactor Design 120 BTN-292 +1305 Bioprocess Engineering 120 BTN-301 +1306 Bioseparation Engineering 120 BTN-302 +1307 Plant Biotechnology 120 BTN-303 +1308 Animal Biotechnology 120 BTN-305 +1309 Molecular Biophysics 120 BTN-342 +1310 CELL AND TISSUE ENGINEERING 120 BTN-345 +1311 Introduction to Biotechnology 120 BTN-101 +1312 Computer Programming 120 BTN-103 +1313 GENETICS AND MOLECULAR BIOLOGY 120 BTN-201 +1314 IMMUNOTECHNOLOGY 120 BTN-207 +1315 Technical Communication 120 BTN-391 +1316 B.Tech. Project 120 BTN-400A +1317 Genomics and Proteomics 120 BTN-445 +1318 Protein Engineering 120 BTN-447 +1319 Drug Designing 120 BTN-455 +1320 Training Seminar 120 BTN-499 +1321 Biochemistry 120 BTN-512 +1322 Biotechnology Laboratory – I 120 BTN-513 +1323 Applied Microbiology 120 BTN-514 +1324 Genetics & Molecular Biology 120 BTN-515 +1325 Cell & Developmental Biology 120 BTN-516 +1326 Technical Communication 120 BTN-524 +1327 BIOREACTION ENGINEERING 120 BTN-531 +1328 DOWNSTREAM PROCESSING 120 BTN-532 +1329 Biophysical Techniques 120 BTN-611 +1330 Genetic Engineering 120 BTN-612 +1331 Seminar 120 BTN-613 +1332 Biotechnology Laboratory – III 120 BTN-614 +1333 Cell & Tissue Culture Technology 120 BTN-621 +1334 Vaccine Development & Production 120 BTN-625 +1335 Genomics and Proteomics 120 BTN-629 +1336 Structural Biology 120 BTN-632 +1337 Chemical Genetics and Drug Discovery 120 BTN-635 +1338 MICROBIOLOGY AND BIOCHEMISTRY 120 BTN-651 +1339 REACTION KINETICS AND REACTOR DESIGN 120 BTN-655 +1340 RECOMBINANT DNA TECHNOLOGY 120 BTN-657 +1341 ADVANCED TRANSPORT PROCESS 120 BTN-658 +1342 SEMINAR 120 BTN-700 +1343 DISSERTATION STAGE I 120 BTN-701A +1344 Advanced Thermodynamics and Molecular Simulations 121 CHE-507 +1345 Introduction to Chemical Engineering 121 CHN-101 +1346 Material and Energy Balance 121 CHN-102 +1347 Computer Programming and Numerical Methods 121 CHN-103 +1348 Mass Transfer -I 121 CHN-202 +1349 Mass Transfer 121 CHN-212 +1350 Mass Transfer-II 121 CHN-301 +1351 Computer Application in Chemical Engineering 121 CHN-323 +1352 Fluidization Engineering 121 CHN-326 +1353 Polymer Physics and Rheology* 121 CHN-411 +1354 Mathematical Methods in Chemical Engineering 121 CHE-501 +1355 Advanced Transport Phenomena 121 CHE-503 +1356 Advanced Reaction Engineering 121 CHE-505 +1357 Biochemical Engineering 121 CHE-513 +1358 COMPUTATIONAL FLUID DYNAMICS 121 CHE-515 +1359 SEMINAR 121 CHE-700 +1360 HEAT TRANSFER 121 CHN-201 +1361 MECHANICAL OPERATION 121 CHN-203 +1362 CHEMICAL ENGINEERING THERMODYNAMICS 121 CHN-205 +1363 Chemical Technology 121 CHN-206 +1364 CHEMICAL ENGINEERING THERMODYNAMICS 121 CHN-207 +1365 Fluid and Fluid Particle Mechanics 121 CHN-211 +1366 Enginering Analysis and Process Modeling 121 CHN-302 +1367 Process Dynamics and Control 121 CHN-303 +1368 Process Equipment Design* 121 CHN-305 +1369 Process Utilities and Safety 121 CHN-306 +1370 Optimization of Chemical Enigneering Processes 121 CHN-322 +1371 Process Integration 121 CHN-325 +1372 Technical Communication 121 CHN-391 +1373 B.Tech. Project 121 CHN-400A +1374 Training Seminar 121 CHN-499 +1375 SEMINAR 121 CHN-700 +1376 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 121 CHN-701A +1377 Water Supply Engineering 123 CE-104 +1378 Introduction to Civil Engineering 123 CEN-101 +1379 Solid Mechanics 123 CEN-102 +1380 Numerical Methods and Computer Programming 123 CEN-103 +1381 Introduction to Environmental Studies 123 CEN-105 +1382 Geomatics Engineering – I 123 CEN-106 +1383 Waste Water Engineering 123 CEN-202 +1384 Highway and Traffic Engineering 123 CEN-210 +1385 Design of Steel Elements 123 CEN-305 +1386 Railway Engineering and Airport Planning 123 CEN-307 +1387 Wastewater Treatment 123 CEN-503 +1388 Environmental Chemistry 123 CEN-504 +1389 Remote Sensing and Image Processing 123 CEN-513 +1390 Geodesy and GPS Surveying 123 CEN-514 +1391 Matrix Structural Analysis 123 CEN-541 +1392 Continuum Mechanics 123 CEN-542 +1393 Advanced Concrete Design 123 CEN-543 +1394 Structural Dynamics 123 CEN-544 +1395 Finite Element Analysis 123 CEN-545 +1396 Geometric Design 123 CEN-564 +1397 Industrial and Hazardous Waste Management 123 CEN-603 +1398 Behaviour & Design of Steel Structures (Autumn) 123 CEN-641 +1399 Road Traffic Safety 123 CEN-665 +1400 Transportation Planning 123 CEN-669 +1401 Urban Mass Transit Systems 123 CE-664 +1402 GEOMATICS ENGINEERING-II 123 CEN-203 +1403 CHANNEL HYDRAULICS 123 CEN-205 +1404 STRUCTURAL ANALYSIS-I 123 CEN-207 +1405 ENGINEERING GRAPHICS 123 CEN-291 +1406 Theory of Structures 123 CEN-292 +1407 Soil Mechanicas 123 CEN-303 +1408 Design of Reinforced Concrete Elements 123 CEN-381 +1409 Technical Communication 123 CEN-391 +1410 Design of Steel Elements 123 CEN-392 +1411 B.Tech. Project 123 CEN-400A +1412 WATER RESOURCE ENGINEERING 123 CEN-412 +1413 Advanced Water and Wastewater Treatment 123 CEN-421 +1414 Advanced Highway Engineering 123 CEN-431 +1415 Training Seminar 123 CEN-499 +1416 Environmental Modeling and Simulation 123 CEN-501 +1417 Water Treatment 123 CEN-502 +1418 Environmental Hydraulics 123 CEN-505 +1419 Surveying Measurements and Adjustments 123 CEN-511 +1420 Principles of Photogrammetry 123 CEN-512 +1421 FIELD SURVEY CAMP 123 CEN-515 +1422 Advanced Numerical Analysis 123 CEN-521 +1423 Advanced Soil Mechanics 123 CEN-522 +1424 Engineering Behaviour of Rocks 123 CEN-523 +1425 Soil Dynamics and Machine Foundations 123 CEN-524 +1426 Advanced Hydrology 123 CEN-531 +1427 Advanced Fluid Mechanics 123 CEN-532 +1428 Free Surface Flows 123 CEN-533 +1429 Modeling, Simulation and Optimization 123 CEN-534 +1430 Traffic Engineering and Modeling 123 CEN-561 +1431 Pavement Analysis and Design 123 CEN-562 +1432 Planning, Design and Construction of Rural Roads 123 CEN-563 +1433 Geoinformatics for Landuse Surveys 123 CEN-616 +1434 SEMINAR 123 CEN-700 +1435 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 123 CEN-701A +1436 Data Structures 124 CSN-102 +1437 OBJECT ORIENTED ANALYSIS AND DESIGN 124 CSN-291 +1438 Data Base Management Systems 124 CSN-351 +1439 Compiler Design 124 CSN-352 +1440 ARTIFICIAL INTELLIGENCE 124 CSN-371 +1441 MACHINE LEARNING 124 CSN-382 +1442 Data Mining and Warehousing 124 CSN-515 +1443 Logic and Automated Reasoning 124 CSN-518 +1444 Introduction to Computer Science and Engineering 124 CSN-101 +1445 Fundamentals of Object Oriented Programming 124 CSN-103 +1446 COMPUTER ARCHITECTURE AND MICROPROCESSORS 124 CSN-221 +1447 DATA STRUCTURE LABORATORY 124 CSN-261 +1448 Computer Network 124 CSN-341 +1449 Theory of Computation 124 CSN-353 +1450 Computer Network Laboratory 124 CSN-361 +1451 Technical Communication 124 CSN-391 +1452 B.Tech. Project 124 CSN-400A +1453 Training Seminar 124 CSN-499 +1454 Advanced Algorithms 124 CSN-501 +1455 Advanced Operating Systems 124 CSN-502 +1456 Advanced Computer Networks 124 CSN-503 +1457 Lab I (Programming Lab) 124 CSN-504 +1458 Lab II (Project Lab) 124 CSN-505 +1459 Advanced Topics in Software Engineering 124 CSN-517 +1460 SEMINAR 124 CSN-700 +1461 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 124 CSN-701A +1462 Theory of Vibrations 125 EQN-501 +1463 Vibration of Elastic Media 125 EQN-502 +1464 Engineering Seismology 125 EQN-503 +1465 Finite Element Method 125 EQN-504 +1466 Numerical Methods for Dynamic Systems 125 EQN-513 +1467 Geotechnical Earthquake Engineering 125 EQN-521 +1468 Seismic Hazard Assessment 125 EQN-525 +1691 Seminar 132 MAN-699 +1469 Seismological Modeling and Simulation 125 EQN-531 +1470 Vulnerability and Risk Analysis 125 EQN-532 +1471 Earthquake Resistant Design of Structures 125 EQN-563 +1472 Machine Foundation 125 EQN-572 +1473 Principles of Seismology 125 EQN-598 +1474 SEMINAR 125 EQN-700 +1475 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 125 EQN-701A +1476 Electrical Prospecting 126 ESN-323 +1477 Introduction to Earth Sciences 126 ESN-101 +1478 Computer Programming 126 ESN-103 +1479 BASIC PETROLOGY 126 ESN-201 +1480 PALEONTOLOGY 126 ESN-203 +1481 STRUCTURAL GEOLOGY-I 126 ESN-205 +1482 FIELD THEORY 126 ESN-221 +1483 GEOPHYSICAL PROSPECTING 126 ESN-223 +1484 Structural Geology-II 126 ESN-301 +1485 Metamorphic Petrology 126 ESN-303 +1486 Economic Geology 126 ESN-305 +1487 Gravity and Magnetic Prospecting 126 ESN-321 +1488 Seismology 126 ESN-325 +1489 ROCK AND SOIL MECHANICS 126 ESN-345 +1490 Technical Communication 126 ESN-391 +1491 PRINCIPLES OF REMOTE SENSING 126 ESN-401 +1492 PRINCIPLES OF GIS 126 ESN-403 +1493 ENGINEERING GEOLOGY 126 ESN-405 +1494 HYDROGEOLOGY 126 ESN-407 +1495 PETROLEUM GEOLOGY 126 ESN-409 +1496 Numerical Modelling in Geophysical 126 ESN-421 +1497 Geophysical Well logging 126 ESN-423 +1498 STRONG MOTION SEISMOGRAPH 126 ESN-477 +1499 Seminar-I 126 ESN-499 +1500 Comprehensive Viva Voce 126 ESN-509 +1501 Numerical Techniques and Computer Programming 126 ESN-510 +1502 Crystallography and Mineralogy 126 ESN-511 +1503 Geochemistry 126 ESN-512 +1504 Igneous Petrology 126 ESN-513 +1505 Structural Geology 126 ESN-514 +1506 Comprehensive Viva Voce 126 ESN-529 +1507 Sedimentology and Stratigraphy 126 ESN-531 +1508 Geophysical Prospecting 126 ESN-532 +1509 ISOTOPE GEOLOGY 126 ESN-547 +1510 Micropaleontology and Paleoceanography 126 ESN-551 +1511 Global Environment 126 ESN-553 +1512 DYNAMIC SYSTEMS IN EARTH SCIENCES 126 ESN-579 +1513 ADVANCED SEISMIC PROSPECTING 126 ESN-581 +1514 Seminar 126 ESN-599 +1515 Isotope Geology 126 ESN-603 +1516 Indian Mineral Deposits 126 ESN-606 +1517 Engineering Geology 126 ESN-607 +1518 Petroleum Geology 126 ESN-609 +1519 Well Logging 126 ESN-610 +1520 Plate Tectonics 126 ESN-611 +1521 SEMINAR 126 ESN-700 +1522 Electrical Science 127 EEN-112 +1523 Instrumentation laboratory 127 EEN-523 +1524 Introduction to Electrical Engineering 127 EEN-101 +1525 Network Theory 127 EEN-102 +1526 Programming in C++ 127 EEN-103 +1527 ELECTRICAL MACHINES-I 127 EEN-201 +1528 DIGITAL ELECTRONICS AND CIRCUITS 127 EEN-203 +1529 DESIGN OF ELECTRONICS CIRCUITS 127 EEN-205 +1530 ENGINEERING ANALYSIS AND DESIGN 127 EEN-291 +1531 Power System Analysis & Control 127 EEN-301 +1532 Power Electronics 127 EEN-303 +1533 Advanced Control Systems 127 EEN-305 +1534 Artificial Neural Networks 127 EEN-351 +1535 Signals and Systems 127 EEN-356 +1536 Data Structures 127 EEN-358 +1537 Embedded Systems 127 EEN-360 +1538 Technical Communication 127 EEN-391 +1539 B.Tech. Project 127 EEN-400A +1540 Training Seminar 127 EEN-499 +1541 Advanced Industrial and Electronic Instrumentation 127 EEN-520 +1542 Digital Signal and Image Processing 127 EEN-521 +1543 Biomedical Instrumentation 127 EEN-522 +1544 Advanced Power Electronics 127 EEN-540 +1545 Analysis of Electrical Machines 127 EEN-541 +1546 Advanced Electric Drives 127 EEN-542 +1547 Computer Aided Power System Analysis 127 EEN-560 +1548 Power System Operation and Control 127 EEN-561 +1549 Distribution System Analysis and Operation 127 EEN-562 +1550 EHV AC Transmission Systems 127 EEN-563 +1551 Advanced Linear Control Systems 127 EEN-580 +1552 Intelligent Control Techniques 127 EEN-581 +1553 Advanced System Engineering 127 EEN-582 +1554 Advances in Signal and Image Processing 127 EEN-626 +1555 Enhanced Power Quality AC-DC Converters 127 EEN-649 +1556 Power System Planning 127 EEN-661 +1557 Smart Grid 127 EEN-672 +1558 Introduction to Robotics 127 EEN-683 +1559 Modeling and Simulation 127 EEN-689 +1560 SEMINAR 127 EEN-700 +1561 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 127 EEN-701A +1562 Fundamental of Electronics 128 ECN-102 +1563 Principles of Digital Communication 128 ECN-212 +1564 Automatic Control Systems 128 ECN-222 +1565 Engineering Electromagnetics 128 ECN-232 +1566 Digital Electronic Circuits Laboratory 128 ECN-252 +1567 Communication Systems and Techniques 128 ECN-311 +1568 Antenna Theory 128 ECN-331 +1569 Microwave Engineering 128 ECN-333 +1570 Coding Theory and Applications 128 ECN-515 +1571 Fiber Optic Systems 128 ECN-539 +1572 Radar Signal Processing 128 ECN-550 +1573 RF System Design and Analysis 128 ECN-556 +1574 Microelectronics Lab-1 128 ECN-575 +1575 SIGNALS AND SYSTEMS 128 EC-202 +1576 Introduction to Electronics and Communication Engineering 128 ECN-101 +1577 SIGNALS AND SYSTEMS 128 ECN-203 +1578 ELECTRONICS NETWORK THEORY 128 ECN-291 +1579 Microelectronic Devices,Technology and Circuits 128 ECN-341 +1692 SEMINAR 132 MAN-900 +1580 Fundamentals of Microelectronics 128 ECN-343 +1581 IC Application Laboratory 128 ECN-351 +1582 Technical Communication 128 ECN-391 +1583 B.Tech. Project 128 ECN-400A +1584 Training Seminar 128 ECN-499 +1585 Laboratory 128 ECN-510 +1586 Digital Communication Systems 128 ECN-511 +1587 Information and Communication Theory 128 ECN-512 +1588 Telecommunication Networks 128 ECN-513 +1589 Microwave Lab 128 ECN-530 +1590 Microwave Engineering 128 ECN-531 +1591 Advanced EMFT 128 ECN-532 +1592 Antenna Theory & Design 128 ECN-534 +1593 Microwave and Millimeter Wave Circuits 128 ECN-554 +1594 MOS Device Physics 128 ECN-572 +1595 Digital VLSI Circuit Design 128 ECN-573 +1596 Simulation Lab-1 128 ECN-576 +1597 Digital System Design 128 ECN-578 +1598 Analog VLSI Circuit Design 128 ECN-581 +1599 SEMINAR 128 ECN-700 +1600 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 128 ECN-701A +1601 DISSERTATION STAGE-II (CONTINUED FROM III SEMESTER) 128 ECN-701B +1602 Communication skills (Basic) 129 HS-001A +1603 Technical Communication 129 HS-501 +1604 Communication Skills(Basic) 129 HSN-001A +1605 Communication Skills(Advance) 129 HSN-001B +1606 Introduction to Psychology 129 HSN-002 +1607 Society,Culture Built Environment 129 HSN-351 +1608 Technical Communication 129 HSN-501 +1609 Economics 129 HSS-01 +1610 Sociology 129 HSS-02 +1611 UNDERSTANDING PERSONALITY 129 HS-902 +1612 HSN-01 129 HSN-01 +1613 MICROECONOMICS I 129 HSN-502 +1614 MACROECONOMICS I 129 HSN-503 +1615 MATHEMATICS FOR ECONOMISTS 129 HSN-504 +1616 DEVELOPMENT ECONOMICS 129 HSN-505 +1617 MONEY, BANKING AND FINANCIAL MARKETS 129 HSN-506 +1618 ADVANCED ECONOMETRICS 129 HSN-512 +1619 PUBLIC POLICY; THEORY AND PRACTICE 129 HSN-513 +1620 Issues in Indian Economy 129 HSN-601 +1621 Introduction to Research Methodology 129 HSN-602 +1622 Ecological Economics 129 HSN-604 +1623 Advanced Topics in Growth Theory 129 HSN-607 +1624 SEMINAR 129 HSN-700 +1625 UNDERSTANDING PERSONLALITY 129 HSN-902 +1626 RESEARCH METHODOLOGY IN SOCIAL SCIENCES 129 HSN-908 +1627 RESEARCH METHODOLOGY IN LANGUAGE & LITERATURE 129 HSN-911 +1628 Engineering Hydrology 130 HYN-102 +1629 Irrigation and drainage engineering 130 HYN-562 +1630 Stochastic hydrology 130 HYN-522 +1631 Groundwater hydrology 130 HYN-527 +1632 Geophysical investigations 130 HYN-529 +1633 Watershed Behavior and Conservation Practices 130 HYN-531 +1634 Environmental quality 130 HYN-535 +1635 Remote sensing and GIS applications 130 HYN-537 +1636 Experimental hydrology 130 HYN-553 +1637 Soil and groundwater contamination modelling 130 HYN-560 +1638 Watershed modeling and simulation 130 HYN-571 +1639 SEMINAR 130 HYN-700 +1640 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 130 HYN-701A +1641 DISSERTATION STAGE-II (CONTINUED FROM III SEMESTER) 130 HYN-701B +1642 Mathematical Methods 132 MAN-002 +1643 Probability and Statistics 132 MAN-006 +1644 Real Analysis I 132 MAN-104 +1645 Theory of Computation 132 MAN-304 +1646 Combinatorial Mathematics 132 MAN-322 +1647 Complex Analysis-II 132 MAN-510 +1648 Complex Analysis 132 MAN-520 +1649 Combinatorial Mathematics 132 MAN-646 +1650 Probability and Statistics 132 MA-501C +1651 Optimization Techniques 132 MA-501E +1652 Numerical Methods, Probability and Statistics 132 MA-501F +1653 Mathematics-I 132 MAN-001 +1654 Introduction to Mathematical Sciences 132 MAN-101 +1655 Introduction to Computer Programming 132 MAN-103 +1656 COMPLEX ANALYSIS-I 132 MAN-201 +1657 DISCRETE MATHEMATICS 132 MAN-203 +1658 ORDINARY AND PARTIAL DIFFERENTIAL EQUATIONS 132 MAN-205 +1659 DESIGN AND ANALYSIS OF ALGORITHMS 132 MAN-291 +1660 Abstract Algebra-I 132 MAN-301 +1661 Mathematical Statistics 132 MAN-303 +1662 Linear Programming 132 MAN-305 +1663 MATHEMATICAL IMAGING TECHNOLOGY 132 MAN-325 +1664 Technical Communication 132 MAN-391 +1665 THEORY OF ORDINARY DIFFERENTIAL EQUATIONS 132 MAN-501 +1666 Real Analysis-II 132 MAN-503 +1667 Topology 132 MAN-505 +1668 Statistical Inference 132 MAN-507 +1669 Theory of Partial Differential Equations 132 MAN-508 +1670 Theory of Ordinary Differential Equations 132 MAN-511 +1671 Real Analysis 132 MAN-513 +1672 Topology 132 MAN-515 +1673 Abstract Algebra 132 MAN-517 +1674 Computer Programming 132 MAN-519 +1675 SOFT COMPUTING 132 MAN-526 +1676 Mathematics 132 MAN-561 +1677 Fluid Dynamics 132 MAN-601 +1678 Tensors and Differential Geometry 132 MAN-603 +1679 Functional Analysis 132 MAN-605 +1680 FUNCTIONAL ANALYSIS 132 MAN-611 +1681 OPERATIONS RESEARCH 132 MAN-613 +1682 SEMINAR 132 MAN-615 +1683 Mathematical Statistics 132 MAN-629 +1684 Advanced Numerical Analysis 132 MAN-642 +1685 Coding Theory 132 MAN-645 +1686 CONTROL THEORY 132 MAN-647 +1687 Dynamical Systems 132 MAN-648 +1688 Financial Mathematics 132 MAN-649 +1689 MEASURE THEORY 132 MAN-651 +1690 Orthogonal Polynomials and Special Functions 132 MAN-654 +1693 SELECTED TOPICS IN ANALYSIS 132 MAN-901 +1694 ADVANCED NUMERICAL ANALYSIS 132 MAN-902 +1695 Advanced Manufacturing Processes 133 MI-572 +1696 Introduction to Mechanical Engineering 133 MIN-101A +1697 Introduction to Production and Industrial Engineering 133 MIN-101B +1698 Programming and Data Structure 133 MIN-103 +1699 Engineering Thermodynamics 133 MIN-106 +1700 Mechanical Engineering Drawing 133 MIN-108 +1701 Fluid Mechanics 133 MIN-110 +1702 ENGINEERING ANALYSIS AND DESIGN 133 MIN-291 +1703 Lab Based Project 133 MIN-300 +1704 Machine Design 133 MIN-302 +1705 Heat and Mass Transfer 133 MIN-305 +1706 Theory of Production Processes-II 133 MIN-309 +1707 Work System Desing 133 MIN-313 +1708 Power Plants 133 MIN-343 +1709 Instrumentation and Experimental Methods 133 MIN-500 +1710 Computational Fluid Dynamics & Heat Transfer 133 MIN-527 +1711 Computer Aided Mechanism Design 133 MIN-554 +1712 Finite Element Methods 133 MIN-557 +1713 Advanced Mechanical Vibrations 133 MIN-561 +1714 Smart Materials, Structures, and Devices 133 MIN-565 +1715 KINEMATICS OF MACHINES 133 MIN-201 +1716 MANUFACTURING TECHNOLOGY-II 133 MIN-203 +1717 FLUID MECHANICS 133 MIN-205 +1718 THERMAL ENGINEERING 133 MIN-209 +1719 Energy Conversion 133 MIN-210 +1720 THEORY OF MACHINES 133 MIN-211 +1721 Theory of Production Processes - I 133 MIN-216 +1722 Dynamics of Machines 133 MIN-301 +1723 Principles of Industrial Enigneering 133 MIN-303 +1724 Operations Research 133 MIN-311 +1725 Vibration and Noise 133 MIN-321 +1726 Industrial Management 133 MIN-333 +1727 Refrigeration and Air-Conditioning 133 MIN-340 +1728 Technical Communication 133 MIN-391 +1729 B.Tech. Project 133 MIN-400A +1730 Training Seminar 133 MIN-499 +1731 Robotics and Control 133 MIN-502 +1732 Modeling and Simulation 133 MIN-511A +1733 Modeling and Simulation 133 MIN-511B +1734 Advanced Thermodynamics 133 MIN-520 +1735 Advanced Fluid Mechanics 133 MIN-521 +1736 Advanced Heat Transfer 133 MIN-522 +1737 Solar Energy 133 MIN-525 +1738 Hydro-dynamic Machines 133 MIN-531 +1739 Micro and Nano Scale Thermal Engineering 133 MIN-539 +1740 Dynamics of Mechanical Systems 133 MIN-551 +1741 Advanced Mechanics of Solids 133 MIN-552 +1742 Computer Aided Design 133 MIN-559 +1743 Operations Management 133 MIN-570 +1744 Quality Management 133 MIN-571 +1745 Advanced Manufacturing Processes 133 MIN-572 +1746 Design for Manufacturability 133 MIN-573 +1747 Machine Tool Design and Numerical Control 133 MIN-576 +1748 Materials Management 133 MIN-583 +1749 Non-Traditional Machining Processes 133 MIN-588 +1750 Non-Conventional Welding Processes 133 MIN-593 +1751 Numerical Methods in Manufacturing 133 MIN-606 +1752 SEMINAR 133 MIN-700 +1753 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 133 MIN-701A +1754 Printing Technology 136 PP-545 +1755 Pulping 136 PPN-501 +1756 Chemical Recovery Process 136 PPN-503 +1757 Paper Proprieties and Stock Preparation 136 PPN-505 +1758 Advanced Numerical Methods and Statistics 136 PPN-515 +1759 Process Instrumentation and Control 136 PPN-523 +1760 Packaging Principles, Processes and Sustainability 136 PPN-541 +1761 Packaging Materials 136 PPN-543 +1762 Printing Technology 136 PPN-545 +1763 Converting Processes for Packaging 136 PPN-547 +1764 SEMINAR 136 PPN-700 +1765 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 136 PPN-701A +1766 Computational Physics 137 PH-511(O) +1767 Physics of Earth’s Atmosphere 137 PH-512 +1768 Elements of Nuclear and Particle Physics 137 PH-514 +1769 Advanced Atmospheric Physics 137 PH-603 +1770 Mechanics 137 PHN-001 +1771 Electromagnetic Field Theory 137 PHN-003 +1772 Applied Physics 137 PHN-004 +1773 Electrodynamics and Optics 137 PHN-005 +1774 Quantum Mechanics and Statistical Mechanics 137 PHN-006 +1775 Engineering Analysis Design 137 PHN-205 +1776 Quantum Physics 137 PHN-211 +1777 Applied Optics 137 PHN-214 +1778 Plasma Physics and Applications 137 PHN-317 +1779 QUANTUM INFORMATION AND COMPUTING 137 PHN-427 +1780 Laboratory Work 137 PHN-502 +1781 Classical Electrodynamics 137 PHN-507 +1782 Physics of Earth’s Atmosphere 137 PHN-512 +1783 Advanced Atmospheric Physics 137 PHN-603 +1784 Weather Forecasting 137 PHN-629 +1785 Laboratory Work 137 PHN-701 +1786 Semiconductor Materials and Devices 137 PHN-703 +1787 Optical Electronics 137 PHN-713 +1788 QUARK GLUON PLASMA & FINITE TEMPERATURE FIELD THEORY 137 PH-920 +1789 Modern Physics 137 PHN-007 +1790 Introduction to Physical Science 137 PHN-101 +1791 Computer Programming 137 PHN-103 +1792 Atomic Molecular and Laser Physics 137 PHN-204 +1793 Mechanics and Relativity 137 PHN-207 +1794 Mathematical Physics 137 PHN-209 +1795 Microprocessors and Peripheral Devices 137 PHN-210 +1796 Lab-based Project 137 PHN-300 +1797 Applied Instrumentation 137 PHN-310 +1798 Numerical Analysis and Computational Physics 137 PHN-311 +1799 Signals and Systems 137 PHN-313 +1800 Laser & Photonics 137 PHN-315 +1801 Techincal Communication 137 PHN-319 +1802 Nuclear Astrophysics 137 PHN-331 +1803 B.Tech. Project 137 PHN-400A +1804 Training Seminar 137 PHN-499 +1805 Quantum Mechanics – I 137 PHN-503 +1806 Mathematical Physics 137 PHN-505 +1807 Classical Mechanics 137 PHN-509 +1808 SEMICONDUCTOR DEVICES AND APPLICATIONS 137 PHN-513 +1809 DISSERTATION STAGE-I 137 PHN-600A +1810 Advanced Condensed Matter Physics 137 PHN-601 +1811 Advanced Laser Physics 137 PHN-605 +1812 Advanced Nuclear Physics 137 PHN-607 +1813 Advanced Characterization Techniques 137 PHN-617 +1814 A Primer in Quantum Field Theory 137 PHN-619 +1815 Quantum Theory of Solids 137 PHN-627 +1816 Semiconductor Photonics 137 PHN-637 +1817 Numerical Analysis & Computer Programming 137 PHN-643 +1818 SEMINAR 137 PHN-699 +1819 SEMINAR 137 PHN-700 +1820 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 137 PHN-701A +1821 Computational Techniques and Programming 137 PHN-707 +1822 Semiconductor Device Physics 137 PHN-709 +1823 Laboratory Work in Photonics 137 PHN-711 +1824 Experimental Techniques 137 PHN-788 +1825 MATHEMATICAL AND COMPUTATIONAL TECHNIQUES 137 PHN-789 +1826 System Design Techniques 138 WRN-501 +1827 Design of Water Resources Structures 138 WRN-502 +1828 Water Resources Planning and Management 138 WRN-503 +1829 Applied Hydrology 138 WRN-504 +1830 Hydro Generating Equipment 138 WRN-531 +1831 Hydropower System Planning 138 WRN-532 +1832 Power System Protection Application 138 WRN-533 +1833 Design of Hydro Mechanical Equipment 138 WRN-551 +1834 Construction Planning and Management 138 WRN-552 +1835 Design of Irrigation Structures and Drainage Works 138 WRN-571 +1836 Principles and Practices of Irrigation 138 WRN-573 +1837 On Farm Development 138 WRN-575 +1838 SEMINAR 138 WRN-700 +1839 DISSERTATION STAGE-I (TO BE CONTINUED NEXT SEMESTER) 138 WRN-701A +\. + + +-- +-- Data for Name: rest_api_department; Type: TABLE DATA; Schema: public; Owner: studyportal +-- + +COPY public.rest_api_department (id, title, abbreviation, imageurl) FROM stdin; +117 Hydro and Renewable Energy HRED hred.png +118 Applied Science and Engineering ASED ased.png +119 Architecture and Planning ARCD arcd.png +120 Biotechnology BTD btd.png +121 Chemical Engineering CHED ched.png +122 Chemistry CYD cyd.png +123 Civil Engineering CED ced.png +124 Computer Science and Engineering CSED csed.png +125 Earthquake EQD eqd.png +126 Earth Sciences ESD esd.png +127 Electrical Engineering EED eed.png +128 Electronics and Communication Engineering ECED eced.png +129 Humanities and Social Sciences HSD hsd.png +130 Hydrology HYD hyd.png +131 Management Studies MSD msd.png +132 Mathematics MAD mad.png +133 Mechanical and Industrial Engineering MIED mied.png +134 Metallurgical and Materials Engineering MMED mmed.png +135 Paper Technology PTD ptd.png +136 Polymer and Process Engineering PPED pped.png +137 Physics PHD phd.png +138 Water Resources Development and Management WRDMD wrdmd.png +139 Demo DDED dded.png +\. + + +-- +-- Data for Name: rest_api_file; Type: TABLE DATA; Schema: public; Owner: studyportal +-- + +COPY public.rest_api_file (id, downloads, date_modified, filetype, course_id, driveid, title, size, fileext, finalized) FROM stdin; +27 0 2020-04-21 exampapers 1251 123456789 test 0.01 MB pdf f +28 0 2020-04-21 exampapers 1251 123456789 test 0.01 MB pdf f +29 0 2020-04-21 exampapers 1251 123456789 test 0.01 MB pdf f +30 0 2020-04-21 exampapers 1251 123456789 test 0.01 MB pdf f +31 0 2020-04-21 exampapers 1251 123456789 test 0.01 MB pdf t +32 0 2020-04-21 exampapers 1251 123456789 test 0.01 MB docx t +33 0 2020-04-21 exampapers 1251 123456789 test 0.01 MB ppt t +34 0 2020-04-21 exampapers 1251 123456789 test 0.01 MB jpeg t +35 0 2020-04-21 exampapers 1251 123456789 test 0.01 MB png t +36 0 2020-04-22 exampapers 1251 123456789 test2 0.01 MB pdf t +37 0 2020-04-22 exampapers 1251 123456789 test1 0.01 MB pdf t +38 0 2019-04-21 exampapers 1251 123456789 test1 0.01 MB pdf t +39 0 2020-04-22 exampapers 1251 123456789 test1 0.01 MB pdf t +40 0 2020-04-22 exampapers 1251 123456789 test1 0.01 MB pdf t +\. + + +-- +-- Data for Name: users_courserequest; Type: TABLE DATA; Schema: public; Owner: studyportal +-- + +COPY public.users_courserequest (id, status, department, course, code, date, user_id) FROM stdin; +\. + + +-- +-- Data for Name: users_filerequest; Type: TABLE DATA; Schema: public; Owner: studyportal +-- + +COPY public.users_filerequest (id, filetype, status, title, date, course_id, user_id) FROM stdin; +1 tutorials 1 test 2020-04-21 1560 1 +2 tutorials 1 test1 2020-04-21 1560 1 +3 tutorials 1 test2 2020-04-21 1560 1 +4 tutorials 1 test3 2020-04-21 1560 1 +5 tutorials 1 test4 2020-04-21 1560 1 +6 tutorials 1 test5 2020-04-21 1560 1 +7 tutorials 2 test6 2020-04-21 1560 1 +8 tutorials 3 test7 2020-04-21 1560 1 +9 Book 1 test8 2020-04-22 1679 1 +\. + + +-- +-- Data for Name: users_upload; Type: TABLE DATA; Schema: public; Owner: studyportal +-- + +COPY public.users_upload (id, driveid, resolved, status, title, filetype, date, course_id, user_id) FROM stdin; +1 1LYaOdOGt08ZQusg7rfO7bdyHvc4x767I f 1 demon.jpg Notes 2020-04-22 1676 1 +\. + + +-- +-- Data for Name: users_user; Type: TABLE DATA; Schema: public; Owner: studyportal +-- + +COPY public.users_user (id, falcon_id, username, email, profile_image, courses, role) FROM stdin; +1 1 darkrider darkrider251099@gmail.com /assets/img_user.png {1251,1560,1598,1527,1585,1340} user +\. + + +-- +-- Name: auth_group_id_seq; Type: SEQUENCE SET; Schema: public; Owner: studyportal +-- + +SELECT pg_catalog.setval('public.auth_group_id_seq', 1, false); + + +-- +-- Name: auth_group_permissions_id_seq; Type: SEQUENCE SET; Schema: public; Owner: studyportal +-- + +SELECT pg_catalog.setval('public.auth_group_permissions_id_seq', 1, false); + + +-- +-- Name: auth_permission_id_seq; Type: SEQUENCE SET; Schema: public; Owner: studyportal +-- + +SELECT pg_catalog.setval('public.auth_permission_id_seq', 76, true); + + +-- +-- Name: auth_user_groups_id_seq; Type: SEQUENCE SET; Schema: public; Owner: studyportal +-- + +SELECT pg_catalog.setval('public.auth_user_groups_id_seq', 1, false); + + +-- +-- Name: auth_user_id_seq; Type: SEQUENCE SET; Schema: public; Owner: studyportal +-- + +SELECT pg_catalog.setval('public.auth_user_id_seq', 1, true); + + +-- +-- Name: auth_user_user_permissions_id_seq; Type: SEQUENCE SET; Schema: public; Owner: studyportal +-- + +SELECT pg_catalog.setval('public.auth_user_user_permissions_id_seq', 1, false); + + +-- +-- Name: django_admin_log_id_seq; Type: SEQUENCE SET; Schema: public; Owner: studyportal +-- + +SELECT pg_catalog.setval('public.django_admin_log_id_seq', 1470, true); + + +-- +-- Name: django_content_type_id_seq; Type: SEQUENCE SET; Schema: public; Owner: studyportal +-- + +SELECT pg_catalog.setval('public.django_content_type_id_seq', 18, true); + + +-- +-- Name: django_migrations_id_seq; Type: SEQUENCE SET; Schema: public; Owner: studyportal +-- + +SELECT pg_catalog.setval('public.django_migrations_id_seq', 67, true); + + +-- +-- Name: rest_api_course_id_seq; Type: SEQUENCE SET; Schema: public; Owner: studyportal +-- + +SELECT pg_catalog.setval('public.rest_api_course_id_seq', 1839, true); + + +-- +-- Name: rest_api_department_id_seq; Type: SEQUENCE SET; Schema: public; Owner: studyportal +-- + +SELECT pg_catalog.setval('public.rest_api_department_id_seq', 139, true); + + +-- +-- Name: rest_api_file_id_seq; Type: SEQUENCE SET; Schema: public; Owner: studyportal +-- + +SELECT pg_catalog.setval('public.rest_api_file_id_seq', 40, true); + + +-- +-- Name: users_courserequest_id_seq; Type: SEQUENCE SET; Schema: public; Owner: studyportal +-- + +SELECT pg_catalog.setval('public.users_courserequest_id_seq', 1, false); + + +-- +-- Name: users_filerequest_id_seq; Type: SEQUENCE SET; Schema: public; Owner: studyportal +-- + +SELECT pg_catalog.setval('public.users_filerequest_id_seq', 9, true); + + +-- +-- Name: users_upload_id_seq; Type: SEQUENCE SET; Schema: public; Owner: studyportal +-- + +SELECT pg_catalog.setval('public.users_upload_id_seq', 1, true); + + +-- +-- Name: users_user_id_seq; Type: SEQUENCE SET; Schema: public; Owner: studyportal +-- + +SELECT pg_catalog.setval('public.users_user_id_seq', 1, true); + + +-- +-- Name: auth_group auth_group_name_key; Type: CONSTRAINT; Schema: public; Owner: studyportal +-- + +ALTER TABLE ONLY public.auth_group + ADD CONSTRAINT auth_group_name_key UNIQUE (name); + + +-- +-- Name: auth_group_permissions auth_group_permissions_group_id_permission_id_0cd325b0_uniq; Type: CONSTRAINT; Schema: public; Owner: studyportal +-- + +ALTER TABLE ONLY public.auth_group_permissions + ADD CONSTRAINT auth_group_permissions_group_id_permission_id_0cd325b0_uniq UNIQUE (group_id, permission_id); + + +-- +-- Name: auth_group_permissions auth_group_permissions_pkey; Type: CONSTRAINT; Schema: public; Owner: studyportal +-- + +ALTER TABLE ONLY public.auth_group_permissions + ADD CONSTRAINT auth_group_permissions_pkey PRIMARY KEY (id); + + +-- +-- Name: auth_group auth_group_pkey; Type: CONSTRAINT; Schema: public; Owner: studyportal +-- + +ALTER TABLE ONLY public.auth_group + ADD CONSTRAINT auth_group_pkey PRIMARY KEY (id); + + +-- +-- Name: auth_permission auth_permission_content_type_id_codename_01ab375a_uniq; Type: CONSTRAINT; Schema: public; Owner: studyportal +-- + +ALTER TABLE ONLY public.auth_permission + ADD CONSTRAINT auth_permission_content_type_id_codename_01ab375a_uniq UNIQUE (content_type_id, codename); + + +-- +-- Name: auth_permission auth_permission_pkey; Type: CONSTRAINT; Schema: public; Owner: studyportal +-- + +ALTER TABLE ONLY public.auth_permission + ADD CONSTRAINT auth_permission_pkey PRIMARY KEY (id); + + +-- +-- Name: auth_user_groups auth_user_groups_pkey; Type: CONSTRAINT; Schema: public; Owner: studyportal +-- + +ALTER TABLE ONLY public.auth_user_groups + ADD CONSTRAINT auth_user_groups_pkey PRIMARY KEY (id); + + +-- +-- Name: auth_user_groups auth_user_groups_user_id_group_id_94350c0c_uniq; Type: CONSTRAINT; Schema: public; Owner: studyportal +-- + +ALTER TABLE ONLY public.auth_user_groups + ADD CONSTRAINT auth_user_groups_user_id_group_id_94350c0c_uniq UNIQUE (user_id, group_id); + + +-- +-- Name: auth_user auth_user_pkey; Type: CONSTRAINT; Schema: public; Owner: studyportal +-- + +ALTER TABLE ONLY public.auth_user + ADD CONSTRAINT auth_user_pkey PRIMARY KEY (id); + + +-- +-- Name: auth_user_user_permissions auth_user_user_permissions_pkey; Type: CONSTRAINT; Schema: public; Owner: studyportal +-- + +ALTER TABLE ONLY public.auth_user_user_permissions + ADD CONSTRAINT auth_user_user_permissions_pkey PRIMARY KEY (id); + + +-- +-- Name: auth_user_user_permissions auth_user_user_permissions_user_id_permission_id_14a6b632_uniq; Type: CONSTRAINT; Schema: public; Owner: studyportal +-- + +ALTER TABLE ONLY public.auth_user_user_permissions + ADD CONSTRAINT auth_user_user_permissions_user_id_permission_id_14a6b632_uniq UNIQUE (user_id, permission_id); + + +-- +-- Name: auth_user auth_user_username_key; Type: CONSTRAINT; Schema: public; Owner: studyportal +-- + +ALTER TABLE ONLY public.auth_user + ADD CONSTRAINT auth_user_username_key UNIQUE (username); + + +-- +-- Name: django_admin_log django_admin_log_pkey; Type: CONSTRAINT; Schema: public; Owner: studyportal +-- + +ALTER TABLE ONLY public.django_admin_log + ADD CONSTRAINT django_admin_log_pkey PRIMARY KEY (id); + + +-- +-- Name: django_content_type django_content_type_app_label_model_76bd3d3b_uniq; Type: CONSTRAINT; Schema: public; Owner: studyportal +-- + +ALTER TABLE ONLY public.django_content_type + ADD CONSTRAINT django_content_type_app_label_model_76bd3d3b_uniq UNIQUE (app_label, model); + + +-- +-- Name: django_content_type django_content_type_pkey; Type: CONSTRAINT; Schema: public; Owner: studyportal +-- + +ALTER TABLE ONLY public.django_content_type + ADD CONSTRAINT django_content_type_pkey PRIMARY KEY (id); + + +-- +-- Name: django_migrations django_migrations_pkey; Type: CONSTRAINT; Schema: public; Owner: studyportal +-- + +ALTER TABLE ONLY public.django_migrations + ADD CONSTRAINT django_migrations_pkey PRIMARY KEY (id); + + +-- +-- Name: django_session django_session_pkey; Type: CONSTRAINT; Schema: public; Owner: studyportal +-- + +ALTER TABLE ONLY public.django_session + ADD CONSTRAINT django_session_pkey PRIMARY KEY (session_key); + + +-- +-- Name: rest_api_course rest_api_course_pkey; Type: CONSTRAINT; Schema: public; Owner: studyportal +-- + +ALTER TABLE ONLY public.rest_api_course + ADD CONSTRAINT rest_api_course_pkey PRIMARY KEY (id); + + +-- +-- Name: rest_api_department rest_api_department_pkey; Type: CONSTRAINT; Schema: public; Owner: studyportal +-- + +ALTER TABLE ONLY public.rest_api_department + ADD CONSTRAINT rest_api_department_pkey PRIMARY KEY (id); + + +-- +-- Name: rest_api_file rest_api_file_pkey; Type: CONSTRAINT; Schema: public; Owner: studyportal +-- + +ALTER TABLE ONLY public.rest_api_file + ADD CONSTRAINT rest_api_file_pkey PRIMARY KEY (id); + + +-- +-- Name: users_courserequest users_courserequest_pkey; Type: CONSTRAINT; Schema: public; Owner: studyportal +-- + +ALTER TABLE ONLY public.users_courserequest + ADD CONSTRAINT users_courserequest_pkey PRIMARY KEY (id); + + +-- +-- Name: users_filerequest users_filerequest_pkey; Type: CONSTRAINT; Schema: public; Owner: studyportal +-- + +ALTER TABLE ONLY public.users_filerequest + ADD CONSTRAINT users_filerequest_pkey PRIMARY KEY (id); + + +-- +-- Name: users_upload users_upload_pkey; Type: CONSTRAINT; Schema: public; Owner: studyportal +-- + +ALTER TABLE ONLY public.users_upload + ADD CONSTRAINT users_upload_pkey PRIMARY KEY (id); + + +-- +-- Name: users_user users_user_pkey; Type: CONSTRAINT; Schema: public; Owner: studyportal +-- + +ALTER TABLE ONLY public.users_user + ADD CONSTRAINT users_user_pkey PRIMARY KEY (id); + + +-- +-- Name: auth_group_name_a6ea08ec_like; Type: INDEX; Schema: public; Owner: studyportal +-- + +CREATE INDEX auth_group_name_a6ea08ec_like ON public.auth_group USING btree (name varchar_pattern_ops); + + +-- +-- Name: auth_group_permissions_group_id_b120cbf9; Type: INDEX; Schema: public; Owner: studyportal +-- + +CREATE INDEX auth_group_permissions_group_id_b120cbf9 ON public.auth_group_permissions USING btree (group_id); + + +-- +-- Name: auth_group_permissions_permission_id_84c5c92e; Type: INDEX; Schema: public; Owner: studyportal +-- + +CREATE INDEX auth_group_permissions_permission_id_84c5c92e ON public.auth_group_permissions USING btree (permission_id); + + +-- +-- Name: auth_permission_content_type_id_2f476e4b; Type: INDEX; Schema: public; Owner: studyportal +-- + +CREATE INDEX auth_permission_content_type_id_2f476e4b ON public.auth_permission USING btree (content_type_id); + + +-- +-- Name: auth_user_groups_group_id_97559544; Type: INDEX; Schema: public; Owner: studyportal +-- + +CREATE INDEX auth_user_groups_group_id_97559544 ON public.auth_user_groups USING btree (group_id); + + +-- +-- Name: auth_user_groups_user_id_6a12ed8b; Type: INDEX; Schema: public; Owner: studyportal +-- + +CREATE INDEX auth_user_groups_user_id_6a12ed8b ON public.auth_user_groups USING btree (user_id); + + +-- +-- Name: auth_user_user_permissions_permission_id_1fbb5f2c; Type: INDEX; Schema: public; Owner: studyportal +-- + +CREATE INDEX auth_user_user_permissions_permission_id_1fbb5f2c ON public.auth_user_user_permissions USING btree (permission_id); + + +-- +-- Name: auth_user_user_permissions_user_id_a95ead1b; Type: INDEX; Schema: public; Owner: studyportal +-- + +CREATE INDEX auth_user_user_permissions_user_id_a95ead1b ON public.auth_user_user_permissions USING btree (user_id); + + +-- +-- Name: auth_user_username_6821ab7c_like; Type: INDEX; Schema: public; Owner: studyportal +-- + +CREATE INDEX auth_user_username_6821ab7c_like ON public.auth_user USING btree (username varchar_pattern_ops); + + +-- +-- Name: django_admin_log_content_type_id_c4bce8eb; Type: INDEX; Schema: public; Owner: studyportal +-- + +CREATE INDEX django_admin_log_content_type_id_c4bce8eb ON public.django_admin_log USING btree (content_type_id); + + +-- +-- Name: django_admin_log_user_id_c564eba6; Type: INDEX; Schema: public; Owner: studyportal +-- + +CREATE INDEX django_admin_log_user_id_c564eba6 ON public.django_admin_log USING btree (user_id); + + +-- +-- Name: django_session_expire_date_a5c62663; Type: INDEX; Schema: public; Owner: studyportal +-- + +CREATE INDEX django_session_expire_date_a5c62663 ON public.django_session USING btree (expire_date); + + +-- +-- Name: django_session_session_key_c0390e0f_like; Type: INDEX; Schema: public; Owner: studyportal +-- + +CREATE INDEX django_session_session_key_c0390e0f_like ON public.django_session USING btree (session_key varchar_pattern_ops); + + +-- +-- Name: rest_api_course_department_id_aa4308bb; Type: INDEX; Schema: public; Owner: studyportal +-- + +CREATE INDEX rest_api_course_department_id_aa4308bb ON public.rest_api_course USING btree (department_id); + + +-- +-- Name: rest_api_file_course_id_a8b7c038; Type: INDEX; Schema: public; Owner: studyportal +-- + +CREATE INDEX rest_api_file_course_id_a8b7c038 ON public.rest_api_file USING btree (course_id); + + +-- +-- Name: users_courserequest_user_id_ed380538; Type: INDEX; Schema: public; Owner: studyportal +-- + +CREATE INDEX users_courserequest_user_id_ed380538 ON public.users_courserequest USING btree (user_id); + + +-- +-- Name: users_filerequest_course_id_8dc1c86e; Type: INDEX; Schema: public; Owner: studyportal +-- + +CREATE INDEX users_filerequest_course_id_8dc1c86e ON public.users_filerequest USING btree (course_id); + + +-- +-- Name: users_filerequest_user_id_733ad5d5; Type: INDEX; Schema: public; Owner: studyportal +-- + +CREATE INDEX users_filerequest_user_id_733ad5d5 ON public.users_filerequest USING btree (user_id); + + +-- +-- Name: users_upload_course_id_99af49b4; Type: INDEX; Schema: public; Owner: studyportal +-- + +CREATE INDEX users_upload_course_id_99af49b4 ON public.users_upload USING btree (course_id); + + +-- +-- Name: users_upload_user_id_9b4e0b20; Type: INDEX; Schema: public; Owner: studyportal +-- + +CREATE INDEX users_upload_user_id_9b4e0b20 ON public.users_upload USING btree (user_id); + + +-- +-- Name: auth_group_permissions auth_group_permissio_permission_id_84c5c92e_fk_auth_perm; Type: FK CONSTRAINT; Schema: public; Owner: studyportal +-- + +ALTER TABLE ONLY public.auth_group_permissions + ADD CONSTRAINT auth_group_permissio_permission_id_84c5c92e_fk_auth_perm FOREIGN KEY (permission_id) REFERENCES public.auth_permission(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: auth_group_permissions auth_group_permissions_group_id_b120cbf9_fk_auth_group_id; Type: FK CONSTRAINT; Schema: public; Owner: studyportal +-- + +ALTER TABLE ONLY public.auth_group_permissions + ADD CONSTRAINT auth_group_permissions_group_id_b120cbf9_fk_auth_group_id FOREIGN KEY (group_id) REFERENCES public.auth_group(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: auth_permission auth_permission_content_type_id_2f476e4b_fk_django_co; Type: FK CONSTRAINT; Schema: public; Owner: studyportal +-- + +ALTER TABLE ONLY public.auth_permission + ADD CONSTRAINT auth_permission_content_type_id_2f476e4b_fk_django_co FOREIGN KEY (content_type_id) REFERENCES public.django_content_type(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: auth_user_groups auth_user_groups_group_id_97559544_fk_auth_group_id; Type: FK CONSTRAINT; Schema: public; Owner: studyportal +-- + +ALTER TABLE ONLY public.auth_user_groups + ADD CONSTRAINT auth_user_groups_group_id_97559544_fk_auth_group_id FOREIGN KEY (group_id) REFERENCES public.auth_group(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: auth_user_groups auth_user_groups_user_id_6a12ed8b_fk_auth_user_id; Type: FK CONSTRAINT; Schema: public; Owner: studyportal +-- + +ALTER TABLE ONLY public.auth_user_groups + ADD CONSTRAINT auth_user_groups_user_id_6a12ed8b_fk_auth_user_id FOREIGN KEY (user_id) REFERENCES public.auth_user(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: auth_user_user_permissions auth_user_user_permi_permission_id_1fbb5f2c_fk_auth_perm; Type: FK CONSTRAINT; Schema: public; Owner: studyportal +-- + +ALTER TABLE ONLY public.auth_user_user_permissions + ADD CONSTRAINT auth_user_user_permi_permission_id_1fbb5f2c_fk_auth_perm FOREIGN KEY (permission_id) REFERENCES public.auth_permission(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: auth_user_user_permissions auth_user_user_permissions_user_id_a95ead1b_fk_auth_user_id; Type: FK CONSTRAINT; Schema: public; Owner: studyportal +-- + +ALTER TABLE ONLY public.auth_user_user_permissions + ADD CONSTRAINT auth_user_user_permissions_user_id_a95ead1b_fk_auth_user_id FOREIGN KEY (user_id) REFERENCES public.auth_user(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: django_admin_log django_admin_log_content_type_id_c4bce8eb_fk_django_co; Type: FK CONSTRAINT; Schema: public; Owner: studyportal +-- + +ALTER TABLE ONLY public.django_admin_log + ADD CONSTRAINT django_admin_log_content_type_id_c4bce8eb_fk_django_co FOREIGN KEY (content_type_id) REFERENCES public.django_content_type(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: django_admin_log django_admin_log_user_id_c564eba6_fk_auth_user_id; Type: FK CONSTRAINT; Schema: public; Owner: studyportal +-- + +ALTER TABLE ONLY public.django_admin_log + ADD CONSTRAINT django_admin_log_user_id_c564eba6_fk_auth_user_id FOREIGN KEY (user_id) REFERENCES public.auth_user(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: rest_api_course rest_api_course_department_id_aa4308bb_fk_rest_api_; Type: FK CONSTRAINT; Schema: public; Owner: studyportal +-- + +ALTER TABLE ONLY public.rest_api_course + ADD CONSTRAINT rest_api_course_department_id_aa4308bb_fk_rest_api_ FOREIGN KEY (department_id) REFERENCES public.rest_api_department(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: rest_api_file rest_api_file_course_id_a8b7c038_fk_rest_api_course_id; Type: FK CONSTRAINT; Schema: public; Owner: studyportal +-- + +ALTER TABLE ONLY public.rest_api_file + ADD CONSTRAINT rest_api_file_course_id_a8b7c038_fk_rest_api_course_id FOREIGN KEY (course_id) REFERENCES public.rest_api_course(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: users_courserequest users_courserequest_user_id_ed380538_fk_users_user_id; Type: FK CONSTRAINT; Schema: public; Owner: studyportal +-- + +ALTER TABLE ONLY public.users_courserequest + ADD CONSTRAINT users_courserequest_user_id_ed380538_fk_users_user_id FOREIGN KEY (user_id) REFERENCES public.users_user(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: users_filerequest users_filerequest_course_id_8dc1c86e_fk_rest_api_course_id; Type: FK CONSTRAINT; Schema: public; Owner: studyportal +-- + +ALTER TABLE ONLY public.users_filerequest + ADD CONSTRAINT users_filerequest_course_id_8dc1c86e_fk_rest_api_course_id FOREIGN KEY (course_id) REFERENCES public.rest_api_course(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: users_filerequest users_filerequest_user_id_733ad5d5_fk_users_user_id; Type: FK CONSTRAINT; Schema: public; Owner: studyportal +-- + +ALTER TABLE ONLY public.users_filerequest + ADD CONSTRAINT users_filerequest_user_id_733ad5d5_fk_users_user_id FOREIGN KEY (user_id) REFERENCES public.users_user(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: users_upload users_upload_course_id_99af49b4_fk_rest_api_course_id; Type: FK CONSTRAINT; Schema: public; Owner: studyportal +-- + +ALTER TABLE ONLY public.users_upload + ADD CONSTRAINT users_upload_course_id_99af49b4_fk_rest_api_course_id FOREIGN KEY (course_id) REFERENCES public.rest_api_course(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: users_upload users_upload_user_id_9b4e0b20_fk_users_user_id; Type: FK CONSTRAINT; Schema: public; Owner: studyportal +-- + +ALTER TABLE ONLY public.users_upload + ADD CONSTRAINT users_upload_user_id_9b4e0b20_fk_users_user_id FOREIGN KEY (user_id) REFERENCES public.users_user(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- PostgreSQL database dump complete +-- + +\connect template1 + +SET default_transaction_read_only = off; + +-- +-- PostgreSQL database dump +-- + +-- Dumped from database version 10.3 +-- Dumped by pg_dump version 10.3 + +SET statement_timeout = 0; +SET lock_timeout = 0; +SET idle_in_transaction_session_timeout = 0; +SET client_encoding = 'UTF8'; +SET standard_conforming_strings = on; +SELECT pg_catalog.set_config('search_path', '', false); +SET check_function_bodies = false; +SET client_min_messages = warning; +SET row_security = off; + +-- +-- Name: DATABASE template1; Type: COMMENT; Schema: -; Owner: postgres +-- + +COMMENT ON DATABASE template1 IS 'default template for new databases'; + + +-- +-- Name: plpgsql; Type: EXTENSION; Schema: -; Owner: +-- + +CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog; + + +-- +-- Name: EXTENSION plpgsql; Type: COMMENT; Schema: -; Owner: +-- + +COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language'; + + +-- +-- PostgreSQL database dump complete +-- + +-- +-- PostgreSQL database cluster dump complete +-- + diff --git a/ingest.sh b/ingest.sh index c723c27..744895f 100755 --- a/ingest.sh +++ b/ingest.sh @@ -11,8 +11,9 @@ user.save() " EOF # Create database -docker exec -ti $POSTGRES_CONTAINER_NAME /bin/bash -c 'PGPASSWORD=studyportal createdb -h localhost -U studyportal studyportal' +docker exec $POSTGRES_CONTAINER_NAME /bin/bash -c 'PGPASSWORD=studyportal createdb -h localhost -U studyportal studyportal' # Ingest mock data PGPASSWORD=studyportal psql -h localhost -d studyportal -U studyportal < dump.sql +PGPASSWORD=studyportal psql -h localhost -d studyportal -U studyportal < dump.sql # Rebuild indexes -docker exec -ti $NEXUS_CONTAINER_NAME /bin/bash -c 'python3 manage.py search_index --rebuild -f' +docker exec $NEXUS_CONTAINER_NAME /bin/bash -c 'python3 manage.py search_index --rebuild -f' diff --git a/requirements.txt b/requirements.txt index 5c75655..f91896c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -16,4 +16,5 @@ google-auth-oauthlib==0.4.1 pyjwt==1.7.1 django-elasticsearch-dsl==7.1.1 elasticsearch==7.6.0 -elasticsearch-dsl==7.1.0 \ No newline at end of file +elasticsearch-dsl==7.1.0 +pytest==5.4.1 \ No newline at end of file diff --git a/rest_api/test_rest_api.py b/rest_api/test_rest_api.py new file mode 100644 index 0000000..056c135 --- /dev/null +++ b/rest_api/test_rest_api.py @@ -0,0 +1,87 @@ +import os +import json +import pytest +import requests +from studyportal.settings import CUR_DIR + +NEXUS_URL = 'http://localhost:8005/api/v1/' +RESOURCES = os.path.join( + CUR_DIR, + 'test/resources/rest_api' +) + + +class TestRestApi(): + + def test_get_department_by_abbr(self): + with open(os.path.join(RESOURCES, 'sample_department_response.json')) as f: + expected_response = json.load(f) + r = requests.get(url=NEXUS_URL + 'departments/?department=ASED&format=json') + actual_response = r.json() + assert actual_response == expected_response + + def test_post_department(self): + data = { + 'title': 'dep', + 'abbreviation': 'DEP', + 'imageurl': 'DEP.svg' + } + r = requests.post(url=NEXUS_URL + 'departments', data=data) + assert r.status_code == 200 + + def test_get_courses_by_department(self): + with open(os.path.join(RESOURCES, 'sample_course_list_response.json')) as f: + expected_response = json.load(f) + r = requests.get(url=NEXUS_URL + 'courses/?course=null&department=118&format=json') + actual_response = r.json() + assert actual_response == expected_response + + def test_get_course_by_code(self): + with open(os.path.join(RESOURCES, 'sample_course_response.json')) as f: + expected_response = json.load(f) + r = requests.get(url=NEXUS_URL + 'courses/?course=ASN-700&department=118&format=json') + actual_response = r.json() + assert actual_response == expected_response + + def test_post_course(self): + data = { + 'title': 'cour', + 'department': '120', + 'code': 'COU-000' + } + r = requests.post(url=NEXUS_URL + 'courses', data=data) + assert r.status_code == 200 + + def test_get_files_by_course(self): + with open(os.path.join(RESOURCES, 'sample_files_response.json')) as f: + expected_response = json.load(f) + r = requests.get(url=NEXUS_URL + 'files/?course=1251&filetype=null&format=json') + actual_response = r.json() + assert actual_response == expected_response + + def test_get_files_by_type(self): + with open(os.path.join(RESOURCES, 'sample_files_response.json')) as f: + expected_response = json.load(f) + r = requests.get(url=NEXUS_URL + 'files/?course=1251&filetype=exampapers&format=json') + actual_response = r.json() + assert actual_response == expected_response + + def test_post_file(self): + data = { + 'title': 'pdf.pdf', + 'driveid': '123456789', + 'downloads': 0, + 'size': '123545', + 'code': 'ARN-101', + 'filetype': 'tutorials', + 'finalized': 'True' + } + r = requests.post(url=NEXUS_URL + 'files', data=data) + assert r.status_code == 200 + + def test_search(self): + with open(os.path.join(RESOURCES, 'sample_search_response.json')) as f: + expected_response = json.load(f) + r = requests.get(url=NEXUS_URL + 'search/?q=test&format=json') + actual_response = r.json() + assert actual_response == expected_response diff --git a/rest_api/tests.py b/rest_api/tests.py deleted file mode 100644 index 7ce503c..0000000 --- a/rest_api/tests.py +++ /dev/null @@ -1,3 +0,0 @@ -from django.test import TestCase - -# Create your tests here. diff --git a/rest_api/views.py b/rest_api/views.py index f21fddb..3a28ec5 100644 --- a/rest_api/views.py +++ b/rest_api/views.py @@ -52,7 +52,7 @@ def post(self, request): imageurl=data['imageurl'] ) department.save() - return Response(department.save(), status=status.HTTP_201_CREATED) + return Response(department.save(), status=status.HTTP_200_OK) else: return Response("Department already exists") @@ -89,7 +89,7 @@ def post(self, request): code=data['code'] ) course.save() - return Response(course.save(), status=status.HTTP_201_CREATED) + return Response(course.save(), status=status.HTTP_200_OK) else: return Response("Course already exists") @@ -160,7 +160,7 @@ def post(self, request): finalized=data['finalized'] ) file.save() - return Response(file.save(), status=status.HTTP_201_CREATED) + return Response(file.save(), status=status.HTTP_200_OK) else: return Response("File already exists") diff --git a/studyportal/test/resources/rest_api/sample_course_list_response.json b/studyportal/test/resources/rest_api/sample_course_list_response.json new file mode 100644 index 0000000..066f065 --- /dev/null +++ b/studyportal/test/resources/rest_api/sample_course_list_response.json @@ -0,0 +1,24 @@ +[ + { + "id": 1251, + "title": "SEMINAR", + "department": { + "id": 118, + "title": "Applied Science and Engineering", + "abbreviation": "ASED", + "imageurl": "ased.png" + }, + "code": "ASN-700" + }, + { + "id": 1250, + "title": "Advanced Characterization Techniques", + "department": { + "id": 118, + "title": "Applied Science and Engineering", + "abbreviation": "ASED", + "imageurl": "ased.png" + }, + "code": "AS-901" + } +] \ No newline at end of file diff --git a/studyportal/test/resources/rest_api/sample_course_response.json b/studyportal/test/resources/rest_api/sample_course_response.json new file mode 100644 index 0000000..1695c6b --- /dev/null +++ b/studyportal/test/resources/rest_api/sample_course_response.json @@ -0,0 +1,13 @@ +[ + { + "id": 1251, + "title": "SEMINAR", + "department": { + "id": 118, + "title": "Applied Science and Engineering", + "abbreviation": "ASED", + "imageurl": "ased.png" + }, + "code": "ASN-700" + } +] \ No newline at end of file diff --git a/studyportal/test/resources/rest_api/sample_department_response.json b/studyportal/test/resources/rest_api/sample_department_response.json new file mode 100644 index 0000000..194f3d8 --- /dev/null +++ b/studyportal/test/resources/rest_api/sample_department_response.json @@ -0,0 +1,32 @@ +{ + "department": { + "id": 118, + "title": "Applied Science and Engineering", + "abbreviation": "ASED", + "imageurl": "ased.png" + }, + "courses": [ + { + "id": 1251, + "title": "SEMINAR", + "department": { + "id": 118, + "title": "Applied Science and Engineering", + "abbreviation": "ASED", + "imageurl": "ased.png" + }, + "code": "ASN-700" + }, + { + "id": 1250, + "title": "Advanced Characterization Techniques", + "department": { + "id": 118, + "title": "Applied Science and Engineering", + "abbreviation": "ASED", + "imageurl": "ased.png" + }, + "code": "AS-901" + } + ] +} \ No newline at end of file diff --git a/studyportal/test/resources/rest_api/sample_files_response.json b/studyportal/test/resources/rest_api/sample_files_response.json new file mode 100644 index 0000000..2cb991d --- /dev/null +++ b/studyportal/test/resources/rest_api/sample_files_response.json @@ -0,0 +1,212 @@ +[ + { + "id": 40, + "title": "test1", + "driveid": "123456789", + "downloads": 0, + "size": "0.01 MB", + "date_modified": "2020-04-22", + "fileext": "pdf", + "filetype": "exampapers", + "course": { + "id": 1251, + "title": "SEMINAR", + "department": { + "id": 118, + "title": "Applied Science and Engineering", + "abbreviation": "ASED", + "imageurl": "ased.png" + }, + "code": "ASN-700" + } + }, + { + "id": 39, + "title": "test1", + "driveid": "123456789", + "downloads": 0, + "size": "0.01 MB", + "date_modified": "2020-04-22", + "fileext": "pdf", + "filetype": "exampapers", + "course": { + "id": 1251, + "title": "SEMINAR", + "department": { + "id": 118, + "title": "Applied Science and Engineering", + "abbreviation": "ASED", + "imageurl": "ased.png" + }, + "code": "ASN-700" + } + }, + { + "id": 38, + "title": "test1", + "driveid": "123456789", + "downloads": 0, + "size": "0.01 MB", + "date_modified": "2019-04-21", + "fileext": "pdf", + "filetype": "exampapers", + "course": { + "id": 1251, + "title": "SEMINAR", + "department": { + "id": 118, + "title": "Applied Science and Engineering", + "abbreviation": "ASED", + "imageurl": "ased.png" + }, + "code": "ASN-700" + } + }, + { + "id": 37, + "title": "test1", + "driveid": "123456789", + "downloads": 0, + "size": "0.01 MB", + "date_modified": "2020-04-22", + "fileext": "pdf", + "filetype": "exampapers", + "course": { + "id": 1251, + "title": "SEMINAR", + "department": { + "id": 118, + "title": "Applied Science and Engineering", + "abbreviation": "ASED", + "imageurl": "ased.png" + }, + "code": "ASN-700" + } + }, + { + "id": 36, + "title": "test2", + "driveid": "123456789", + "downloads": 0, + "size": "0.01 MB", + "date_modified": "2020-04-22", + "fileext": "pdf", + "filetype": "exampapers", + "course": { + "id": 1251, + "title": "SEMINAR", + "department": { + "id": 118, + "title": "Applied Science and Engineering", + "abbreviation": "ASED", + "imageurl": "ased.png" + }, + "code": "ASN-700" + } + }, + { + "id": 35, + "title": "test", + "driveid": "123456789", + "downloads": 0, + "size": "0.01 MB", + "date_modified": "2020-04-21", + "fileext": "png", + "filetype": "exampapers", + "course": { + "id": 1251, + "title": "SEMINAR", + "department": { + "id": 118, + "title": "Applied Science and Engineering", + "abbreviation": "ASED", + "imageurl": "ased.png" + }, + "code": "ASN-700" + } + }, + { + "id": 34, + "title": "test", + "driveid": "123456789", + "downloads": 0, + "size": "0.01 MB", + "date_modified": "2020-04-21", + "fileext": "jpeg", + "filetype": "exampapers", + "course": { + "id": 1251, + "title": "SEMINAR", + "department": { + "id": 118, + "title": "Applied Science and Engineering", + "abbreviation": "ASED", + "imageurl": "ased.png" + }, + "code": "ASN-700" + } + }, + { + "id": 33, + "title": "test", + "driveid": "123456789", + "downloads": 0, + "size": "0.01 MB", + "date_modified": "2020-04-21", + "fileext": "ppt", + "filetype": "exampapers", + "course": { + "id": 1251, + "title": "SEMINAR", + "department": { + "id": 118, + "title": "Applied Science and Engineering", + "abbreviation": "ASED", + "imageurl": "ased.png" + }, + "code": "ASN-700" + } + }, + { + "id": 32, + "title": "test", + "driveid": "123456789", + "downloads": 0, + "size": "0.01 MB", + "date_modified": "2020-04-21", + "fileext": "docx", + "filetype": "exampapers", + "course": { + "id": 1251, + "title": "SEMINAR", + "department": { + "id": 118, + "title": "Applied Science and Engineering", + "abbreviation": "ASED", + "imageurl": "ased.png" + }, + "code": "ASN-700" + } + }, + { + "id": 31, + "title": "test", + "driveid": "123456789", + "downloads": 0, + "size": "0.01 MB", + "date_modified": "2020-04-21", + "fileext": "pdf", + "filetype": "exampapers", + "course": { + "id": 1251, + "title": "SEMINAR", + "department": { + "id": 118, + "title": "Applied Science and Engineering", + "abbreviation": "ASED", + "imageurl": "ased.png" + }, + "code": "ASN-700" + } + } +] \ No newline at end of file diff --git a/studyportal/test/resources/rest_api/sample_search_response.json b/studyportal/test/resources/rest_api/sample_search_response.json new file mode 100644 index 0000000..8ad0808 --- /dev/null +++ b/studyportal/test/resources/rest_api/sample_search_response.json @@ -0,0 +1,132 @@ +{ + "departments": [], + "courses": [], + "files": [ + { + "id": 36, + "title": "test2", + "driveid": "123456789", + "downloads": 0, + "size": "0.01 MB", + "date_modified": "2020-04-22", + "fileext": "pdf", + "filetype": "exampapers", + "course": { + "id": 1251, + "title": "SEMINAR", + "department": { + "id": 118, + "title": "Applied Science and Engineering", + "abbreviation": "ASED", + "imageurl": "ased.png" + }, + "code": "ASN-700" + } + }, + { + "id": 37, + "title": "test1", + "driveid": "123456789", + "downloads": 0, + "size": "0.01 MB", + "date_modified": "2020-04-22", + "fileext": "pdf", + "filetype": "exampapers", + "course": { + "id": 1251, + "title": "SEMINAR", + "department": { + "id": 118, + "title": "Applied Science and Engineering", + "abbreviation": "ASED", + "imageurl": "ased.png" + }, + "code": "ASN-700" + } + }, + { + "id": 38, + "title": "test1", + "driveid": "123456789", + "downloads": 0, + "size": "0.01 MB", + "date_modified": "2019-04-21", + "fileext": "pdf", + "filetype": "exampapers", + "course": { + "id": 1251, + "title": "SEMINAR", + "department": { + "id": 118, + "title": "Applied Science and Engineering", + "abbreviation": "ASED", + "imageurl": "ased.png" + }, + "code": "ASN-700" + } + }, + { + "id": 39, + "title": "test1", + "driveid": "123456789", + "downloads": 0, + "size": "0.01 MB", + "date_modified": "2020-04-22", + "fileext": "pdf", + "filetype": "exampapers", + "course": { + "id": 1251, + "title": "SEMINAR", + "department": { + "id": 118, + "title": "Applied Science and Engineering", + "abbreviation": "ASED", + "imageurl": "ased.png" + }, + "code": "ASN-700" + } + }, + { + "id": 40, + "title": "test1", + "driveid": "123456789", + "downloads": 0, + "size": "0.01 MB", + "date_modified": "2020-04-22", + "fileext": "pdf", + "filetype": "exampapers", + "course": { + "id": 1251, + "title": "SEMINAR", + "department": { + "id": 118, + "title": "Applied Science and Engineering", + "abbreviation": "ASED", + "imageurl": "ased.png" + }, + "code": "ASN-700" + } + }, + { + "id": 31, + "title": "test", + "driveid": "123456789", + "downloads": 0, + "size": "0.01 MB", + "date_modified": "2020-04-21", + "fileext": "pdf", + "filetype": "exampapers", + "course": { + "id": 1251, + "title": "SEMINAR", + "department": { + "id": 118, + "title": "Applied Science and Engineering", + "abbreviation": "ASED", + "imageurl": "ased.png" + }, + "code": "ASN-700" + } + } + ] +} \ No newline at end of file From 770a055e5830736450f1d270c84225cdf5d614c6 Mon Sep 17 00:00:00 2001 From: AyanChoudhary Date: Thu, 23 Apr 2020 22:33:33 +0530 Subject: [PATCH 69/69] chore: add rextra_hosts to docker-compose --- docker-compose.yml | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 7c45d21..2ba3090 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -34,18 +34,22 @@ services: web: build: ./ image: studyportal-nexus - command: bash -c 'python manage.py makemigrations && - python manage.py migrate && - python manage.py search_index --rebuild -f && + command: bash -c 'python manage.py makemigrations && + python manage.py migrate && + python manage.py search_index --rebuild -f && python manage.py runserver 0.0.0.0:8005' container_name: studyportal-nexus - volumes: + volumes: - ".:/studyportal-nexus:rw" ports: - "8005:8005" depends_on: - db - es + extra_hosts: + - "arceus.sdslabs.local:127.0.0.1" + - "falcon.sdslabs.local:127.0.0.1" + - "localhost:127.0.0.1" environment: DJANGO_DATABASE_NAME: "studyportal" DJANGO_DATABASE_USER: "studyportal"