diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md
new file mode 100644
index 0000000000000000000000000000000000000000..7d847a3771d73984faa392a15f43eb684c5bece7
--- /dev/null
+++ b/.github/pull_request_template.md
@@ -0,0 +1,31 @@
+# SunbirdEd - Portal
+---
+
+### Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context. List any dependencies that are required for this change.
+---
+
+### Please choose applicable option 
+#### Example
+- [x] Applicable
+- [ ] Not applicable
+
+### Type of change
+
+Please choose appropriate options.
+
+- [ ] Bug fix (non-breaking change which fixes an issue)
+- [ ] New feature (non-breaking change which adds functionality)
+- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
+- [ ] Enhancement (additive changes to improve performance)
+- [ ] This change requires a documentation update
+
+### Checklist:
+
+- [ ] My code follows the style guidelines of this project
+- [ ] I have performed a self-review of my own code
+- [ ] I have commented my code, particularly in hard-to-understand areas
+- [ ] I have made corresponding changes to the documentation
+- [ ] My changes generate no new warnings
+- [ ] I have added tests that prove my fix is effective or that my feature works
+- [ ] New and existing unit tests pass locally with my changes
+- [ ] Any dependent changes have been merged and published in downstream modules
diff --git a/.gitignore b/.gitignore
index a5e7283b6578ec05db38c87a458806ce1686612e..33c5a7ab6c7d4879234603bb6b73a7b3afd9d7a7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -17,7 +17,6 @@ mochawesome-report
 /src/app/coverage
 .idea
 /src/app/helpers/devConfig.js
-/.vscode/launch.json
 logs
 keys
 #DESKTOP APP
@@ -50,4 +49,6 @@ src/desktop/chromedriverlog.txt
 
 .prettierignore
 
-**/.DS_Store
\ No newline at end of file
+**/.DS_Store
+
+.vscode/*
\ No newline at end of file
diff --git a/.vscode/settings.json b/.vscode/settings.json
deleted file mode 100644
index 81d0e4b617ef6df6b177f550c3a5a9e7cedfb1c9..0000000000000000000000000000000000000000
--- a/.vscode/settings.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-    "cSpell.words": [
-        "Injectable",
-        "izitoast",
-        "uploader"
-    ]
-}
\ No newline at end of file
diff --git a/README.md b/README.md
index 284350c5d38e0cc702cd4da291f46187cd4d46f6..9c258daa9402ca56b80cb55aff83173af2bbd3b3 100644
--- a/README.md
+++ b/README.md
@@ -39,6 +39,7 @@ Installing Sunbird requires two primary software components:
 - [Running Application](#running-application)
 - [Project Structure](#project-structure)
 - [Testing](#testing)
+- [Dependencies List](#dependencies-list)
 ---
 
 ### Prerequisites
@@ -104,9 +105,24 @@ Installing Sunbird requires two primary software components:
           |  sunbird_default_tenant   | sunbird |   string  |
 
     > The initialization of these environmental variables can take place in a common place like in your **.bashrc** or **.bash_profile**
+    
 
 4. Edit the Application Configuration
 
+    > These are the mandatory keys required to run the application in Local environment. Please update them with appropriatte values in `<PROJECT-FOLDER>/src/app/helpers/environmentVariablesHelper.js`
+
+        |           Environment Variable        |  Data Type |             Description                |
+        | :-------------------------------------| ---------- | -------------------------------------  |
+        |        sunbird_azure_account_name     |   string   |          Azure account Name            |
+        |        sunbird_azure_account_key      |   string   |          Azure Account Key             |
+        |          sunbird_aws_region           |   string   |        Region for AWS account          |
+        |  KONG_DEVICE_REGISTER_ANONYMOUS_TOKEN |   boolean  |   Flag value to allow anonymous user   |
+        |  sunbird_anonymous_device_register_api|   string   |The API for registering anonymous device|
+        |  sunbird_anonymous_register_token     |   string   |    Token to register anonymous device  |
+        |               SB_DOMAIN               |   string   |    The host for Sunbird Environment    |
+        |         PORTAL_API_AUTH_TOKEN         |   string   |     User generated API auth token      |
+
+
     > Open `<PROJECT-FOLDER>/src/app/helpers/environmentVariablesHelper.js` in any available text editor and update the contents of the file so that it contains exactly the following values
 
       ```console
@@ -127,11 +143,7 @@ Installing Sunbird requires two primary software components:
               ...
               PORTAL_PORT: env.sunbird_port || 3000,
                 
-              // 5. PORTAL_API_AUTH_TOKEN
-              PORTAL_API_AUTH_TOKEN: env.sunbird_api_auth_token || User generated API auth token
-              ...
-              
-              // 6. PORTAL_ECHO_API_URL
+              // 5. PORTAL_ECHO_API_URL
               PORTAL_ECHO_API_URL: env.sunbird_echo_api_url || '',
               ...
           }
@@ -192,3 +204,19 @@ Installing Sunbird requires two primary software components:
         2. $ npm run backend-test
         3. With Coverage $ npm run backend-test-with-coverage
 
+
+### Dependencies list
+
+<details>
+  <summary>Portal - Frontend</summary>
+</details>
+
+| Plugin Name                                                                                                  	| Plugin Repository                                                	| npm version 	| NG Version 	|
+|--------------------------------------------------------------------------------------------------------------	|------------------------------------------------------------------	|-------------	|------------	|
+| [@project-sunbird/chatbot-client](https://www.npmjs.com/package/@project-sunbird/chatbot-client)             	| https://github.com/project-sunbird/sunbird-bot-client            	| 3.0.3       	| NG 11      	|
+| [@project-sunbird/common-consumption](https://www.npmjs.com/package/@project-sunbird/common-consumption)     	| https://github.com/Sunbird-Ed/SunbirdEd-consumption-ngcomponents 	| 4.12.0      	| NG 11      	|
+| [@project-sunbird/common-form-elements](https://www.npmjs.com/package/@project-sunbird/common-form-elements) 	| https://github.com/Sunbird-Ed/SunbirdEd-forms                    	| 5.1.1       	| NG 11      	|
+| [@project-sunbird/sb-content-section](https://www.npmjs.com/package/@project-sunbird/sb-content-section)     	| https://github.com/Sunbird-Ed/sb-content-module                  	| 5.1.0       	| NG 11      	|
+| [@project-sunbird/sb-notification](https://www.npmjs.com/package/@project-sunbird/sb-notification)           	| https://github.com/Sunbird-Ed/sb-notification                    	| 5.0.7       	| NG 11      	|
+| [@shikshalokam/sl-questionnaire](https://www.npmjs.com/package/@shikshalokam/sl-questionnaire)           	    | https://github.com/shikshalokam/sl-questionnaire-components       | 2.1.0       	| NG 11      	|
+| [@shikshalokam/sl-reports-library](https://www.npmjs.com/package/@shikshalokam/sl-reports-library)           	| https://github.com/shikshalokam/sl-reports-library                | 2.0.0       	| NG 11      	|
\ No newline at end of file
diff --git a/src/app/client/README.md b/src/app/client/README.md
index 284350c5d38e0cc702cd4da291f46187cd4d46f6..2517968332ff396596703c468f1e9b486ef1450c 100644
--- a/src/app/client/README.md
+++ b/src/app/client/README.md
@@ -104,9 +104,24 @@ Installing Sunbird requires two primary software components:
           |  sunbird_default_tenant   | sunbird |   string  |
 
     > The initialization of these environmental variables can take place in a common place like in your **.bashrc** or **.bash_profile**
+    
 
 4. Edit the Application Configuration
 
+    > These are the mandatory keys required to run the application in Local environment. Please update them with appropriatte values in `<PROJECT-FOLDER>/src/app/helpers/environmentVariablesHelper.js`
+
+        |           Environment Variable        |  Data Type |             Description                |
+        | :-------------------------------------| ---------- | -------------------------------------  |
+        |        sunbird_azure_account_name     |   string   |          Azure account Name            |
+        |        sunbird_azure_account_key      |   string   |          Azure Account Key             |
+        |          sunbird_aws_region           |   string   |        Region for AWS account          |
+        |  KONG_DEVICE_REGISTER_ANONYMOUS_TOKEN |   boolean  |   Flag value to allow anonymous user   |
+        |  sunbird_anonymous_device_register_api|   string   |The API for registering anonymous device|
+        |  sunbird_anonymous_register_token     |   string   |    Token to register anonymous device  |
+        |               SB_DOMAIN               |   string   |    The host for Sunbird Environment    |
+        |         PORTAL_API_AUTH_TOKEN         |   string   |     User generated API auth token      |
+
+
     > Open `<PROJECT-FOLDER>/src/app/helpers/environmentVariablesHelper.js` in any available text editor and update the contents of the file so that it contains exactly the following values
 
       ```console
@@ -127,11 +142,7 @@ Installing Sunbird requires two primary software components:
               ...
               PORTAL_PORT: env.sunbird_port || 3000,
                 
-              // 5. PORTAL_API_AUTH_TOKEN
-              PORTAL_API_AUTH_TOKEN: env.sunbird_api_auth_token || User generated API auth token
-              ...
-              
-              // 6. PORTAL_ECHO_API_URL
+              // 5. PORTAL_ECHO_API_URL
               PORTAL_ECHO_API_URL: env.sunbird_echo_api_url || '',
               ...
           }
diff --git a/src/app/client/angular.json b/src/app/client/angular.json
index beeb418b979809c80af08308edd35a008da362c3..052cf4932b0fc9ae298857da7d8cb2d5d7b2edd7 100644
--- a/src/app/client/angular.json
+++ b/src/app/client/angular.json
@@ -27,7 +27,7 @@
               "src/favicon.png",
               {
                 "glob": "**/*.*",
-                "input": "./node_modules/@project-sunbird/common-consumption-v9/assets",
+                "input": "./node_modules/@project-sunbird/common-consumption/assets",
                 "output": "./assets/common-consumption"
               },
               {
@@ -67,7 +67,7 @@
               "node_modules/datatables.net-dt/css/jquery.dataTables.min.css",
               "src/assets/styles/semantic/semantic.min.css",
               "node_modules/font-awesome/css/font-awesome.css",
-              "./node_modules/@project-sunbird/sb-styles/assets/_styles.scss",
+              "./node_modules/@project-sunbird/sb-styles/assets/styles.scss",
               "./node_modules/leaflet/dist/leaflet.css",
               "src/assets/styles/styles.scss",
               "node_modules/video.js/dist/video-js.min.css",
diff --git a/src/app/client/package.json b/src/app/client/package.json
index fc8dc975a768d0302ebd4794a35d432f2fb037c0..934fe47b2741fa5271195830d471faedec03f9fb 100644
--- a/src/app/client/package.json
+++ b/src/app/client/package.json
@@ -1,6 +1,6 @@
 {
   "name": "src",
-  "version": "5.0.1",
+  "version": "5.1.0",
   "license": "MIT",
   "description": "SUNBIRD Client Portal",
   "keywords": [
@@ -53,18 +53,19 @@
     "@angular/router": "^11.2.14",
     "@ngx-translate/core": "12.0.0",
     "@ngx-translate/http-loader": "^5.0.0",
-    "@project-sunbird/chatbot-client-v8": "2.0.3",
+    "@project-sunbird/chatbot-client": "3.0.3",
     "@project-sunbird/ckeditor-build-classic": "4.1.3",
     "@project-sunbird/ckeditor-build-font": "^1.0.8",
     "@project-sunbird/client-services": "4.8.13",
-    "@project-sunbird/common-consumption-v9": "^4.10.3",
-    "@project-sunbird/common-form-elements-v9": "5.0.1",
+    "@project-sunbird/common-consumption": "4.12.0",
+    "@project-sunbird/common-form-elements": "5.1.1",
     "@project-sunbird/discussions-ui-v8": "2.6.0-beta.2",
-    "@project-sunbird/sb-styles": "0.0.8",
-    "@project-sunbird/sb-themes": "0.0.80",
-    "@project-sunbird/sunbird-epub-player-v9": "5.1.0",
     "@project-sunbird/sb-dashlet-v9": "^1.0.4",
+    "@project-sunbird/sb-notification": "5.0.7",
+    "@project-sunbird/sb-styles": "0.0.10",
+    "@project-sunbird/sb-themes": "0.0.85",
     "@project-sunbird/sunbird-collection-editor-v9": "5.0.14",
+    "@project-sunbird/sunbird-epub-player-v9": "5.1.0",
     "@project-sunbird/sunbird-pdf-player-v9": "5.1.1",
     "@project-sunbird/sunbird-question-editor": "0.0.9",
     "@project-sunbird/sunbird-quml-player-v9": "5.1.5",
@@ -73,8 +74,8 @@
     "@project-sunbird/telemetry-sdk": "0.0.29",
     "@project-sunbird/web-extensions": "^0.0.2",
     "@samagra-x/uci-console": "1.3.7",
-    "@shikshalokam/sl-questionnaire": "1.5.0",
-    "@shikshalokam/sl-reports-library": "^1.0.7",
+    "@shikshalokam/sl-questionnaire": "2.1.0",
+    "@shikshalokam/sl-reports-library": "2.0.0",
     "@swimlane/ngx-datatable": "16.1.1",
     "@types/jquery": "3.3.31",
     "@types/jquery.fancytree": "2.7.34",
@@ -85,7 +86,7 @@
     "chart.js": "2.9.4",
     "common-form-elements-v9": "4.5.0",
     "common-form-elements-web-v9": "4.7.2",
-    "content-section": "0.0.5",
+    "content-section-v11": "0.0.9",
     "core-js": "^2.4.1",
     "datatables.net-dt": "^1.10.20",
     "dayjs": "^1.8.26",
@@ -132,7 +133,6 @@
     "ngx-order-pipe": "^2.0.4",
     "ngx-slick": "0.2.1",
     "rxjs": "^6.5.5",
-    "sb-notification": "0.0.3",
     "sb-svg2pdf": "0.0.11",
     "sb-tag-manager": "^3.9.15",
     "slick-carousel": "^1.8.1",
diff --git a/src/app/client/src/app/app.component.html b/src/app/client/src/app/app.component.html
index f0bf0d70d2418082253db717c3dcc4ef306c598a..1fa5a032572722125d7245e29d3dc57740b3f7a5 100644
--- a/src/app/client/src/app/app.component.html
+++ b/src/app/client/src/app/app.component.html
@@ -56,8 +56,8 @@
                   </li>
                   <li aria-hidden="true" class="mx-4">|</li>
                   <li><button id="dark-mode-toggle" class="dark-mode-toggle" tabindex="0"
-                      title="{{resourceService?.frmelmnts?.lbl?.accessibilitytheme}}" (click)="changeTheme()"
-                      (keydown.enter)="changeTheme();" #darkModeToggle>
+                      title="{{resourceService?.frmelmnts?.lbl?.accessibilitytheme}}" (click)="toggleLightDarkMode()"
+                      (keydown.enter)="toggleLightDarkMode();" #darkModeToggle>
                       <svg width="20" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 496">
                         <path fill="var(--white)"
                           d="M8,256C8,393,119,504,256,504S504,393,504,256,393,8,256,8,8,119,8,256ZM256,440V72a184,184,0,0,1,0,368Z"
diff --git a/src/app/client/src/app/app.component.scss b/src/app/client/src/app/app.component.scss
index 4fd0430721fb0d008bf722b868362d3eefd6956d..86149281f17839335eded05eb9c11e23017361bb 100644
--- a/src/app/client/src/app/app.component.scss
+++ b/src/app/client/src/app/app.component.scss
@@ -1,4 +1,4 @@
-@import 'pages/mat-modal';
+
 
 .header-block {
   display: none;
diff --git a/src/app/client/src/app/app.component.ts b/src/app/client/src/app/app.component.ts
index 8c00c00a610d333b4919f1460e3785f117523cd5..229a62ba1616f975d40ed6a0fa828ee875664131 100644
--- a/src/app/client/src/app/app.component.ts
+++ b/src/app/client/src/app/app.component.ts
@@ -136,12 +136,12 @@ export class AppComponent implements OnInit, OnDestroy {
     private connectionService: ConnectionService, public genericResourceService: GenericResourceService) {
     this.instance = (<HTMLInputElement>document.getElementById('instance'))
       ? (<HTMLInputElement>document.getElementById('instance')).value : 'sunbird';
-    const layoutType = localStorage.getItem('layoutType') || '';
-    if (layoutType === '' || layoutType === 'joy') {
+    const layoutType = localStorage.getItem('layoutType') || 'base';
+    if (layoutType === 'base' || layoutType === 'joy') {
       this.layoutConfiguration = this.configService.appConfig.layoutConfiguration;
       document.documentElement.setAttribute('layout', 'joy');
     } else {
-      document.documentElement.setAttribute('layout', 'old');
+      document.documentElement.setAttribute('layout', 'base');
     }
   }
   /**
@@ -237,7 +237,7 @@ export class AppComponent implements OnInit, OnDestroy {
   }
 
   setTheme() {
-    const themeColour = localStorage.getItem('layoutColour') || 'Default';
+    const themeColour = localStorage.getItem('layoutColour') || 'default';
     if (this.darkModeToggle && this.darkModeToggle.nativeElement) {
       this.renderer.setAttribute(this.darkModeToggle.nativeElement, 'aria-label', `Selected theme ${themeColour}`);
     }
@@ -1022,20 +1022,20 @@ export class AppComponent implements OnInit, OnDestroy {
     });
   }
   getLocalTheme() {
-    const localDataThemeAttribute = localStorage.getItem('data-theme');
+    const localDataThemeAttribute = localStorage.getItem('data-mode');
     if (localDataThemeAttribute) {
       this.setLocalTheme(localDataThemeAttribute);
     }
   }
-  changeTheme() {
-    this.dataThemeAttribute = document.documentElement.getAttribute('data-theme');
-    this.dataThemeAttribute = this.dataThemeAttribute === 'Default' ? 'Darkmode' : 'Default';
+  toggleLightDarkMode() {
+    this.dataThemeAttribute = document.documentElement.getAttribute('data-mode');
+    this.dataThemeAttribute = this.dataThemeAttribute === 'light' ? 'darkmode' : 'light';
     this.renderer.setAttribute(this.darkModeToggle.nativeElement, 'aria-label', `Selected theme ${this.dataThemeAttribute}`);
     this.setLocalTheme(this.dataThemeAttribute);
-    localStorage.setItem('data-theme', this.dataThemeAttribute);
+    localStorage.setItem('data-mode', this.dataThemeAttribute);
   }
   setLocalTheme(value: string) {
-    document.documentElement.setAttribute('data-theme', value);
+    document.documentElement.setAttribute('data-mode', value);
   }
   notifyNetworkChange() {
     this.connectionService.monitor().pipe(debounceTime(5000)).subscribe((status: boolean) => {
diff --git a/src/app/client/src/app/app.module.ts b/src/app/client/src/app/app.module.ts
index 8fe31c4862e9b5b0a003e9ec3fc871747503d249..31172346f97fc104c526c72cf4b7354c65328ca8 100644
--- a/src/app/client/src/app/app.module.ts
+++ b/src/app/client/src/app/app.module.ts
@@ -15,14 +15,14 @@ import { CacheStorageAbstract } from 'ng2-cache-service/dist/src/services/storag
 import { CacheSessionStorage } from 'ng2-cache-service/dist/src/services/storage/session-storage/cache-session-storage.service';
 import { DeviceDetectorModule } from 'ngx-device-detector';
 import { PluginModules } from './framework.config';
-import {ChatLibModule, ChatLibService} from '@project-sunbird/chatbot-client-v8';
+import {ChatLibModule, ChatLibService} from '@project-sunbird/chatbot-client';
 import { RouteReuseStrategy } from '@angular/router';
 import { CustomRouteReuseStrategy } from './service/CustomRouteReuseStrategy/CustomRouteReuseStrategy';
 import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
 import { TranslateModule, TranslateLoader } from '@ngx-translate/core';
 import { TranslateHttpLoader } from '@ngx-translate/http-loader';
 import { TranslateStore } from '@ngx-translate/core';
-import { SbSearchFilterModule } from '@project-sunbird/common-form-elements-v9';
+import { SbSearchFilterModule } from '@project-sunbird/common-form-elements';
 
 @NgModule({
   declarations: [
diff --git a/src/app/client/src/app/modules/certificate/certificate.module.ts b/src/app/client/src/app/modules/certificate/certificate.module.ts
index 33fe9ff2a936aa44442b82048cdb326f1a6256c9..803111fa246f57511c09533c23b1c35131f89234 100644
--- a/src/app/client/src/app/modules/certificate/certificate.module.ts
+++ b/src/app/client/src/app/modules/certificate/certificate.module.ts
@@ -8,7 +8,7 @@ import { SharedModule } from '@sunbird/shared';
 import { TelemetryModule } from '@sunbird/telemetry';
 import { PlayerHelperModule } from '@sunbird/player-helper';
 import { CertificateConfigurationComponent, CertificateDetailsComponent, CreateTemplateComponent, SvgEditorComponent } from './components';
-import { CommonConsumptionModule } from '@project-sunbird/common-consumption-v9';
+import { CommonConsumptionModule } from '@project-sunbird/common-consumption';
 import { BrowseImagePopupComponent } from './components/browse-image-popup/browse-image-popup.component';
 import { SvgEditorModule } from 'ng-svg-editor';
 import { CsModule } from '@project-sunbird/client-services';
diff --git a/src/app/client/src/app/modules/certificate/components/browse-image-popup/browse-image-popup.component.scss b/src/app/client/src/app/modules/certificate/components/browse-image-popup/browse-image-popup.component.scss
index 65182ceb8d40616c65f001bc58fd8389aba42504..2b4a9d5e9ddc308c06ee57898a35d5437cf8da3d 100644
--- a/src/app/client/src/app/modules/certificate/components/browse-image-popup/browse-image-popup.component.scss
+++ b/src/app/client/src/app/modules/certificate/components/browse-image-popup/browse-image-popup.component.scss
@@ -1,5 +1,3 @@
-@import "mixins/mixins";
-@import 'variables';
 
 // image modal css //
 .sb-imagemodal {
@@ -19,11 +17,11 @@
 
     .image-label {
       display: inline-block;
-      margin: 0 0 -1px;
+      margin: 0 0 -0.0625rem;
       padding: calculateRem(14px) calculateRem(24px);
       font-weight: 600;
       text-align: center;
-      color: #bbb;
+      color: var(--rc-bbbbbb);
       border: calculateRem(1px) solid transparent;
     }
 
@@ -39,7 +37,7 @@
     }
 
     .image-input:checked+.image-label {
-      color: #555;
+      color: var(--rc-424242);
       border-bottom: calculateRem(3px) solid var(--primary-400);
     }
 
@@ -184,20 +182,20 @@
 .sb-uploadmodal {
   .sb-modal-content {
     .asterik{
-      color: red;
+      color: var(--red-400);
     }
     .choose-img-box{
-      border: 3px solid #000;
+      border: 3px solid var(--black);
       padding: 24px;
       border-style: dashed;
       border-radius: 4px;
     }
     .border-line{
-      border-left: 2px solid #ddd;
+      border-left: 2px solid var(--rc-dddddd);
       height: 100%;
       padding-left: 16px;
       html[dir='rtl'] & {
-        border-right: 2px solid #ddd;
+        border-right: 2px solid var(--rc-dddddd);
         height: 100%;
         padding-right: 16px;
         }
@@ -223,9 +221,9 @@
         }
       }
       .tag {
-        background: #0245fd;
+        background: var(--primary);
         border-radius: 3px 0 0 3px;
-        color: #fff;
+        color: var(--white);
         display: inline-block;
         height: 26px;
         line-height: 26px;
@@ -236,21 +234,21 @@
         -webkit-transition: color 0.2s;
       }
       .tag::before {
-        background: #fff;
+        background: var(--white);
         border-radius: 10px;
         box-shadow: inset 0 1px rgba(0, 0, 0, 0.25);
         content: '';
-        height: 6px;
-        left: 10px;
+        height: 0.375rem;
+        left: 0.625rem;
         position: absolute;
-        width: 6px;
-        top: 10px;
+        width: 0.375rem;
+        top: 0.625rem;
       }
       .tag::after {
-        background: #fff;
-        border-bottom: 13px solid transparent;
-        border-left: 10px solid 10px solid #0245fd;
-        border-top: 13px solid transparent;
+        background: var(--white);
+        border-bottom: 0.8125rem solid transparent;
+        border-left: 0.625rem solid 0.625rem solid var(--primary);;
+        border-top: 0.8125rem solid transparent;
         content: '';
         position: absolute;
         right: 0;
@@ -260,18 +258,18 @@
   }
   .sb-modal-actions {
     .or-toggle {
-      background: #fff;
+      background: var(--white);
       border-radius: 50%;
-      width: 24px;
-      height: 24px;
+      width: 1.5rem;
+      height: 1.5rem;
       position: absolute;
       left: 31%;
       z-index: 2;
       span {
         position: relative;
-        top: 3px;
-        left: 5px;
-        font-size: 14px;
+        top: 0.1875rem;
+        left: 0.3125rem;
+        font-size: 0.875rem;
       }
     }
   }
diff --git a/src/app/client/src/app/modules/certificate/components/certificate-configuration/certificate-configuration.component.scss b/src/app/client/src/app/modules/certificate/components/certificate-configuration/certificate-configuration.component.scss
index 76223a07c7d8f285d30fea2f025cfae35f70ac07..3a24c99c58ca4d883bb51c61d07d356f87ec8c8d 100644
--- a/src/app/client/src/app/modules/certificate/components/certificate-configuration/certificate-configuration.component.scss
+++ b/src/app/client/src/app/modules/certificate/components/certificate-configuration/certificate-configuration.component.scss
@@ -1,4 +1,4 @@
-@import "mixins/mixins";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 :host {
 
diff --git a/src/app/client/src/app/modules/certificate/components/certificate-details/certificate-details.component.scss b/src/app/client/src/app/modules/certificate/components/certificate-details/certificate-details.component.scss
index b315d3fb0f190a2db438ef41b82dd9152aef2f1d..4a2e3edf175575974428226f63e2707f353ac520 100644
--- a/src/app/client/src/app/modules/certificate/components/certificate-details/certificate-details.component.scss
+++ b/src/app/client/src/app/modules/certificate/components/certificate-details/certificate-details.component.scss
@@ -1,5 +1,4 @@
-@import 'variables';
-@import "mixins/mixins";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 
 .sb-mobileDevice {
diff --git a/src/app/client/src/app/modules/certificate/components/create-template/create-template.component.scss b/src/app/client/src/app/modules/certificate/components/create-template/create-template.component.scss
index 055aa5cdfc20bd72b0db586412a6d7d65963aab2..a6a50511dbf48e29c3383e461302f0a66f26bb12 100644
--- a/src/app/client/src/app/modules/certificate/components/create-template/create-template.component.scss
+++ b/src/app/client/src/app/modules/certificate/components/create-template/create-template.component.scss
@@ -1,5 +1,4 @@
-@import "mixins/mixins";
-@import 'variables';
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 .certificate-content{
     height: 100%;
diff --git a/src/app/client/src/app/modules/certificate/components/svg-editor/svg-editor.component.scss b/src/app/client/src/app/modules/certificate/components/svg-editor/svg-editor.component.scss
index 7ab3a16a15ec3583ac843fbf2bb9551e951901eb..be495eb4b10b7b633e54007eeccf9d320235a36c 100644
--- a/src/app/client/src/app/modules/certificate/components/svg-editor/svg-editor.component.scss
+++ b/src/app/client/src/app/modules/certificate/components/svg-editor/svg-editor.component.scss
@@ -1,5 +1,4 @@
-@import "mixins/mixins";
-@import 'variables';
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 .certificate-content {
   height: 100%;
diff --git a/src/app/client/src/app/modules/content-search/components/data-driven-filter/data-driven-filter.component.scss b/src/app/client/src/app/modules/content-search/components/data-driven-filter/data-driven-filter.component.scss
index 94028bbe4fcd91ffe480b94694484c6e8484baf6..2dbb27d6eec5c61d0f59f65623d5ef83d82c6fa2 100644
--- a/src/app/client/src/app/modules/content-search/components/data-driven-filter/data-driven-filter.component.scss
+++ b/src/app/client/src/app/modules/content-search/components/data-driven-filter/data-driven-filter.component.scss
@@ -1,6 +1,5 @@
-@import "variables";
-@import "mixins/mixins";
-@import "pages/sbt-filter";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
+@use "pages/sbt-filter" as *;
 
 // state dropdown css
 .ui.selection.dropdown .menu>.item {
diff --git a/src/app/client/src/app/modules/content-search/components/global-search-filter/global-search-filter.component.html b/src/app/client/src/app/modules/content-search/components/global-search-filter/global-search-filter.component.html
index ebb0a4c1ae313dcd4e6290ecc8c41c77e96bf21f..a15c2e77b21c3481d9a1782ed1106c829e249490 100644
--- a/src/app/client/src/app/modules/content-search/components/global-search-filter/global-search-filter.component.html
+++ b/src/app/client/src/app/modules/content-search/components/global-search-filter/global-search-filter.component.html
@@ -44,7 +44,6 @@
     </mat-accordion>
   </div>
 </ng-container>
-​
 <ng-container *ngIf="facets && !layoutConfiguration">
   <div class="sb-prominent-filter p-0 mt-8">
     <div class="ui container">
diff --git a/src/app/client/src/app/modules/content-search/components/global-search-filter/global-search-filter.component.scss b/src/app/client/src/app/modules/content-search/components/global-search-filter/global-search-filter.component.scss
index df640079c45a68a78a744fa73672d2940af79a60..e3f0ef056ef36bfe38de6c8a07ecfa4e21cc6008 100644
--- a/src/app/client/src/app/modules/content-search/components/global-search-filter/global-search-filter.component.scss
+++ b/src/app/client/src/app/modules/content-search/components/global-search-filter/global-search-filter.component.scss
@@ -1,6 +1,6 @@
-@import "variables";
-@import "mixins/mixins";
-@import "pages/sbt-filter";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
+@use "pages/sbt-filter" as *;
+@use "components/sb-forms/facet-filters" as *;
 
 // .sb-prominent-filter {
 //   .sb-prominent-filter-container.sb-global-search {
@@ -36,6 +36,4 @@
   .ui.dropdown .menu div .selected.item, .ui.dropdown.selected{
     font-weight: 700 !important;
   }
-
-  @import "components/sb-forms/facet-filters";
 }
diff --git a/src/app/client/src/app/modules/content-search/components/global-search-filter/global-search-filter.component.ts b/src/app/client/src/app/modules/content-search/components/global-search-filter/global-search-filter.component.ts
index 01542f85bbb78417d0cc4651d380597b86c5a885..83acbdfd5c9b6ca1c99a8376a70e62a64fedee18 100644
--- a/src/app/client/src/app/modules/content-search/components/global-search-filter/global-search-filter.component.ts
+++ b/src/app/client/src/app/modules/content-search/components/global-search-filter/global-search-filter.component.ts
@@ -15,9 +15,9 @@ import { IInteractEventEdata } from '@sunbird/telemetry';
 import { Router, ActivatedRoute } from '@angular/router';
 import { Subject } from 'rxjs';
 import { debounceTime, map, takeUntil, filter } from 'rxjs/operators';
-import { LibraryFiltersLayout } from '@project-sunbird/common-consumption-v9';
+import { LibraryFiltersLayout } from '@project-sunbird/common-consumption';
 import { UserService } from '@sunbird/core';
-import { IFacetFilterFieldTemplateConfig } from '@project-sunbird/common-form-elements-v9';
+import { IFacetFilterFieldTemplateConfig } from '@project-sunbird/common-form-elements';
 import { CacheService } from 'ng2-cache-service';
 
 @Component({
diff --git a/src/app/client/src/app/modules/content-search/components/global-search-selected-filter/global-search-selected-filter.component.scss b/src/app/client/src/app/modules/content-search/components/global-search-selected-filter/global-search-selected-filter.component.scss
index fca9e51edf8e19ff3e8608b9fcbb1e2de3ffbbd4..87b0ff1cf9617f77485adf63274a923b90cc1cdf 100644
--- a/src/app/client/src/app/modules/content-search/components/global-search-selected-filter/global-search-selected-filter.component.scss
+++ b/src/app/client/src/app/modules/content-search/components/global-search-selected-filter/global-search-selected-filter.component.scss
@@ -1,4 +1,4 @@
-@import "./mixins/mixins";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 .sbt-applied-filters-title{
     height: calculateRem(14px);
diff --git a/src/app/client/src/app/modules/content-search/components/search-filter/search-filter.component.html b/src/app/client/src/app/modules/content-search/components/search-filter/search-filter.component.html
index 3cf0b963e2b36d4345b9b6ddd8aa4c647a66e754..9b15eceaffb846639602fe2205ad61d9d1ebf909 100644
--- a/src/app/client/src/app/modules/content-search/components/search-filter/search-filter.component.html
+++ b/src/app/client/src/app/modules/content-search/components/search-filter/search-filter.component.html
@@ -1,154 +1,136 @@
 <ng-container *ngIf="!isLayoutAvailable()" tabindex="-1">
-    <div *ngIf="(boards.length || emptyBoard) && refresh" class="sb-header-filter-bar zindex-2">
-        <div class="d-flex state-medium-container sb-bg-color-white">
-            <div class="ui container d-flex flex-ai-center">
-                <div *ngIf="boards?.length" class="state-medium-container__dropdown">
-                    <div class="sb-field mb-0"><label>
-                            <app-select-option-group *ngIf="optionData" [optionData]="optionData"
-                                [selectedOption]="selectedOption" (selectedValue)="selectedGroupOption($event);">
-                            </app-select-option-group>
-                        </label>
-                    </div>
-                </div>
-                <div *ngIf="boards?.length && allValues?.medium?.length" class="state-medium-container__separator">
-                </div>
-                <div class="state-medium-container__medium" *ngIf="allValues?.medium?.length">
-                    <sb-library-filters [list]="allValues['medium']" [layout]="filterLayout.SQUARE"
-                        [selectedItems]="selectedFilters['medium']"
-                        (selectedFilter)="filterChangeEvent.next({ event: $event, type: 'medium'})">
-                    </sb-library-filters>
-                </div>
-            </div>
+  <div *ngIf="(boards.length || emptyBoard) && refresh" class="sb-header-filter-bar zindex-2">
+    <div class="d-flex state-medium-container sb-bg-color-white">
+      <div class="ui container d-flex flex-ai-center">
+        <div *ngIf="boards?.length" class="state-medium-container__dropdown">
+          <div class="sb-field mb-0"><label>
+              <app-select-option-group *ngIf="optionData" [optionData]="optionData" [selectedOption]="selectedOption"
+                (selectedValue)="selectedGroupOption($event);">
+              </app-select-option-group>
+            </label>
+          </div>
         </div>
-        <div class="sb-class-bar sb-bg-color-gray-0" *ngIf="allValues?.gradeLevel?.length">
-            <div class="ui container">
-                <sb-library-filters [list]="allValues['gradeLevel']" [layout]="filterLayout.ROUND"
-                    [selectedItems]="selectedFilters['gradeLevel']"
-                    (selectedFilter)="filterChangeEvent.next({ event: $event, type: 'gradeLevel'})">
-                </sb-library-filters>
-            </div>
+        <div *ngIf="boards?.length && allValues?.medium?.length" class="state-medium-container__separator">
         </div>
-​
-        <div class="sb-bg-color-white sb-global-filter-section">
-            <div class="ui container">
-                <div class="d-flex flex-ai-center flex-w-wrap">
-                    <div *ngIf="allValues?.subject?.length" class="state-medium-container__dropdown">
-                        <div class="sb-field mb-0"><label>
-                                <sui-multi-select [hasLabels]="false" [(ngModel)]="selectedNgModels['subject']"
-                                    (selectedOptionsChange)="filterChangeEvent.next({ event: $event, type: 'subject'})"
-                                    defaultSelectionText={{resourceService?.frmelmnts?.lbl?.subject}}
-                                    zeroSelectionText={{resourceService.frmelmnts.lbl.Select}}
-                                    class="selection sbt-dropdown-tick text-cencapitalize"
-                                    [ngClass]="!layoutConfiguration ? 'state-selection' : 'sbt-dropdown sbt-dropdown-bold sbt-dropdown--sm sbt-purple--lbg'">
-                                    <div
-                                        [ngClass]="!layoutConfiguration ? 'state-selection__section' : 'sbt-dropdown-section'">
-                                        <sui-select-option *ngFor="let dropdownValue of allValues['subject']"
-                                            [value]="dropdownValue">
-                                        </sui-select-option>
-                                    </div>
-                                </sui-multi-select>
-                            </label>
-                        </div>
-                    </div>
-​
-                    <div *ngIf="allValues?.publisher?.length" class="state-medium-container__separator"> </div>
-​
-                    <div *ngIf="allValues?.publisher?.length" class="state-medium-container__dropdown">
-                        <div class="sb-field mb-0"><label>
-                                <sui-multi-select [hasLabels]="false" [(ngModel)]="selectedNgModels['publisher']"
-                                    (selectedOptionsChange)="filterChangeEvent.next({ event: $event, type: 'publisher'})"
-                                    defaultSelectionText={{resourceService?.frmelmnts?.lbl?.publishedBy}}
-                                    zeroSelectionText={{resourceService?.frmelmnts?.lbl?.Select}}
-                                    class="selection sbt-dropdown-tick text-cencapitalize"
-                                    [ngClass]="!layoutConfiguration ? 'state-selection' : 'sbt-dropdown sbt-dropdown-bold sbt-dropdown--sm sbt-purple--lbg'">
-                                    <div
-                                        [ngClass]="!layoutConfiguration ? 'state-selection__section' : 'sbt-dropdown-section'">
-                                        <sui-select-option *ngFor="let dropdownValue of allValues['publisher']"
-                                            [value]="dropdownValue">
-                                        </sui-select-option>
-                                    </div>
-                                </sui-multi-select>
-                            </label>
-                        </div>
-                    </div>
-​
-                    <div *ngIf="allValues?.audience?.length" class="state-medium-container__separator"> </div>
-​
-​
-                    <div *ngIf="allValues?.audience?.length" class="state-medium-container__dropdown">
-                        <div class="sb-field mb-0"><label>
-                                <sui-multi-select [hasLabels]="false" [(ngModel)]="selectedNgModels['audience']"
-                                    (selectedOptionsChange)="filterChangeEvent.next({ event: $event, type: 'audience'})"
-                                    defaultSelectionText={{resourceService?.frmelmnts?.lbl?.userType}}
-                                    zeroSelectionText={{resourceService.frmelmnts.lbl.Select}} tabindex="0"
-                                    class="selection sbt-dropdown-tick text-cencapitalize"
-                                    [ngClass]="!layoutConfiguration ? 'state-selection' : 'sbt-dropdown sbt-dropdown-bold sbt-dropdown--sm sbt-purple--lbg'">
-                                    <div
-                                        [ngClass]="!layoutConfiguration ? 'state-selection__section' : 'sbt-dropdown-section'">
-                                        <sui-select-option *ngFor="let dropdownValue of allValues['audience']"
-                                            [value]="dropdownValue">
-                                        </sui-select-option>
-                                    </div>
-                                </sui-multi-select>
-                            </label>
-                        </div>
-                    </div>
-                    <button (click)="resetFilters()" appTelemetryInteract [telemetryInteractEdata]="getInteractEdata()"
-                        tabindex="0"
-                        class="sb-btn sb-btn-normal sb-btn-outline-primary ml-auto">{{resourceService.frmelmnts?.btn?.reset
-                        | translate}}
-                    </button>
-                </div>
-​
+        <div class="state-medium-container__medium" *ngIf="allValues?.medium?.length">
+          <sb-library-filters [list]="allValues['medium']" [layout]="filterLayout.SQUARE"
+            [selectedItems]="selectedFilters['medium']"
+            (selectedFilter)="filterChangeEvent.next({ event: $event, type: 'medium'})">
+          </sb-library-filters>
+        </div>
+      </div>
+    </div>
+    <div class="sb-class-bar sb-bg-color-gray-0" *ngIf="allValues?.gradeLevel?.length">
+      <div class="ui container">
+        <sb-library-filters [list]="allValues['gradeLevel']" [layout]="filterLayout.ROUND"
+          [selectedItems]="selectedFilters['gradeLevel']"
+          (selectedFilter)="filterChangeEvent.next({ event: $event, type: 'gradeLevel'})">
+        </sb-library-filters>
+      </div>
+    </div>
+    <div class="sb-bg-color-white sb-global-filter-section">
+      <div class="ui container">
+        <div class="d-flex flex-ai-center flex-w-wrap">
+          <div *ngIf="allValues?.subject?.length" class="state-medium-container__dropdown">
+            <div class="sb-field mb-0"><label>
+                <sui-multi-select [hasLabels]="false" [(ngModel)]="selectedNgModels['subject']"
+                  (selectedOptionsChange)="filterChangeEvent.next({ event: $event, type: 'subject'})"
+                  defaultSelectionText={{resourceService?.frmelmnts?.lbl?.subject}}
+                  zeroSelectionText={{resourceService.frmelmnts.lbl.Select}}
+                  class="selection sbt-dropdown-tick text-cencapitalize"
+                  [ngClass]="!layoutConfiguration ? 'state-selection' : 'sbt-dropdown sbt-dropdown-bold sbt-dropdown--sm sbt-purple--lbg'">
+                  <div [ngClass]="!layoutConfiguration ? 'state-selection__section' : 'sbt-dropdown-section'">
+                    <sui-select-option *ngFor="let dropdownValue of allValues['subject']" [value]="dropdownValue">
+                    </sui-select-option>
+                  </div>
+                </sui-multi-select>
+              </label>
             </div>
+          </div>
+          <div *ngIf="allValues?.publisher?.length" class="state-medium-container__separator"> </div>
+          <div *ngIf="allValues?.publisher?.length" class="state-medium-container__dropdown">
+            <div class="sb-field mb-0"><label>
+                <sui-multi-select [hasLabels]="false" [(ngModel)]="selectedNgModels['publisher']"
+                  (selectedOptionsChange)="filterChangeEvent.next({ event: $event, type: 'publisher'})"
+                  defaultSelectionText={{resourceService?.frmelmnts?.lbl?.publishedBy}}
+                  zeroSelectionText={{resourceService?.frmelmnts?.lbl?.Select}}
+                  class="selection sbt-dropdown-tick text-cencapitalize"
+                  [ngClass]="!layoutConfiguration ? 'state-selection' : 'sbt-dropdown sbt-dropdown-bold sbt-dropdown--sm sbt-purple--lbg'">
+                  <div [ngClass]="!layoutConfiguration ? 'state-selection__section' : 'sbt-dropdown-section'">
+                    <sui-select-option *ngFor="let dropdownValue of allValues['publisher']" [value]="dropdownValue">
+                    </sui-select-option>
+                  </div>
+                </sui-multi-select>
+              </label>
+            </div>
+          </div>
+          <div *ngIf="allValues?.audience?.length" class="state-medium-container__separator"> </div>
+          <div *ngIf="allValues?.audience?.length" class="state-medium-container__dropdown">
+            <div class="sb-field mb-0"><label>
+                <sui-multi-select [hasLabels]="false" [(ngModel)]="selectedNgModels['audience']"
+                  (selectedOptionsChange)="filterChangeEvent.next({ event: $event, type: 'audience'})"
+                  defaultSelectionText={{resourceService?.frmelmnts?.lbl?.userType}}
+                  zeroSelectionText={{resourceService.frmelmnts.lbl.Select}} tabindex="0"
+                  class="selection sbt-dropdown-tick text-cencapitalize"
+                  [ngClass]="!layoutConfiguration ? 'state-selection' : 'sbt-dropdown sbt-dropdown-bold sbt-dropdown--sm sbt-purple--lbg'">
+                  <div [ngClass]="!layoutConfiguration ? 'state-selection__section' : 'sbt-dropdown-section'">
+                    <sui-select-option *ngFor="let dropdownValue of allValues['audience']" [value]="dropdownValue">
+                    </sui-select-option>
+                  </div>
+                </sui-multi-select>
+              </label>
+            </div>
+          </div>
+          <button (click)="resetFilters()" appTelemetryInteract [telemetryInteractEdata]="getInteractEdata()"
+            tabindex="0" class="sb-btn sb-btn-normal sb-btn-outline-primary ml-auto">{{resourceService.frmelmnts?.btn?.reset
+                        | translate}}
+          </button>
         </div>
-​
+      </div>
     </div>
+  </div>
 </ng-container>
 <div *ngIf="isLayoutAvailable()" class="sbt-filter" tabindex="-1">
-​<mat-accordion class="sb-mat-accordion sbt-filter-accordion">
-        <mat-expansion-panel [expanded]="isOpen">
-            <mat-expansion-panel-header>
-                <div class="sbt-filter-switcher-container cursor-pointer mobile only" (click)="isOpen = !isOpen" tabindex="0">
-                    <div class="sbt-filter-switcher"><i class="sliders horizontal icon"></i></div>
-                    <div class="sbt-filter-text">{{resourceService.frmelmnts?.lbl?.filters | translate}}</div>
-                </div>
-                <div class="sbt-filter-switcher-container cursor-pointer computer only">
-                    <div class="sbt-filter-switcher"><i class="sliders horizontal icon"></i></div>
-                    <div class="sbt-filter-text">{{resourceService.frmelmnts?.lbl?.filters | translate}}</div>
-                </div>
-            </mat-expansion-panel-header>
-            <ng-container>
-                <div [hidden]="!((boards.length || emptyBoard) && refresh)" class="sbt-filter-bar mr-16 pl-24">
-                    <div class="sbt-reset-bar d-flex flex-ai-center flex-ai-jc-center" tabindex="0">
-                        <button (click)="onSearchFrameworkFilterReset()" tabindex="0" appTelemetryInteract
-                            [telemetryInteractEdata]="getInteractEdata()"
-                            class="sb-btn sb-btn-xs sb-btn-link-primary pull-right sbt-btn-reset cursor-pointer">{{resourceService.frmelmnts?.btn?.reset
+<mat-accordion class="sb-mat-accordion sbt-filter-accordion">
+    <mat-expansion-panel [expanded]="isOpen">
+      <mat-expansion-panel-header>
+        <div class="sbt-filter-switcher-container cursor-pointer mobile only" (click)="isOpen = !isOpen" tabindex="0">
+          <div class="sbt-filter-switcher"><i class="sliders horizontal icon"></i></div>
+          <div class="sbt-filter-text">{{resourceService.frmelmnts?.lbl?.filters | translate}}</div>
+        </div>
+        <div class="sbt-filter-switcher-container cursor-pointer computer only">
+          <div class="sbt-filter-switcher"><i class="sliders horizontal icon"></i></div>
+          <div class="sbt-filter-text">{{resourceService.frmelmnts?.lbl?.filters | translate}}</div>
+        </div>
+      </mat-expansion-panel-header>
+      <ng-container>
+        <div [hidden]="!((boards.length || emptyBoard) && refresh)" class="sbt-filter-bar mr-16 pl-24">
+          <div class="sbt-reset-bar d-flex flex-ai-center flex-ai-jc-center" tabindex="0">
+            <button (click)="onSearchFrameworkFilterReset()" tabindex="0" appTelemetryInteract
+              [telemetryInteractEdata]="getInteractEdata()"
+              class="sb-btn sb-btn-xs sb-btn-link-primary pull-right sbt-btn-reset cursor-pointer">{{resourceService.frmelmnts?.btn?.reset
                             | translate}}
-                            <i class="icon undo"></i></button>
-                        <span class="sbt-filter-close"><i class="icon-svg icon-svg--xxs icon-close cursor-pointer"
-                                (click)="isOpen = !isOpen" tabindex="0"
-                                attr.aria-label="{{resourceService.frmelmnts?.btn?.close}}">
-                                <svg class="icon icon-svg--red">
-                                    <use xlink:href="./assets/images/sprite.svg#close"></use>
-                                </svg>
-                            </i>
-                        </span>
-                    </div>
-                    <div class="fsmall my-8 text-left filter-pref-text" tabindex="0">
-                        {{resourceService.frmelmnts?.lbl?.basedOnPref | translate}}</div>
-                    <div class="sbt-filter-scrollable pr-24">
-​
-                        <ng-container *ngIf="filterFormTemplateConfig && refreshSearchFilterComponent">
-                            <sb-search-framework-filter [frameworkAssociations]="allValues"
-                                [frameworkCategoryFilterFieldTemplateConfig]="filterFormTemplateConfig"
-                                [baseSearchFilter]="defaultFilters" #sbSearchFrameworkFilterComponent>
-                            </sb-search-framework-filter>
-                        </ng-container>
-​
-                    </div>
-                </div>
+              <i class="icon undo"></i></button>
+            <span class="sbt-filter-close"><i class="icon-svg icon-svg--xxs icon-close cursor-pointer"
+                (click)="isOpen = !isOpen" tabindex="0" attr.aria-label="{{resourceService.frmelmnts?.btn?.close}}">
+                <svg class="icon icon-svg--red">
+                  <use xlink:href="./assets/images/sprite.svg#close"></use>
+                </svg>
+              </i>
+            </span>
+          </div>
+          <div class="fsmall my-8 text-left filter-pref-text" tabindex="0">
+            {{resourceService.frmelmnts?.lbl?.basedOnPref | translate}}</div>
+          <div class="sbt-filter-scrollable pr-24">
+            <ng-container *ngIf="filterFormTemplateConfig && refreshSearchFilterComponent">
+              <sb-search-framework-filter [frameworkAssociations]="allValues"
+                [frameworkCategoryFilterFieldTemplateConfig]="filterFormTemplateConfig"
+                [baseSearchFilter]="defaultFilters" #sbSearchFrameworkFilterComponent>
+              </sb-search-framework-filter>
             </ng-container>
-        </mat-expansion-panel>
-    </mat-accordion>
+          </div>
+        </div>
+      </ng-container>
+    </mat-expansion-panel>
+  </mat-accordion>
 </div>
\ No newline at end of file
diff --git a/src/app/client/src/app/modules/content-search/components/search-filter/search-filter.component.scss b/src/app/client/src/app/modules/content-search/components/search-filter/search-filter.component.scss
index 44b1a3c975379fdccd71b999eb8924f055780d84..e3659f6c1d258d8d8ecdce96aa35f3c22e3604f8 100644
--- a/src/app/client/src/app/modules/content-search/components/search-filter/search-filter.component.scss
+++ b/src/app/client/src/app/modules/content-search/components/search-filter/search-filter.component.scss
@@ -1,6 +1,5 @@
-@import "variables";
-@import "mixins/mixins";
-@import "pages/sbt-filter";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
+@use "pages/sbt-filter" as *;
 
 .sb-header-filter-bar {
   box-shadow: 0 calculateRem(2px) calculateRem(8px) 0 rgba(var(--rc-rgba-black), 0.2);
diff --git a/src/app/client/src/app/modules/content-search/components/search-filter/search-filter.component.ts b/src/app/client/src/app/modules/content-search/components/search-filter/search-filter.component.ts
index 5222bbf6e2c1ce806a376972cb526a733f9c6c76..62429a2e3903df53a13ec78415324915c9217254 100644
--- a/src/app/client/src/app/modules/content-search/components/search-filter/search-filter.component.ts
+++ b/src/app/client/src/app/modules/content-search/components/search-filter/search-filter.component.ts
@@ -1,13 +1,13 @@
 import { Component, Output, EventEmitter, Input, OnInit, OnDestroy, ChangeDetectorRef, ViewChild } from '@angular/core';
 import * as _ from 'lodash-es';
-import { LibraryFiltersLayout } from '@project-sunbird/common-consumption-v9';
+import { LibraryFiltersLayout } from '@project-sunbird/common-consumption';
 import { ResourceService, LayoutService, UtilService } from '@sunbird/shared';
 import { Router, ActivatedRoute } from '@angular/router';
 import { Subject, merge, of, zip, BehaviorSubject, defer } from 'rxjs';
 import { debounceTime, map, tap, switchMap, takeUntil, retry, catchError } from 'rxjs/operators';
 import { ContentSearchService } from '../../services';
 import { FormService } from '@sunbird/core';
-import { IFrameworkCategoryFilterFieldTemplateConfig } from '@project-sunbird/common-form-elements-v9';
+import { IFrameworkCategoryFilterFieldTemplateConfig } from '@project-sunbird/common-form-elements';
 import { CacheService } from 'ng2-cache-service';
 
 @Component({
diff --git a/src/app/client/src/app/modules/content-search/content-search.module.ts b/src/app/client/src/app/modules/content-search/content-search.module.ts
index cc135d0d9a3850748f9c8f47b626c663aa578c18..fc0f80b73fe0970688b94d966adcb66c8d66aca1 100644
--- a/src/app/client/src/app/modules/content-search/content-search.module.ts
+++ b/src/app/client/src/app/modules/content-search/content-search.module.ts
@@ -10,12 +10,12 @@ import {
 import { TelemetryModule } from '@sunbird/telemetry';
 import { ReactiveFormsModule } from '@angular/forms';
 import { FormsModule } from '@angular/forms';
-import { CommonConsumptionModule } from '@project-sunbird/common-consumption-v9';
+import { CommonConsumptionModule } from '@project-sunbird/common-consumption';
 import { SlickModule } from 'ngx-slick';
 import { RouterModule } from '@angular/router';
 import { SharedFeatureModule } from '@sunbird/shared-feature';
 import { TranslateModule } from '@ngx-translate/core';
-import { SbSearchFilterModule } from '@project-sunbird/common-form-elements-v9';
+import { SbSearchFilterModule } from '@project-sunbird/common-form-elements';
 
 @NgModule({
   declarations: [NoResultComponent, SearchFilterComponent, PageSectionComponent,
diff --git a/src/app/client/src/app/modules/core/components/content-type/content-type.component.scss b/src/app/client/src/app/modules/core/components/content-type/content-type.component.scss
index 2aa7803d49fe0fc0da374ecf33ab837cf8040d85..10680820a67bca2ab61366423881d68f289e2e3e 100644
--- a/src/app/client/src/app/modules/core/components/content-type/content-type.component.scss
+++ b/src/app/client/src/app/modules/core/components/content-type/content-type.component.scss
@@ -1,6 +1,5 @@
-@import "variables";
-@import "mixins/mixins";
-@import "../main-header/main-header.component.scss";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
+@use "../main-header/main-header.component.scss" as *;
 
 :host ::ng-deep {
   .sb-linkmenu {
@@ -48,7 +47,7 @@
       text-decoration: none;
       background-color: var(--sb-linkmenu-bg-hover);
       .sb-icon {
-        background-color: var(--sb-linkmenu-icon-bg-hover);
+        background-color: var(--sb-linkmenu-text-hover);
       }
     }
 /*
diff --git a/src/app/client/src/app/modules/core/components/main-footer/main-footer.component.scss b/src/app/client/src/app/modules/core/components/main-footer/main-footer.component.scss
index 30c7d4babcc717feba331215c0ecef922b793d57..efab2831a1e28ac3e303ee5993f82260c55b4b43 100644
--- a/src/app/client/src/app/modules/core/components/main-footer/main-footer.component.scss
+++ b/src/app/client/src/app/modules/core/components/main-footer/main-footer.component.scss
@@ -1,6 +1,5 @@
-@import "variables";
-@import "./mixins/mixins";
-@import "layout/footer";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
+@use "layout/footer" as *;
 
 :host ::ng-deep{
   .new-layout-footer{
diff --git a/src/app/client/src/app/modules/core/components/main-header/main-header.component.scss b/src/app/client/src/app/modules/core/components/main-header/main-header.component.scss
index 188f70c780013e2ab927af32a573939028f572b8..f7a5817b97e96a75b4aab0ec2bc176204f7cc826 100644
--- a/src/app/client/src/app/modules/core/components/main-header/main-header.component.scss
+++ b/src/app/client/src/app/modules/core/components/main-header/main-header.component.scss
@@ -1,6 +1,5 @@
-@import "variables";
-@import "mixins/mixins";
-@import "layout/header";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
+@use "layout/header" as *;
 
 .sb-header-bg{
   background: var(--sb-header-bg) !important;
@@ -78,7 +77,7 @@
 
         &:hover,
         &.active {
-          background-color: var(--sidebar-li-hover-bg);
+          background-color: var(--sidebar-profil-header-bg);
         }
       }
     }
diff --git a/src/app/client/src/app/modules/core/components/main-header/main-header.component.ts b/src/app/client/src/app/modules/core/components/main-header/main-header.component.ts
index 67528590a2dc3efb95ccdd740b92fb7e71abc020..f028cc9f2077adfb14caad94b1c28b7992d24f1b 100644
--- a/src/app/client/src/app/modules/core/components/main-header/main-header.component.ts
+++ b/src/app/client/src/app/modules/core/components/main-header/main-header.component.ts
@@ -332,7 +332,7 @@ export class MainHeaderComponent implements OnInit, OnDestroy {
       contentType: this.baseCategoryForm.filterEnv
     };
     this.formService.getFormConfig(formServiceInputParams).subscribe((data: any) => {
-      const layoutType = localStorage.getItem('layoutType') || '';
+      const layoutType = localStorage.getItem('layoutType') || 'base';
       const contentTypes = _.sortBy(data, 'index');
       const defaultTab = _.find(contentTypes, ['default', true]);
       const isOldThemeDisabled = _.get(defaultTab, 'isOldThemeDisabled');
diff --git a/src/app/client/src/app/modules/core/components/main-menu/main-menu.component.scss b/src/app/client/src/app/modules/core/components/main-menu/main-menu.component.scss
index 989b038e187b251f8cfd40bbc04755c931f42900..2bbc33b8a672cb7104451be832b8540a7e79ca25 100644
--- a/src/app/client/src/app/modules/core/components/main-menu/main-menu.component.scss
+++ b/src/app/client/src/app/modules/core/components/main-menu/main-menu.component.scss
@@ -1,5 +1,4 @@
-@import "variables";
-@import "mixins/mixins";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 
 .divider {
diff --git a/src/app/client/src/app/modules/core/core.module.ts b/src/app/client/src/app/modules/core/core.module.ts
index 697b451101142367d5500889aea4a5960c64f52f..29e02aebb5d6d9a9f1860dfe84240ab2f957fdcb 100644
--- a/src/app/client/src/app/modules/core/core.module.ts
+++ b/src/app/client/src/app/modules/core/core.module.ts
@@ -18,7 +18,7 @@ import { AuthGuard } from './guard/auth-gard.service';
 import { CacheService } from 'ng2-cache-service';
 import { WebExtensionModule } from '@project-sunbird/web-extensions';
 import { TelemetryModule } from '@sunbird/telemetry';
-import { CommonConsumptionModule } from '@project-sunbird/common-consumption-v9';
+import { CommonConsumptionModule } from '@project-sunbird/common-consumption';
 import { ContentTypeComponent } from './components/content-type/content-type.component';
 import { LocationModule } from '../../plugins/location/location.module';
 import { NotificationModule } from '../notification/notification.module';
diff --git a/src/app/client/src/app/modules/dashboard/components/course-dashboard/course-dashboard.component.scss b/src/app/client/src/app/modules/dashboard/components/course-dashboard/course-dashboard.component.scss
index 1ee5f8da12e23cb6a0e8dc0d626fd74a3bd6ce36..7a7935ae9ff840973e48237a1071c5ad2fce692f 100644
--- a/src/app/client/src/app/modules/dashboard/components/course-dashboard/course-dashboard.component.scss
+++ b/src/app/client/src/app/modules/dashboard/components/course-dashboard/course-dashboard.component.scss
@@ -1,4 +1,4 @@
-@import "mixins/mixins";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 div.content {
   height: 100%;
diff --git a/src/app/client/src/app/modules/dashboard/components/course-progress/course-progress.component.scss b/src/app/client/src/app/modules/dashboard/components/course-progress/course-progress.component.scss
index e4a0338d189afd42a03bc65f478ddded143c561b..6db7b33c1a4486e1ba260922cd4b3118fcff597f 100644
--- a/src/app/client/src/app/modules/dashboard/components/course-progress/course-progress.component.scss
+++ b/src/app/client/src/app/modules/dashboard/components/course-progress/course-progress.component.scss
@@ -1,4 +1,4 @@
-@import "mixins/mixins";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 .w-300 {
   width: calculateRem(300px);
diff --git a/src/app/client/src/app/modules/dashboard/components/dashboard-sidebar/dashboard-sidebar.component.scss b/src/app/client/src/app/modules/dashboard/components/dashboard-sidebar/dashboard-sidebar.component.scss
index bcf956cfde07e3c3e1bf2625537f0f4382be4a7d..4d638f7c8a1fc9c425b557846e50a1747c572578 100644
--- a/src/app/client/src/app/modules/dashboard/components/dashboard-sidebar/dashboard-sidebar.component.scss
+++ b/src/app/client/src/app/modules/dashboard/components/dashboard-sidebar/dashboard-sidebar.component.scss
@@ -1,4 +1,4 @@
-@import "mixins/mixins";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 :host{
   // .sidebar {
diff --git a/src/app/client/src/app/modules/dashboard/components/data-chart/data-chart.component.scss b/src/app/client/src/app/modules/dashboard/components/data-chart/data-chart.component.scss
index 06d35cbb74300b63183bde4ad6f26f1f4c47ce10..4c3d2b497f061c1ac4a6578f78b096275e251b02 100644
--- a/src/app/client/src/app/modules/dashboard/components/data-chart/data-chart.component.scss
+++ b/src/app/client/src/app/modules/dashboard/components/data-chart/data-chart.component.scss
@@ -1,5 +1,4 @@
-@import "variables";
-@import "mixins/mixins";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 
 .graph-statistics {
diff --git a/src/app/client/src/app/modules/dashboard/components/filter/filter.component.scss b/src/app/client/src/app/modules/dashboard/components/filter/filter.component.scss
index 2c76973bb82cbcd6bd13d9d5c8455d4107621c57..6d9c9e98beb775b98c6f289a60ad4fa070efe8ed 100644
--- a/src/app/client/src/app/modules/dashboard/components/filter/filter.component.scss
+++ b/src/app/client/src/app/modules/dashboard/components/filter/filter.component.scss
@@ -1,5 +1,4 @@
-@import "variables";
-@import "mixins/mixins";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 .sb-prominent-filter-field {
   .form-control {
diff --git a/src/app/client/src/app/modules/dashboard/components/list-all-reports/list-all-reports.component.scss b/src/app/client/src/app/modules/dashboard/components/list-all-reports/list-all-reports.component.scss
index 1c701f9f344ef0242058bdfe84e6d9c0c837eb78..e2ecd9e7996c5fff69b56990b45b034b447a9054 100644
--- a/src/app/client/src/app/modules/dashboard/components/list-all-reports/list-all-reports.component.scss
+++ b/src/app/client/src/app/modules/dashboard/components/list-all-reports/list-all-reports.component.scss
@@ -1,5 +1,4 @@
-@import "variables";
-@import "mixins/mixins";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 .sbgrid {
     display: grid;
diff --git a/src/app/client/src/app/modules/dashboard/components/organization/organization.component.scss b/src/app/client/src/app/modules/dashboard/components/organization/organization.component.scss
index 39b000ee293ca603f1e1b3e8334177b6aaba77e8..6905dfc4eecb5fefd115e2a2d7f400142fe9f6b2 100644
--- a/src/app/client/src/app/modules/dashboard/components/organization/organization.component.scss
+++ b/src/app/client/src/app/modules/dashboard/components/organization/organization.component.scss
@@ -1,5 +1,5 @@
 
-@import "mixins/mixins";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 .ui.card.adminDashboardCard {
     width: calculateRem(400px);
diff --git a/src/app/client/src/app/modules/dashboard/components/re-issue-certificate/re-issue-certificate.component.scss b/src/app/client/src/app/modules/dashboard/components/re-issue-certificate/re-issue-certificate.component.scss
index 47e5b7cd70042b38d76531cf9cc89d918366fadf..1112096fd26b73ec34c044df6a1e49f220810cb3 100644
--- a/src/app/client/src/app/modules/dashboard/components/re-issue-certificate/re-issue-certificate.component.scss
+++ b/src/app/client/src/app/modules/dashboard/components/re-issue-certificate/re-issue-certificate.component.scss
@@ -1,4 +1,4 @@
-@import "./mixins/mixins";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 .re-issue-content {
   margin-top: calculateRem(36px);
diff --git a/src/app/client/src/app/modules/dashboard/components/report/report.component.scss b/src/app/client/src/app/modules/dashboard/components/report/report.component.scss
index dfb27e8697d6bf4d0153923681ed7589db7b4740..440b06c9e3b8b883ebbc5db50b4e2b91a0b699b1 100644
--- a/src/app/client/src/app/modules/dashboard/components/report/report.component.scss
+++ b/src/app/client/src/app/modules/dashboard/components/report/report.component.scss
@@ -1,5 +1,4 @@
-@import "variables";
-@import "mixins/mixins";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 .sb-graph-section{
 
diff --git a/src/app/client/src/app/modules/dashboard/components/sb-table/sb-table.component.scss b/src/app/client/src/app/modules/dashboard/components/sb-table/sb-table.component.scss
index 743599b1f19511b426780af56d821ad4126df459..7397db5a2ac5926fb802da747d93218ac3561d25 100644
--- a/src/app/client/src/app/modules/dashboard/components/sb-table/sb-table.component.scss
+++ b/src/app/client/src/app/modules/dashboard/components/sb-table/sb-table.component.scss
@@ -1,5 +1,4 @@
-@import "variables";
-@import "mixins/mixins";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 ::ng-deep{
     .sb-filter-g__item {
diff --git a/src/app/client/src/app/modules/dashboard/components/usage-reports/usage-reports.component.scss b/src/app/client/src/app/modules/dashboard/components/usage-reports/usage-reports.component.scss
index af5ec40151b53c7d55f364cb16498f5884a7995c..d675f1c10d18d0263a7d5c98e529c29e769edfde 100644
--- a/src/app/client/src/app/modules/dashboard/components/usage-reports/usage-reports.component.scss
+++ b/src/app/client/src/app/modules/dashboard/components/usage-reports/usage-reports.component.scss
@@ -1,4 +1,4 @@
-@import "mixins/mixins";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 .sb-graph-section{
     border: calculateRem(1px) solid var(--rc-dddddd);
diff --git a/src/app/client/src/app/modules/dashboard/dashboard.module.ts b/src/app/client/src/app/modules/dashboard/dashboard.module.ts
index f094a07857586a406e7335e3900b32b5d315ce4a..ca426f41c8e3c19d0e1ec792635d526bd1c9c615 100644
--- a/src/app/client/src/app/modules/dashboard/dashboard.module.ts
+++ b/src/app/client/src/app/modules/dashboard/dashboard.module.ts
@@ -1,6 +1,6 @@
 // Angular modules
 import { NgModule } from '@angular/core';
-import { CommonConsumptionModule } from '@project-sunbird/common-consumption-v9';
+import { CommonConsumptionModule } from '@project-sunbird/common-consumption';
 import { CommonModule } from '@angular/common';
 import { FormsModule, ReactiveFormsModule } from '@angular/forms';
 // Modules
diff --git a/src/app/client/src/app/modules/dashboard/services/download/download.service.spec.ts b/src/app/client/src/app/modules/dashboard/services/download/download.service.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..076be6c140dc41cc0bdea5bfd9d0beae491045d2
--- /dev/null
+++ b/src/app/client/src/app/modules/dashboard/services/download/download.service.spec.ts
@@ -0,0 +1,59 @@
+import { ConfigService } from "../../../shared/services/config/config.service";
+import { DownloadService } from "./download.service";
+import { LearnerService } from "../../../../modules/core/services/learner/learner.service";
+import { DashboardUtilsService } from "../dashboard-utils/dashboard-utils.service";
+import { of } from "rxjs";
+import * as mockData from "./download.service.spec.data";
+const testData = <any>mockData.mockRes;
+ 
+describe("DownloadService", () => {
+ let downloadService: DownloadService;
+ const mockLearnerService: Partial<LearnerService> = {
+   get: jest.fn(),
+ };
+ const mockDashboardUtilsService: Partial<DashboardUtilsService> = {};
+ const mockConfigService: Partial<ConfigService> = {
+   urlConFig: {
+     URLS: {
+       DASHBOARD: {
+         ORG_CREATION: "ORG_CREATION",
+         ORG_CONSUMPTION: "ORG_CONSUMPTION",
+       },
+     },
+   },
+ };
+ beforeAll(() => {
+   downloadService = new DownloadService(
+     mockLearnerService as LearnerService,
+     mockDashboardUtilsService as DashboardUtilsService,
+     mockConfigService as ConfigService
+   );
+ });
+ 
+ beforeEach(() => {
+   jest.clearAllMocks();
+   jest.resetAllMocks();
+ });
+ 
+ it("should be created", () => {
+   expect(downloadService).toBeTruthy();
+ });
+ 
+ it("should call learner service", () => {
+   const reqData = {
+     data: { identifier: "do_123", timePeriod: "7d" },
+     dataset: "COURSE_CONSUMPTION",
+   };
+   jest
+     .spyOn(mockLearnerService, "get")
+     .mockReturnValue(of(testData.downloadSuccess));
+   jest.spyOn(downloadService, "getReport");
+   // Assertions
+   expect(downloadService).toBeTruthy();
+   expect(mockDashboardUtilsService).toBeTruthy();
+   expect(mockLearnerService).toBeTruthy();
+   const response = downloadService.getReport(reqData);
+   expect(downloadService.getReport).toHaveBeenCalled();
+   expect(mockLearnerService.get).toHaveBeenCalled();
+ });
+});
diff --git a/src/app/client/src/app/modules/dashboard/services/organization/organization.service.spec.ts b/src/app/client/src/app/modules/dashboard/services/organization/organization.service.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..54341431764e5422afdef62bc1a881e7702861e1
--- /dev/null
+++ b/src/app/client/src/app/modules/dashboard/services/organization/organization.service.spec.ts
@@ -0,0 +1,88 @@
+import { ConfigService } from "../../../shared/services/config/config.service";
+import { OrganisationService } from "./organization.service";
+import { LearnerService } from "../../../../modules/core/services/learner/learner.service";
+import { DashboardUtilsService } from "../dashboard-utils/dashboard-utils.service";
+import { of, throwError } from "rxjs";
+import * as mockData from "./organization.service.spec.data";
+import { HttpErrorResponse } from "@angular/common/http";
+import { data } from "jquery";
+const testData = <any>mockData.mockRes;
+ 
+describe("OrganisationService", () => {
+ let organisationService: OrganisationService;
+ const mockLearnerService: Partial<LearnerService> = {
+   get: jest.fn(),
+ };
+ const mockDashboardUtilsService: Partial<DashboardUtilsService> = {};
+ const mockConfigService: Partial<ConfigService> = {
+   urlConFig: {
+     URLS: {
+       DASHBOARD: {
+         ORG_CREATION: "ORG_CREATION",
+         ORG_CONSUMPTION: "ORG_CONSUMPTION",
+       },
+     },
+   },
+ };
+ beforeAll(() => {
+   organisationService = new OrganisationService(
+     mockLearnerService as LearnerService,
+     mockDashboardUtilsService as DashboardUtilsService,
+     mockConfigService as ConfigService
+   );
+ });
+ 
+ beforeEach(() => {
+   jest.clearAllMocks();
+   jest.resetAllMocks();
+ });
+ 
+ it("should make api call to get org creation data", () => {
+   const params = {
+     data: { identifier: "do_2123250076616048641482", timePeriod: "7d" },
+     dataset: "ORG_CREATION",
+   };
+   const mockResponse = testData.creationSuccessData;
+   jest.spyOn(mockLearnerService, "get").mockReturnValue(of(mockResponse));
+   organisationService.getDashboardData(params).subscribe({
+     next: (data) => {},
+   });
+   expect(organisationService).toBeTruthy();
+   expect(organisationService.parseApiResponse).toBeCalled;
+ });
+ 
+ it("should parse org creation api response", () => {
+   const mockResponse = testData.parsedCreationData;
+   jest.spyOn(organisationService, "parseApiResponse");
+   const response = organisationService.parseApiResponse(
+     mockResponse,
+     "ORG_CREATION"
+   );
+   expect(organisationService).toBeTruthy();
+   expect(mockDashboardUtilsService).toBeTruthy();
+   expect(response.bucketData).toEqual(mockResponse.result.series);
+   expect(organisationService.parseApiResponse).not.toBeUndefined();
+   expect(organisationService.graphSeries).not.toBeUndefined();
+   expect(response.series).not.toBeNull();
+   expect(response.numericData.length).toBeGreaterThan(2);
+ });
+ 
+ it("should handle error", async () => {
+   const errorResponse = new HttpErrorResponse({
+     error: "404",
+   });
+   const params = {
+     data: { identifier: "do_2123250076616048641482", timePeriod: "7d" },
+     dataset: "ORG_CREATION",
+   };
+   const mockResponse = testData.creationSuccessData;
+   jest
+     .spyOn(mockLearnerService, "get")
+     .mockReturnValue(throwError(() => errorResponse));
+   organisationService.getDashboardData(params).subscribe({
+     next: (data) => console.log(data),
+     error: (error) => {},
+   });
+   expect(organisationService.parseApiResponse).toBeCalled;
+ });
+});
diff --git a/src/app/client/src/app/modules/dashboard/services/renderer/renderer.service.spec.ts b/src/app/client/src/app/modules/dashboard/services/renderer/renderer.service.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..a08346d5fe86f9c9d56b4c93adb592ce7d267f69
--- /dev/null
+++ b/src/app/client/src/app/modules/dashboard/services/renderer/renderer.service.spec.ts
@@ -0,0 +1,35 @@
+import { RendererService } from "./renderer.service";
+import { of } from "rxjs";
+import { LineChartService } from "../chartjs";
+ 
+describe("RendererService", () => {
+ let rendererService: RendererService;
+ const lineChartService: Partial<LineChartService> = {
+   parseLineChart: jest.fn(),
+ };
+ 
+ beforeAll(() => {
+   rendererService = new RendererService(lineChartService as LineChartService);
+ });
+ 
+ beforeEach(() => {
+   jest.clearAllMocks();
+   jest.resetAllMocks();
+ });
+ 
+ it("should be created", () => {
+   expect(rendererService).toBeTruthy();
+ });
+ 
+ it("testing visualizer method", () => {
+   const test = {
+     bucketData: "test",
+     numericData: ["a", "b", "c"],
+     series: "testdata",
+   };
+ 
+   jest.spyOn(rendererService, "visualizer");
+   rendererService.visualizer(test, "line");
+   expect(lineChartService.parseLineChart).toBeCalled();
+ });
+});
diff --git a/src/app/client/src/app/modules/dashboard/services/usage/usage.service.spec.ts b/src/app/client/src/app/modules/dashboard/services/usage/usage.service.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..258f73d35892c007e9b13d632f46a6b14b7176a3
--- /dev/null
+++ b/src/app/client/src/app/modules/dashboard/services/usage/usage.service.spec.ts
@@ -0,0 +1,74 @@
+import { UsageService } from "./usage.service";
+import { of } from "rxjs";
+import { HttpClient } from "@angular/common/http";
+ 
+describe("UsageService", () => {
+ let usageService: UsageService;
+ const httpClient: Partial<HttpClient> = {
+   get: jest.fn(),
+ };
+ 
+ beforeAll(() => {
+   usageService = new UsageService(httpClient as HttpClient);
+ });
+ 
+ beforeEach(() => {
+   jest.clearAllMocks();
+   jest.resetAllMocks();
+ });
+ 
+ it("should be created", () => {
+   expect(usageService).toBeTruthy();
+ });
+ 
+ describe("getData method ", () => {
+   it("should call the api without paramaters", () => {
+     jest.spyOn(httpClient, "get").mockReturnValue(of({ test: "ok" }));
+     usageService.getData("https://dev.sunbirded.org/explore");
+     expect(httpClient.get).toHaveBeenCalled();
+     expect(httpClient.get).toHaveBeenCalledTimes(1);
+     expect(httpClient.get).toHaveBeenCalledWith(
+       "https://dev.sunbirded.org/explore",
+       { responseType: "json" }
+     );
+   });
+ 
+   it("should call the api with parameters", () => {
+     jest.spyOn(httpClient, "get").mockReturnValue(of({ test: "ok" }));
+     const res=usageService.getData("https://dev.sunbirded.org/explore", {
+       tt: "val",
+     } as any);
+     expect(httpClient.get).toHaveBeenCalled();
+     expect(httpClient.get).toHaveBeenCalledWith(
+       "https://dev.sunbirded.org/explore",
+       { responseType: "json" }
+     );
+   });
+ 
+   it("should return data  if response do contain result key", () => {
+     jest.spyOn(httpClient, "get").mockReturnValue(of({ result: "123" }));
+     const result = usageService.getData("https://dev.sunbirded.org/explore");
+     expect(httpClient.get).toHaveBeenCalled();
+     result.subscribe((res) => {
+       expect(res).toBeDefined();
+       expect(res).toEqual({
+         responseCode: "OK",
+         result: "123",
+       });
+     });
+   });
+ 
+   it("should return data as it is if response do not contain result key", () => {
+     jest.spyOn(httpClient, "get").mockReturnValue(of({ data: "123" }));
+     const result = usageService.getData("https://dev.sunbirded.org/explore");
+     expect(httpClient.get).toHaveBeenCalled();
+     result.subscribe((res) => {
+       expect(res).toBeDefined();
+       expect(res).toEqual({
+         responseCode: "OK",
+         result: { data: "123" },
+       });
+     });
+   });
+ });
+});
diff --git a/src/app/client/src/app/modules/dial-code-search/components/dial-code-card/dial-code-card.component.scss b/src/app/client/src/app/modules/dial-code-search/components/dial-code-card/dial-code-card.component.scss
index 901c6c203c3a5ad37cf43aedff90d7b21625f7d7..41062c538d847a6092f58be0da2ac2bbe0542663 100644
--- a/src/app/client/src/app/modules/dial-code-search/components/dial-code-card/dial-code-card.component.scss
+++ b/src/app/client/src/app/modules/dial-code-search/components/dial-code-card/dial-code-card.component.scss
@@ -1,5 +1,4 @@
-@import 'variables';
-@import "./mixins/mixins";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 .btn-div .button {
     display: flex;
diff --git a/src/app/client/src/app/modules/dial-code-search/components/dial-code-card/dial-code-card.component.spec.ts b/src/app/client/src/app/modules/dial-code-search/components/dial-code-card/dial-code-card.component.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..ede87f6a3a8d6819fb0e7cf17f570671b17bb676
--- /dev/null
+++ b/src/app/client/src/app/modules/dial-code-search/components/dial-code-card/dial-code-card.component.spec.ts
@@ -0,0 +1,31 @@
+import { ResourceService } from "../../../shared";
+import { Response } from "./dial-code-card.component.spec.data";
+import { DialCodeCardComponent } from "./dial-code-card.component";
+
+describe("DialCodeCardComponent", () => {
+  let component: DialCodeCardComponent;
+  const mockResourceService: Partial<ResourceService> = {};
+
+  beforeAll(() => {
+    component = new DialCodeCardComponent(
+      mockResourceService as ResourceService
+    );
+  });
+
+  beforeEach(() => {
+    jest.clearAllMocks();
+  });
+
+  it("should create", () => {
+    expect(component).toBeTruthy();
+  });
+
+  it("should show TEST INPUT for all data", () => {
+    component.dialCode = "test";
+    component.data = Response.cardData;
+    component.singleContentRedirect = "B1 Test";
+    jest.spyOn(component, "onAction");
+    component.ngOnInit();
+    expect(component.onAction).toBeCalled();
+  });
+});
diff --git a/src/app/client/src/app/modules/dial-code-search/components/dial-code/dial-code.component.scss b/src/app/client/src/app/modules/dial-code-search/components/dial-code/dial-code.component.scss
index 86ed13f52282851e09d9a9b6b620a2b7f6afcf1a..307eeb901d1b52eb69e8d15058789f22611b1312 100644
--- a/src/app/client/src/app/modules/dial-code-search/components/dial-code/dial-code.component.scss
+++ b/src/app/client/src/app/modules/dial-code-search/components/dial-code/dial-code.component.scss
@@ -1,6 +1,4 @@
-@import "variables";
-
-@import "./mixins/mixins";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 /*get dial code page responsive css*/
 .mobile-popup-dimmer {
@@ -165,7 +163,7 @@
 .header {
   display: flex;
   flex-direction: row;
-  @include margin(1rem 0 0 0);
+  margin:1rem 0 0 0;
   padding: 0px 0;
   align-items: center;
 
diff --git a/src/app/client/src/app/modules/dial-code-search/components/get/get.component.scss b/src/app/client/src/app/modules/dial-code-search/components/get/get.component.scss
index 677c245035467494c6869a22a9a5c0ae11ab51b2..84b30ca46ee7cefc9280511e8b350e375365e7dc 100644
--- a/src/app/client/src/app/modules/dial-code-search/components/get/get.component.scss
+++ b/src/app/client/src/app/modules/dial-code-search/components/get/get.component.scss
@@ -1,5 +1,4 @@
-@import './variables';
-@import "./mixins/mixins";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 .sb-explore-qr-page-cover {
   padding: calculateRem(32px) 0 0 0;
diff --git a/src/app/client/src/app/modules/dial-code-search/dial-code-search.module.ts b/src/app/client/src/app/modules/dial-code-search/dial-code-search.module.ts
index 17f2f915510059850af9bf2bd2dc05276d5bbc00..4ad1f422c906b36269b38afe3401eb99da83d382 100644
--- a/src/app/client/src/app/modules/dial-code-search/dial-code-search.module.ts
+++ b/src/app/client/src/app/modules/dial-code-search/dial-code-search.module.ts
@@ -12,7 +12,7 @@ import { GetComponent, DialCodeComponent, DialCodeCardComponent } from './compon
 import { FormsModule } from '@angular/forms';
 import { InfiniteScrollModule } from 'ngx-infinite-scroll';
 import { PlayerHelperModule } from '@sunbird/player-helper';
-import { CommonConsumptionModule } from '@project-sunbird/common-consumption-v9';
+import { CommonConsumptionModule } from '@project-sunbird/common-consumption';
 
 @NgModule({
   imports: [
diff --git a/src/app/client/src/app/modules/discussion/components/forum/forum.component.scss b/src/app/client/src/app/modules/discussion/components/forum/forum.component.scss
index 618f0101752c1c597d3c8dc511b69347bb33e202..01010ddf903ae43dcb927f725a73e64966d4b7b1 100644
--- a/src/app/client/src/app/modules/discussion/components/forum/forum.component.scss
+++ b/src/app/client/src/app/modules/discussion/components/forum/forum.component.scss
@@ -1,4 +1,4 @@
-@import "mixins/mixins";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 ::ng-deep {
   .sb-modal .ui.modal.fullscreen .sb-modal-content {
diff --git a/src/app/client/src/app/modules/explore-page/components/explore-page/explore-page.component.scss b/src/app/client/src/app/modules/explore-page/components/explore-page/explore-page.component.scss
index c302fc1140f854ce5f02974a17304071988fd894..0373dadbad20f510510b4a071b6962156af2301a 100644
--- a/src/app/client/src/app/modules/explore-page/components/explore-page/explore-page.component.scss
+++ b/src/app/client/src/app/modules/explore-page/components/explore-page/explore-page.component.scss
@@ -1,6 +1,4 @@
-@import "variables";
-@import "mixins/mixins";
-
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 .course-card-width {
   width: calculateRem(280px) !important;
 }
@@ -10,13 +8,12 @@
   align-items: center;
   justify-content: space-between;
   background-color:var(--sb-profile-bg-c-4);
-  color: var(--black);
+  color: var(--sb-section-preference);
   padding: calculateRem(32px);
   border-radius: calculateRem(24px);
   position: relative;
   overflow: hidden;
   margin-top:calculateRem(32px);
-
   @include respond-below(sm) {
     flex-wrap: wrap;
   }
@@ -43,20 +40,13 @@
         font-weight: bold;
         margin-right: calculateRem(32px);
         html[dir="rtl"] & {
-          margin-left: calculateRem(32px); 
+          margin-left: calculateRem(32px);
         }
         @include respond-below(sm){
          margin-right:0px;
         }
       }
     }
-    .change-preference {
-      position: relative;
-      z-index: 1;
-      @include respond-below(sm) {
-        padding-top: calculateRem(8px);
-      }
-    }
     svg {
       position: absolute;
       right: calculateRem(32px);
@@ -71,18 +61,9 @@
       display: block !important;
     }
 }
-.section-hr {
-  border: calculateRem(0.5px) solid var(--rc-dad9cb);
-}
-.no-background {
-  background: none;
-}
-
 .home-container {
   padding:0;
-  // border-radius:2.5rem;
 }
-
 :host {
   .banner-image {
     overflow: hidden;
@@ -103,7 +84,7 @@
     }
     .slick-dots li button:before {
       opacity: 1;
-      background: var(--gray-200);
+      background: var(--slick-dots-color);
       content: "";
       border-radius: 50%;
       width: calculateRem(12px);
@@ -113,20 +94,12 @@
       transform: translate(-50%, -50%);
     }
     .slick-dots li.slick-active button:before {
-      background: var(--gray-800);
+      background: var(--slick-dots-active-color);
     }
     .slick-track {
       margin: auto;
     }
   }
-  /*.banner-overlay {
-    position: absolute;
-    top: 0;
-    left: 0;
-    height: 100%;
-    width: 100%;
-    background: linear-gradient(233deg, rgba(0,0,0,0) 0%, #191919 100%);
-  }*/
   .explore-text {
     color: var(--primary-color);
     font-size: calculateRem(20px);
@@ -134,7 +107,4 @@
     padding: calculateRem(24px) calculateRem(32px);
     z-index: 1;
   }
-  .section-hr {
-    border: calculateRem(0.5px) solid var(--rc-dad9cb);
-  }
 }
\ No newline at end of file
diff --git a/src/app/client/src/app/modules/explore-page/components/explore-page/explore-page.component.ts b/src/app/client/src/app/modules/explore-page/components/explore-page/explore-page.component.ts
index 896ac15566b1d63da97ea6ac74e69776c0fa7365..0c115e18d304dde8361d9b25f95050b50c47d250 100644
--- a/src/app/client/src/app/modules/explore-page/components/explore-page/explore-page.component.ts
+++ b/src/app/client/src/app/modules/explore-page/components/explore-page/explore-page.component.ts
@@ -453,6 +453,14 @@ export class ExplorePageComponent implements OnInit, OnDestroy, AfterViewInit {
                         request.channelId = this.selectedFilters['channel'];
                     }
                     const option = this.searchService.getSearchRequest(request, get(filters, 'primaryCategory'));
+                        const params = _.get(this.activatedRoute, 'snapshot.queryParams');
+                        _.filter(Object.keys(params),filterValue => { 
+                            if(((_.get(currentPageData , 'metaData.filters').indexOf(filterValue) !== -1)))
+                            {
+                                option.filters[filterValue] = (typeof(params[filterValue]) === "string" ) ? params[filterValue].split(',') : params[filterValue];
+
+                            }
+                        });
                     if (this.userService.loggedIn) {
                         option.filters['visibility'] = option.filters['channel'] = [];
                     }
@@ -464,7 +472,7 @@ export class ExplorePageComponent implements OnInit, OnDestroy, AfterViewInit {
                                     this.utilService.processCourseFacetData(_.get(response, 'result'), _.get(request, 'facets')) : {});
                                 this.searchResponse = get(response, 'result.content');
                                 if (_.has(response, 'result.QuestionSet')) {
-                                  this.searchResponse = _.merge(this.searchResponse, _.get(response, 'result.QuestionSet'));
+                                 this.searchResponse = _.merge(this.searchResponse, _.get(response, 'result.QuestionSet'));
                                 }
                                 const filteredContents = omit(groupBy(this.searchResponse, content => {
                                     return content[groupByKey] || content['subject'] || 'Others';
diff --git a/src/app/client/src/app/modules/explore-page/explore-page.module.ts b/src/app/client/src/app/modules/explore-page/explore-page.module.ts
index c80707ab1595d59f6d843e3de86e44e1126cfe46..2ba9474725ddffdbe810c2df3abaf06d8cd75fbf 100644
--- a/src/app/client/src/app/modules/explore-page/explore-page.module.ts
+++ b/src/app/client/src/app/modules/explore-page/explore-page.module.ts
@@ -11,11 +11,11 @@ import {
   SuiRatingModule, SuiCollapseModule, SuiDimmerModule
 } from 'ng2-semantic-ui-v9';
 import { WebExtensionModule } from '@project-sunbird/web-extensions';
-import { CommonConsumptionModule } from '@project-sunbird/common-consumption-v9';
+import { CommonConsumptionModule } from '@project-sunbird/common-consumption';
 import { ContentSearchModule } from '@sunbird/content-search';
 import { SlickModule } from 'ngx-slick';
 import { ExplorePageComponent } from './components';
-import { ContentSectionModule } from 'content-section';
+import { ContentSectionModule } from 'content-section-v11';
 import {ObservationModule} from '../observation/observation.module';
 
 @NgModule({
diff --git a/src/app/client/src/app/modules/groups/components/activity/activity-dashboard/activity-dashboard.component.scss b/src/app/client/src/app/modules/groups/components/activity/activity-dashboard/activity-dashboard.component.scss
index d2644c1096c7fdb6110c54e54291132076cfa6f2..f7d9a4e81dcf7c1b8f890fde9dbdcce02f8518c3 100644
--- a/src/app/client/src/app/modules/groups/components/activity/activity-dashboard/activity-dashboard.component.scss
+++ b/src/app/client/src/app/modules/groups/components/activity/activity-dashboard/activity-dashboard.component.scss
@@ -1,5 +1,5 @@
-@import 'mixins/mixins';
-@import './pages/content-header';
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
+@use 'pages/content-header' as *;
 
 .sb-dashlet-table {
     z-index: 2;
diff --git a/src/app/client/src/app/modules/groups/components/activity/activity-details/activity-details.component.scss b/src/app/client/src/app/modules/groups/components/activity/activity-details/activity-details.component.scss
index 9dff77afca76e85335ab8a33c093f032044c51cf..0dddca346e7148630a4baff59cd20ca2e698286d 100644
--- a/src/app/client/src/app/modules/groups/components/activity/activity-details/activity-details.component.scss
+++ b/src/app/client/src/app/modules/groups/components/activity/activity-details/activity-details.component.scss
@@ -1,10 +1,6 @@
-@import "variables";
-@import "mixins/mixins";
-@import './pages/content-header';
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
+@use 'pages/content-header' as *;
 
-.devided-line {
-  border-bottom: calculateRem(0.5px) solid var(--gray-100);
-}
 .member-no-result {
   .no-result-text {
     font-size: calculateRem(14px);
@@ -18,7 +14,6 @@
 //nested group css
 .nested-group-content {
   border-radius: calculateRem(8px);
-  // box-shadow: 0 calculateRem(3px) calculateRem(5px) calculateRem(4px) rgba(0, 0, 0, 0.05);
   position: relative;
   .nested-course-area {
     border-bottom: calculateRem(1px) solid var(--gray-100);
@@ -74,8 +69,7 @@
 .download-text{
   font-size:12px;
   color:var(--primary-400);
-  font-weight:normal;
-  font-family: 'Noto Sans Bold';
+  font-weight: bold;
 }
 
 .dt-disabled-btn:disabled, .disabled[disabled]{
diff --git a/src/app/client/src/app/modules/groups/components/activity/activity-list/activity-list.component.scss b/src/app/client/src/app/modules/groups/components/activity/activity-list/activity-list.component.scss
index 5378183afe1440293cecd7fa74c444b6ac316d7c..bf94cc355090c96515f352bcce3f7d1000cd7323 100644
--- a/src/app/client/src/app/modules/groups/components/activity/activity-list/activity-list.component.scss
+++ b/src/app/client/src/app/modules/groups/components/activity/activity-list/activity-list.component.scss
@@ -1,45 +1,5 @@
-@import "mixins/mixins";
-
-.kabab-menu {
-  color: var(--primary-400);
-  width: calculateRem(30px);
-  height: calculateRem(30px);
-  line-height: calculateRem(28px);
-  text-align: center;
-  border-radius: 50%;
-  padding-left: calculateRem(6px);
-  &:hover {
-    background: var(--gray-0);
-    cursor: pointer;
-  }
-}
-.kabab-menu::after {
-  content: "\2807";
-  font-size: calculateRem(24px);
-}
-.kabab-menu-dropdown-content {
-  position: absolute;
-  border-radius: calculateRem(2px);
-  background-color: var(--kabab-menu-dropdown-bg);
-  box-shadow: 0 calculateRem(3px) calculateRem(5px) calculateRem(4px) rgba(0, 0, 0, 0.05);
-  padding: calculateRem(8px);
-  z-index: 1;
-  text-align: left;
-  right: 0;
-  top: 0;
-  min-width: calculateRem(170px);
-
-  .list {
-    display: flex;
-    align-items: center;
-    cursor: pointer;
-    font-size: calculateRem(14px);
-    padding: calculateRem(8px);
-    &:hover,&:active{
-      background-color: var(--kabab-menu-dropdown-item-active);
-    }
-  }
-}
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
+@use "pages/kabab-menu" as *;
 
 :host {
   .header {
diff --git a/src/app/client/src/app/modules/groups/components/activity/activity-search/activity-search.component.scss b/src/app/client/src/app/modules/groups/components/activity/activity-search/activity-search.component.scss
index d29a34e52163bb76f18fda4038bbdb1caf17fbf1..6dd5e6f2e09a977dd7aa6d9fcec951c3564e67bb 100644
--- a/src/app/client/src/app/modules/groups/components/activity/activity-search/activity-search.component.scss
+++ b/src/app/client/src/app/modules/groups/components/activity/activity-search/activity-search.component.scss
@@ -1,80 +1,7 @@
-@import "components/tabs";
-@import "mixins/mixins";
-.section-header {
-  display: flex;
-  flex-direction: row;
-  padding: 0;
-  align-items: center;
-  &__title {
-    font-family: inherit;
-    text-overflow: ellipsis;
-    overflow: hidden;
-    flex: 1;
-    height: calculateRem(24px);
-    color: var(--primary-color);
-    font-size: calculateRem(18px);
-    font-weight: 700;
-    text-transform: capitalize;
-    line-height: calculateRem(26px);
-    display: flex;
-    align-items: center;
-    .badge {
-      display: inline-block;
-      background: var(--sbt-badge-bg);
-    color: var(--sbt-badge-text);
-      text-align: center;
-      padding: 0 calculateRem(12px);
-      border-radius: calculateRem(4px);
-      height: calculateRem(24px);
-      line-height: calculateRem(24px);
-      font-size: calculateRem(16px);
-      font-weight: 400;
-      margin-left: calculateRem(8px);
-      html[dir="rtl"] & {
-        margin-right: calculateRem(8px);
-        margin-left: inherit;
-      }
-    }
-  }
-}
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
+@use "components/tabs" as *;
 
-.dropdown-menu-content {
-  position: absolute;
-  border-radius: calculateRem(2px);
-  background-color: var(--white);
-  box-shadow: 0 calculateRem(3px) calculateRem(5px) calculateRem(4px) rgba(var(--rc-rgba-black), 0.05);
-  padding: calculateRem(16px);
-  z-index: 1;
-  text-align: left;
-  right: calculateRem(10px);
-  top: calculateRem(10px);
-  .list {
-    display: flex;
-    align-items: center;
-    cursor: pointer;
-    &:first-child {
-      margin-bottom: calculateRem(8px);
-      &:hover {
-        span {
-          color: var(--primary-color);
-        }
-      }
-    }
-    &:hover {
-      span {
-        color: var(--red-400);
-      }
-    }
-    span {
-      font-size: calculateRem(14px);
-      padding-left: calculateRem(8px);
-    }
-  }
-}
 
-.sb-pagesection-activity {
-  font-size: calculateRem(18px);
-}
 .sb-pageSection-activity-title {
   color: var(--primary-400);
 }
diff --git a/src/app/client/src/app/modules/groups/components/activity/add-activity-content-types/add-activity-content-types.component.scss b/src/app/client/src/app/modules/groups/components/activity/add-activity-content-types/add-activity-content-types.component.scss
index 08c2b0a1ae6d965a0701e8bd7a8fd088949253f6..7199bbcb055bb8564ef66ca1fa96da423e392560 100644
--- a/src/app/client/src/app/modules/groups/components/activity/add-activity-content-types/add-activity-content-types.component.scss
+++ b/src/app/client/src/app/modules/groups/components/activity/add-activity-content-types/add-activity-content-types.component.scss
@@ -1,4 +1,4 @@
-@import "mixins/mixins";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 .sb-add-activity-content-cards{
  @include respond-above(md){
diff --git a/src/app/client/src/app/modules/groups/components/add-member/add-member.component.scss b/src/app/client/src/app/modules/groups/components/add-member/add-member.component.scss
index ca69dd1cb38a17cd3941ce1647000f2b7b225062..dae04db2e08a2784ad8539d489704cfc9bcaa22e 100644
--- a/src/app/client/src/app/modules/groups/components/add-member/add-member.component.scss
+++ b/src/app/client/src/app/modules/groups/components/add-member/add-member.component.scss
@@ -1,4 +1,4 @@
-@import './mixins/mixins';
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 .title {
 	color: var(--gray-800);
@@ -41,38 +41,6 @@
 		}
 	}
 }
-
-.textbook-container {
-	box-shadow: 0 0 calculateRem(10px) 0 rgba(var(--rc-rgba-black), 0.25);
-	position: relative;
-}
-
-.textbook {
-	&__details {
-		flex: 1;
-		min-width: 0;
-	}
-
-	&__bookimg {
-		width: calculateRem(48px);
-		height: calculateRem(48px);
-	}
-
-	&__heading {
-		min-width: 0;
-
-		.textbook__title {
-			overflow: hidden;
-			text-overflow: ellipsis;
-			white-space: nowrap;
-		}
-	}
-
-	&__addbtn {
-		white-space: nowrap;
-	}
-}
-
 .sb-field {
 	.message {
 		font-size: calculateRem(10px);
diff --git a/src/app/client/src/app/modules/groups/components/create-edit-group/create-edit-group.component.scss b/src/app/client/src/app/modules/groups/components/create-edit-group/create-edit-group.component.scss
index b041c475ee146ee93a5e9ff77a5411dddbaa6f8e..2d880d01a84f4453e6c0be5426648e37c83e18b4 100644
--- a/src/app/client/src/app/modules/groups/components/create-edit-group/create-edit-group.component.scss
+++ b/src/app/client/src/app/modules/groups/components/create-edit-group/create-edit-group.component.scss
@@ -1,8 +1,3 @@
-@import"variables";
-@import 'mixins/mixins';
-@import 'pages/mat-modal';
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
+
 
-.create-group-title{
-    font-size: calculateRem(16px);
-    font-weight: bold;
-  }
\ No newline at end of file
diff --git a/src/app/client/src/app/modules/groups/components/ftu-popup/ftu-popup.component.scss b/src/app/client/src/app/modules/groups/components/ftu-popup/ftu-popup.component.scss
index e43c6e71c043c90dad05b50d8a442de296780af6..31de4639a1fe8b7c3af16b7489bda9510944fdec 100644
--- a/src/app/client/src/app/modules/groups/components/ftu-popup/ftu-popup.component.scss
+++ b/src/app/client/src/app/modules/groups/components/ftu-popup/ftu-popup.component.scss
@@ -1,7 +1,6 @@
-@import './mixins/mixins';
-@import './pages/page-center-view';
-@import './pages/custom-carousel.scss';
-@import 'pages/mat-modal';
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
+@use 'pages/page-center-view' as *;
+@use 'pages/custom-carousel.scss' as *;
 
   /* can be remove, comes from CC */
   .close {
@@ -15,14 +14,6 @@
     justify-content: center;
     align-items: center;
     cursor:pointer;
-    i.icon-close {
-      svg {
-
-      }
-    }
-    &:hover {
-    
-    }
   }
 
   h4 {
@@ -45,9 +36,6 @@
     .slick-list {
       height: inherit !important;
     }
-    .item-help.slick-slide, .slick-track {
-      // width:100% !important;
-    }
   } 
 }
 
diff --git a/src/app/client/src/app/modules/groups/components/group-details/group-details.component.scss b/src/app/client/src/app/modules/groups/components/group-details/group-details.component.scss
index 578b04fad8a48e7a029540bc314849611d766ffe..d552423beaa3002e4139e8596d315b7605acc73b 100644
--- a/src/app/client/src/app/modules/groups/components/group-details/group-details.component.scss
+++ b/src/app/client/src/app/modules/groups/components/group-details/group-details.component.scss
@@ -1,77 +1,6 @@
-@import "components/tabs";
-@import 'mixins/mixins';
-.section-header {
-    display: flex;
-    flex-direction: row;
-    padding: 0;
-    align-items: center;
-    &__title {
-    font-family: inherit;
-    text-overflow: ellipsis;
-    overflow: hidden;
-    flex: 1;
-    height: 1.5rem;
-    color: var(--primary-color);
-    font-size: 1.125rem;
-    font-weight: 700;
-    text-transform: capitalize;
-    line-height: 1.625rem;
-    display: flex;
-    align-items: center;
-    .badge {
-        display: inline-block;
-        background: var(--sbt-badge-bg);
-        color: var(--sbt-badge-text);
-        text-align: center;
-        padding: 0 .75rem;
-        border-radius: .25rem;
-        height: 1.5rem;
-        line-height: 1.5rem;
-        font-size: 1rem;
-        font-weight: 400;
-        margin-left:calculateRem(8px);
-        html[dir="rtl"] & {
-            margin-right:calculateRem(8px);
-            margin-left: inherit;
-        }
-    }
-    }
-    
-}
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
+@use "components/tabs" as *;
 
-.dropdown-menu-content {
-    position: absolute;
-    border-radius: calculateRem(2px);
-    background-color: var(--white);
-    box-shadow: 0 calculateRem(3px) calculateRem(5px) calculateRem(4px) rgba(var(--rc-rgba-black), 0.05);
-    padding: calculateRem(16px);
-    z-index: 1;
-    text-align: left;
-    right: calculateRem(10px);
-    top: calculateRem(10px);
-    .list{
-      display: flex;
-      align-items: center;
-      cursor: pointer;
-      &:first-child{
-        margin-bottom: calculateRem(8px);
-        &:hover{
-          span{
-            color:var(--primary-color);
-          }
-        }
-      }
-      &:hover{
-        span{
-          color: var(--red-400);
-        }
-      }
-      span{
-        font-size: calculateRem(14px);
-        padding-left: calculateRem(8px);
-      }
-    }
-  }
  
     .sb-pagesection-activity{
       font-size: calculateRem(18px);
diff --git a/src/app/client/src/app/modules/groups/components/group-header/group-header.component.scss b/src/app/client/src/app/modules/groups/components/group-header/group-header.component.scss
index ca40a71b20a2f8defc7213feb739a6c43031e070..6bfddc78c611a009151a8a21a2483762a5542f02 100644
--- a/src/app/client/src/app/modules/groups/components/group-header/group-header.component.scss
+++ b/src/app/client/src/app/modules/groups/components/group-header/group-header.component.scss
@@ -1,56 +1,2 @@
-@import 'mixins/mixins';
-
-.kabab-menu{
-  color: var(--primary-400);
-  width: calculateRem(30px);
-  height: calculateRem(30px);
-  line-height: calculateRem(28px);
-  text-align: center;
-  border-radius: 50%;
-  padding-left: calculateRem(6px);
-  &:hover{
-    background: var(--kabab-menu-hover-bg);
-    cursor: pointer;
-  }
-  &::after {
-    content: '\2807';
-    font-size: calculateRem(24px);
-  }
-}
-.kabab-menu-dropdown-content {
-  position: absolute;
-  border-radius: calculateRem(2px);
-  background-color: var(--kabab-menu-dropdown-bg);
-  box-shadow: 0 calculateRem(3px) calculateRem(5px) calculateRem(4px) rgba(var(--rc-rgba-black), 0.05);
-  padding: calculateRem(8px);
-  z-index: 1;
-  text-align: left;
-  right:0;
-  top: 0;
-  min-width: calculateRem(210px);
-
-  .list{
-    cursor: pointer;
-    font-size: calculateRem(14px);
-    padding: calculateRem(8px);
-  
-    &:hover,&:active{
-      background-color: var(--kabab-menu-dropdown-item-active);
-    }
-
-    &:last-child{
-      .sb-btn-normal{
-        color: var(--red-400);
-      }
-    }
-    .sb-btn-normal{
-      font-size: calculateRem(14px);
-    }
-  }
-}
-::ng-deep {
-  html[dir='rtl'] .kabab-menu-dropdown-content {
-    right:auto;
-    left:0;
-  }
-}
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
+@use "pages/kabab-menu" as *;
diff --git a/src/app/client/src/app/modules/groups/components/group-members/group-members.component.scss b/src/app/client/src/app/modules/groups/components/group-members/group-members.component.scss
index bd47bd23d8dc795f37a8a00383fc9efc85510403..f49b5660de8d112cc718fe2731d889940b307428 100644
--- a/src/app/client/src/app/modules/groups/components/group-members/group-members.component.scss
+++ b/src/app/client/src/app/modules/groups/components/group-members/group-members.component.scss
@@ -1,5 +1,5 @@
-@import "mixins/mixins";
-
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
+@use "pages/kabab-menu" as *;
 .devided-line {
     border-bottom: calculateRem(0.5px) solid var(--gray-100);
 }
@@ -12,66 +12,3 @@
         color: var(--gray-200);
     }
 }
-
-.kabab-menu{
-    color: var(--primary-400);
-    width: calculateRem(30px);
-    height: calculateRem(30px);
-    line-height: calculateRem(28px);
-    text-align: center;
-    border-radius: 50%;
-    padding-left: calculateRem(6px);
-    &:hover{
-      background: var(--gray-0);
-      cursor: pointer;
-    }
-    &::after {
-      content: '\2807';
-      font-size: calculateRem(24px);
-    }
-  }
-  
-.kabab-menu-dropdown-content {
-    position: absolute;
-    border-radius: calculateRem(2px);
-    background-color: var(--kabab-menu-dropdown-bg);
-    box-shadow: 0 calculateRem(3px) calculateRem(5px) calculateRem(4px) rgba(var(--rc-rgba-black), 0.05);
-    padding: calculateRem(8px);
-    z-index: 1;
-    text-align: left;
-    right: 0;
-    top: 0;
-    min-width: calculateRem(170px);
-
-    .list {
-        display: flex;
-        align-items: center;
-        cursor: pointer;
-        font-size: calculateRem(14px);
-        padding: calculateRem(8px);
-        &:hover {
-            color: var(--primary-400);
-            background-color: var(--kabab-menu-dropdown-item-active);
-          }
-    }
-}
-::ng-deep {
-  html[dir='rtl'] .kabab-menu-dropdown-content {
-    right:auto;
-    left:0;
-  }
-}
-
-.icon-input-close {
-	position: absolute;
-	top: calculateRem(4px);
-	right: calculateRem(4px);
-	cursor: pointer;
-	width: calculateRem(24px);
-	height: calculateRem(24px);
-
-	html[dir="rtl"] & {
-		left: calculateRem(8px);
-		right: inherit;
-	}
-}
\ No newline at end of file
diff --git a/src/app/client/src/app/modules/groups/components/my-groups/my-groups.component.scss b/src/app/client/src/app/modules/groups/components/my-groups/my-groups.component.scss
index 6a5c891d8d82d5b77f2f9e6a3038fecf646fa31a..2d4c4875e83c6638457e5f3af9fbe7ed1277a52f 100644
--- a/src/app/client/src/app/modules/groups/components/my-groups/my-groups.component.scss
+++ b/src/app/client/src/app/modules/groups/components/my-groups/my-groups.component.scss
@@ -1,61 +1,6 @@
-@import './mixins/mixins';
-@import './pages/page-center-view';
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
+@use 'pages/page-center-view' as *;
 
-.sb-page-header-bar {
-  display: flex;
-  align-items: center;
-  justify-content: space-between;
-  min-height: calculateRem(64px);
-
-  h2 {
-    color: var(--primary-color);
-    font-size: calculateRem(18px);
-    font-weight: bold;
-    line-height: calculateRem(24px);
-  }
-}
-
-.section-header {
-  display: flex;
-  flex-direction: row;
-  padding: 0;
-  align-items: center;
-
-  &__title {
-    font-family: inherit;
-    text-overflow: ellipsis;
-    overflow: hidden;
-    flex: 1;
-    height: 1.5rem;
-    color: var(--primary-color);
-    font-size: 1.125rem;
-    font-weight: 700;
-    text-transform: capitalize;
-    line-height: 1.625rem;
-    display: flex;
-    align-items: center;
-
-    .badge {
-      display: inline-block;
-      background: var(--sbt-badge-bg);
-      color: var(--sbt-badge-text);
-      text-align: center;
-      padding: 0 .75rem;
-      border-radius: .25rem;
-      height: 1.5rem;
-      line-height: 1.5rem;
-      font-size: 1rem;
-      font-weight: 400;
-      margin-left: calculateRem(8px);
-
-      html[dir="rtl"] & {
-        margin-right: calculateRem(8px);
-        margin-left: inherit;
-      }
-    }
-  }
-
-}
 .sb-mygroups{
   .sb-bg-color-white{
     background: var(--sb-mygroups-bg) !important;
diff --git a/src/app/client/src/app/modules/groups/components/no-group-result/no-group-result.component.scss b/src/app/client/src/app/modules/groups/components/no-group-result/no-group-result.component.scss
index df587be735d8c2f13348983703a4c76949987349..37024187896a6c7f37147c833e401aee0095846a 100644
--- a/src/app/client/src/app/modules/groups/components/no-group-result/no-group-result.component.scss
+++ b/src/app/client/src/app/modules/groups/components/no-group-result/no-group-result.component.scss
@@ -1,5 +1,4 @@
-@import "variables";
-@import "mixins/mixins";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 .no-result-container{
     max-width: calculateRem(420px);
diff --git a/src/app/client/src/app/modules/groups/groups.module.ts b/src/app/client/src/app/modules/groups/groups.module.ts
index b195005eb778e8090e549d0df36cc88896c558b9..d320175cb991d0d297eaa201a38f58136690d55b 100644
--- a/src/app/client/src/app/modules/groups/groups.module.ts
+++ b/src/app/client/src/app/modules/groups/groups.module.ts
@@ -13,7 +13,7 @@ import { MyGroupsComponent, AddMemberComponent, GroupHeaderComponent, NoGroupRes
   PopupComponent } from './components';
 import { CoreModule } from '@sunbird/core';
 import { SharedFeatureModule } from '@sunbird/shared-feature';
-import { CommonConsumptionModule } from '@project-sunbird/common-consumption-v9';
+import { CommonConsumptionModule } from '@project-sunbird/common-consumption';
 import { CsLibInitializerService } from '../../service/CsLibInitializer/cs-lib-initializer.service';
 import { ContentSearchModule } from '@sunbird/content-search';
 import { SlickModule } from 'ngx-slick';
diff --git a/src/app/client/src/app/modules/learn/components/batch/batch-details/batch-details.component.scss b/src/app/client/src/app/modules/learn/components/batch/batch-details/batch-details.component.scss
index fc7d98e647268e59bd524cc632c306aeeb07f888..ff0c24800ebafd7223f8b092ccfb44b15de50e6e 100644
--- a/src/app/client/src/app/modules/learn/components/batch/batch-details/batch-details.component.scss
+++ b/src/app/client/src/app/modules/learn/components/batch/batch-details/batch-details.component.scss
@@ -1,4 +1,4 @@
-@import "mixins/mixins";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 .join-batch {
     &__heading, &__body {
@@ -29,14 +29,6 @@
     }
   }
 
-  .text-disabled{
-    color:var(--gray-100);
-  }
-
-  .no-cert-text {
-    color:#F7B500; 
-  }
-
   ::ng-deep {
   .ui.accordion .active.title .chevron.down.icon {
       margin-top:calculateRem(6px);
@@ -54,14 +46,14 @@ ul {
 }
 li {
   display: grid;
-  grid-template-columns: 20px auto;
+  grid-template-columns: calculateRem(20px) auto;
   justify-content: start;
   align-items: center;
   margin-bottom:1rem
 }
 li::before {
   content: ">";
-  font-size: 12px;
-  color: #999;
+  font-size: calculateRem(12px);
+  color: var(--gray-200);
   font-weight:bold;
 }
\ No newline at end of file
diff --git a/src/app/client/src/app/modules/learn/components/course-consumption/assessment-player/assessment-player.component.scss b/src/app/client/src/app/modules/learn/components/course-consumption/assessment-player/assessment-player.component.scss
index 153a82e4de71a0cf75d51fe056f5dbb3053d1d84..1004b564497e402fc4327652a8c98bc825f59052 100644
--- a/src/app/client/src/app/modules/learn/components/course-consumption/assessment-player/assessment-player.component.scss
+++ b/src/app/client/src/app/modules/learn/components/course-consumption/assessment-player/assessment-player.component.scss
@@ -1,6 +1,5 @@
-@import "variables";
-@import "mixins/mixins";
-@import "components/video";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
+@use "components/video" as *;
 
 :host {
   .header-shadow {
@@ -93,14 +92,6 @@
 
 .back-btn-container {
   z-index: 1;
-
-  .modulebtn-divider {
-      width: calculateRem(1px);
-      height: calculateRem(24px);
-      background: var(--gray-200);
-      display: inline-block;
-      margin: 0 calculateRem(8px);
-  }
 }
 
 
diff --git a/src/app/client/src/app/modules/learn/components/course-consumption/assessment-player/assessment-player.component.ts b/src/app/client/src/app/modules/learn/components/course-consumption/assessment-player/assessment-player.component.ts
index fac0c77299d02887e68de4d6b440478f5587b3e2..98a7b06d2e6514c3add3f274c09b69490839ddce 100644
--- a/src/app/client/src/app/modules/learn/components/course-consumption/assessment-player/assessment-player.component.ts
+++ b/src/app/client/src/app/modules/learn/components/course-consumption/assessment-player/assessment-player.component.ts
@@ -2,7 +2,7 @@ import { Location } from '@angular/common';
 import { TelemetryService, IAuditEventInput, IImpressionEventInput } from '@sunbird/telemetry';
 import { Component, OnInit, OnDestroy, ViewChild, Inject, HostListener, EventEmitter, Output } from '@angular/core';
 import { ActivatedRoute, Router, NavigationExtras, NavigationStart } from '@angular/router';
-import { TocCardType } from '@project-sunbird/common-consumption-v9';
+import { TocCardType } from '@project-sunbird/common-consumption';
 import { UserService, GeneraliseLabelService, PlayerService } from '@sunbird/core';
 import { AssessmentScoreService, CourseBatchService, CourseConsumptionService, CourseProgressService } from '@sunbird/learn';
 import { PublicPlayerService, ComponentCanDeactivate } from '@sunbird/public';
diff --git a/src/app/client/src/app/modules/learn/components/course-consumption/course-completion/course-completion.component.scss b/src/app/client/src/app/modules/learn/components/course-consumption/course-completion/course-completion.component.scss
index da9907baf5d0b9887d64a813e7e19d46be3b3831..18363090623286b2563bde21f1291a5d804b2a9a 100644
--- a/src/app/client/src/app/modules/learn/components/course-consumption/course-completion/course-completion.component.scss
+++ b/src/app/client/src/app/modules/learn/components/course-consumption/course-completion/course-completion.component.scss
@@ -1,5 +1,4 @@
-@import "variables";
-@import "mixins/mixins";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 .course-complete-content {
   display: flex;
diff --git a/src/app/client/src/app/modules/learn/components/course-consumption/course-consumption-header/course-consumption-header.component.scss b/src/app/client/src/app/modules/learn/components/course-consumption/course-consumption-header/course-consumption-header.component.scss
index 58f2fd5060d47032c737c05d80965559778bd06f..37595a219bf3b7b6af989f6ae40c53e2a5e2c1d9 100644
--- a/src/app/client/src/app/modules/learn/components/course-consumption/course-consumption-header/course-consumption-header.component.scss
+++ b/src/app/client/src/app/modules/learn/components/course-consumption/course-consumption-header/course-consumption-header.component.scss
@@ -1,16 +1,8 @@
-@import "./mixins/mixins";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 
 .back-btn-container {
   z-index: 1;
-
-  .modulebtn-divider {
-    width: calculateRem(1px);
-    height: calculateRem(24px);
-    background: var(--gray-200);
-    display: inline-block;
-    margin: 0 calculateRem(8px);
-  }
 }
 
 .certified-course {
@@ -85,9 +77,8 @@
 }
 
 .sb-activity-dashboard-btn {
-  // background: transparent;
   box-shadow: none;
-  color: #FFF !important;
-  font-size: 12px;
+  color: var(--white) !important;
+  font-size: calculateRem(12px);
   padding-bottom: calculateRem(28px);
 }
diff --git a/src/app/client/src/app/modules/learn/components/course-consumption/course-player/course-player.component.scss b/src/app/client/src/app/modules/learn/components/course-consumption/course-player/course-player.component.scss
index ec854a7ade5a3aa39cd5daaf18244b159b3af069..5d1f51a1ecf1a096b46e907538668b401fe34a7f 100644
--- a/src/app/client/src/app/modules/learn/components/course-consumption/course-player/course-player.component.scss
+++ b/src/app/client/src/app/modules/learn/components/course-consumption/course-player/course-player.component.scss
@@ -1,6 +1,6 @@
-@import "variables";
-@import "mixins/mixins";
-@import "pages/course-player";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
+@use "pages/course-player" as *;
+@use "pages/kabab-menu" as *;
 
 .course-list_title {
   color: var(--gray-800);
@@ -64,7 +64,6 @@
 }
 .chapter-box {
   border-bottom: .0625rem solid var(--gray-100);
-  // padding: calculateRem(16px);
   border-radius: calculateRem(2px);
   &:last-child{
     border-bottom: 0px solid var(--gray-100);
@@ -209,57 +208,3 @@ xxl calculateRem(88px) 24px 20px;
      color:var(--gray-800) 
   }
 }
-.kabab-menu{
-  color: var(--primary-400);
-  width: calculateRem(30px);
-  height: calculateRem(30px);
-  line-height: calculateRem(28px);
-  text-align: center;
-  border-radius: 50%;
-  padding-left: calculateRem(6px);
-  &:hover{
-    background: var(--kabab-menu-hover-bg);
-    cursor: pointer;
-  }
-  &::after {
-    content: '\2807';
-    font-size: calculateRem(24px);
-  }
-}
-.kabab-menu-dropdown-content {
-  position: absolute;
-  border-radius: calculateRem(2px);
-  background-color: var(--kabab-menu-dropdown-bg);
-  box-shadow: 0 calculateRem(3px) calculateRem(5px) calculateRem(4px) rgba(var(--rc-rgba-black), 0.05);
-  padding: calculateRem(8px);
-  z-index: 2;
-  text-align: left;
-  right:0;
-  top: 2rem;
-  min-width: calculateRem(210px);
-
-  .list{
-    cursor: pointer;
-    font-size: calculateRem(14px);
-    padding: calculateRem(8px);
-  
-    &:hover,&:active{
-      background-color: var(--kabab-menu-dropdown-item-active);
-    }
-
-    &:last-child{
-      .sb-btn-normal{
-        color: var(--red-400);
-      }
-    }
-    .sb-btn-normal{
-      font-size: calculateRem(14px);
-    }
-  }
-}
-::ng-deep {
-  html[dir='rtl'] .kabab-menu-dropdown-content {
-    right:auto;
-    left:0;
-  }
-}
\ No newline at end of file
diff --git a/src/app/client/src/app/modules/learn/components/course-consumption/course-player/course-player.component.ts b/src/app/client/src/app/modules/learn/components/course-consumption/course-player/course-player.component.ts
index 6f88136eb37716cbd55f865e95c5c8ff47de80ab..edea16bb85cdfac81e432dbb9a8ce68e297bb557 100644
--- a/src/app/client/src/app/modules/learn/components/course-consumption/course-player/course-player.component.ts
+++ b/src/app/client/src/app/modules/learn/components/course-consumption/course-player/course-player.component.ts
@@ -1,6 +1,6 @@
 import { Component, Inject, OnDestroy, OnInit, ViewChild } from '@angular/core';
 import { ActivatedRoute, NavigationExtras, Router } from '@angular/router';
-import { TocCardType } from '@project-sunbird/common-consumption-v9';
+import { TocCardType } from '@project-sunbird/common-consumption'
 import { CoursesService, PermissionService, UserService, GeneraliseLabelService } from '@sunbird/core';
 import {
   ConfigService, ExternalUrlPreviewService, ICollectionTreeOptions, NavigationHelperService,
diff --git a/src/app/client/src/app/modules/learn/course-consumption.module.ts b/src/app/client/src/app/modules/learn/course-consumption.module.ts
index f4c4cbd759e2d7f03dc92cc079d733024e6f653c..338b1257778aa06331c513c236dac1c82462e989 100644
--- a/src/app/client/src/app/modules/learn/course-consumption.module.ts
+++ b/src/app/client/src/app/modules/learn/course-consumption.module.ts
@@ -16,7 +16,7 @@ import {
 } from 'ng2-semantic-ui-v9';
 import { BatchDetailsComponent,  } from './components/batch/batch-details/batch-details.component';
 import { UnEnrollBatchComponent} from './components/batch/unenroll-batch/unenroll-batch.component';
-import { CommonConsumptionModule } from '@project-sunbird/common-consumption-v9';
+import { CommonConsumptionModule } from '@project-sunbird/common-consumption';
 import { AssessmentPlayerComponent } from './components/course-consumption/assessment-player/assessment-player.component';
 import { CourseCompletionComponent } from './components/course-consumption/course-completion/course-completion.component';
 import { CertificateNameUpdatePopupComponent } from './components/course-consumption/certificate-name-update-popup/certificate-name-update-popup.component';
diff --git a/src/app/client/src/app/modules/learn/learn.module.ts b/src/app/client/src/app/modules/learn/learn.module.ts
index 8a5b1885ae5db633bb4205114fb3a522c73ae204..789688e016bf8ae6f05b91d3540648b5477c7eb0 100644
--- a/src/app/client/src/app/modules/learn/learn.module.ts
+++ b/src/app/client/src/app/modules/learn/learn.module.ts
@@ -9,7 +9,7 @@ import { CoursePageComponent } from './components';
 import { CoreModule } from '@sunbird/core';
 import { SharedFeatureModule } from '@sunbird/shared-feature';
 import { ContentSearchModule } from '@sunbird/content-search';
-import { CommonConsumptionModule } from '@project-sunbird/common-consumption-v9';
+import { CommonConsumptionModule } from '@project-sunbird/common-consumption';
 
 import {
   SuiSelectModule, SuiModalModule, SuiAccordionModule, SuiPopupModule, SuiDropdownModule, SuiProgressModule,
diff --git a/src/app/client/src/app/modules/manage/components/user-org-management/user-org-management.component.scss b/src/app/client/src/app/modules/manage/components/user-org-management/user-org-management.component.scss
index 16c71430845e160872b8f15907b29948f2bfb051..c0b857f1a8e29bd71793686dfc0d8ce6ed4ccc41 100644
--- a/src/app/client/src/app/modules/manage/components/user-org-management/user-org-management.component.scss
+++ b/src/app/client/src/app/modules/manage/components/user-org-management/user-org-management.component.scss
@@ -1,7 +1,6 @@
 // component css goes here
-@import 'variables';
-@import "./mixins/mixins";
-@import 'components/metadata';
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
+@use 'components/metadata' as *;
 
 .sb-manage-section{
     .sb-manage-section-title {
@@ -20,24 +19,6 @@
      margin-top: calculateRem(6px);
     }
 
-    .sb-upload-file{
-        position: relative;
-        overflow: hidden;
-        cursor: pointer;
-        display: flex;
-        align-items: center;
-        .sb-upload-btn {
-            position: absolute;
-            opacity: 0;
-            left: 0;
-            top: 0;
-            width: 100%;
-            margin: 0;
-            height: 100%;
-            cursor: pointer;
-        }
-    }
-
     .sb-pageSection-content{
         a{
             color: var(--primary-color);
diff --git a/src/app/client/src/app/modules/manage/components/user-role-assign/user-role-assign.component.scss b/src/app/client/src/app/modules/manage/components/user-role-assign/user-role-assign.component.scss
index aa543a7bbe5fc042df7565dafdf1bac00a8dacc6..090d663c254cc1a65cea5bae8a60769ab27860da 100644
--- a/src/app/client/src/app/modules/manage/components/user-role-assign/user-role-assign.component.scss
+++ b/src/app/client/src/app/modules/manage/components/user-role-assign/user-role-assign.component.scss
@@ -1,4 +1,4 @@
-@import "mixins/mixins";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 :host::ng-deep {
   .sbt-header-menu-bar {
@@ -6,9 +6,7 @@
     background: none;
     padding: 0px;
     display: flex;
-    /* align-items: center; */
-    /* justify-content: center; */
-    border-radius: 24px 24px 0 0;
+    border-radius: 1.5rem 1.5rem 0 0;
     padding: 1rem 1rem 1rem 1rem;
     overflow: hidden;
     overflow-x: auto;
@@ -38,7 +36,7 @@
 
     &__content {
       background: var(--white);
-      box-shadow: 6px 6px 2px 0 rgb(0 0 0 / 10%);
+      box-shadow: calculateRem(6px) calculateRem(6px) calculateRem(2px) 0 rgb(0 0 0 / 10%);
       border-radius: calculateRem(12px);
     }
   }
@@ -53,7 +51,7 @@
 
   .user-details {
     padding: calculateRem(24px);
-    border-bottom: 1px solid #D7D7D7;
+    border-bottom: calculateRem(1px) solid #D7D7D7;
 
     .user-img {
       height: calculateRem(48px);
@@ -88,7 +86,7 @@
     display: flex;
     align-items: flex-start;
     flex-wrap: wrap;
-    min-height: 400px;
+    min-height: calculateRem(400px);
 
     .user-workexp-card {
       flex-basis: 25%;
@@ -101,8 +99,8 @@
     }
 
     .user-workexp {
-      border: 1px solid #D7D7D7;
-      border-radius: 16px;
+      border: calculateRem(1px) solid #D7D7D7;
+      border-radius: calculateRem(16px);
       height: calculateRem(120px);
       padding: calculateRem(16px);
       font-size: calculateRem(14px);
@@ -120,14 +118,15 @@
     }
   }
 
-  .sb-search-box .icon.search {
-    right: 1.5rem;
-    left: inherit;
-  }
-
-  .sb-search-box .sb-search-input {
-    width: 100%;
-    font-size: 0.875rem;
+  .sb-search-box{
+    .sb-search-input {
+      width: 100%;
+      font-size: 0.875rem;
+    }
+    .icon.search {
+      right: 1.5rem;
+      left: inherit;
+    }
   }
 
   .no-result-container {
diff --git a/src/app/client/src/app/modules/merge-account/components/merge-account-status/merge-account-status.component.scss b/src/app/client/src/app/modules/merge-account/components/merge-account-status/merge-account-status.component.scss
index 31aa986aa5969cdafce25a80238af895fddff2ad..fac8cb59545d4282340d2b5eae0efc68987d355b 100644
--- a/src/app/client/src/app/modules/merge-account/components/merge-account-status/merge-account-status.component.scss
+++ b/src/app/client/src/app/modules/merge-account/components/merge-account-status/merge-account-status.component.scss
@@ -1,5 +1,5 @@
-@import "mixins/mixins";
-@import "pages/sign_in_up";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
+@use "pages/sign_in_up" as *;
 
 .sb-merged-account-body-para.sb-color-success{
     color:var(--success-color);
diff --git a/src/app/client/src/app/modules/notification/components/in-app-notification/in-app-notification.component.scss b/src/app/client/src/app/modules/notification/components/in-app-notification/in-app-notification.component.scss
index 94850c613a451679f3ae878e2b9f00fd6fc631be..a16899d94414846a2609f1899080a171a06514a1 100644
--- a/src/app/client/src/app/modules/notification/components/in-app-notification/in-app-notification.component.scss
+++ b/src/app/client/src/app/modules/notification/components/in-app-notification/in-app-notification.component.scss
@@ -1,5 +1,4 @@
-@import "variables";
-@import "mixins/mixins";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 .notification-bell{
   box-shadow: var(--sbt-box-shadow-6px);
diff --git a/src/app/client/src/app/modules/notification/components/in-app-notification/in-app-notification.component.ts b/src/app/client/src/app/modules/notification/components/in-app-notification/in-app-notification.component.ts
index 8a87f9fdd606866af659134201265f9fff990add..b0002bc2b30b4e9c484307baf448aae86f448e14 100644
--- a/src/app/client/src/app/modules/notification/components/in-app-notification/in-app-notification.component.ts
+++ b/src/app/client/src/app/modules/notification/components/in-app-notification/in-app-notification.component.ts
@@ -3,7 +3,7 @@ import { ActivatedRoute, Router } from '@angular/router';
 import { NotificationServiceImpl } from '../../services/notification/notification-service-impl';
 import * as _ from 'lodash-es';
 import { UserFeedStatus } from '@project-sunbird/client-services/models';
-import { NotificationViewConfig } from '@project-sunbird/common-consumption-v9';
+import { NotificationViewConfig } from '@project-sunbird/common-consumption';
 import { ResourceService } from '@sunbird/shared';
 import { TelemetryService } from '@sunbird/telemetry';
 import { takeUntil, delay } from 'rxjs/operators';
diff --git a/src/app/client/src/app/modules/notification/notification.module.ts b/src/app/client/src/app/modules/notification/notification.module.ts
index 8233393f508e68b7a529044e3ecc49fcb7a77d9b..9e3aa5246e404cad2bdd46dd3b7931e15b77ba53 100644
--- a/src/app/client/src/app/modules/notification/notification.module.ts
+++ b/src/app/client/src/app/modules/notification/notification.module.ts
@@ -1,9 +1,9 @@
 import { forwardRef, NgModule } from '@angular/core';
 import { CommonModule } from '@angular/common';
 import { SuiModule } from 'ng2-semantic-ui-v9';
-import { CommonConsumptionModule } from '@project-sunbird/common-consumption-v9';
+import { CommonConsumptionModule } from '@project-sunbird/common-consumption';
 import { InAppNotificationComponent } from './components/in-app-notification/in-app-notification.component';
-import { SbNotificationModule } from 'sb-notification';
+import { SbNotificationModule } from '@project-sunbird/sb-notification';
 import { NotificationServiceImpl } from './services/notification/notification-service-impl';
 import { SharedModule } from '@sunbird/shared';
 @NgModule({
diff --git a/src/app/client/src/app/modules/notification/services/notification/notification-service-impl.ts b/src/app/client/src/app/modules/notification/services/notification/notification-service-impl.ts
index 69e2811937aefdd3f5f80501aaf787efd843208b..a17b4ed680d24f21faec084d1e2dbf123b8b2f7a 100644
--- a/src/app/client/src/app/modules/notification/services/notification/notification-service-impl.ts
+++ b/src/app/client/src/app/modules/notification/services/notification/notification-service-impl.ts
@@ -1,6 +1,6 @@
 import { Inject, Injectable } from '@angular/core';
 import { ActivatedRoute, NavigationExtras, Router } from '@angular/router';
-import { SbNotificationService } from 'sb-notification';
+import { SbNotificationService } from '@project-sunbird/sb-notification';
 import { ToasterService } from '@sunbird/shared';
 import { TelemetryService } from '@sunbird/telemetry';
 import { Subject, BehaviorSubject } from 'rxjs';
diff --git a/src/app/client/src/app/modules/observation/components/add-entity/add-entity.component.scss b/src/app/client/src/app/modules/observation/components/add-entity/add-entity.component.scss
index 4b91c7d1cf69b2da257f73116260fdd1b5dd0fbd..ece1ad8deeb6b514b49cda598b0690ee73148ced 100644
--- a/src/app/client/src/app/modules/observation/components/add-entity/add-entity.component.scss
+++ b/src/app/client/src/app/modules/observation/components/add-entity/add-entity.component.scss
@@ -1,5 +1,4 @@
-@import "variables";
-@import "mixins/mixins";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
   .sb-modal-content {
     height: calc(100vh - 350px) !important;
diff --git a/src/app/client/src/app/modules/observation/components/observation-details/observation-details.component.scss b/src/app/client/src/app/modules/observation/components/observation-details/observation-details.component.scss
index e33d33c002372ebc237086745e5990c07e58a001..93179659145ec53c95c6e5fac615b1d1df2bede6 100644
--- a/src/app/client/src/app/modules/observation/components/observation-details/observation-details.component.scss
+++ b/src/app/client/src/app/modules/observation/components/observation-details/observation-details.component.scss
@@ -46,4 +46,15 @@
 }
 .white-space-wrap {
   text-overflow: ellipsis;
+}
+
+::ng-deep{
+  .sb-mat-accordion__title span{
+    line-break: anywhere;
+  }
+  
+  .sb-mat-accordion__title div{
+    display: flex;
+    align-items: inherit;
+  }
 }
\ No newline at end of file
diff --git a/src/app/client/src/app/modules/observation/observation.module.ts b/src/app/client/src/app/modules/observation/observation.module.ts
index 44b112d6de8017aeb50ec5190b0454a3715636be..76d65a6864635c231e8897284ceaae6e96fdae7d 100644
--- a/src/app/client/src/app/modules/observation/observation.module.ts
+++ b/src/app/client/src/app/modules/observation/observation.module.ts
@@ -10,7 +10,7 @@ import { TelemetryModule } from '@sunbird/telemetry';
 import { NgInviewModule } from 'angular-inport';
 import { AvatarModule } from 'ngx-avatar';
 import { SharedFeatureModule } from '@sunbird/shared-feature';
-import { CommonConsumptionModule } from '@project-sunbird/common-consumption-v9';
+import { CommonConsumptionModule } from '@project-sunbird/common-consumption';
 import { ContentSearchModule } from '@sunbird/content-search';
 import { TranslateModule } from '@ngx-translate/core';
 import {
diff --git a/src/app/client/src/app/modules/player-helper/components/collection-player-metadata/collection-player-metadata.component.scss b/src/app/client/src/app/modules/player-helper/components/collection-player-metadata/collection-player-metadata.component.scss
index 7ed5c1d7cd106eed51615f5cc8c9c3160bfd84eb..f0fcd198a70186452e7e0e75c71efbddf89be482 100644
--- a/src/app/client/src/app/modules/player-helper/components/collection-player-metadata/collection-player-metadata.component.scss
+++ b/src/app/client/src/app/modules/player-helper/components/collection-player-metadata/collection-player-metadata.component.scss
@@ -1,3 +1,2 @@
-@import 'variables';
-@import "./mixins/mixins";
-@import 'components/metadata';
\ No newline at end of file
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
+@use 'components/metadata' as *;
\ No newline at end of file
diff --git a/src/app/client/src/app/modules/player-helper/components/content-actions/actionButtons.ts b/src/app/client/src/app/modules/player-helper/components/content-actions/actionButtons.ts
index ad0d89adbf2cff04c589dde3606a78877d7a89d7..faf73bda2637d5011f23fd66c6715bf8969e3651 100644
--- a/src/app/client/src/app/modules/player-helper/components/content-actions/actionButtons.ts
+++ b/src/app/client/src/app/modules/player-helper/components/content-actions/actionButtons.ts
@@ -1,4 +1,4 @@
-import { IActionButton, ActionButtonType } from '@project-sunbird/common-consumption-v9';
+import { IActionButton, ActionButtonType } from '@project-sunbird/common-consumption';
 
 export const actionButtons: IActionButton[] = [
     {
diff --git a/src/app/client/src/app/modules/player-helper/components/content-actions/content-actions.component.scss b/src/app/client/src/app/modules/player-helper/components/content-actions/content-actions.component.scss
index 9dcdf926bc7f145418922f5ca91d5358fe86ea9e..df2a0bfefcfb28992ad52d98b17718d24be94d6d 100644
--- a/src/app/client/src/app/modules/player-helper/components/content-actions/content-actions.component.scss
+++ b/src/app/client/src/app/modules/player-helper/components/content-actions/content-actions.component.scss
@@ -1 +1 @@
-@import 'components/video';
\ No newline at end of file
+@use 'components/video' as *;
\ No newline at end of file
diff --git a/src/app/client/src/app/modules/player-helper/components/content-chapterlist/content-chapterlist.component.scss b/src/app/client/src/app/modules/player-helper/components/content-chapterlist/content-chapterlist.component.scss
index eeaeb8cfb28cf49074ffd3d3485c91ef72364b5f..47e2cf3bb31040148d758aa2cb979b1dc8b7431d 100644
--- a/src/app/client/src/app/modules/player-helper/components/content-chapterlist/content-chapterlist.component.scss
+++ b/src/app/client/src/app/modules/player-helper/components/content-chapterlist/content-chapterlist.component.scss
@@ -1,5 +1,4 @@
-@import "variables";
-@import "mixins/mixins";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 .sbtoc-container {
   .sbselectpopover {
diff --git a/src/app/client/src/app/modules/player-helper/components/content-credits/content-credits.component.scss b/src/app/client/src/app/modules/player-helper/components/content-credits/content-credits.component.scss
index 43d24444cac8d8b43f51c90c68a3e4f4c4cfb359..40c77e5c53d749b05fcf5ab43ece73090cfbf639 100644
--- a/src/app/client/src/app/modules/player-helper/components/content-credits/content-credits.component.scss
+++ b/src/app/client/src/app/modules/player-helper/components/content-credits/content-credits.component.scss
@@ -1,5 +1,4 @@
-@import 'variables';
-@import "./mixins/mixins";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 .ui.popup::after {
    background-color: var(--rc-007AFF) !important;
diff --git a/src/app/client/src/app/modules/player-helper/components/content-licence/content-licence.component.scss b/src/app/client/src/app/modules/player-helper/components/content-licence/content-licence.component.scss
index d68c3830d5365b5bc901094c6310e6b3d3c028f6..ae3bf76658180618263f5837fb85ab674f7aa0fb 100644
--- a/src/app/client/src/app/modules/player-helper/components/content-licence/content-licence.component.scss
+++ b/src/app/client/src/app/modules/player-helper/components/content-licence/content-licence.component.scss
@@ -1,5 +1,4 @@
-@import 'variables';
-@import 'mixins/mixins';
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 ::ng-deep{
   .sb-toc-credits {
diff --git a/src/app/client/src/app/modules/player-helper/components/content-player-metadata/content-player-metadata.component.scss b/src/app/client/src/app/modules/player-helper/components/content-player-metadata/content-player-metadata.component.scss
index 30f4724c63d19a0297cd1ba04364ad45ac502e53..f0fcd198a70186452e7e0e75c71efbddf89be482 100644
--- a/src/app/client/src/app/modules/player-helper/components/content-player-metadata/content-player-metadata.component.scss
+++ b/src/app/client/src/app/modules/player-helper/components/content-player-metadata/content-player-metadata.component.scss
@@ -1,3 +1,2 @@
-@import "variables";
-@import "mixins/mixins";
-@import 'components/metadata';
\ No newline at end of file
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
+@use 'components/metadata' as *;
\ No newline at end of file
diff --git a/src/app/client/src/app/modules/player-helper/components/content-player/content-player.component.scss b/src/app/client/src/app/modules/player-helper/components/content-player/content-player.component.scss
index a6db46fb69d8d8f9b2d270cfe040f36045fc7742..44c8b494b932184e5b91f1ccdf0a247f44446913 100644
--- a/src/app/client/src/app/modules/player-helper/components/content-player/content-player.component.scss
+++ b/src/app/client/src/app/modules/player-helper/components/content-player/content-player.component.scss
@@ -1,7 +1,6 @@
 
-@import "variables";
-@import "mixins/mixins";
-@import 'components/video';
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
+@use 'components/video' as *;
 
 .no-content-player{
     background: var(--black);
diff --git a/src/app/client/src/app/modules/player-helper/components/content-rating/content-rating.component.scss b/src/app/client/src/app/modules/player-helper/components/content-rating/content-rating.component.scss
index 50f9fc0a7472a0222d765a0a12dcb7e704842d86..c6a32e5146306a578a2e628fdf3482d09266b19e 100644
--- a/src/app/client/src/app/modules/player-helper/components/content-rating/content-rating.component.scss
+++ b/src/app/client/src/app/modules/player-helper/components/content-rating/content-rating.component.scss
@@ -1,5 +1,4 @@
-@import 'variables';
-@import "./mixins/mixins";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 ::ng-deep {
 
diff --git a/src/app/client/src/app/modules/player-helper/components/contentplayer-page/contentplayer-page.component.scss b/src/app/client/src/app/modules/player-helper/components/contentplayer-page/contentplayer-page.component.scss
index a54d8170a1d8056b90415fef88fe89fc45bd5e47..060737f05a7e855ece15738404acabf4bf3bbfab 100644
--- a/src/app/client/src/app/modules/player-helper/components/contentplayer-page/contentplayer-page.component.scss
+++ b/src/app/client/src/app/modules/player-helper/components/contentplayer-page/contentplayer-page.component.scss
@@ -1,5 +1,4 @@
-@import "variables";
-@import "mixins/mixins";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 .sb-single-resource {
   width: 100%;
diff --git a/src/app/client/src/app/modules/player-helper/components/course-info/course-info.component.scss b/src/app/client/src/app/modules/player-helper/components/course-info/course-info.component.scss
index 9f0798e46d9307b1273dfa207093deaea66c7630..9c3d8a7436132c3cfa593bd7acd2914b1d557a04 100644
--- a/src/app/client/src/app/modules/player-helper/components/course-info/course-info.component.scss
+++ b/src/app/client/src/app/modules/player-helper/components/course-info/course-info.component.scss
@@ -1,4 +1,4 @@
-@import './mixins/mixins';
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 ::ng-deep {
     .ui.accordion .active.title .chevron.down.icon {
diff --git a/src/app/client/src/app/modules/player-helper/components/credits-and-licence/credits-and-licence.component.scss b/src/app/client/src/app/modules/player-helper/components/credits-and-licence/credits-and-licence.component.scss
index 51ce89741a48005e41929d9ba45251a5a9db2d4d..a52cab28f316651d7f03c2a6015df0ed5f247afb 100644
--- a/src/app/client/src/app/modules/player-helper/components/credits-and-licence/credits-and-licence.component.scss
+++ b/src/app/client/src/app/modules/player-helper/components/credits-and-licence/credits-and-licence.component.scss
@@ -1,5 +1,4 @@
-@import 'variables';
-@import 'mixins/mixins';
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 .content-metadeta {
   &__content {
diff --git a/src/app/client/src/app/modules/player-helper/components/player/player.component.scss b/src/app/client/src/app/modules/player-helper/components/player/player.component.scss
index 6240a7239a244841022e4bef58212c318f4afb78..42a0cc8d8354c14da3e48447223ec812196e67c4 100644
--- a/src/app/client/src/app/modules/player-helper/components/player/player.component.scss
+++ b/src/app/client/src/app/modules/player-helper/components/player/player.component.scss
@@ -1,6 +1,5 @@
-@import "variables";
-@import "mixins/mixins";
-@import 'components/video';
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
+@use 'components/video' as *;
 
 .player-thumbnail {
   width: 100%;
@@ -111,9 +110,7 @@
     height: 100% !important;
   }
   .video-js{height:100% !important;}
-  // html[layout='joy'] .content-video__player__details {
-  //   border-radius: 0px !important;
-  // }
+
   .video-js {
     padding-top:inherit !important;
   }
diff --git a/src/app/client/src/app/modules/player-helper/player-helper.module.ts b/src/app/client/src/app/modules/player-helper/player-helper.module.ts
index c8b3d5197ba409259875b432fd09ea3b4523f9f4..f89d82343c5aec518de02c954f3541d4c22f0254 100644
--- a/src/app/client/src/app/modules/player-helper/player-helper.module.ts
+++ b/src/app/client/src/app/modules/player-helper/player-helper.module.ts
@@ -13,7 +13,7 @@ import {
 import { SharedModule } from '@sunbird/shared';
 import { CoreModule } from '@sunbird/core';
 import { FormsModule } from '@angular/forms';
-import { CommonConsumptionModule } from '@project-sunbird/common-consumption-v9';
+import { CommonConsumptionModule } from '@project-sunbird/common-consumption';
 import {SunbirdPdfPlayerModule} from '@project-sunbird/sunbird-pdf-player-v9';
 import { SunbirdVideoPlayerModule } from '@project-sunbird/sunbird-video-player-v9';
 import { SunbirdEpubPlayerModule } from '@project-sunbird/sunbird-epub-player-v9';
diff --git a/src/app/client/src/app/modules/program-dashboard/components/program-datasets/program-datasets.component.html b/src/app/client/src/app/modules/program-dashboard/components/program-datasets/program-datasets.component.html
index 372eb4b243acf33d9324d23569bce90348d99537..021225c6f62c3b3b289368dec3d08a5416bdd270 100644
--- a/src/app/client/src/app/modules/program-dashboard/components/program-datasets/program-datasets.component.html
+++ b/src/app/client/src/app/modules/program-dashboard/components/program-datasets/program-datasets.component.html
@@ -57,7 +57,7 @@
 <ng-template #globalFilters>
   <ng-container *ngIf="!hideElements">
     <form class="sb-form" [formGroup]="reportForm">
-      <div>
+      <div class="d-flex">
         <div class="d-flex flex-w-wrap flex-ai-center ml-32 col-gap">
           <div class="d-flex flex-dc">
             <label>{{resourceService?.frmelmnts?.lbl?.programLbl }}</label>
@@ -127,17 +127,18 @@
             </ng-container>
           </ng-container>
 
-          <div class="d-flex flex-dc ml-auto mt-12">
-            <button type="button" class="sb-field sb-btn sb-btn-normal sb-btn-primary reset-filter flex-as-flex-end" (click)="resetFilter()">{{resourceService?.frmelmnts?.btn?.resetFilters}}</button>
-            <mat-form-field *ngIf="!noResult && (tabIndex == 1)" appearance="fill" class="sb-mat__dropdown custom_mat_dd">
-              <mat-select role="radio" class="selection" placeholder="Export as" (selectionChange)="downloadReport($event)" >
-              <mat-option class="mat-dropdown__options" role="option" *ngFor="let option of exportOptions" [value]="option"
-              attr.aria-label="{{option}}">{{option}}</mat-option>
-              </mat-select>
-              </mat-form-field>
-              <button  *ngIf="!noResult && hideTableToCsv && (tabIndex == 2)" type="button" class="sb-btn sb-btn-normal sb-btn-primary export-btn flex-as-flex-end"
-              (click)="tableToCsv = !tableToCsv"><i class="download icon"></i>{{resourceService?.frmelmnts?.lbl?.exportCsv}}</button>    
-          </div>
+          
+        </div>
+        <div class="d-flex flex-dc ml-auto">
+          <button type="button" class="sb-field sb-btn sb-btn-normal sb-btn-primary reset-filter flex-as-flex-end" (click)="resetFilter()">{{resourceService?.frmelmnts?.btn?.resetFilters}}</button>
+          <mat-form-field *ngIf="!noResult && (tabIndex == 1)" appearance="fill" class="sb-mat__dropdown custom_mat_dd">
+            <mat-select role="radio" class="selection" placeholder="Export as" (selectionChange)="downloadReport($event)" >
+            <mat-option class="mat-dropdown__options" role="option" *ngFor="let option of exportOptions" [value]="option"
+            attr.aria-label="{{option}}">{{option}}</mat-option>
+            </mat-select>
+            </mat-form-field>
+            <button  *ngIf="!noResult && hideTableToCsv && (tabIndex == 2)" type="button" class="sb-btn sb-btn-normal sb-btn-primary export-btn flex-as-flex-end"
+            (click)="tableToCsv = !tableToCsv"><i class="download icon"></i>{{resourceService?.frmelmnts?.lbl?.exportCsv}}</button>    
         </div>
       </div>
     </form>
@@ -207,7 +208,7 @@
       <app-sb-chart [chart]="chart" [lastUpdatedOn]="lastUpdatedOn" [hideElements]="hideElements" [globalDistrict]="globalDistrict" [globalOrg]="globalOrg"></app-sb-chart>
     </ng-container>
       </div>
-      <div class="ui warning message" *ngIf="!currentReport.charts.length">
+      <div class="ui warning message mt-16" *ngIf="!currentReport.charts.length">
         {{resourceService?.frmelmnts?.lbl?.graphNotAvailable}}
       </div>
   </div>
diff --git a/src/app/client/src/app/modules/program-dashboard/shared/sb-chart/sb-chart.component.scss b/src/app/client/src/app/modules/program-dashboard/shared/sb-chart/sb-chart.component.scss
index 649b46c91624ea079f520f1c4b7f7a3ba3b3458c..2b4164bdcd9ef2d8cee4717cc2c1c89d718f7366 100644
--- a/src/app/client/src/app/modules/program-dashboard/shared/sb-chart/sb-chart.component.scss
+++ b/src/app/client/src/app/modules/program-dashboard/shared/sb-chart/sb-chart.component.scss
@@ -1,5 +1,4 @@
-@import "variables";
-@import "mixins/mixins";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 .sb-last-update-status {
   font-size: calculateRem(12px);
diff --git a/src/app/client/src/app/modules/public/components/landing-page/landing-page.component.scss b/src/app/client/src/app/modules/public/components/landing-page/landing-page.component.scss
index b84448cb5a8d35007c90abcde0bec41c8de69f58..550f0ab8a55a8d2eb037dd946d3e12bce5b19c5f 100644
--- a/src/app/client/src/app/modules/public/components/landing-page/landing-page.component.scss
+++ b/src/app/client/src/app/modules/public/components/landing-page/landing-page.component.scss
@@ -1,5 +1,4 @@
-@import "variables";
-@import 'mixins/mixins';
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 .landing-page-section {
     background-color:var(--sb-landing-page-bg);
diff --git a/src/app/client/src/app/modules/public/module/course/components/course-consumption/public-course-consumption-page/public-course-consumption-page.component.scss b/src/app/client/src/app/modules/public/module/course/components/course-consumption/public-course-consumption-page/public-course-consumption-page.component.scss
index e85a043c5d12141228e8e438a58cc48c98eaf243..2e7154e161277902b8fb6cab41a70ca6375f92af 100644
--- a/src/app/client/src/app/modules/public/module/course/components/course-consumption/public-course-consumption-page/public-course-consumption-page.component.scss
+++ b/src/app/client/src/app/modules/public/module/course/components/course-consumption/public-course-consumption-page/public-course-consumption-page.component.scss
@@ -1,4 +1,4 @@
-@import "./mixins/mixins";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 ::ng-deep {
     .ui.tiny.progress .bar {
diff --git a/src/app/client/src/app/modules/public/module/course/components/course-consumption/public-course-player/public-course-player.component.scss b/src/app/client/src/app/modules/public/module/course/components/course-consumption/public-course-player/public-course-player.component.scss
index f7acc54d08b72a35b915719f64003221bae46b77..436abbf0dd01f726f5f2f34f00a189810ef4d1ad 100644
--- a/src/app/client/src/app/modules/public/module/course/components/course-consumption/public-course-player/public-course-player.component.scss
+++ b/src/app/client/src/app/modules/public/module/course/components/course-consumption/public-course-player/public-course-player.component.scss
@@ -1,6 +1,5 @@
-@import "variables";
-@import "mixins/mixins";
-@import "pages/course-player";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
+@use "pages/course-player" as *;
 
 .course-list_title {
   color: var(--gray-800);
diff --git a/src/app/client/src/app/modules/public/module/course/components/course-consumption/public-course-player/public-course-player.component.ts b/src/app/client/src/app/modules/public/module/course/components/course-consumption/public-course-player/public-course-player.component.ts
index fe7a986f4c22a62261770a402999540fa9139a29..80aaf3b4b045d6e0b5aeff89da578eb71677de8a 100644
--- a/src/app/client/src/app/modules/public/module/course/components/course-consumption/public-course-player/public-course-player.component.ts
+++ b/src/app/client/src/app/modules/public/module/course/components/course-consumption/public-course-player/public-course-player.component.ts
@@ -11,7 +11,7 @@ import { CourseConsumptionService } from '@sunbird/learn';
 import { IImpressionEventInput, TelemetryService } from '@sunbird/telemetry';
 import * as TreeModel from 'tree-model';
 import { UserService, GeneraliseLabelService } from '@sunbird/core';
-import { TocCardType } from '@project-sunbird/common-consumption-v9';
+import { TocCardType } from '@project-sunbird/common-consumption';
 import { ITelemetryShare, ContentUtilsServiceService } from '@sunbird/shared';
 
 @Component({
diff --git a/src/app/client/src/app/modules/public/module/course/course.module.ts b/src/app/client/src/app/modules/public/module/course/course.module.ts
index b5efd01406ecc73a78c1181258c01685208e4a15..3c046c603f590320f0c815d9b2088bbd9b14f6ab 100644
--- a/src/app/client/src/app/modules/public/module/course/course.module.ts
+++ b/src/app/client/src/app/modules/public/module/course/course.module.ts
@@ -14,7 +14,7 @@ import { CourseConsumptionService, CourseBatchService, CourseProgressService } f
 import { FormsModule } from '@angular/forms';
 import { PlayerHelperModule } from '@sunbird/player-helper';
 import { ContentSearchModule } from '@sunbird/content-search';
-import { CommonConsumptionModule } from '@project-sunbird/common-consumption-v9';
+import { CommonConsumptionModule } from '@project-sunbird/common-consumption';
 
 @NgModule({
   imports: [
diff --git a/src/app/client/src/app/modules/public/module/explore/components/explore-content/explore-content.component.ts b/src/app/client/src/app/modules/public/module/explore/components/explore-content/explore-content.component.ts
index 80ce9bf397ced0bdb059dee5039acf7d10c8a5ec..3218570acb074cc650107e66b793b53b317a4acc 100644
--- a/src/app/client/src/app/modules/public/module/explore/components/explore-content/explore-content.component.ts
+++ b/src/app/client/src/app/modules/public/module/explore/components/explore-content/explore-content.component.ts
@@ -241,6 +241,13 @@ export class ExploreContentComponent implements OnInit, OnDestroy, AfterViewInit
       facets: this.globalSearchFacets,
       params: this.configService.appConfig.ExplorePage.contentApiQueryParams || {}
     };
+    _.filter(Object.keys(this.queryParams),filterValue => { 
+      if(((_.get(this.allTabData , 'search.facets').indexOf(filterValue) !== -1)))
+      {
+          option.filters[filterValue] = (typeof(this.queryParams[filterValue]) === "string" ) ? this.queryParams[filterValue].split(',') : this.queryParams[filterValue];
+
+      }
+  });
     if (this.queryParams.softConstraints) {
       try {
         option.softConstraints = JSON.parse(this.queryParams.softConstraints);
diff --git a/src/app/client/src/app/modules/public/module/explore/components/explore-curriculum-courses/explore-curriculum-courses.component.scss b/src/app/client/src/app/modules/public/module/explore/components/explore-curriculum-courses/explore-curriculum-courses.component.scss
index 5a0806bad1334d6064c5cf99e8fdef694f0fd201..449635c947162706587866d07079371460ae2854 100644
--- a/src/app/client/src/app/modules/public/module/explore/components/explore-curriculum-courses/explore-curriculum-courses.component.scss
+++ b/src/app/client/src/app/modules/public/module/explore/components/explore-curriculum-courses/explore-curriculum-courses.component.scss
@@ -1,5 +1,4 @@
-@import "variables";
-@import './mixins/mixins';
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 .content-header {
   // background: var(--rc-FAFAFA);
diff --git a/src/app/client/src/app/modules/public/module/explore/explore.module.ts b/src/app/client/src/app/modules/public/module/explore/explore.module.ts
index d88766717df4b63aab85e5afbd8fa51d5199b258..5605761c10b21ccefa09211c17420c97f3c22ffd 100644
--- a/src/app/client/src/app/modules/public/module/explore/explore.module.ts
+++ b/src/app/client/src/app/modules/public/module/explore/explore.module.ts
@@ -11,7 +11,7 @@ import {SharedFeatureModule} from '@sunbird/shared-feature';
 import { SuiSelectModule, SuiModalModule, SuiAccordionModule, SuiPopupModule, SuiDropdownModule, SuiProgressModule,
   SuiRatingModule, SuiCollapseModule, SuiDimmerModule } from 'ng2-semantic-ui-v9';
 import { WebExtensionModule } from '@project-sunbird/web-extensions';
-import { CommonConsumptionModule } from '@project-sunbird/common-consumption-v9';
+import { CommonConsumptionModule } from '@project-sunbird/common-consumption';
 import { ContentSearchModule } from '@sunbird/content-search';
 
 @NgModule({
diff --git a/src/app/client/src/app/modules/public/module/group/components/explore-ftu-popup/explore-ftu-popup.component.scss b/src/app/client/src/app/modules/public/module/group/components/explore-ftu-popup/explore-ftu-popup.component.scss
index 437410a0aa894ed4b443a0532b509df3c7d7ed68..c318dcc5d3650059d91839c1fbb68ccabd809db6 100644
--- a/src/app/client/src/app/modules/public/module/group/components/explore-ftu-popup/explore-ftu-popup.component.scss
+++ b/src/app/client/src/app/modules/public/module/group/components/explore-ftu-popup/explore-ftu-popup.component.scss
@@ -1,2 +1,2 @@
-@import './mixins/mixins';
-@import './pages/page-center-view.scss';
\ No newline at end of file
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
+@use 'pages/page-center-view.scss' as *;
\ No newline at end of file
diff --git a/src/app/client/src/app/modules/public/module/group/components/explore-group/explore-group.component.scss b/src/app/client/src/app/modules/public/module/group/components/explore-group/explore-group.component.scss
index 59dbdbd956e415999f7f73a4b0cc03f96278c7b1..9f95328350b04c5783088603ca86145530b4d0a7 100644
--- a/src/app/client/src/app/modules/public/module/group/components/explore-group/explore-group.component.scss
+++ b/src/app/client/src/app/modules/public/module/group/components/explore-group/explore-group.component.scss
@@ -1,2 +1,2 @@
-@import './mixins/mixins';
-@import './pages/page-center-view.scss';
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
+@use 'pages/page-center-view.scss' as *;
diff --git a/src/app/client/src/app/modules/public/module/guest-profile/components/guest-profile/guest-profile.component.scss b/src/app/client/src/app/modules/public/module/guest-profile/components/guest-profile/guest-profile.component.scss
index b77a621c5ff7bced2d1ef1aa65c1facf7bb84f35..9fefcfb1b5abe8aa4929d61b4a23b8c0ca3ea04c 100644
--- a/src/app/client/src/app/modules/public/module/guest-profile/components/guest-profile/guest-profile.component.scss
+++ b/src/app/client/src/app/modules/public/module/guest-profile/components/guest-profile/guest-profile.component.scss
@@ -1,5 +1,4 @@
-@import "variables";
-@import "../../../../../../../assets/styles/mixins/mixins";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 .content-header__title {
   color: var(--primary-400);
diff --git a/src/app/client/src/app/modules/public/module/help/components/faq-report/faq-report.component.scss b/src/app/client/src/app/modules/public/module/help/components/faq-report/faq-report.component.scss
index 4d94d4921a3cb92c3d203f49d79484a807542c06..87be44a05458dfac54deca1317957322b95edd97 100644
--- a/src/app/client/src/app/modules/public/module/help/components/faq-report/faq-report.component.scss
+++ b/src/app/client/src/app/modules/public/module/help/components/faq-report/faq-report.component.scss
@@ -1,4 +1,4 @@
-@import "mixins/mixins";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 h6 {
   color: #333333;
diff --git a/src/app/client/src/app/modules/public/module/help/components/faq/faq.component.scss b/src/app/client/src/app/modules/public/module/help/components/faq/faq.component.scss
index 861d4d76477e3f3c18c5c3745be6703f47539c2d..8df5b2b10d2801720c7161ce170c8fb3fd42acba 100644
--- a/src/app/client/src/app/modules/public/module/help/components/faq/faq.component.scss
+++ b/src/app/client/src/app/modules/public/module/help/components/faq/faq.component.scss
@@ -1,4 +1,4 @@
-@import "mixins/mixins";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 :root {
     --visit-helpcenter-bg:var(--white);
 }
diff --git a/src/app/client/src/app/modules/public/module/help/components/offline-help-videos/offline-help-videos.component.scss b/src/app/client/src/app/modules/public/module/help/components/offline-help-videos/offline-help-videos.component.scss
index c3d5782f4159e69b8a046401d3691515a98dce69..4ba298a4d49f567541dd947c5eed210ceaf88bd8 100644
--- a/src/app/client/src/app/modules/public/module/help/components/offline-help-videos/offline-help-videos.component.scss
+++ b/src/app/client/src/app/modules/public/module/help/components/offline-help-videos/offline-help-videos.component.scss
@@ -1,6 +1,5 @@
-@import "variables";
-@import "mixins/mixins";
-@import "components/video";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
+@use "components/video" as *;
 
 // sb card css
 .sbcard {
diff --git a/src/app/client/src/app/modules/public/module/help/help.module.ts b/src/app/client/src/app/modules/public/module/help/help.module.ts
index 1a81f94f40c25ff70d1d00df700ad72e21c7a93c..d44898519501167013a2192d2122907d8dc4d16a 100644
--- a/src/app/client/src/app/modules/public/module/help/help.module.ts
+++ b/src/app/client/src/app/modules/public/module/help/help.module.ts
@@ -5,9 +5,9 @@ import { FaqComponent, OfflineHelpVideosComponent } from './components';
 import { TelemetryModule } from '@sunbird/telemetry';
 import { CoreModule } from '@sunbird/core';
 import { SharedModule } from '@sunbird/shared';
-import { CommonConsumptionModule } from '@project-sunbird/common-consumption-v9';
+import { CommonConsumptionModule } from '@project-sunbird/common-consumption';
 import { FaqReportComponent } from './components/faq-report/faq-report.component';
-import { CommonFormElementsModule } from '@project-sunbird/common-form-elements-v9';
+import { CommonFormElementsModule } from '@project-sunbird/common-form-elements';
 import { SuiModalModule } from 'ng2-semantic-ui-v9';
 import { SunbirdVideoPlayerModule } from '@project-sunbird/sunbird-video-player-v9';
 
diff --git a/src/app/client/src/app/modules/public/module/offline/components/about-us/about-us.component.scss b/src/app/client/src/app/modules/public/module/offline/components/about-us/about-us.component.scss
index 266159439ea4579d20060afa53e14785b04a4f3f..733b138e0088de8640bf459be6b76e436a73def0 100644
--- a/src/app/client/src/app/modules/public/module/offline/components/about-us/about-us.component.scss
+++ b/src/app/client/src/app/modules/public/module/offline/components/about-us/about-us.component.scss
@@ -1,5 +1,4 @@
-@import "variables";
-@import "mixins/mixins";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 .sb-about-title {
   border-bottom: calculateRem(1px) solid var(--primary-color);
diff --git a/src/app/client/src/app/modules/public/module/offline/components/content-manager-info-pop-up/content-manager-info-pop-up.component.scss b/src/app/client/src/app/modules/public/module/offline/components/content-manager-info-pop-up/content-manager-info-pop-up.component.scss
index 30e6b36190cc653fdb0c158b2f2ae9ec2944577f..74daafcbf4849d4f7048de20152a9e28219c3731 100644
--- a/src/app/client/src/app/modules/public/module/offline/components/content-manager-info-pop-up/content-manager-info-pop-up.component.scss
+++ b/src/app/client/src/app/modules/public/module/offline/components/content-manager-info-pop-up/content-manager-info-pop-up.component.scss
@@ -1,5 +1,4 @@
-@import "variables";
-@import "mixins/mixins";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 .warning-ecar-list {
     width: 100%;
diff --git a/src/app/client/src/app/modules/public/module/offline/components/info-card/info-card.component.scss b/src/app/client/src/app/modules/public/module/offline/components/info-card/info-card.component.scss
index 759d62d7d7c670b98424dbcab66c534410ac161b..88aec9e149e306586168a187ea77138b61b0f999 100644
--- a/src/app/client/src/app/modules/public/module/offline/components/info-card/info-card.component.scss
+++ b/src/app/client/src/app/modules/public/module/offline/components/info-card/info-card.component.scss
@@ -1,5 +1,4 @@
-@import "variables";
-@import "mixins/mixins";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 .info-container{
     width: 100%;
diff --git a/src/app/client/src/app/modules/public/module/offline/components/library/library.component.scss b/src/app/client/src/app/modules/public/module/offline/components/library/library.component.scss
index 77770f00c6f58490384793150278a8df89df3399..279c8055b7374dff5caf04581bfb1069d2e91a70 100644
--- a/src/app/client/src/app/modules/public/module/offline/components/library/library.component.scss
+++ b/src/app/client/src/app/modules/public/module/offline/components/library/library.component.scss
@@ -1,5 +1,4 @@
-@import "variables";
-@import "mixins/mixins";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 :host {
   .page {
     background: rgba(0, 0, 0, 0.6);
diff --git a/src/app/client/src/app/modules/public/module/offline/components/load-content/load-content.component.scss b/src/app/client/src/app/modules/public/module/offline/components/load-content/load-content.component.scss
index ac1a61ee8052740509f6b068b672d1233bc38135..c6639e53f6d9d2a2336159513adc61a5c277bcd8 100644
--- a/src/app/client/src/app/modules/public/module/offline/components/load-content/load-content.component.scss
+++ b/src/app/client/src/app/modules/public/module/offline/components/load-content/load-content.component.scss
@@ -1,5 +1,4 @@
-@import "variables";
-@import "mixins/mixins"; 
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 .sb-modal{
   .disable-color{
diff --git a/src/app/client/src/app/modules/public/module/offline/components/telemetry-import/telemetry-import.component.scss b/src/app/client/src/app/modules/public/module/offline/components/telemetry-import/telemetry-import.component.scss
index 9c280b261bb95d59758067281abc22ac8587048a..1ee2d098c847218460d2a2e86add694da94122b8 100644
--- a/src/app/client/src/app/modules/public/module/offline/components/telemetry-import/telemetry-import.component.scss
+++ b/src/app/client/src/app/modules/public/module/offline/components/telemetry-import/telemetry-import.component.scss
@@ -1,5 +1,4 @@
-@import "variables";
-@import "mixins/mixins";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 .sb-bulk-upload-btn{
     position: relative;
diff --git a/src/app/client/src/app/modules/public/module/offline/components/telemetry/telemetry.component.scss b/src/app/client/src/app/modules/public/module/offline/components/telemetry/telemetry.component.scss
index 5e0f40a490cc09fae641041ed18c02b7b21df2c0..bb9aa2b537151f1939633877762f33200d61152b 100644
--- a/src/app/client/src/app/modules/public/module/offline/components/telemetry/telemetry.component.scss
+++ b/src/app/client/src/app/modules/public/module/offline/components/telemetry/telemetry.component.scss
@@ -1,5 +1,4 @@
-@import "variables";
-@import "mixins/mixins";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 .profile-telemetry-title {
   font-size: calculateRem(16px);
diff --git a/src/app/client/src/app/modules/public/module/offline/offline.module.ts b/src/app/client/src/app/modules/public/module/offline/offline.module.ts
index 3457b2eb6a67f882f3dbd2d2f7ca35d91b158d59..e4e34c501d84763c182cdde92ecb2dda137a3834 100644
--- a/src/app/client/src/app/modules/public/module/offline/offline.module.ts
+++ b/src/app/client/src/app/modules/public/module/offline/offline.module.ts
@@ -20,7 +20,7 @@ import { OrderModule } from 'ngx-order-pipe';
 import { SlickModule } from 'ngx-slick';
 import { ReactiveFormsModule } from '@angular/forms';
 import { FormsModule } from '@angular/forms';
-import { CommonConsumptionModule } from '@project-sunbird/common-consumption-v9';
+import { CommonConsumptionModule } from '@project-sunbird/common-consumption';
 import { NgInviewModule } from 'angular-inport';
 import { ContentSearchModule } from '@sunbird/content-search';
 @NgModule({
diff --git a/src/app/client/src/app/modules/public/module/player/player.module.ts b/src/app/client/src/app/modules/public/module/player/player.module.ts
index bc53902644153276d1912bea647bf65aec3d9b89..d0d47456540594d3bdf2812bc6140412b9e7124c 100644
--- a/src/app/client/src/app/modules/public/module/player/player.module.ts
+++ b/src/app/client/src/app/modules/public/module/player/player.module.ts
@@ -7,7 +7,7 @@ import { BadgingModule } from '@sunbird/badge';
 import { CoreModule } from '@sunbird/core';
 import { PlayerHelperModule } from '@sunbird/player-helper';
 import { SuiModalModule } from 'ng2-semantic-ui-v9';
-import { CommonConsumptionModule} from '@project-sunbird/common-consumption-v9';
+import { CommonConsumptionModule} from '@project-sunbird/common-consumption';
 import { SharedFeatureModule } from '@sunbird/shared-feature';
 
 @NgModule({
diff --git a/src/app/client/src/app/modules/public/module/sign-in/sso/components/auth-failed/auth-failed.component.scss b/src/app/client/src/app/modules/public/module/sign-in/sso/components/auth-failed/auth-failed.component.scss
index 4aba74b0c5717e0218de3fb3fc846f1cafca0760..5dfea688dd0378c00aa136cb2e5a6122d25fbc64 100644
--- a/src/app/client/src/app/modules/public/module/sign-in/sso/components/auth-failed/auth-failed.component.scss
+++ b/src/app/client/src/app/modules/public/module/sign-in/sso/components/auth-failed/auth-failed.component.scss
@@ -1,5 +1,5 @@
-@import "mixins/mixins";
-@import "./../../../../../../../../assets/styles/pages/sign_in_up";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
+@use "pages/sign_in_up" as *;
 
 .failed-message{
     color: var(--tertiary-400);
diff --git a/src/app/client/src/app/modules/public/module/sign-in/sso/components/select-org/select-org.component.scss b/src/app/client/src/app/modules/public/module/sign-in/sso/components/select-org/select-org.component.scss
index 74e9a98cceace68da815ced23f7fa0423fcd5c54..5bc8df344d10d6daf6ea674f6dfd2e78ddf863ce 100644
--- a/src/app/client/src/app/modules/public/module/sign-in/sso/components/select-org/select-org.component.scss
+++ b/src/app/client/src/app/modules/public/module/sign-in/sso/components/select-org/select-org.component.scss
@@ -1,6 +1,5 @@
-@import "variables";
-@import "mixins/mixins";
-@import "pages/sign_in_up";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
+@use 'pages/sign_in_up' as *;
 
 .ui.raised.shadow.container.segment {
     margin: calculateRem(20px) auto !important;
diff --git a/src/app/client/src/app/modules/public/module/sign-in/sso/components/update-contact/update-contact.component.scss b/src/app/client/src/app/modules/public/module/sign-in/sso/components/update-contact/update-contact.component.scss
index 908b81e94e3869f26596c5153ffef423ca6ea7cc..d1e080da96d2b42672b987bbf5764fb5d5e712be 100644
--- a/src/app/client/src/app/modules/public/module/sign-in/sso/components/update-contact/update-contact.component.scss
+++ b/src/app/client/src/app/modules/public/module/sign-in/sso/components/update-contact/update-contact.component.scss
@@ -1,6 +1,5 @@
-@import "variables";
-@import 'mixins/mixins';
-@import 'pages/sign_in_up';
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
+@use 'pages/sign_in_up' as *;
 
 .ui.raised.shadow.container.segment {
   margin: calculateRem(20px) auto !important;
diff --git a/src/app/client/src/app/modules/public/module/sign-in/sso/components/update-contact/update-contact.component.spec.ts b/src/app/client/src/app/modules/public/module/sign-in/sso/components/update-contact/update-contact.component.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..3c5237a7a8516f43e032667cf05eded9c6a36f69
--- /dev/null
+++ b/src/app/client/src/app/modules/public/module/sign-in/sso/components/update-contact/update-contact.component.spec.ts
@@ -0,0 +1,399 @@
+import { FormControl, FormGroup } from '@angular/forms';
+import { UpdateContactComponent } from './update-contact.component';
+import { ActivatedRoute } from '@angular/router';
+import { ToasterService } from '@sunbird/shared';
+import { TncService } from '@sunbird/core';
+import { TelemetryService } from '@sunbird/telemetry';
+import { ResourceService } from '@sunbird/shared';
+import { of as observableOf, Observable, throwError as observableThrowError } from 'rxjs';
+import { TenantService, UserService, OtpService, OrgDetailsService } from '@sunbird/core';
+import { mockUpdateContactData } from './update-contact.mock.spec.data'
+import { NavigationHelperService, UtilService } from '../../../../../../shared/services';
+import { SignupService } from '../../../../signup';
+
+describe('UpdateContactComponent', () => {
+    let component: UpdateContactComponent;
+
+    const activatedRoute: Partial<ActivatedRoute> = {
+        snapshot: mockUpdateContactData.snapshotData as any,
+        queryParams: observableOf({ userId: 'mockUserId' })
+    };
+    const tenantService: Partial<TenantService> = {
+        tenantData$: observableOf({ favicon: 'sample-favicon', tenantData: { logo: 'test' } }) as any
+    };
+    const resourceService: Partial<ResourceService> = {
+        frmelmnts: mockUpdateContactData.resourceBundle.frmelmnts,
+        messages: mockUpdateContactData.resourceBundle.messages
+    };
+    const userService: Partial<UserService> = {
+        getUserByKey: jest.fn().mockReturnValue(observableOf(mockUpdateContactData.userData))
+    };
+    const otpService: Partial<OtpService> = {
+        generateOTP: jest.fn().mockReturnValue(observableOf())
+    };
+    const toasterService: Partial<ToasterService> = {
+        error: jest.fn()
+    };
+    const navigationHelperService: Partial<NavigationHelperService> = {
+        getPageLoadTime: jest.fn()
+    };
+    const orgDetailsService: Partial<OrgDetailsService> = {
+        getCustodianOrgDetails: jest.fn()
+    };
+    const utilService: Partial<UtilService> = {
+        parseJson: jest.fn()
+    };
+    const signupService: Partial<SignupService> = {};
+    const telemetryService: Partial<TelemetryService> = {
+        interact: jest.fn(),
+        log: jest.fn()
+    };
+    const tncService: Partial<TncService> = {
+        getTncConfig: jest.fn().mockReturnValue(observableOf({
+            'id': 'api',
+            'params': {
+                'status': 'success',
+            },
+            'responseCode': 'OK',
+            'result': {
+                'response': {
+                    'id': 'tncConfig',
+                    'field': 'tncConfig',
+                    'value': '{"latestVersion":"v4","v4":{"url":}}'
+                }
+            }
+        }))
+    };
+
+    beforeEach(() => {
+        component = new UpdateContactComponent(
+
+            activatedRoute as ActivatedRoute,
+            tenantService as TenantService,
+            resourceService as ResourceService,
+            userService as UserService,
+            otpService as OtpService,
+            toasterService as ToasterService,
+            navigationHelperService as NavigationHelperService,
+            orgDetailsService as OrgDetailsService,
+            utilService as UtilService,
+            signupService as SignupService,
+            telemetryService as TelemetryService,
+            tncService as TncService,
+        )
+    });
+
+    it('should create', () => {
+        expect(component).toBeTruthy();
+    });
+
+    it('should show Merge confirmation after success otp verification', () => {
+        component.contactForm.type = 'email';
+        component.contactForm.value = 'test@gmail.com';
+        component.userDetails = {
+            id: 'mockId'
+        };
+        component.handleOtpValidationSuccess();
+        expect(component.showOtpComp).toEqual(false);
+        expect(component.showMergeConfirmation).toEqual(true);
+    });
+
+    it('should redirect verified user', () => {
+        jest.spyOn(component, 'getQueryParams');
+        Object.defineProperty(window, 'location', {
+            writable: true,
+            value: { assign: jest.fn() }
+        });
+        component.userDetails = {};
+        component.handleOtpValidationSuccess();
+        expect(component.getQueryParams).toHaveBeenCalled();
+    });
+
+    it('should reset form as otp validation failed', () => {
+        component.handleOtpValidationFailed();
+        expect(component).toBeTruthy();
+        expect(component.showOtpComp).toEqual(false);
+        expect(component.disableSubmitBtn).toEqual(true);
+        expect(component.contactForm).toEqual({
+            value: '',
+            type: 'phone',
+            tncAccepted: false
+        });
+        expect(component.userExist).toEqual(false);
+        expect(component.userBlocked).toEqual(false);
+    });
+
+    it('should reset form as otp validation failed', (done) => {
+        jest.spyOn(component, 'handleFormChangeEvent').mockImplementation();
+        component.handleOtpValidationFailed();
+        setTimeout(() => {
+            expect(component.handleFormChangeEvent).toHaveBeenCalled();
+            done()
+        }, 100);
+    });
+
+    it('should return query params for given query object', () => {
+        const test = component.getQueryParams({ queryParam1: 'mockValue' });
+        expect(test).toEqual('?queryParam1=mockValue');
+    });
+
+    it('should not fail if query parmas are not send', () => {
+        const test = component.getQueryParams({});
+        expect(test).toEqual('?');
+    });
+
+    it('should reset form', () => {
+        component.resetForm();
+        expect(component.disableSubmitBtn).toEqual(true);
+        expect(component.contactForm).toEqual({
+            value: '',
+            type: 'phone',
+            tncAccepted: false
+        });
+        expect(component.userExist).toEqual(false);
+        expect(component.userDetails).toEqual({});
+        expect(component.userBlocked).toEqual(false);
+    });
+
+    it('should not throw error and not generate otp as root org id is different', () => {
+        component.contactForm.type = 'email';
+        component.contactForm.value = 'test@gmail.com';
+        jest.spyOn(userService, 'getUserByKey').mockImplementation(() => observableOf(mockUpdateContactData.userData) as any);
+        jest.spyOn(orgDetailsService, 'getCustodianOrgDetails').mockImplementation(() => observableOf(mockUpdateContactData.nonCustOrgDetails) as any);
+        component.onFormUpdate();
+        expect(component.userExist).toEqual(true);
+        expect(component.userBlocked).toEqual(false);
+        expect(component.disableSubmitBtn).toEqual(true);
+    });
+
+    it('should not generate otp as user account blocked', () => {
+        component.contactForm.type = 'email';
+        component.contactForm.value = 'test@gmail.com';
+        jest.spyOn(userService, 'getUserByKey').mockImplementation(() => observableThrowError(mockUpdateContactData.blockedUserError));
+        jest.spyOn(orgDetailsService, 'getCustodianOrgDetails').mockImplementation(() => observableOf(mockUpdateContactData.nonCustOrgDetails));
+        component.onFormUpdate();
+        expect(component.userExist).toEqual(false);
+        expect(component.userBlocked).toEqual(true);
+        expect(component.disableSubmitBtn).toEqual(true);
+    });
+
+    it('should not generate otp as an eror occured', () => {
+        component.contactForm.type = 'email';
+        component.contactForm.value = 'test@gmail.com';
+        jest.spyOn(userService, 'getUserByKey').mockImplementation(() => observableThrowError({
+            error: {
+                params: {
+                    status: 'I\'m a teapot'
+                }
+            }
+        }));
+        jest.spyOn(orgDetailsService, 'getCustodianOrgDetails').mockImplementation(() => observableOf(mockUpdateContactData.nonCustOrgDetails));
+        component.onFormUpdate();
+        expect(component.disableSubmitBtn).toEqual(true);
+        expect(component.captchaValidationFailed).toEqual(true);
+    });
+
+    it('should generate otp as user not found', () => {
+        component.contactForm.type = 'email';
+        component.contactForm.value = 'test@gmail.com';
+        jest.spyOn(userService, 'getUserByKey').mockImplementation(() => observableThrowError(mockUpdateContactData.serverError) as any);
+        jest.spyOn(orgDetailsService, 'getCustodianOrgDetails').mockImplementation(() =>
+            observableOf(mockUpdateContactData.nonCustOrgDetails));
+        jest.spyOn(otpService, 'generateOTP').mockImplementation(() => observableOf(mockUpdateContactData.successResponse) as any);
+        component.onFormUpdate();
+    });
+
+    it('should not generate otp and throw error as phone is in use', () => {
+        component.contactForm.type = 'email';
+        component.contactForm.value = 'test@gmail.com';
+        jest.spyOn(userService, 'getUserByKey').mockImplementation(() => observableThrowError(mockUpdateContactData.serverError));
+        jest.spyOn(orgDetailsService, 'getCustodianOrgDetails').mockImplementation(() =>
+            observableOf(mockUpdateContactData.nonCustOrgDetails));
+        jest.spyOn(otpService, 'generateOTP').mockImplementation(() => observableThrowError(mockUpdateContactData.phoneAlreadyUsedError));
+        jest.spyOn(toasterService, 'error').mockImplementation((value) => {
+            return value;
+        });
+        component.onFormUpdate();
+        expect(toasterService.error).toHaveBeenCalledWith('PHONE_ALREADY_IN_USE');
+    });
+
+    it('should not generate otp and throw error as email is in use', () => {
+        component.contactForm.type = 'email';
+        component.contactForm.value = 'test@gmail.com';
+        jest.spyOn(userService, 'getUserByKey').mockImplementation(() => observableThrowError(mockUpdateContactData.serverError));
+        jest.spyOn(orgDetailsService, 'getCustodianOrgDetails').mockImplementation(() =>
+            observableOf(mockUpdateContactData.nonCustOrgDetails));
+        jest.spyOn(otpService, 'generateOTP').mockImplementation(() => observableThrowError(mockUpdateContactData.emailAlreadyUsedError));
+        jest.spyOn(toasterService, 'error').mockImplementation((value) => {
+            return value;
+        });
+        component.onFormUpdate();
+        expect(toasterService.error).toHaveBeenCalledWith('EMAIL_IN_USE');
+    });
+
+    it('should not generate otp and throw error as rate limit has exceed', () => {
+        component.contactForm.type = 'email';
+        component.contactForm.value = 'test@gmail.com';
+        jest.spyOn(userService, 'getUserByKey').mockImplementation(() => observableThrowError(mockUpdateContactData.serverError));
+        jest.spyOn(orgDetailsService, 'getCustodianOrgDetails').mockImplementation(() =>
+            observableOf(mockUpdateContactData.nonCustOrgDetails));
+        jest.spyOn(otpService, 'generateOTP').mockImplementation(() => observableThrowError(mockUpdateContactData.rateLimitExceed));
+        jest.spyOn(toasterService, 'error').mockImplementation((value) => {
+            return value;
+        });
+        component.onFormUpdate();
+        expect(toasterService.error).toHaveBeenCalledWith('ERROR_RATE_LIMIT_EXCEEDED');
+    });
+
+    it('should not generate otp and throw error as server error', () => {
+        component.contactForm.type = 'email';
+        component.contactForm.value = 'test@gmail.com';
+        jest.spyOn(userService, 'getUserByKey').mockImplementation(() => observableThrowError(mockUpdateContactData.serverError));
+        jest.spyOn(orgDetailsService, 'getCustodianOrgDetails').mockImplementation(() =>
+            observableOf(mockUpdateContactData.nonCustOrgDetails));
+        jest.spyOn(otpService, 'generateOTP').mockImplementation(() => observableThrowError(mockUpdateContactData.serverError));
+        jest.spyOn(toasterService, 'error').mockImplementation((value) => {
+            return value;
+        });
+        component.onFormUpdate();
+        expect(toasterService.error).toHaveBeenCalledWith(mockUpdateContactData.resourceBundle.messages.fmsg.m0085);
+    });
+
+    it('should generate otp as user org id is same for email id', () => {
+        component.contactForm.type = 'email';
+        component.contactForm.value = 'test@gmail.com';
+        jest.spyOn(userService, 'getUserByKey').mockImplementation(() => observableOf(mockUpdateContactData.userData) as Observable<any>);
+        jest.spyOn(orgDetailsService, 'getCustodianOrgDetails').mockImplementation(() =>
+            observableOf(mockUpdateContactData.custOrgDetails));
+        jest.spyOn(otpService, 'generateOTP').mockImplementation(() => observableOf(mockUpdateContactData.successResponse) as Observable<any>);
+        component.onFormUpdate();
+        expect(component.userDetails).toEqual(mockUpdateContactData.userData.result.response);
+        expect(component.userExist).toEqual(false);
+        expect(component.userBlocked).toEqual(false);
+        expect(component.disableSubmitBtn).toEqual(false);
+    });
+
+    it('should generate otp as user org id is same for phone number', () => {
+        component.contactForm.type = 'phone';
+        component.contactForm.value = '7896541257';
+        jest.spyOn(userService, 'getUserByKey').mockImplementation(() =>
+            observableOf(mockUpdateContactData.userData) as Observable<any>);
+        jest.spyOn(orgDetailsService, 'getCustodianOrgDetails').mockImplementation(() =>
+            observableOf(mockUpdateContactData.custOrgDetails));
+        jest.spyOn(otpService, 'generateOTP').mockImplementation(() =>
+            observableOf(mockUpdateContactData.successResponse) as Observable<any>);
+        component.onFormUpdate();
+        expect(component.userDetails).toEqual(mockUpdateContactData.userData.result.response);
+        expect(component.userExist).toEqual(false);
+        expect(component.userBlocked).toEqual(false);
+        expect(component.disableSubmitBtn).toEqual(false);
+    });
+
+    it('initiate instance with SUNBIRD', () => {
+        jest.spyOn(component, 'fetchTncConfiguration');
+        component.ngOnInit();
+        expect(component.instance).toEqual('SUNBIRD');
+        expect(component.fetchTncConfiguration).toHaveBeenCalled();
+    });
+
+    it('initiate instance with SUNBIRD without captcha', () => {
+        jest.spyOn(component, 'fetchTncConfiguration');
+        let mockElement = (<HTMLInputElement>document.createElement('p1reCaptchaEnabled'));
+        mockElement.value = "false";
+        jest.spyOn(document, 'getElementById').mockReturnValue(mockElement);
+        component.ngOnInit();
+        expect(component.instance).toEqual('SUNBIRD');
+        expect(component.fetchTncConfiguration).toHaveBeenCalled();
+    });
+
+    it('should toggle tnc checkboc if already false', () => {
+        jest.spyOn(telemetryService, 'interact');
+        component.toggleTncCheckBox({ target: { checked: true } });
+        expect(component.contactForm.tncAccepted).toEqual(true);
+        expect(telemetryService.interact).toHaveBeenCalledWith(mockUpdateContactData.interactEDataSelected);
+    });
+
+    it('should toggle tnc checkboc', () => {
+        jest.spyOn(telemetryService, 'interact');
+        component.toggleTncCheckBox({ target: { checked: false } });
+        expect(component.contactForm.tncAccepted).toEqual(false);
+        expect(telemetryService.interact).toHaveBeenCalledWith(mockUpdateContactData.interactEDataUnSelected);
+    });
+
+    it('should fetch tnc configuration', () => {
+        jest.spyOn(tncService, 'getTncConfig').mockReturnValue(observableOf(mockUpdateContactData.tncConfig) as any)
+        jest.spyOn(telemetryService, 'log');
+        component.fetchTncConfiguration();
+        expect(telemetryService.log).toHaveBeenCalledWith(mockUpdateContactData.telemetryLogSuccess);
+    });
+
+    it('should fetch tnc configuration and throw error as cannot parse data', () => {
+        jest.spyOn(tncService, 'getTncConfig').mockReturnValue(observableOf(mockUpdateContactData.tncConfigIncorrectData) as any);
+        jest.spyOn(toasterService, 'error');
+        component.fetchTncConfiguration();
+        expect(toasterService.error).toHaveBeenCalledWith(mockUpdateContactData.resourceBundle.messages.fmsg.m0004);
+    });
+
+    it('should fetch tnc configuration and throw error', () => {
+        jest.spyOn(tncService, 'getTncConfig').mockReturnValue(observableThrowError(mockUpdateContactData.tncConfigIncorrectData) as any);
+        jest.spyOn(toasterService, 'error');
+        component.fetchTncConfiguration();
+        expect(toasterService.error).toHaveBeenCalledWith(mockUpdateContactData.resourceBundle.messages.fmsg.m0004);
+    });
+
+    it('should show tnc popup if given mode is true', () => {
+        component.showAndHidePopup(true);
+        expect(component.showTncPopup).toBe(true);
+    });
+
+    it('should not show tnc popup if given mode is false', () => {
+        component.showAndHidePopup(false);
+        expect(component.showTncPopup).toBe(false);
+    });
+
+    it('should submit form when captcha enabled', () => {
+        component.isP1CaptchaEnabled = 'true';
+        jest.spyOn(component, 'resetGoogleCaptcha');
+        jest.spyOn(component, 'resolved').mockImplementation(() => true);
+        component.submitForm();
+        expect(component.resetGoogleCaptcha).toHaveBeenCalled();
+    });
+
+    it('should submit form when captcha is not enabled', () => {
+        component.isP1CaptchaEnabled = 'false';
+        jest.spyOn(component, 'onFormUpdate');
+        component.submitForm();
+        expect(component.onFormUpdate).toHaveBeenCalled();
+    });
+
+    it('should receive response from captcha', () => {
+        component.isP1CaptchaEnabled = 'true';
+        jest.spyOn(component, 'onFormUpdate').mockImplementation(() => true);
+        component.resolved(mockUpdateContactData.captchaToken);
+        expect(component.onFormUpdate).toHaveBeenCalledWith(mockUpdateContactData.captchaToken);
+    });
+
+    it("should call ngAfterViewInit", (done) => {
+        jest.spyOn(component, 'handleFormChangeEvent').mockImplementation();
+        component.ngAfterViewInit();
+        setTimeout(() => {
+            expect(component.handleFormChangeEvent).toHaveBeenCalled();
+            done()
+        });
+    });
+
+    it("should call handleFormChangeEvent", () => {
+        // @ts-ignore
+        component.contactDetailsForm = new FormGroup({
+            value: new FormControl('12345'),
+            type: new FormControl('phone'),
+            tncAccepted: new FormControl(true),
+            status: new FormControl('VALID'),
+        })
+        component.handleFormChangeEvent();
+        // @ts-ignore
+        component.contactDetailsForm.valueChanges.subscribe((data, data2) => {
+            expect(component.disableSubmitBtn).toBeFalsy();
+        })
+    })
+});
\ No newline at end of file
diff --git a/src/app/client/src/app/modules/public/module/signup/components/otp/otp.component.scss b/src/app/client/src/app/modules/public/module/signup/components/otp/otp.component.scss
index fead9bd14417fbba1d1dbec95c99b413af92364a..8188a2080c814648f6c6826b76d19669ae684e22 100644
--- a/src/app/client/src/app/modules/public/module/signup/components/otp/otp.component.scss
+++ b/src/app/client/src/app/modules/public/module/signup/components/otp/otp.component.scss
@@ -1,5 +1,4 @@
-@import "variables";
-@import 'mixins/mixins';
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 .ui.raised.shadow.container.segment {
     margin-left: auto !important;
diff --git a/src/app/client/src/app/modules/public/module/signup/components/signup-basic-info/signup-basic-info.component.html b/src/app/client/src/app/modules/public/module/signup/components/signup-basic-info/signup-basic-info.component.html
index ef7d40e9b9bc40e91fbf39b13c08fa2eb8093083..621789338ccbe191e46b744a77d96d18fb485064 100644
--- a/src/app/client/src/app/modules/public/module/signup/components/signup-basic-info/signup-basic-info.component.html
+++ b/src/app/client/src/app/modules/public/module/signup/components/signup-basic-info/signup-basic-info.component.html
@@ -26,25 +26,26 @@
         <mat-form-field *ngIf="!isIOSDevice" aria-required="true" appearance="fill" class="sb-mat__dropdown sb-mat__dropdown--autocmp w-100">
             <!-- <mat-label>{{resourceService.frmelmnts?.lbl?.yearOfBirth}}<span class="sb-color-red">*</span>
             </mat-label> -->
-            <input type="text" (keypress)="isNumber(event)" formControlName="yearOfBirth" tabindex="0"
+            <input type="text" (keypress)="isNumber(event)" formControlName="yearOfBirth" tabindex="0" 
             placeholder="Select year" [attr.aria-label]="resourceService.frmelmnts?.lbl?.yearOfBirth" matInput
-            [matAutocomplete]="auto">
+            [matAutocomplete]="auto" maxlength="4">
             <mat-autocomplete (optionSelected)="changeBirthYear($event)" role="combobox" #auto="matAutocomplete">
                 <mat-option class="mat-dropdown__options" role="listbox" *ngFor="let option of filteredYOB | async" [value]="option">
                     {{option}}
                 </mat-option>
             </mat-autocomplete>
         </mat-form-field>
-
+        
         <label *ngIf="isIOSDevice">
             <select name="birthYearOptions" id="birthYearOptions" class="sb-form-control birthYearOptions"
             (change)="changeBirthYear($event, true)">
             <option value="" disabled selected>{{resourceService.frmelmnts?.lbl?.year}}</option>
             <option *ngFor="let option of birthYearOptions" [value]="option">{{option}}</option>
             </select>
-        </label>    
-        <div class="sb-color-red pt-0" aria-describedby="signup-form-yearofbirth" tabindex="0" [attr.aria-label]="resourceService.frmelmnts?.lbl?.yearOfBirth" *ngIf="personalInfoForm.controls.yearOfBirth.touched && personalInfoForm.controls['yearOfBirth'].errors && personalInfoForm.controls['yearOfBirth'].errors.required">{{resourceService.frmelmnts?.lbl?.yearOfBirth}}</div>
+        </label> 
+        <div class="sb-color-red pt-0" aria-describedby="signup-form-yearofbirth" tabindex="0" [attr.aria-label]="resourceService.frmelmnts?.lbl?.yearOfBirth" *ngIf="personalInfoForm.controls.yearOfBirth.touched  && personalInfoForm.controls['yearOfBirth'].errors && personalInfoForm.controls['yearOfBirth'].errors.required">{{resourceService.frmelmnts?.lbl?.yearOfBirth}}</div>
         <div class="sb-color-red pt-0" aria-describedby="signup-form-yearofbirth" tabindex="0" [attr.aria-label]="resourceService.frmelmnts?.lbl?.yearOfBirth" *ngIf="personalInfoForm.controls.yearOfBirth.touched && personalInfoForm.controls['yearOfBirth'].errors && personalInfoForm.controls['yearOfBirth'].errors.pattern">{{resourceService.frmelmnts.lbl.yearOfBirth}}</div>
+        <div class="sb-color-red pt-0" aria-describedby="signup-form-yearofbirth" tabindex="0" [attr.aria-label]="resourceService.frmelmnts?.lbl?.validYearOfBirth" *ngIf="personalInfoForm.controls.yearOfBirth.touched  && personalInfoForm.controls['yearOfBirth'].errors && (personalInfoForm.controls['yearOfBirth'].errors.min  ||  personalInfoForm.controls['yearOfBirth'].errors.max) && !(personalInfoForm.controls.yearOfBirth.touched && personalInfoForm.controls['yearOfBirth'].errors && (personalInfoForm.controls['yearOfBirth'].errors.pattern  || personalInfoForm.controls['yearOfBirth'].errors.required))">{{resourceService.frmelmnts?.lbl?.validYearOfBirth}}</div>
     </div>
     <button [attr.aria-disabled]="!personalInfoForm.valid" [disabled]="!personalInfoForm.valid" type="biutton" appTelemetryInteract
         [telemetryInteractEdata]="submitInteractEdata" [telemetryInteractCdata]="telemetryCdata"
diff --git a/src/app/client/src/app/modules/public/module/signup/components/signup-basic-info/signup-basic-info.component.scss b/src/app/client/src/app/modules/public/module/signup/components/signup-basic-info/signup-basic-info.component.scss
index 41080d7b22e427190c656697e57c8530392b9a31..f4ec7196792b826a2f2016b7786117a8ddeafbfa 100644
--- a/src/app/client/src/app/modules/public/module/signup/components/signup-basic-info/signup-basic-info.component.scss
+++ b/src/app/client/src/app/modules/public/module/signup/components/signup-basic-info/signup-basic-info.component.scss
@@ -1,5 +1,4 @@
-@import "variables";
-@import "mixins/mixins";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 .sb-mat__dropdown.sb-mat__dropdown--autocmp {
   border: 1px solid var(--gray-200);
diff --git a/src/app/client/src/app/modules/public/module/signup/components/signup-basic-info/signup-basic-info.component.ts b/src/app/client/src/app/modules/public/module/signup/components/signup-basic-info/signup-basic-info.component.ts
index 0f882fc11f72ee7740bf6be0d534abfa32291679..b39c6cbe2ee6bb98720b9436b432c59d2e07c015 100644
--- a/src/app/client/src/app/modules/public/module/signup/components/signup-basic-info/signup-basic-info.component.ts
+++ b/src/app/client/src/app/modules/public/module/signup/components/signup-basic-info/signup-basic-info.component.ts
@@ -36,10 +36,16 @@ export class SignupBasicInfoComponent implements OnInit {
   
 
   ngOnInit(): void {
+    const endYear = new Date().getFullYear();
+    const startYear = endYear - this.configService.constants.SIGN_UP.MAX_YEARS;
     this.instance = _.upperCase(this.resourceService.instance || 'SUNBIRD');
     this.personalInfoForm = this._fb.group({
       name: ['', Validators.required],
-      yearOfBirth: ['', [Validators.required, Validators.pattern(/^-?(0|[1-9]\d*)?$/)]]
+      yearOfBirth: ['', [Validators.required, 
+        Validators.pattern(/^-?(0|[1-9]\d*)?$/),
+        Validators.min(startYear),
+        Validators.max(endYear), 
+      ]]
     })
     this.initiateYearSelecter();
     // @ts-ignore
diff --git a/src/app/client/src/app/modules/public/module/signup/components/signup-email-password/signup-email-password.component.scss b/src/app/client/src/app/modules/public/module/signup/components/signup-email-password/signup-email-password.component.scss
index 8e8bc04f66fbf8f6f258e6afb25b014f2860afec..9aedf651be84d0a3ce82b7a8a55c2c48feb0d9e1 100644
--- a/src/app/client/src/app/modules/public/module/signup/components/signup-email-password/signup-email-password.component.scss
+++ b/src/app/client/src/app/modules/public/module/signup/components/signup-email-password/signup-email-password.component.scss
@@ -1,5 +1,4 @@
-@import "variables";
-@import 'mixins/mixins';
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 .signup-form {
     position: relative;
diff --git a/src/app/client/src/app/modules/public/module/signup/components/signup/signup.component.scss b/src/app/client/src/app/modules/public/module/signup/components/signup/signup.component.scss
index ed1dcd5aec76ec04aaaa4a33ada0890c4b500e93..ec12be391b9bbaa9e4f67ae444753babbad11508 100644
--- a/src/app/client/src/app/modules/public/module/signup/components/signup/signup.component.scss
+++ b/src/app/client/src/app/modules/public/module/signup/components/signup/signup.component.scss
@@ -1,5 +1,4 @@
-@import "variables";
-@import 'mixins/mixins';
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 /* Layout: */
 
diff --git a/src/app/client/src/app/modules/public/module/signup/components/signup/signup_form.component.scss b/src/app/client/src/app/modules/public/module/signup/components/signup/signup_form.component.scss
index 7401602a7fb8f8d2520aedb75a228c985e4f722c..aadc6d73ccb8734b0f0a4425bd8c22f0d94b382e 100644
--- a/src/app/client/src/app/modules/public/module/signup/components/signup/signup_form.component.scss
+++ b/src/app/client/src/app/modules/public/module/signup/components/signup/signup_form.component.scss
@@ -1,5 +1,4 @@
-@import "variables";
-@import 'mixins/mixins';
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 .signup-form-content,.logo-content{
     width: 100%;
diff --git a/src/app/client/src/app/modules/public/module/signup/services/signup/signup.service.spec.data.ts b/src/app/client/src/app/modules/public/module/signup/services/signup/signup.service.spec.data.ts
new file mode 100644
index 0000000000000000000000000000000000000000..3759209343d150972148bda2495472436a4e87e3
--- /dev/null
+++ b/src/app/client/src/app/modules/public/module/signup/services/signup/signup.service.spec.data.ts
@@ -0,0 +1,134 @@
+export const mockRes = {
+    generateOtpData: {
+        id: "api.otp.generate",
+        ver: "v1",
+        ts: "2020-01-08 07:49:17:041+0000",
+        params: {
+            resmsgid: null,
+            msgid: null,
+            err: null,
+            status: "success",
+            errmsg: null,
+        },
+        responseCode: "OK",
+        result: {
+            response: "SUCCESS",
+        },
+    },
+
+    tncData: {
+        id: "api.tnc",
+        ver: "v1",
+        ts: "2020-01-08 07:49:17:041+0000",
+        params: {
+            resmsgid: null,
+            msgid: null,
+            err: null,
+            status: "success",
+            errmsg: null,
+        },
+        responseCode: "OK",
+        result: {
+            response: "SUCCESS",
+        },
+    },
+
+    generateAnonymousOtpData: {
+        id: "api.anonymous.otp.generate",
+        ver: "v1",
+        ts: "2020-01-08 07:49:17:041+0000",
+        params: {
+            resmsgid: null,
+            msgid: null,
+            err: null,
+            status: "success",
+            errmsg: null,
+        },
+        responseCode: "OK",
+        result: {
+            response: "SUCCESS",
+        },
+    },
+
+    verifyOtpData: {
+        id: "api.otp.verify",
+        ver: "v1",
+        ts: "2022-11-10 06:23:35:600+0000",
+        params: {
+            resmsgid: "f629cd18-0488-b2e3-45e6-a452545026ca",
+            msgid: "f629cd18-0488-b2e3-45e6-a452545026ca",
+            err: null,
+            status: "SUCCESS",
+            errmsg: null,
+        },
+        responseCode: "OK",
+        result: { response: "SUCCESS" },
+    },
+    createUserData: {
+
+        id: "api.create.user",
+        ver: "v2",
+        ets: 0,
+        ts: "2022-11-10 07:06:43:959+0000",
+        params: {
+            resmsgid: "5cc3ff2a-8001-10d7-aa4f-7aef90a2ac39",
+            msgid: "5cc3ff2a-8001-10d7-aa4f-7aef90a2ac39",
+            err: null,
+            status: "SUCCESS",
+            errmsg: null,
+        },
+        result: {
+            status: "SUCCESS",
+        },
+        responseCode: "OK",
+    },
+
+    signupUserData: {
+        id: "api.user.signup",
+        ver: "v2",
+        ts: "2022-11-10 06:58:49:171+0000",
+        params: {
+            resmsgid: "5cc3ff2a-8001-10d7-aa4f-7aef90a2ac39",
+            msgid: "5cc3ff2a-8001-10d7-aa4f-7aef90a2ac39",
+            err: null,
+            status: "SUCCESS",
+            errmsg: null,
+        },
+        responseCode: "OK",
+        result: {
+            response: { isUserExists: true },
+            userId: "70801e74-6f2d-4bd0-8ee5-2ad3d268abac",
+        },
+    },
+
+    verifyUserData: {
+        id: "api.user.exists.email",
+        ver: "v1",
+        ts: "2022-11-10 07:06:43:959+0000",
+        params: {
+            resmsgid: "fc34da57-3201-f9bb-734e-a9aaa3635505",
+            msgid: "fc34da57-3201-f9bb-734e-a9aaa3635505",
+            err: null,
+            status: "SUCCESS",
+            errmsg: null,
+        },
+        responseCode: "OK",
+        result: { exists: true },
+    },
+
+    getUserData: {
+        id: "api.user.get",
+        ver: "v1",
+        ts: "2022-11-10 07:06:43:959+0000",
+        params: {
+            resmsgid: "fc34da57-3201-f9bb-734e-a9aaa3635505",
+            msgid: "fc34da57-3201-f9bb-734e-a9aaa3635505",
+            err: null,
+            status: "SUCCESS",
+            errmsg: null,
+        },
+        responseCode: "OK",
+        result: { exists: true },
+    }
+}
+
diff --git a/src/app/client/src/app/modules/public/module/signup/services/signup/signup.service.spec.ts b/src/app/client/src/app/modules/public/module/signup/services/signup/signup.service.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..dcec148016d4f63f78219e96fe340ca0ed5cc2f4
--- /dev/null
+++ b/src/app/client/src/app/modules/public/module/signup/services/signup/signup.service.spec.ts
@@ -0,0 +1,126 @@
+import { SignupService } from "./signup.service";
+import { LearnerService } from "@sunbird/core";
+import { HttpClient } from "@angular/common/http";
+import { of } from "rxjs";
+import { ConfigService } from "../../../../../../modules/shared";
+import * as mock from "./signup.service.spec.data";
+describe("SignupService", () => {
+    let component: SignupService;
+
+    const mockLearnerService: Partial<LearnerService> = {
+        post: jest.fn(),
+        get: jest.fn(),
+    };
+    const mockConfigService: Partial<ConfigService> = {
+        urlConFig: {
+            URLS: {
+                OTP: {
+                    GENERATE: "otp/v1/generate",
+                    VERIFY: "otp/v1/verify",
+                    ANONYMOUS: {
+                        GENERATE: "anonymous/otp/v1/generate",
+                    },
+                },
+                USER: {
+                    GET_USER_BY_KEY: "user/v1/get",
+                    CHECK_USER_EXISTS: "user/v1/exists",
+                    CREATE_V2: "user/v2/create",
+                    SIGN_UP_V1: "user/v2/signup",
+                    TNC_ACCEPT_LOGIN: "user/v2/accept/tnc",
+                },
+            },
+        },
+    };
+    const mockHttpClient: Partial<HttpClient> = {
+        post: jest.fn(),
+    };
+
+    beforeAll(() => {
+        component = new SignupService(
+            mockLearnerService as LearnerService,
+            mockConfigService as ConfigService,
+            mockHttpClient as HttpClient
+        );
+    });
+
+    beforeEach(() => {
+        jest.clearAllMocks();
+    });
+
+    it("should create", () => {
+        expect(component).toBeTruthy();
+    });
+    it("should call generate API ", () => {
+        const params = { request: { key: "1242142", type: "phone" } };
+        jest.spyOn(mockLearnerService, "post").mockReturnValue(of(mock.mockRes.generateOtpData));
+        const options = { url: "otp/v1/generate", data: params };
+        component.generateOTP(params);
+        expect(mockLearnerService.post).toHaveBeenCalledWith(options);
+    });
+
+    it("should call generate API for anonymous", () => {
+        const params = { request: { key: "1242142", type: "phone" } };
+        jest
+            .spyOn(mockLearnerService, "post")
+            .mockReturnValue(of(mock.mockRes.generateAnonymousOtpData));
+        const options = {
+            url: "anonymous/otp/v1/generate" + "?captchaResponse=" + "G-cjkdjflsfkja",
+            data: params,
+        };
+        component.generateOTPforAnonymousUser(params, "G-cjkdjflsfkja");
+        expect(mockLearnerService.post).toHaveBeenCalledWith(options);
+    });
+
+    it("should call verify otp API", () => {
+        const params = { request: { key: "1242142", type: "phone" } };
+        jest
+            .spyOn(mockLearnerService, "post")
+            .mockReturnValue(of(mock.mockRes.verifyOtpData));
+        const options = {
+            url: "otp/v1/verify",
+            data: params,
+        };
+        component.verifyOTP(params);
+        expect(mockLearnerService.post).toHaveBeenCalledWith(options);
+    });
+
+    it("should call get User By Key API", () => {
+        const params = { request: { key: "1242142", type: "phone" } };
+        jest.spyOn(mockLearnerService, "get").mockReturnValue(of(mock.mockRes.getUserData));
+        const options = { url: "user/v1/get" };
+        component.getUserByKey(params);
+        expect(mockLearnerService.get).toHaveBeenCalled();
+    });
+
+    it("should call check user exists API", () => {
+        const params = { request: { key: "1242142", type: "phone" } };
+        jest.spyOn(mockLearnerService, "get").mockReturnValue(of(mock.mockRes.verifyUserData));
+        const options = { url: "user/v1/exists" };
+        component.checkUserExists(params);
+        expect(mockLearnerService.get).toHaveBeenCalled();
+    });
+
+    it("should call create user API", () => {
+        const params = { request: { key: "1242142", type: "phone" } };
+        jest.spyOn(mockLearnerService, "post").mockReturnValue(of(mock.mockRes.createUserData));
+        const options = { url: "user/v2/create", data: params };
+        component.createUser(params);
+        expect(mockLearnerService.post).toHaveBeenCalledWith(options);
+    });
+
+    it("should call accepttermsandconditions API", () => {
+        const params = { request: { key: "1242142", type: "phone" } };
+        jest.spyOn(mockLearnerService, "post").mockReturnValue(of(mock.mockRes.tncData));
+        const options = { url: "user/v2/accept/tnc", data: params };
+        component.acceptTermsAndConditions(params);
+        expect(mockHttpClient.post).toHaveBeenCalled();
+    });
+
+    it("should call create user V3 API", () => {
+        const params = { request: { key: "1242142", type: "phone" } };
+        jest.spyOn(mockLearnerService, "post").mockReturnValue(of(mock.mockRes.signupUserData));
+        const options = { url: "user/v2/signup", data: params };
+        component.createUserV3(params);
+        expect(mockLearnerService.post).toHaveBeenCalledWith(options);
+    });
+});
diff --git a/src/app/client/src/app/modules/public/services/landingpage-guard/landingpage-guard.spec.ts b/src/app/client/src/app/modules/public/services/landingpage-guard/landingpage-guard.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..93162ccbeeb9404b042ced95cfa1d766bdf9ceb0
--- /dev/null
+++ b/src/app/client/src/app/modules/public/services/landingpage-guard/landingpage-guard.spec.ts
@@ -0,0 +1,70 @@
+import { LandingpageGuard } from './landingpage.guard';
+import { Router, RouterStateSnapshot } from '@angular/router';
+import { environment } from '@sunbird/environment';
+
+describe('LandingpageGuard', () => {
+    let landingpageGuard: LandingpageGuard;
+
+    const mockRouter: Partial<Router> = {
+        navigate: jest.fn(),
+        url: '/downloads'
+    }
+
+    beforeAll(() => {
+        landingpageGuard = new LandingpageGuard(
+            mockRouter as Router
+        );
+    });
+
+    it('should call landingpageGuard', () => {
+        const res = landingpageGuard.canActivate(null, null);
+        expect(landingpageGuard).toBeTruthy();
+        expect(res).toEqual(true);
+    })
+
+    it('should call landingpageGuard on passing snapshot route', () => {
+        environment.isDesktopApp = true
+        const snapshotroute = {
+            url: [
+                {
+                    path: 'test',
+                }
+            ],
+            data: {},
+            root: ''
+        };
+        const mock = <T, P extends keyof T>(obj: Pick<T, P>): T => obj as T;
+        const state = mock<RouterStateSnapshot, "url" | "root">({
+            url: '/workspace',
+            root: jest.fn() as any
+        });
+        const result = landingpageGuard.canActivate(snapshotroute as any, state);
+        expect(result).toBeFalsy();
+        expect(landingpageGuard).toBeTruthy();
+
+    })
+
+    it('should call landingpageGuard on passing snapshot route and tenant status', () => {
+        environment.isDesktopApp = false
+        let mockElement = (<HTMLInputElement>document.createElement('defaultTenantIndexStatus'));
+        mockElement.value = "true";
+        jest.spyOn(document, 'getElementById').mockReturnValue(mockElement);
+        const snapshotroute = {
+            url: [
+                {
+                    path: 'test',
+                }
+            ],
+            data: {},
+            root: ''
+        };
+        const mock = <T, P extends keyof T>(obj: Pick<T, P>): T => obj as T;
+        const state = mock<RouterStateSnapshot, "url" | "root">({
+            url: '/workspace',
+            root: jest.fn() as any
+        });
+        const result = landingpageGuard.canActivate(snapshotroute as any, state);
+        expect(result).toBeFalsy();
+        expect(landingpageGuard).toBeTruthy();
+    })
+});
\ No newline at end of file
diff --git a/src/app/client/src/app/modules/questionnaire/questionnaire.service.spec.ts b/src/app/client/src/app/modules/questionnaire/questionnaire.service.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..ffc64042a79239ef874f3cad4ad8807833675c00
--- /dev/null
+++ b/src/app/client/src/app/modules/questionnaire/questionnaire.service.spec.ts
@@ -0,0 +1,60 @@
+import { QuestionnaireService } from "./questionnaire.service";
+import { ConfigService, ToasterService } from "../shared";
+import { CloudService, KendraService } from "../core";
+import { SlUtilsService } from "@shikshalokam/sl-questionnaire";
+import { PayloadData } from './questionnaire.service.mock';
+
+describe("QuestionnaireService", () => {
+  let questionnaireService: QuestionnaireService;
+
+  const mockConfigService: Partial<ConfigService> = {
+    urlConFig: {
+      URLS: {
+        KENDRA: {
+          PRESIGNED_URLS: "cloud-services/mlcore/v1/files/preSignedUrls",
+        },
+      },
+    },
+  }
+  const mockKendraService: Partial<KendraService> = {
+    post: jest.fn()
+  }
+  const mockCloudService: Partial<CloudService> = {
+    put: jest.fn()
+  }
+  const mockSlUtilsService: Partial<SlUtilsService> = {}
+  const mockToasterService: Partial<ToasterService> = {
+    error: jest.fn()
+  }
+
+  beforeAll(() => {
+    questionnaireService = new QuestionnaireService(
+      mockConfigService as ConfigService,
+      mockKendraService as KendraService,
+      mockCloudService as CloudService,
+      mockSlUtilsService as SlUtilsService,
+      mockToasterService as ToasterService,
+    );
+  });
+
+  beforeEach(() => {
+    jest.clearAllMocks();
+    jest.resetAllMocks();
+  });
+
+  it("should be created", () => {
+    expect(QuestionnaireService).toBeTruthy();
+  });
+
+  it('Should fetch pre signed url', () => {
+    jest.spyOn(questionnaireService, 'getPreSingedUrls');
+    questionnaireService.getPreSingedUrls(PayloadData);
+    expect(questionnaireService.getPreSingedUrls).toHaveBeenCalled();
+  });
+
+  it('Should upload to cloud', () => {
+    jest.spyOn(questionnaireService, 'cloudStorageUpload');
+    questionnaireService.cloudStorageUpload(PayloadData);
+    expect(questionnaireService.cloudStorageUpload).toHaveBeenCalled();
+  });
+});
diff --git a/src/app/client/src/app/modules/questionnaire/questionnaire/questionnaire.component.scss b/src/app/client/src/app/modules/questionnaire/questionnaire/questionnaire.component.scss
index 58cc604f574dba15f8425ec823ba53e34faf1e8f..3358c02da931d4101bbfd23eadce2e9c38352a34 100644
--- a/src/app/client/src/app/modules/questionnaire/questionnaire/questionnaire.component.scss
+++ b/src/app/client/src/app/modules/questionnaire/questionnaire/questionnaire.component.scss
@@ -1,5 +1,4 @@
-@import "../../../../../node_modules/@project-sunbird/sb-styles/assets/mixins/mixins";
-@import "../../../../../node_modules/@project-sunbird/sb-styles/assets/mixins/custom-mixins";
+@use "./../../../../../node_modules/@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 .sections {
   width: 80%;
diff --git a/src/app/client/src/app/modules/recover-account/components/identify-account/identify-account.component.scss b/src/app/client/src/app/modules/recover-account/components/identify-account/identify-account.component.scss
index 552296835bd823685edfbe621644c2f7b67072a0..b5bf72f59a055acee4e951f0a8934b6fb4c2f9b2 100644
--- a/src/app/client/src/app/modules/recover-account/components/identify-account/identify-account.component.scss
+++ b/src/app/client/src/app/modules/recover-account/components/identify-account/identify-account.component.scss
@@ -1,3 +1,2 @@
-@import "variables";
-@import "mixins/mixins";
-@import 'components/recover-account';
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
+@use 'components/recover-account' as *;
diff --git a/src/app/client/src/app/modules/recover-account/components/recover-account/recover-account.component.scss b/src/app/client/src/app/modules/recover-account/components/recover-account/recover-account.component.scss
index b618c7aef2cae2a467e8cac9e441f3b7f5a2f7e8..c9e6f2c7a7fa3af678e70330c82f1a9cc405d296 100644
--- a/src/app/client/src/app/modules/recover-account/components/recover-account/recover-account.component.scss
+++ b/src/app/client/src/app/modules/recover-account/components/recover-account/recover-account.component.scss
@@ -1,4 +1,3 @@
-@import "variables";
-@import "mixins/mixins";
-@import '../../../../../assets/styles/components/recover-account';
-@import '../../../../../assets/styles/pages/sign_in_up';
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
+@use 'components/recover-account' as *;
+@use 'pages/sign_in_up' as *;
diff --git a/src/app/client/src/app/modules/recover-account/components/recover-account/recover-acount.component.spec.ts b/src/app/client/src/app/modules/recover-account/components/recover-account/recover-acount.component.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..04e102e30c40cea6cc4eeaf630cbae6058f5414f
--- /dev/null
+++ b/src/app/client/src/app/modules/recover-account/components/recover-account/recover-acount.component.spec.ts
@@ -0,0 +1,27 @@
+import { ResourceService } from "../../../shared";
+import { RecoverAccountService } from "../../services";
+import { RecoverAccountComponent } from "./recover-account.component";
+
+describe("RecoverAccountComponent", () => {
+    let recoverAccountComponent: RecoverAccountComponent;
+
+    const mockRecoverAccountService: Partial<RecoverAccountService> = {};
+    const mockResourceService: Partial<ResourceService> = {};
+
+    beforeAll(() => {
+        recoverAccountComponent = new RecoverAccountComponent(
+            mockRecoverAccountService as RecoverAccountService,
+            mockResourceService as ResourceService
+        )
+    });
+
+    beforeEach(() => {
+        jest.clearAllMocks();
+        jest.resetAllMocks();
+    });
+
+    it("should be created", () => {
+        expect(recoverAccountComponent).toBeTruthy();
+    });
+});
+
diff --git a/src/app/client/src/app/modules/recover-account/components/select-account-identifier/select-account-identifier.component.scss b/src/app/client/src/app/modules/recover-account/components/select-account-identifier/select-account-identifier.component.scss
index 17cbef0d2abaf6af21219e777aa648dc7bcdc778..aa004f499764b2daaae9d39b6e393f06c775874c 100644
--- a/src/app/client/src/app/modules/recover-account/components/select-account-identifier/select-account-identifier.component.scss
+++ b/src/app/client/src/app/modules/recover-account/components/select-account-identifier/select-account-identifier.component.scss
@@ -1,3 +1,2 @@
-@import "./variables";
-@import "./mixins/mixins";
-@import './components/recover-account';
\ No newline at end of file
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
+@use './components/recover-account' as *;
\ No newline at end of file
diff --git a/src/app/client/src/app/modules/recover-account/components/verify-account-identifier/verify-account-identifier.component.scss b/src/app/client/src/app/modules/recover-account/components/verify-account-identifier/verify-account-identifier.component.scss
index 17cbef0d2abaf6af21219e777aa648dc7bcdc778..6531c87a737c67153b58c0503932d425a328922b 100644
--- a/src/app/client/src/app/modules/recover-account/components/verify-account-identifier/verify-account-identifier.component.scss
+++ b/src/app/client/src/app/modules/recover-account/components/verify-account-identifier/verify-account-identifier.component.scss
@@ -1,3 +1,2 @@
-@import "./variables";
-@import "./mixins/mixins";
-@import './components/recover-account';
\ No newline at end of file
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
+@use 'components/recover-account' as *;
\ No newline at end of file
diff --git a/src/app/client/src/app/modules/recover-account/services/recover-account/recover-account.service.spec.ts b/src/app/client/src/app/modules/recover-account/services/recover-account/recover-account.service.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..865aca661fbb52528b9af9aceecd613cd7855442
--- /dev/null
+++ b/src/app/client/src/app/modules/recover-account/services/recover-account/recover-account.service.spec.ts
@@ -0,0 +1,118 @@
+import { RecoverAccountService } from './recover-account.service';
+import { TenantService } from '@sunbird/core';
+import { of } from 'rxjs';
+import { LearnerService } from '../../../core';
+import { ConfigService } from '../../../shared';
+
+describe('RecoverAccountService', () => {
+  let component: RecoverAccountService;
+
+  const mockLearnerService: Partial<LearnerService> = {
+    post: jest.fn()
+  };
+  const mockTenantService: Partial<TenantService> = {
+    tenantData$: of({ tenantData: { titleName: 'sample-favicon', logo: "logo-path" } }) as any
+  };
+  const mockConfigService: Partial<ConfigService> = {
+    urlConFig: {
+      URLS: {
+        ACCOUNT_RECOVERY: {
+          FUZZY_SEARCH: "user/v1/fuzzy/search",
+          RESET_PASSWORD: "user/v1/password/reset"
+        },
+        OTP: {
+          GENERATE: "otp/v1/generate",
+          VERIFY: "otp/v1/verify",
+          ANONYMOUS: {
+            GENERATE: "anonymous/otp/v1/generate",
+          },
+        },
+      }
+    }
+  };
+
+  beforeAll(() => {
+    component = new RecoverAccountService(
+      mockTenantService as TenantService,
+      mockLearnerService as LearnerService,
+      mockConfigService as ConfigService
+    );
+  });
+
+  beforeEach(() => {
+    jest.clearAllMocks();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+
+  it('should call resetPassword API',
+    () => {
+      const params = { 'request': { 'type': 'user', 'key': 'testKey', 'userId': 'testUserId' } };
+      jest.spyOn(mockLearnerService, 'post');
+
+      component.resetPassword(params);
+      const options = { url: 'user/v1/password/reset', data: params };
+      expect(mockLearnerService.post).toHaveBeenCalledWith(options);
+    });
+
+  it('should call generateOTP API', () => {
+    const params = { 'request': { 'type': 'user', 'key': 'testKey', 'userId': 'testUserId' } };
+    jest.spyOn(mockLearnerService, 'post');
+    component.generateOTP(params);
+    const options = { url: 'anonymous/otp/v1/generate?captchaResponse=undefined', data: params };
+    expect(mockLearnerService.post).toHaveBeenCalledWith(options);
+  });
+
+  it('should call verifyOTP API', () => {
+    const params = { 'request': { 'type': 'user', 'key': 'testKey', 'userId': 'testUserId' } };
+    jest.spyOn(mockLearnerService, 'post');
+    component.verifyOTP(params);
+    const options = { url: 'otp/v1/verify', data: params };
+    expect(mockLearnerService.post).toHaveBeenCalledWith(options);
+  });
+
+  it('should call fuzzyUserSearch API for email', () => {
+    const params = {
+      'request': {
+        'filters': {
+          'isDeleted': 'false',
+          'fuzzy': {
+            'firstName': undefined
+          },
+          $or: {
+            'email': undefined,
+            'prevUsedEmail': undefined
+          }
+        }
+      }
+    };
+    jest.spyOn(mockLearnerService, 'post');
+    component.fuzzyUserSearch(params);
+    const options = { url: 'user/v1/fuzzy/search?captchaResponse=undefined', data: params };
+    expect(mockLearnerService.post).toHaveBeenCalledWith(options);
+  });
+
+  it('should call fuzzyUserSearch API for phone', () => {
+    const params = {
+      'identifier': 9000000000,
+      'request': {
+        'filters': {
+          'isDeleted': 'false',
+          'fuzzy': {
+            'firstName': undefined
+          },
+          $or: {
+            'phone': 9000000000,
+            'prevUsedPhone': 9000000000
+          }
+        }
+      }
+    };
+    jest.spyOn(mockLearnerService, 'post');
+    component.fuzzyUserSearch(params);
+    const options = { url: 'user/v1/fuzzy/search?captchaResponse=undefined', data: params };
+    expect(mockLearnerService.post).toHaveBeenCalled();
+  });
+});
diff --git a/src/app/client/src/app/modules/report/components/all-evidence/all-evidence.component.scss b/src/app/client/src/app/modules/report/components/all-evidence/all-evidence.component.scss
index e2aa5c48a45e3b1442bf3901f3b6c3c7a05f631b..7ac27e81a55e55a152cfe8c125226e18a28ced15 100644
--- a/src/app/client/src/app/modules/report/components/all-evidence/all-evidence.component.scss
+++ b/src/app/client/src/app/modules/report/components/all-evidence/all-evidence.component.scss
@@ -1,5 +1,4 @@
-@import "mixins/mixins";
-@import 'variables';
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 .thumbnail-card {
   height: 98px;
diff --git a/src/app/client/src/app/modules/report/components/entity-list/entity-list.component.scss b/src/app/client/src/app/modules/report/components/entity-list/entity-list.component.scss
index 924027cc74bf0850828821b4176a8cc51023e019..2a4f06b22d3b8f8ccad9cfbf5eac24499fdba53e 100644
--- a/src/app/client/src/app/modules/report/components/entity-list/entity-list.component.scss
+++ b/src/app/client/src/app/modules/report/components/entity-list/entity-list.component.scss
@@ -1,5 +1,4 @@
-@import "variables";
-@import "mixins/mixins";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 .add-entity-modal{
   // .sb-modal-content {
diff --git a/src/app/client/src/app/modules/report/components/report-view/report-view.component.scss b/src/app/client/src/app/modules/report/components/report-view/report-view.component.scss
index 2d0b01b64232f7a74e88501f09900d8d743e9a1a..3cab37fb32624b722c6f191816571d767d44d2e2 100644
--- a/src/app/client/src/app/modules/report/components/report-view/report-view.component.scss
+++ b/src/app/client/src/app/modules/report/components/report-view/report-view.component.scss
@@ -1,5 +1,4 @@
-@import "variables";
-@import "mixins/mixins";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 .sb-graph-section {
   position: relative;
diff --git a/src/app/client/src/app/modules/report/components/solution-listing/solution-listing.component.scss b/src/app/client/src/app/modules/report/components/solution-listing/solution-listing.component.scss
index a7e8d209fdc7e674023d319f9562d7c4bcfb8d86..3c68877943447caf2d45bd89eac1195742033f3a 100644
--- a/src/app/client/src/app/modules/report/components/solution-listing/solution-listing.component.scss
+++ b/src/app/client/src/app/modules/report/components/solution-listing/solution-listing.component.scss
@@ -1,5 +1,4 @@
-@import "variables";
-@import "mixins/mixins";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 .main-container {
   padding:0 1%;
diff --git a/src/app/client/src/app/modules/resource/components/curriculum-courses/curriculum-courses.component.scss b/src/app/client/src/app/modules/resource/components/curriculum-courses/curriculum-courses.component.scss
index f97365ae53cde1e1a7851f46df51bf52a51fc9ed..43fae40531b611c3760d36ed3ec578ab3c75e2ec 100644
--- a/src/app/client/src/app/modules/resource/components/curriculum-courses/curriculum-courses.component.scss
+++ b/src/app/client/src/app/modules/resource/components/curriculum-courses/curriculum-courses.component.scss
@@ -1,5 +1,4 @@
-@import 'variables';
-@import 'mixins/mixins';
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 .content-header {
     &__img {
diff --git a/src/app/client/src/app/modules/resource/modules/player/player.module.ts b/src/app/client/src/app/modules/resource/modules/player/player.module.ts
index 16517c535cd05e33ef47e2ae59816dcc92aa2772..19e1d86d3127663130788e338832ac13770f29b2 100644
--- a/src/app/client/src/app/modules/resource/modules/player/player.module.ts
+++ b/src/app/client/src/app/modules/resource/modules/player/player.module.ts
@@ -8,7 +8,7 @@ import { CoreModule } from '@sunbird/core';
 import { PlayerHelperModule } from '@sunbird/player-helper';
 import { SuiModule } from 'ng2-semantic-ui-v9';
 import { FormsModule } from '@angular/forms';
-import { CommonConsumptionModule} from '@project-sunbird/common-consumption-v9';
+import { CommonConsumptionModule} from '@project-sunbird/common-consumption';
 import { SharedFeatureModule } from '@sunbird/shared-feature';
 import { PendingchangesGuard } from '@sunbird/public';
 
diff --git a/src/app/client/src/app/modules/resource/resource.module.ts b/src/app/client/src/app/modules/resource/resource.module.ts
index 4fcae721799ea8020a0ac39eec3a50add8e3f7ab..015a73a82652889ae6942c1151ec34ac4ddb5b47 100644
--- a/src/app/client/src/app/modules/resource/resource.module.ts
+++ b/src/app/client/src/app/modules/resource/resource.module.ts
@@ -10,7 +10,7 @@ import { CoreModule } from '@sunbird/core';
 import { NgInviewModule } from 'angular-inport';
 import { TelemetryModule } from '@sunbird/telemetry';
 import { SharedFeatureModule } from '@sunbird/shared-feature';
-import { CommonConsumptionModule } from '@project-sunbird/common-consumption-v9';
+import { CommonConsumptionModule } from '@project-sunbird/common-consumption';
 import { ContentSearchModule } from '@sunbird/content-search';
 @NgModule({
   imports: [
diff --git a/src/app/client/src/app/modules/search/components/user-edit/user-edit-component.scss b/src/app/client/src/app/modules/search/components/user-edit/user-edit-component.scss
index a598b7b0b24b1df599358e40c414b75b6f651487..27cdf7fb4cbc8e64bda72d1814dd73801685ff5c 100644
--- a/src/app/client/src/app/modules/search/components/user-edit/user-edit-component.scss
+++ b/src/app/client/src/app/modules/search/components/user-edit/user-edit-component.scss
@@ -1,4 +1,4 @@
-@import "mixins/mixins";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 .save-btn {
     margin: calculateRem(40px) 0 0;
diff --git a/src/app/client/src/app/modules/search/search.module.ts b/src/app/client/src/app/modules/search/search.module.ts
index f7a859bc88580c73e4abc79a8efa764355b00697..4ba57d6719d70b6a24eaf3b0269bf62a9659649b 100644
--- a/src/app/client/src/app/modules/search/search.module.ts
+++ b/src/app/client/src/app/modules/search/search.module.ts
@@ -14,7 +14,7 @@ import { NgInviewModule } from 'angular-inport';
 import { AvatarModule } from 'ngx-avatar';
 import {SharedFeatureModule} from '@sunbird/shared-feature';
 // import { Angular2CsvModule } from 'angular2-csv'; Angular2CsvModule removed TODO: use Blob object to generate csv file
-import { CommonConsumptionModule } from '@project-sunbird/common-consumption-v9';
+import { CommonConsumptionModule } from '@project-sunbird/common-consumption';
 import { ContentSearchModule } from '@sunbird/content-search';
 import { TranslateModule } from '@ngx-translate/core';
 
diff --git a/src/app/client/src/app/modules/shared-feature/components/batch-info/batch-info.component.scss b/src/app/client/src/app/modules/shared-feature/components/batch-info/batch-info.component.scss
index 6526417f3162da4dce2068c3b329dab421e66828..7f45c2a609a873458ef10db5cb7d698bf8e48518 100644
--- a/src/app/client/src/app/modules/shared-feature/components/batch-info/batch-info.component.scss
+++ b/src/app/client/src/app/modules/shared-feature/components/batch-info/batch-info.component.scss
@@ -1,5 +1,4 @@
-@import 'variables';
-@import 'mixins/mixins';
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 .batch-row {
   max-height: calculateRem(200px);
diff --git a/src/app/client/src/app/modules/shared-feature/components/collection-player/collection-player.component.scss b/src/app/client/src/app/modules/shared-feature/components/collection-player/collection-player.component.scss
index bd921624c6ecc0239d087bc17dbf42c33fd7d22f..b9e3596d2e1484ebad66184c72b17c69f9d4ce80 100644
--- a/src/app/client/src/app/modules/shared-feature/components/collection-player/collection-player.component.scss
+++ b/src/app/client/src/app/modules/shared-feature/components/collection-player/collection-player.component.scss
@@ -1,5 +1,4 @@
-@import "variables";
-@import "mixins/mixins";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 .content-header {
   // background: var(--rc-FAFAFA);
   min-height: calculateRem(14px);
diff --git a/src/app/client/src/app/modules/shared-feature/components/collection-player/collection-player.component.ts b/src/app/client/src/app/modules/shared-feature/components/collection-player/collection-player.component.ts
index 5286f40d4d0771631aec916283cd473f060e7778..847f35c57c70c4f262e3bdaa6ba8d72671392336 100644
--- a/src/app/client/src/app/modules/shared-feature/components/collection-player/collection-player.component.ts
+++ b/src/app/client/src/app/modules/shared-feature/components/collection-player/collection-player.component.ts
@@ -15,7 +15,7 @@ import * as TreeModel from 'tree-model';
 import { DeviceDetectorService } from 'ngx-device-detector';
 import { PopupControlService } from '../../../../service/popup-control.service';
 import { PublicPlayerService } from '@sunbird/public';
-import { TocCardType, PlatformType } from '@project-sunbird/common-consumption-v9';
+import { TocCardType, PlatformType } from '@project-sunbird/common-consumption';
 import { CsGroupAddableBloc } from '@project-sunbird/client-services/blocs';
 import { ContentManagerService } from '../../../public/module/offline/services';
 
diff --git a/src/app/client/src/app/modules/shared-feature/components/content-player/content-player.component.scss b/src/app/client/src/app/modules/shared-feature/components/content-player/content-player.component.scss
index 65493d52a2a47fa7f365b985e4cccb7b10be0318..ffa44ad01f9aaf0dd416399cfbb43a9d06a73878 100644
--- a/src/app/client/src/app/modules/shared-feature/components/content-player/content-player.component.scss
+++ b/src/app/client/src/app/modules/shared-feature/components/content-player/content-player.component.scss
@@ -1,5 +1,4 @@
-@import "variables";
-@import "mixins/mixins";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 .sb-single-resource {
 	width: 100%;
diff --git a/src/app/client/src/app/modules/shared-feature/components/dashboard/dashboard.component.scss b/src/app/client/src/app/modules/shared-feature/components/dashboard/dashboard.component.scss
index d00a9d446844e74a247962c706fba957dd11ca99..6a6509df46e8ccc67d6750f5bb7efc53503f75d5 100644
--- a/src/app/client/src/app/modules/shared-feature/components/dashboard/dashboard.component.scss
+++ b/src/app/client/src/app/modules/shared-feature/components/dashboard/dashboard.component.scss
@@ -1,4 +1,4 @@
-@import 'mixins/mixins';
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 .group-name {
     font-family: Noto Sans Regular;
diff --git a/src/app/client/src/app/modules/shared-feature/components/global-consent-pii/global-consent-pii.component.scss b/src/app/client/src/app/modules/shared-feature/components/global-consent-pii/global-consent-pii.component.scss
index 762708c6705fc20e8cf820371c18784a9eef2dd9..eed659bbf6980d2326e1c2086539c61509252abf 100644
--- a/src/app/client/src/app/modules/shared-feature/components/global-consent-pii/global-consent-pii.component.scss
+++ b/src/app/client/src/app/modules/shared-feature/components/global-consent-pii/global-consent-pii.component.scss
@@ -1,4 +1,4 @@
-@import "mixins/mixins";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 .sb-modal-profile-details {
     input[type="checkbox"] {
diff --git a/src/app/client/src/app/modules/shared-feature/components/onboarding-user-selection/onboarding-user-selection.component.scss b/src/app/client/src/app/modules/shared-feature/components/onboarding-user-selection/onboarding-user-selection.component.scss
index 808503fc6992fb4a4277e15fe06faf33bb2034a9..84ac849b766a913e8be401e30cea2e5818bc4192 100644
--- a/src/app/client/src/app/modules/shared-feature/components/onboarding-user-selection/onboarding-user-selection.component.scss
+++ b/src/app/client/src/app/modules/shared-feature/components/onboarding-user-selection/onboarding-user-selection.component.scss
@@ -1,2 +1 @@
-@import './../user-onboarding/user-onboarding.component.scss';
-@import "pages/mat-modal";
\ No newline at end of file
+@use './../user-onboarding/user-onboarding.component.scss' as *;
diff --git a/src/app/client/src/app/modules/shared-feature/components/otp-popup/otp-popup.component.scss b/src/app/client/src/app/modules/shared-feature/components/otp-popup/otp-popup.component.scss
index 3d1ba2a6daa9c2eb0650722dbc1a3a194e7e6972..3b666a368005355b4e4dbcf0e9879d9cd1728cfc 100644
--- a/src/app/client/src/app/modules/shared-feature/components/otp-popup/otp-popup.component.scss
+++ b/src/app/client/src/app/modules/shared-feature/components/otp-popup/otp-popup.component.scss
@@ -1,6 +1,5 @@
-@import "variables";
-@import 'mixins/mixins';
-@import 'pages/sign_in_up';
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
+@use 'pages/sign_in_up' as *;
 
 .orange-border {
     border-color: #A30010 !important;
diff --git a/src/app/client/src/app/modules/shared-feature/components/profile-framework-popup/profile-framework-popup.component.scss b/src/app/client/src/app/modules/shared-feature/components/profile-framework-popup/profile-framework-popup.component.scss
index 47e27055a7c8ab3fc1e235d71e02d91f771c3db2..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644
--- a/src/app/client/src/app/modules/shared-feature/components/profile-framework-popup/profile-framework-popup.component.scss
+++ b/src/app/client/src/app/modules/shared-feature/components/profile-framework-popup/profile-framework-popup.component.scss
@@ -1 +0,0 @@
-@import "pages/mat-modal";
\ No newline at end of file
diff --git a/src/app/client/src/app/modules/shared-feature/components/sso-merge-confirmation/sso-merge-confirmation.component.scss b/src/app/client/src/app/modules/shared-feature/components/sso-merge-confirmation/sso-merge-confirmation.component.scss
index 1963b360ec901ff58c42d438b5e5286a233350dc..6dc71e4e9b5ee4d962c9870b713e01c12ed916f5 100644
--- a/src/app/client/src/app/modules/shared-feature/components/sso-merge-confirmation/sso-merge-confirmation.component.scss
+++ b/src/app/client/src/app/modules/shared-feature/components/sso-merge-confirmation/sso-merge-confirmation.component.scss
@@ -1,5 +1,5 @@
-@import "mixins/mixins";
-@import "pages/sign_in_up";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
+@use "pages/sign_in_up" as *;
 .sb-list-items{
    text-align: left;
     list-style-type: initial;
diff --git a/src/app/client/src/app/modules/shared-feature/components/tnc-popup/terms-conditions-popup.component.scss b/src/app/client/src/app/modules/shared-feature/components/tnc-popup/terms-conditions-popup.component.scss
index 9ef41bae01e92793c97ee147349cc5e85281760d..cbbe40bf787f40fc6a4ff1c67a92bfea54df58a3 100644
--- a/src/app/client/src/app/modules/shared-feature/components/tnc-popup/terms-conditions-popup.component.scss
+++ b/src/app/client/src/app/modules/shared-feature/components/tnc-popup/terms-conditions-popup.component.scss
@@ -1,5 +1,5 @@
 
-@import "mixins/mixins";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 .terms-and-cond-form{
   height: calc(100vh - 350px);
diff --git a/src/app/client/src/app/modules/shared-feature/components/user-onboarding/user-onboarding.component.scss b/src/app/client/src/app/modules/shared-feature/components/user-onboarding/user-onboarding.component.scss
index ef24a1c1ff358a2bb70261900852b125cf540940..d08c43d6614dc5adc3eaf2f02a5d5187c74af7d2 100644
--- a/src/app/client/src/app/modules/shared-feature/components/user-onboarding/user-onboarding.component.scss
+++ b/src/app/client/src/app/modules/shared-feature/components/user-onboarding/user-onboarding.component.scss
@@ -1,5 +1,4 @@
-@import "variables";
-@import "mixins/mixins";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 .sb-onboard {
 
diff --git a/src/app/client/src/app/modules/shared-feature/shared-feature.module.ts b/src/app/client/src/app/modules/shared-feature/shared-feature.module.ts
index 909f676648e0fd256ba599c9364fbafad73d668e..3f9666fd8a845da789490bd2287528893915d073 100644
--- a/src/app/client/src/app/modules/shared-feature/shared-feature.module.ts
+++ b/src/app/client/src/app/modules/shared-feature/shared-feature.module.ts
@@ -18,8 +18,8 @@ import { GlobalConsentPiiComponent } from './components/global-consent-pii/globa
 import { CsModule } from '@project-sunbird/client-services';
 import { CsLibInitializerService } from '../../service/CsLibInitializer/cs-lib-initializer.service';
 import { PlayerHelperModule } from '@sunbird/player-helper';
-import { CommonConsumptionModule } from '@project-sunbird/common-consumption-v9';
-import { CommonFormElementsModule } from '@project-sunbird/common-form-elements-v9';
+import { CommonConsumptionModule } from '@project-sunbird/common-consumption';
+import { CommonFormElementsModule } from '@project-sunbird/common-form-elements';
 import { LocationModule } from '../../plugins/location';
 import { DashboardComponent } from './components/dashboard/dashboard.component';
 import { DashletModule } from  '@project-sunbird/sb-dashlet-v9';
diff --git a/src/app/client/src/app/modules/shared/components/alert-modal/alert-modal.component.scss b/src/app/client/src/app/modules/shared/components/alert-modal/alert-modal.component.scss
index c91e9e6e201787337b9a1bc661ccf0173974a39e..a1271cd178c90e57247cc0c1d3fd5376d279bca5 100644
--- a/src/app/client/src/app/modules/shared/components/alert-modal/alert-modal.component.scss
+++ b/src/app/client/src/app/modules/shared/components/alert-modal/alert-modal.component.scss
@@ -1,5 +1,4 @@
-@import "variables";
-@import "mixins/mixins";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 .popup {
   border-radius: none !important;
diff --git a/src/app/client/src/app/modules/shared/components/batch-card/batch-card.component.scss b/src/app/client/src/app/modules/shared/components/batch-card/batch-card.component.scss
index 52ebff45875c23b9f30ecb127c2adaa7c4fa5918..5930b42709034763583e5e980057188853f57dbf 100644
--- a/src/app/client/src/app/modules/shared/components/batch-card/batch-card.component.scss
+++ b/src/app/client/src/app/modules/shared/components/batch-card/batch-card.component.scss
@@ -1,5 +1,4 @@
-
-@import "mixins/mixins";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 .ui.image {
     height: calculateRem(150px);
diff --git a/src/app/client/src/app/modules/shared/components/browser-compatibility/browser-compatibility.component.scss b/src/app/client/src/app/modules/shared/components/browser-compatibility/browser-compatibility.component.scss
index 00f7e7f7eacf89ce2b702e0c9556c139d3654af9..ceb04ff13931dbc06e69b7270b2ae94ead5522b4 100644
--- a/src/app/client/src/app/modules/shared/components/browser-compatibility/browser-compatibility.component.scss
+++ b/src/app/client/src/app/modules/shared/components/browser-compatibility/browser-compatibility.component.scss
@@ -1,4 +1,3 @@
-@import "variables";
 
 .ui.segment {
     position: fixed;
diff --git a/src/app/client/src/app/modules/shared/components/card-creation/card-creation.component.scss b/src/app/client/src/app/modules/shared/components/card-creation/card-creation.component.scss
index 31175cf186fb33b5a3e7f2ffda0fab3716ac7682..cd78a92eee3ad7d3271ce79fe36080a6732fa6bc 100644
--- a/src/app/client/src/app/modules/shared/components/card-creation/card-creation.component.scss
+++ b/src/app/client/src/app/modules/shared/components/card-creation/card-creation.component.scss
@@ -1,4 +1,4 @@
-@import "mixins/mixins";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 .ui.image {
   height: calculateRem(150px);
diff --git a/src/app/client/src/app/modules/shared/components/desktop-app-update/desktop-app-update.component.scss b/src/app/client/src/app/modules/shared/components/desktop-app-update/desktop-app-update.component.scss
index 2ff59fb9176e0ee445b51e7d1589702672d7bd0f..9d45fc1e93e320acf01398fa1a1f63122c0f5cca 100644
--- a/src/app/client/src/app/modules/shared/components/desktop-app-update/desktop-app-update.component.scss
+++ b/src/app/client/src/app/modules/shared/components/desktop-app-update/desktop-app-update.component.scss
@@ -1,5 +1,4 @@
-@import "variables";
-@import "mixins/mixins";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 .sb-offline-updates {
   background: var(--white);
diff --git a/src/app/client/src/app/modules/shared/components/full-page-modal/full-page-modal.component.scss b/src/app/client/src/app/modules/shared/components/full-page-modal/full-page-modal.component.scss
index b072c4aa74970702bb595a38e4c43124a00b334e..4bb2b27b94a1bb8ce3710235b838191c9e238083 100644
--- a/src/app/client/src/app/modules/shared/components/full-page-modal/full-page-modal.component.scss
+++ b/src/app/client/src/app/modules/shared/components/full-page-modal/full-page-modal.component.scss
@@ -1,6 +1,5 @@
-@import "variables";
-@import "mixins/mixins";
-@import 'pages/sign_in_up';
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
+@use 'pages/sign_in_up' as *;
 
 .ui.raised.shadow.container.segment {
   margin: calculateRem(24px) auto !important;
diff --git a/src/app/client/src/app/modules/shared/components/install-app/install-app.component.scss b/src/app/client/src/app/modules/shared/components/install-app/install-app.component.scss
index 11a8fec1b143c585a3ad7f49d625daa1d848aecb..6aba0cd429f9d5a3bbcc8763031c5ca82455fe9d 100644
--- a/src/app/client/src/app/modules/shared/components/install-app/install-app.component.scss
+++ b/src/app/client/src/app/modules/shared/components/install-app/install-app.component.scss
@@ -1,5 +1,4 @@
-@import "variables";
-@import "mixins/mixins";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 .appPopup-header {
   font-weight: 500 !important;
diff --git a/src/app/client/src/app/modules/shared/components/load-offline-content/load-offline-content.component.scss b/src/app/client/src/app/modules/shared/components/load-offline-content/load-offline-content.component.scss
index 208291f19f01778246674d20a4b4f3d05fde6ca5..bc26275b9ebefa59b89f34fd4ebc9a807a8392c3 100644
--- a/src/app/client/src/app/modules/shared/components/load-offline-content/load-offline-content.component.scss
+++ b/src/app/client/src/app/modules/shared/components/load-offline-content/load-offline-content.component.scss
@@ -1,5 +1,4 @@
-@import "variables";
-@import "mixins/mixins";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 .load-content-section{
     border-radius: calculateRem(24px);
     background-color: var(--sbt-filter-bar-bg);
diff --git a/src/app/client/src/app/modules/shared/components/material-auto-complete/material-auto-complete.component.scss b/src/app/client/src/app/modules/shared/components/material-auto-complete/material-auto-complete.component.scss
index 0b19878863fb329293f17cf441c2c4f80d2a2c0e..b3512f0db0e6204c5b636a577d575b8138d1a80a 100644
--- a/src/app/client/src/app/modules/shared/components/material-auto-complete/material-auto-complete.component.scss
+++ b/src/app/client/src/app/modules/shared/components/material-auto-complete/material-auto-complete.component.scss
@@ -1,4 +1,4 @@
-@import 'mixins/mixins';
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 .sb-autocomp-dropdown {
   position: relative;
@@ -84,7 +84,7 @@
   html[layout="joy"] .sb-autocomp-dropdown .mat-form-field, .sb-autocomp-dropdown__list {
     border-radius: calculateRem(24px);
   }
-  html[data-theme="Darkmode"] .sb-mat__checkbox.sb-mat__checkbox--primary .mat-checkbox-frame {
+  html[data-mode="darkmode"] .sb-mat__checkbox.sb-mat__checkbox--primary .mat-checkbox-frame {
     border-color: #ccc;
   }
   .sb-autocomp-dropdown__list {
diff --git a/src/app/client/src/app/modules/shared/components/network-status/network-status.component.scss b/src/app/client/src/app/modules/shared/components/network-status/network-status.component.scss
index b5579575a88fda765181316b05104e3bd8e478f7..06577d5a22d7a3afccb3472377d77cad87db61ad 100644
--- a/src/app/client/src/app/modules/shared/components/network-status/network-status.component.scss
+++ b/src/app/client/src/app/modules/shared/components/network-status/network-status.component.scss
@@ -1,5 +1,4 @@
-@import "variables";
-@import "mixins/mixins";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 .status-container{
     border-radius: calculateRem(24px);
     background-color: var(--sbt-filter-bar-bg);
diff --git a/src/app/client/src/app/modules/shared/components/offline-application-download/offline-application-download.component.scss b/src/app/client/src/app/modules/shared/components/offline-application-download/offline-application-download.component.scss
index fedb23d3ef226bcf38c092112799259160c7479c..57b4c82ae64c3dd2f1c56ec5d6c8e9589ef990b7 100644
--- a/src/app/client/src/app/modules/shared/components/offline-application-download/offline-application-download.component.scss
+++ b/src/app/client/src/app/modules/shared/components/offline-application-download/offline-application-download.component.scss
@@ -1,5 +1,4 @@
-@import "variables";
-@import "mixins/mixins";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 .offline-page-content {
     height: 100%;
diff --git a/src/app/client/src/app/modules/shared/components/on-demand-reports/on-demand-reports.component.scss b/src/app/client/src/app/modules/shared/components/on-demand-reports/on-demand-reports.component.scss
index 229d946d5f1ef20bb1c8c444149797a1d0603c76..2cb1b53029a67e4f01a9bec6627ee14a9d56d074 100644
--- a/src/app/client/src/app/modules/shared/components/on-demand-reports/on-demand-reports.component.scss
+++ b/src/app/client/src/app/modules/shared/components/on-demand-reports/on-demand-reports.component.scss
@@ -1,4 +1,4 @@
-@import "mixins/mixins";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 .information-icon{
     position: relative;
diff --git a/src/app/client/src/app/modules/shared/components/sb-datatable/sb-datatable.component.scss b/src/app/client/src/app/modules/shared/components/sb-datatable/sb-datatable.component.scss
index 4dad80a6b17b9b4a0d0e96d8f6adc7229ca63ac2..c2c3c72490ff2438b200c130b1efd99020899eaa 100644
--- a/src/app/client/src/app/modules/shared/components/sb-datatable/sb-datatable.component.scss
+++ b/src/app/client/src/app/modules/shared/components/sb-datatable/sb-datatable.component.scss
@@ -1,4 +1,4 @@
-@import "mixins/mixins";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
     .datatable-content{
       .note-text {
diff --git a/src/app/client/src/app/modules/shared/components/select-option-group/select-option-group.component.scss b/src/app/client/src/app/modules/shared/components/select-option-group/select-option-group.component.scss
index e98ac8c07adc799531e241244c3f315be8d580ef..2c5c271e67320e2c085a04a4385620d861db3d11 100644
--- a/src/app/client/src/app/modules/shared/components/select-option-group/select-option-group.component.scss
+++ b/src/app/client/src/app/modules/shared/components/select-option-group/select-option-group.component.scss
@@ -1,4 +1,4 @@
-@import './mixins/mixins';
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 .state-selection {
   &__section {
diff --git a/src/app/client/src/app/modules/shared/components/share-link/share-link.component.scss b/src/app/client/src/app/modules/shared/components/share-link/share-link.component.scss
index db87c27c08475ba49e43b7385f2ee4d3d98bb746..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644
--- a/src/app/client/src/app/modules/shared/components/share-link/share-link.component.scss
+++ b/src/app/client/src/app/modules/shared/components/share-link/share-link.component.scss
@@ -1 +0,0 @@
-@import 'pages/mat-modal';
\ No newline at end of file
diff --git a/src/app/client/src/app/modules/shared/components/system-warning/system-warning.component.scss b/src/app/client/src/app/modules/shared/components/system-warning/system-warning.component.scss
index ff004c52666f5d6f8a2d5539d32e841564f77882..11a375e5d8d0e1f6cea36f6d7990926c4ec9193c 100644
--- a/src/app/client/src/app/modules/shared/components/system-warning/system-warning.component.scss
+++ b/src/app/client/src/app/modules/shared/components/system-warning/system-warning.component.scss
@@ -1,5 +1,4 @@
-@import "variables";
-@import "mixins/mixins";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 .system-warning-section {
   border-radius: calculateRem(24px);
diff --git a/src/app/client/src/app/modules/shared/services/activity-dashboard/activity-dashboard.service.spec.ts b/src/app/client/src/app/modules/shared/services/activity-dashboard/activity-dashboard.service.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..8f72b151a746968d6341018c546cb3862a8c16c7
--- /dev/null
+++ b/src/app/client/src/app/modules/shared/services/activity-dashboard/activity-dashboard.service.spec.ts
@@ -0,0 +1,26 @@
+import { TestBed } from '@angular/core/testing';
+import { truncate } from 'fs';
+
+import { ActivityDashboardService } from './activity-dashboard.service';
+
+describe('ActivityDashboardService', () => {
+    let service: ActivityDashboardService;
+
+    beforeEach(() => {
+        service = new ActivityDashboardService();
+    });
+
+    it('should be created', () => {
+        expect(service).toBeTruthy();
+    });
+
+    it('should set isActivityAdded', () => {
+        service.isActivityAdded = true;
+        expect(service['_isActivityAdded']).toEqual(true);
+    });
+
+    it('should get isActivityAdded', () => {
+        service._isActivityAdded = true;
+        expect(service['isActivityAdded']).toEqual(true);
+    });
+});
\ No newline at end of file
diff --git a/src/app/client/src/app/modules/shared/services/config/config.service.spec.ts b/src/app/client/src/app/modules/shared/services/config/config.service.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..06afa1d0ec12d694feb71edbafbbbf399368be9b
--- /dev/null
+++ b/src/app/client/src/app/modules/shared/services/config/config.service.spec.ts
@@ -0,0 +1,14 @@
+import { ConfigService } from './config.service';
+
+describe('ConfigService', () => {
+    let configService: ConfigService;
+
+    beforeEach(() => {
+        configService = new ConfigService();
+    });
+
+    it('should be created', () => {
+        expect(configService).toBeTruthy();
+    });
+});
+
diff --git a/src/app/client/src/app/modules/shared/services/layoutconfig/layout.service.ts b/src/app/client/src/app/modules/shared/services/layoutconfig/layout.service.ts
index dfbf26f1c956000dae0d334a027a4b3477f60016..eed84e8681b22e660bcc6767fc7a0ca69b955acd 100644
--- a/src/app/client/src/app/modules/shared/services/layoutconfig/layout.service.ts
+++ b/src/app/client/src/app/modules/shared/services/layoutconfig/layout.service.ts
@@ -87,7 +87,7 @@ export class LayoutService {
   initiateSwitchLayout() {
     if (this.layoutConfig) {
       this.layoutConfig = null;
-      document.documentElement.setAttribute('layout', '');
+      document.documentElement.setAttribute('layout', 'base');
       this.acessibleLayoutEnabled = false;
       localStorage.setItem('layoutType', 'default');
 
diff --git a/src/app/client/src/app/modules/shared/services/window-scroll/window-scroll.service.ts b/src/app/client/src/app/modules/shared/services/window-scroll/window-scroll.service.ts
index 83bac937a4545314fece0b8dff4f10314dc7b83c..076a00afc24c746aba706432e64c19a6010caaa2 100644
--- a/src/app/client/src/app/modules/shared/services/window-scroll/window-scroll.service.ts
+++ b/src/app/client/src/app/modules/shared/services/window-scroll/window-scroll.service.ts
@@ -23,12 +23,14 @@ export class WindowScrollService {
 
   public elmYPosition(eID) {
     const elm: any = document.getElementById(eID);
-    let y = elm.offsetTop;
-    let node = elm;
-    while (node.offsetParent && node.offsetParent !== document.body) {
-      node = node.offsetParent;
-      y += node.offsetTop;
-    } return y;
+    if (elm) {
+      let y = elm.offsetTop;
+      let node = elm;
+      while (node.offsetParent && node.offsetParent !== document.body) {
+        node = node.offsetParent;
+        y += node.offsetTop;
+      } return y;
+    }
   }
 
   public smoothScroll(eID, timeOut = 0) {
diff --git a/src/app/client/src/app/modules/telemetry/directives/telemetry-end/telemetry-end.directive.spec.ts b/src/app/client/src/app/modules/telemetry/directives/telemetry-end/telemetry-end.directive.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..810089d4cc7bd907c187b1ceeaf5f3369bc7f208
--- /dev/null
+++ b/src/app/client/src/app/modules/telemetry/directives/telemetry-end/telemetry-end.directive.spec.ts
@@ -0,0 +1,28 @@
+import { of as observableOf } from 'rxjs';
+import { TelemetryEndDirective } from './telemetry-end.directive';
+import { TelemetryService } from '../../services';
+import { eventData } from './telemetry-end.directive.spec.data';
+import { DebugElement } from '@angular/core';
+import { data } from 'jquery';
+describe('TelemetryEndDirective', () => {
+    let directive: TelemetryEndDirective;
+
+    const telemetryService: Partial<TelemetryService> = {
+        end: jest.fn()
+    };
+
+    beforeEach(() => {
+        directive = new TelemetryEndDirective(telemetryService as TelemetryService);
+    });
+
+    it('should take input and generate the telemetry end event ', () => {
+        jest.spyOn(telemetryService, 'end').mockImplementation(() => observableOf(eventData.inputData));
+        directive.appTelemetryEnd = eventData.inputData;
+        window.dispatchEvent(new Event('unload'));
+        directive.unloadHandler(data);
+        directive.ngOnDestroy();
+        expect(directive.appTelemetryEnd).toBeDefined();
+        expect(directive.appTelemetryEnd).toBe(eventData.inputData);
+        expect(telemetryService.end).toHaveBeenCalled();
+    });
+});
diff --git a/src/app/client/src/app/modules/telemetry/directives/telemetry-error/telemetry-error.directive.spec.ts b/src/app/client/src/app/modules/telemetry/directives/telemetry-error/telemetry-error.directive.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..c8a3703a07df768a31bd115e3331496bd7790794
--- /dev/null
+++ b/src/app/client/src/app/modules/telemetry/directives/telemetry-error/telemetry-error.directive.spec.ts
@@ -0,0 +1,24 @@
+import {of as observableOf,  Observable } from 'rxjs';
+import { TelemetryErrorDirective } from './telemetry-error.directive';
+import { TelemetryService, TELEMETRY_PROVIDER } from '../../services';
+import {TestBed, ComponentFixture} from '@angular/core/testing';
+import {eventData} from './telemetry-error.dircetive.spec.data';
+
+describe('TelemetryErrorDirective', () => {
+let directive:TelemetryErrorDirective;
+const telemetryService: Partial<TelemetryService> = {
+    error: jest.fn()
+};
+
+beforeEach(() => {
+    directive = new TelemetryErrorDirective(telemetryService as TelemetryService);
+});
+  it('should take input and generate the telemetry  error event ', () => {
+    jest.spyOn(telemetryService, 'error').mockImplementation(() => observableOf(eventData.inputData));
+    directive.appTelemetryError = eventData.inputData;
+    directive.ngOnChanges();
+    expect(directive.appTelemetryError).toBeDefined();
+    expect(directive.appTelemetryError).toBe(eventData.inputData);
+    expect(telemetryService.error).toHaveBeenCalled();
+  });
+});
\ No newline at end of file
diff --git a/src/app/client/src/app/modules/telemetry/directives/telemetry-impression/telemetry-impression.directive.spec.data.ts b/src/app/client/src/app/modules/telemetry/directives/telemetry-impression/telemetry-impression.directive.spec.data.ts
index c619677af4cf9530cdd63053cafbed4612be63ab..f60ac6f0355de93771bade1325b6d929797e5771 100644
--- a/src/app/client/src/app/modules/telemetry/directives/telemetry-impression/telemetry-impression.directive.spec.data.ts
+++ b/src/app/client/src/app/modules/telemetry/directives/telemetry-impression/telemetry-impression.directive.spec.data.ts
@@ -26,7 +26,7 @@ export const eventData = {
         ],
         'edata': {
           'type': 'list',
-          'subtype': 'scroll',
+          'subtype': 'pageexit',
           'pageid': 'workspace-content-draft',
           'uri': '/workspace/content/draft',
           'visits': [
diff --git a/src/app/client/src/app/modules/telemetry/directives/telemetry-impression/telemetry-impression.directive.spec.ts b/src/app/client/src/app/modules/telemetry/directives/telemetry-impression/telemetry-impression.directive.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..bdf374c66760fb7b5c4f51ade90a1dbc428a3c1e
--- /dev/null
+++ b/src/app/client/src/app/modules/telemetry/directives/telemetry-impression/telemetry-impression.directive.spec.ts
@@ -0,0 +1,33 @@
+import { of as observableOf } from 'rxjs';
+import { TelemetryImpressionDirective } from './telemetry-impression.directive';
+import { TelemetryService } from '../../services';
+import { eventData } from './telemetry-impression.directive.spec.data';
+describe('TelemetryImpressionDirective', () => {
+    let directive: TelemetryImpressionDirective;
+    const telemetryService: Partial<TelemetryService> = {
+        impression: jest.fn()
+    };
+
+    beforeEach(() => {
+        directive = new TelemetryImpressionDirective(telemetryService as TelemetryService);
+    });
+
+    it('should take input and generate the telemetry impression event', () => {
+        directive.ngOnInit()
+        jest.spyOn(telemetryService, 'impression').mockImplementation(() => observableOf(eventData.inputData));
+        directive.appTelemetryImpression = eventData.inputData;
+        directive.ngOnChanges();
+        expect(directive.appTelemetryImpression).toBeDefined();
+        expect(directive.appTelemetryImpression).toBe(eventData.inputData);
+        expect(telemetryService.impression).toHaveBeenCalled();
+    });
+
+    it('should call onDestroy method', () => {
+        jest.spyOn(telemetryService, 'impression').mockImplementation(() => observableOf(eventData.inputData));
+        directive.appTelemetryImpression = eventData.inputData;
+        directive.ngOnDestroy();
+        expect(directive.appTelemetryImpression).toBeDefined();
+        expect(directive.appTelemetryImpression).toBe(eventData.inputData);
+        expect(telemetryService.impression).toHaveBeenCalled();
+    });
+});
\ No newline at end of file
diff --git a/src/app/client/src/app/modules/telemetry/directives/telemetry-share/telemetry-share.directive.spec.ts b/src/app/client/src/app/modules/telemetry/directives/telemetry-share/telemetry-share.directive.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..7c59f76a5332d9237ca6a31267e6b0f48543a239
--- /dev/null
+++ b/src/app/client/src/app/modules/telemetry/directives/telemetry-share/telemetry-share.directive.spec.ts
@@ -0,0 +1,38 @@
+import { of as observableOf } from 'rxjs';
+import { TelemetryShareDirective } from './telemetry-share.directive';
+import { TelemetryService } from '../../services';
+import { eventData } from './telemetry-share.directive.spec.data';
+import { ActivatedRoute } from '@angular/router';
+describe('TelemetryShareDirective', () => {
+    const env = 'workspace';
+
+    let directive: TelemetryShareDirective;
+    const telemetryService: Partial<TelemetryService> = {
+        share: jest.fn()
+    };
+    const mockActivatedRoute: Partial<ActivatedRoute> = {
+        snapshot: {
+            data: {
+                telemetry: {
+                    env: 'course', pageid: 'signup', uri: '/signup',
+                    type: 'view', mode: 'self', uuid: 'hadfisgefkjsdvv'
+                }
+            }
+        } as any,
+    };
+
+    beforeEach(() => {
+        directive = new TelemetryShareDirective(
+            telemetryService as TelemetryService,
+            mockActivatedRoute as ActivatedRoute
+        )
+    });
+
+    it('should take input and  generate the telemetry  share  event', () => {
+        jest.spyOn(telemetryService, 'share').mockImplementation(() => observableOf(eventData.inputData));
+        directive.TelemetryShareEdata = eventData.inputData.edata;
+        directive.appTelemetryShare = eventData.inputData;
+        directive.ngOnInit();
+        expect(directive.appTelemetryShare).toBeDefined();
+    });
+});
\ No newline at end of file
diff --git a/src/app/client/src/app/modules/telemetry/directives/telemetry-start/telemetry-start.directive.spec.ts b/src/app/client/src/app/modules/telemetry/directives/telemetry-start/telemetry-start.directive.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..8bfadc89d8304fa74fd4ab8a03251b45fd082433
--- /dev/null
+++ b/src/app/client/src/app/modules/telemetry/directives/telemetry-start/telemetry-start.directive.spec.ts
@@ -0,0 +1,23 @@
+import { of as observableOf } from 'rxjs';
+import { TelemetryStartDirective } from './telemetry-start.directive';
+import { TelemetryService } from '../../services';
+import { eventData } from './telemetry-start.directive.spec.data';
+
+describe('TelemetryStartDirective', () => {
+    let directive: TelemetryStartDirective;
+    const telemetryService: Partial<TelemetryService> = {
+        start: jest.fn()
+    };
+
+    beforeEach(() => {
+        directive = new TelemetryStartDirective(telemetryService as TelemetryService);
+    });
+    it('should take input and  generate the telemetry start event', () => {
+        jest.spyOn(telemetryService, 'start').mockImplementation(() => observableOf(eventData.inputData));
+        directive.appTelemetryStart = eventData.inputData;
+        directive.ngOnChanges();
+        expect(directive.appTelemetryStart).toBeDefined();
+        expect(directive.appTelemetryStart).toBe(eventData.inputData);
+        expect(telemetryService.start).toHaveBeenCalled();
+    });
+});
\ No newline at end of file
diff --git a/src/app/client/src/app/modules/uci-admin/components/uci/uci.component.spec.ts b/src/app/client/src/app/modules/uci-admin/components/uci/uci.component.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..da84ce63438bd2d8336ed0c62dfcd26bff3b4432
--- /dev/null
+++ b/src/app/client/src/app/modules/uci-admin/components/uci/uci.component.spec.ts
@@ -0,0 +1,76 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { UciComponent } from './uci.component';
+import { ConfigService } from '@sunbird/shared';
+import { UserService } from '../../../core/services/user/user.service';
+import { ResourceService } from '../../../shared';
+import { of } from 'rxjs';
+
+describe('UciComponent', () => {
+    let component: UciComponent;
+    const userService: Partial<UserService> = {
+        userData$: of({
+            userProfile: {
+                'missingFields': [],
+                'updatedDate': '2018-07-09 16:07:35:977+0000',
+                'completeness': 100,
+                'id': '159e93d1-da0c-4231-be94-e75b0c226d7c',
+                'identifier': '159e93d1-da0c-4231-be94-e75b0c226d7c',
+                'rootOrgId': 'ORG_001',
+                'firstName': 'Sunil',
+                'phone': '******7878',
+                'dob': '1982-01-01',
+                'status': 1,
+                'lastName': 'Pandith',
+                'gender': 'Male',
+                'email': 'su************@gmail.com',
+                'phoneverified': null,
+                'profileSummary': '.aa .   ',
+                'userName': 'sunil1as990',
+                'userId': '159e93d1-da0c-4231-be94-e75b0c226d7c',
+                'emailVerified': null,
+                'lastLoginTime': 1534920693649,
+                'createdDate': '2017-11-03 05:28:41:536+0000',
+                'createdBy': '',
+                'location': 'Bangaloree',
+                'rootOrgAdmin': false
+            } as any
+        }) as any
+    };
+    const configService: Partial<ConfigService> = {
+        urlConFig: {
+            URLS: {
+                "UCI": "/uci"
+            }
+        }
+    };
+    const resourceService: Partial<ResourceService> = {};
+
+    beforeEach((() => {
+        component = new UciComponent(
+            userService as UserService,
+            configService as ConfigService,
+            resourceService as ResourceService
+        );
+    }));
+
+    it('should create', () => {
+        expect(component).toBeTruthy();
+    });
+
+    it('should get user profile details', () => {
+        // @ts-ignore
+        jest.spyOn(document, 'getElementById').mockImplementation((id) => {
+            if (id === 'blobUrl') {
+                return { value: 'test' };
+            }
+            if (id === 'uciBotPhoneNumber') {
+                return { value: 5222345667 };
+            }
+        });
+        expect(component.blobUrl).toBeDefined();
+        console.log(component.blobUrl)
+        component.ngOnInit();
+        expect(component.url).toEqual(configService.urlConFig.URLS.UCI);
+    });
+});
\ No newline at end of file
diff --git a/src/app/client/src/app/modules/workspace/components/bulk-upload-content/bulk-upload-content.component.html b/src/app/client/src/app/modules/workspace/components/bulk-upload-content/bulk-upload-content.component.html
index 0f7df7165b5e110b399af716bb2ff5ba94d9a44e..b3f04fef3cac9a6a8dade5cda8be3d66e5e9f927 100644
--- a/src/app/client/src/app/modules/workspace/components/bulk-upload-content/bulk-upload-content.component.html
+++ b/src/app/client/src/app/modules/workspace/components/bulk-upload-content/bulk-upload-content.component.html
@@ -1,7 +1,7 @@
 <!-- Important note(developer):- whenever the component is going to be used just create a scss file of the component and paste the below code
-@import "variables";
-@import "mixins/mixins";
-@import 'components/metadata';
+@use "~@project-sunbird/sb-styles/assets/varIndex" as *;
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
+@use 'components/metadata' as *;
  -->
 
 <sui-modal
diff --git a/src/app/client/src/app/modules/workspace/components/collaboration-content-filter/collaboration-content-filter.component.scss b/src/app/client/src/app/modules/workspace/components/collaboration-content-filter/collaboration-content-filter.component.scss
index 87dd455b449f9a336e9cef71b6a96dc317b65a1e..3def2da3568010dae6e49a81086bd10a4267cc11 100644
--- a/src/app/client/src/app/modules/workspace/components/collaboration-content-filter/collaboration-content-filter.component.scss
+++ b/src/app/client/src/app/modules/workspace/components/collaboration-content-filter/collaboration-content-filter.component.scss
@@ -1,4 +1,4 @@
-@import"./mixins/mixins";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 >>>.ui.dropdown:not(.button)>.default.text {
     display: none;
diff --git a/src/app/client/src/app/modules/workspace/components/data-driven/data-driven.component.scss b/src/app/client/src/app/modules/workspace/components/data-driven/data-driven.component.scss
index b4ffe6abe45862df541114954835aa98f1565618..de2657c6e6d89bb1a0c33823c43f228058b6a219 100644
--- a/src/app/client/src/app/modules/workspace/components/data-driven/data-driven.component.scss
+++ b/src/app/client/src/app/modules/workspace/components/data-driven/data-driven.component.scss
@@ -1,5 +1,4 @@
-@import 'variables';
-@import "mixins/mixins";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 // In workspace, course card modal 
 .sb-modal.sb-course-modal .sb-modal-content {
   .sbgrid {
diff --git a/src/app/client/src/app/modules/workspace/components/review-comments/review-comments.component.scss b/src/app/client/src/app/modules/workspace/components/review-comments/review-comments.component.scss
index 9d213370ac5e1bb3ee110dad7dbc15d6cf802fca..b4db9a5c51893cecbc60b294bfb1b9ab84f1bd54 100644
--- a/src/app/client/src/app/modules/workspace/components/review-comments/review-comments.component.scss
+++ b/src/app/client/src/app/modules/workspace/components/review-comments/review-comments.component.scss
@@ -1,5 +1,4 @@
-@import "variables";
-@import "mixins/mixins";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 .review-comments-box {
     max-height: calc(100% - 4px);
diff --git a/src/app/client/src/app/modules/workspace/components/up-for-review-filter/up-for-review-filter.component.scss b/src/app/client/src/app/modules/workspace/components/up-for-review-filter/up-for-review-filter.component.scss
index e030ebaf6ec1095d88504b80dcc54fcd64898505..dd168a925871eedd00dc9f6642292f9f5d1e4cd1 100644
--- a/src/app/client/src/app/modules/workspace/components/up-for-review-filter/up-for-review-filter.component.scss
+++ b/src/app/client/src/app/modules/workspace/components/up-for-review-filter/up-for-review-filter.component.scss
@@ -1,5 +1,4 @@
-
-@import"./mixins/mixins";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 >>>.ui.dropdown:not(.button)>.default.text {
     display: none;
diff --git a/src/app/client/src/app/modules/workspace/components/workspace-content-filter/workspace-content-filter.component.scss b/src/app/client/src/app/modules/workspace/components/workspace-content-filter/workspace-content-filter.component.scss
index 87dd455b449f9a336e9cef71b6a96dc317b65a1e..3def2da3568010dae6e49a81086bd10a4267cc11 100644
--- a/src/app/client/src/app/modules/workspace/components/workspace-content-filter/workspace-content-filter.component.scss
+++ b/src/app/client/src/app/modules/workspace/components/workspace-content-filter/workspace-content-filter.component.scss
@@ -1,4 +1,4 @@
-@import"./mixins/mixins";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 >>>.ui.dropdown:not(.button)>.default.text {
     display: none;
diff --git a/src/app/client/src/app/plugins/location/components/delegate/sb-form-location-options.factory.ts b/src/app/client/src/app/plugins/location/components/delegate/sb-form-location-options.factory.ts
index 0f1bf2355e6a4be36ae3d2833405ecdfdd5e5568..de0fa34ddc19cc9fed80351d172f343ea268f1c6 100644
--- a/src/app/client/src/app/plugins/location/components/delegate/sb-form-location-options.factory.ts
+++ b/src/app/client/src/app/plugins/location/components/delegate/sb-form-location-options.factory.ts
@@ -1,4 +1,4 @@
-import { FieldConfig, FieldConfigOptionsBuilder } from '@project-sunbird/common-form-elements-v9';
+import { FieldConfig, FieldConfigOptionsBuilder } from '@project-sunbird/common-form-elements';
 import { Location as SbLocation } from '@project-sunbird/client-services/models/location';
 import { FormControl } from '@angular/forms';
 import { concat, defer, iif, of } from 'rxjs';
diff --git a/src/app/client/src/app/plugins/location/components/delegate/sb-form-location-selection.delegate.ts b/src/app/client/src/app/plugins/location/components/delegate/sb-form-location-selection.delegate.ts
index cfb6e878100b6cc2f2483d00218406614849c57f..70cf6f03817adf95939077b7d330c7f6cf68f360 100644
--- a/src/app/client/src/app/plugins/location/components/delegate/sb-form-location-selection.delegate.ts
+++ b/src/app/client/src/app/plugins/location/components/delegate/sb-form-location-selection.delegate.ts
@@ -1,5 +1,5 @@
 import {Location as SbLocation} from '@project-sunbird/client-services/models/location';
-import {FieldConfig, FieldConfigOption} from '@project-sunbird/common-form-elements-v9';
+import {FieldConfig, FieldConfigOption} from '@project-sunbird/common-form-elements';
 import {FormGroup} from '@angular/forms';
 import {delay, distinctUntilChanged, map, mergeMap, take} from 'rxjs/operators';
 import {SbFormLocationOptionsFactory} from './sb-form-location-options.factory';
diff --git a/src/app/client/src/app/plugins/location/location.module.ts b/src/app/client/src/app/plugins/location/location.module.ts
index a393201d30e8fe74cdcd65a264b06dfd9cce2ef8..d71766a53bad6eb29a841bbc4d6f016a5a71cb70 100644
--- a/src/app/client/src/app/plugins/location/location.module.ts
+++ b/src/app/client/src/app/plugins/location/location.module.ts
@@ -7,7 +7,7 @@ import { SharedModule } from '@sunbird/shared';
 import { TelemetryModule } from '@sunbird/telemetry';
 
 import { LocationSelectionComponent } from './components';
-import { CommonFormElementsModule } from '@project-sunbird/common-form-elements-v9';
+import { CommonFormElementsModule } from '@project-sunbird/common-form-elements';
 
 @NgModule({
   declarations: [
diff --git a/src/app/client/src/app/plugins/location/services/location/location.service.spec.data.ts b/src/app/client/src/app/plugins/location/services/location/location.service.spec.data.ts
new file mode 100644
index 0000000000000000000000000000000000000000..3fc0e25421fad32f06788d08e55f9356123b67b3
--- /dev/null
+++ b/src/app/client/src/app/plugins/location/services/location/location.service.spec.data.ts
@@ -0,0 +1,26 @@
+export const mockRes = {
+    successData: {
+        'id': 'api.user.update',
+        'ver': 'v1',
+        'ts': '2018-06-25 06:51:57:253+0000',
+        'params': {
+            'resmsgid': null,
+            'msgid': '20e1edc1-1c40-b9fe-2ec4-cf8ae7168ac5',
+            'err': null,
+            'status': 'success',
+            'errmsg': null
+        },
+        'responseCode': 'OK',
+        'result': {
+            'response': 'SUCCESS'
+        }
+    },
+    errorData: {
+        'id': 'api.user.update',
+        'params': {
+            'resmsgid': 'Unauthorized', 'msgid': null, 'status': 'failed', 'err': 'Unauthorized',
+            'errmsg': 'Cannot set property of undefined'
+        }, 'responseCode': 'CLIENT_ERROR',
+        'result': {}
+    }
+};
diff --git a/src/app/client/src/app/plugins/location/services/location/location.service.spec.ts b/src/app/client/src/app/plugins/location/services/location/location.service.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..45b9ebe389ebe6effcc5fea7c29a41e50a5b68e4
--- /dev/null
+++ b/src/app/client/src/app/plugins/location/services/location/location.service.spec.ts
@@ -0,0 +1,66 @@
+import { mockRes } from './location.service.spec.data';
+import { ConfigService } from '../../../../modules/shared/services/config/config.service';
+import { LocationService } from './location.service';
+import { FormService, LearnerService, UserService } from '../../../../modules/core';
+import { of } from 'rxjs';
+
+describe('LocationService', () => {
+    let locationService: LocationService;
+
+    const mockLearnerService: Partial<LearnerService> = {
+        get: jest.fn(),
+        post: jest.fn(),
+        patch: jest.fn()
+    };
+    const mockUserService: Partial<UserService> = {};
+    const mockConfigService: Partial<ConfigService> = {
+        urlConFig: {
+            URLS: {
+                USER: {
+                    "LOCATION_SEARCH": "data/v1/location/search",
+
+                }
+            }
+        }
+    };
+    const mockFormService: Partial<FormService> = {
+        getFormConfig: jest.fn()
+    };
+
+    beforeEach(() => {
+        locationService = new LocationService(
+            mockLearnerService as LearnerService,
+            mockUserService as UserService,
+            mockConfigService as ConfigService,
+            mockFormService as FormService
+        );
+    });
+
+    it('should be created', () => {
+        expect(locationService).toBeTruthy();
+    });
+
+    it('should call getUserLocation method', () => {
+        jest.spyOn(mockLearnerService, 'post').mockReturnValue(of(mockRes.successData));
+        const request = {
+            profileSummary: 'location'
+        };
+        locationService.getUserLocation(request).subscribe(apiResponse => {
+            expect(apiResponse.responseCode).toBe('OK');
+            expect(apiResponse.result.response).toBe('SUCCESS');
+        });
+    });
+
+    it('should call updateProfile method', () => {
+        jest.spyOn(mockLearnerService, 'patch').mockReturnValue(of(mockRes.successData));
+        const request = {
+            profileSummary: 'summary',
+            userId: '159e93d1-da0c-4231-be94-e75b0c226d7c'
+
+        };
+        locationService.updateProfile(request).subscribe(apiResponse => {
+            expect(apiResponse.responseCode).toBe('OK');
+            expect(apiResponse.result.response).toBe('SUCCESS');
+        });
+    });
+});
\ No newline at end of file
diff --git a/src/app/client/src/app/plugins/profile/components/account-recovery-info/account-recovery-info.component.spec.ts b/src/app/client/src/app/plugins/profile/components/account-recovery-info/account-recovery-info.component.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..e9ac2d061ac10ce68a097b792d1a35f58f9429cf
--- /dev/null
+++ b/src/app/client/src/app/plugins/profile/components/account-recovery-info/account-recovery-info.component.spec.ts
@@ -0,0 +1,217 @@
+import { AccountRecoveryInfoComponent } from './account-recovery-info.component';
+import { ResourceService } from '@sunbird/shared';
+import { FormControl, FormGroup, Validators } from '@angular/forms';
+import { ProfileService } from './../../services';
+import { of as observableOf, of, throwError } from 'rxjs';
+import { OtpService, UserService } from '../../../../modules/core';
+import { ConfigService, ToasterService } from '../../../../modules/shared';
+import { MatDialog } from '@angular/material/dialog';
+
+describe('AccountRecoveryInfoComponent', () => {
+  let component: AccountRecoveryInfoComponent;
+
+  const resourceService: Partial<ResourceService> = {
+    'messages': {
+      'smsg': {
+        'm0047': 'Your Mobile Number has been updated',
+        'm0048': 'Your email address has been updated'
+      },
+      'emsg': {
+        'm0014': 'Could not update mobile number',
+        'm0015': 'Could not update email address'
+      }
+    },
+    'frmelmnts': {
+      'lbl': {
+        unableToUpdateMobile: 'unableToUpdateMobile',
+        unableToUpdateEmail: 'unableToUpdateEmail',
+        wrongPhoneOTP: 'wrongPhoneOTP',
+        wrongEmailOTP: 'wrongEmailOTP'
+
+      },
+      instn: {
+        't0083': 'Could not update email address',
+        't0084': 'Could not update email address',
+      }
+    }
+  };
+  const profileService: Partial<ProfileService> = {
+    updateProfile: jest.fn()
+  };
+  const userService: Partial<UserService> = {};
+  const matDialog: Partial<MatDialog> = {
+    getDialogById: jest.fn()
+  };
+  const toasterService: Partial<ToasterService> = {
+    success: jest.fn(),
+    error: jest.fn()
+  };
+  const otpService: Partial<OtpService> = {
+    generateOTP: jest.fn().mockImplementation(() => of(true))
+  };
+  const configService: Partial<ConfigService> = {
+    appConfig: {
+      OTPTemplate: {
+        updateContactTemplate: 'updateContactTemplate'
+      }
+    },
+  };
+
+  beforeEach(() => {
+    component = new AccountRecoveryInfoComponent(
+      resourceService as ResourceService,
+      profileService as ProfileService,
+      userService as UserService,
+      matDialog as MatDialog,
+      toasterService as ToasterService,
+      otpService as OtpService,
+      configService as ConfigService,
+    )
+    component.userProfile = {
+      email: 'emailid',
+      phone: '5253252321'
+    };
+    component.otpData = {};
+    component.showOTPForm = true;
+  });
+
+  it('should select email id radio button by default and call initialize initializeFormFields() ', () => {
+    jest.spyOn(component, 'validateAndEditContact');
+    component.showOTPForm = false;
+    component.ngOnInit();
+    expect(component.contactType).toBe('emailId');
+    expect(component.validateAndEditContact).toHaveBeenCalled();
+  });
+
+  it('should select recovery email id radio button and call initialize initializeFormFields() ', () => {
+    jest.spyOn(component, 'validateAndEditContact');
+    component.userProfile = {
+      recoveryEmail: 'emailid',
+    };
+    component.showOTPForm = false;
+    component.ngOnInit();
+    expect(component.contactType).toBe('emailId');
+    expect(component.validateAndEditContact).toHaveBeenCalled();
+  });
+
+  it('should select recovery phone radio button and call initialize initializeFormFields() ', () => {
+    jest.spyOn(component, 'validateAndEditContact');
+    component.userProfile = {
+      recoveryPhone: 567127788,
+    };
+    component.showOTPForm = false;
+    component.ngOnInit();
+    expect(component.contactType).toBe('emailId');
+    expect(component.validateAndEditContact).toHaveBeenCalled();
+  });
+
+  it('should select email id radio button by default and call initialize initializeFormFields() ', () => {
+    component.accountRecoveryForm = new FormGroup({
+      email: new FormControl('test@demo.com', [Validators.required, Validators.pattern(/^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[a-z]{2,4}$/)]),
+    });
+    component.userVerificationSuccess();
+    expect(component.showOTPForm).toEqual(false);
+  });
+
+  it('initializeFormFields if emailId radio is selected', () => {
+    component.contactType = 'emailId';
+    jest.spyOn(component, 'handleSubmitButton');
+    jest.spyOn(component, 'setTelemetryData');
+    component.initializeFormFields();
+    expect(component.handleSubmitButton).toHaveBeenCalled();
+    expect(component.setTelemetryData).toHaveBeenCalled();
+  });
+
+  it('initializeFormFields if phone no. radio is selected', () => {
+    component.contactType = 'phoneNo';
+    jest.spyOn(component, 'handleSubmitButton');
+    jest.spyOn(component, 'setTelemetryData');
+    component.initializeFormFields();
+    expect(component.handleSubmitButton).toHaveBeenCalled();
+    expect(component.setTelemetryData).toHaveBeenCalled();
+  });
+
+  it('should shoudl call initializeFormFields() whenever different radio button is selected', () => {
+    component.accountRecoveryForm = new FormGroup({
+      email: new FormControl('test@demo.com', [Validators.required, Validators.pattern(/^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[a-z]{2,4}$/)]),
+    });
+    jest.spyOn(component, 'initializeFormFields');
+    component.onItemChange();
+    expect(component.initializeFormFields).toHaveBeenCalled();
+  });
+
+  it('should add/update phone no. for account recovery identifier', () => {
+    component.enableSubmitButton = false;
+    component.contactType = 'phoneNo';
+    jest.spyOn(component, 'closeModal');
+    jest.spyOn(profileService, 'updateProfile').mockReturnValue(observableOf({}) as any);
+    component.onItemChange();
+    component.updateRecoveryId();
+    expect(component.closeModal).toHaveBeenCalled();
+  });
+
+  it('should throw error while adding/updating phone no for recovery identifier', () => {
+    component.enableSubmitButton = false;
+    component.contactType = 'phoneNo';
+    jest.spyOn(component, 'closeModal');
+    jest.spyOn(profileService, 'updateProfile').mockReturnValue(throwError({ error: { params: { err: 'RECOVERY_PARAM_MATCH_EXCEPTION' } } }) as any);
+    component.onItemChange();
+    component.updateRecoveryId();
+    expect(component.closeModal).not.toHaveBeenCalled();
+  });
+
+  it('should throw error while adding/updating phone no for recovery identifier error', () => {
+    component.enableSubmitButton = false;
+    component.contactType = 'phoneNo';
+    jest.spyOn(component, 'closeModal');
+    jest.spyOn(profileService, 'updateProfile').mockReturnValue(throwError({ error: {} }) as any);
+    component.onItemChange();
+    component.updateRecoveryId();
+  });
+
+  it('should add/update email id for account recovery identifier', () => {
+    component.enableSubmitButton = false;
+    component.contactType = 'emailId';
+    jest.spyOn(component, 'closeModal');
+    jest.spyOn(profileService, 'updateProfile').mockReturnValue(observableOf({}) as any);
+    component.onItemChange();
+    component.updateRecoveryId();
+    expect(component.closeModal).toHaveBeenCalled();
+  });
+  it('should show appropriate message when fails to generate OTP', () => {
+    component.accountRecoveryForm = new FormGroup({
+      email: new FormControl('test@demo.com', [Validators.required, Validators.pattern(/^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[a-z]{2,4}$/)]),
+      uniqueContact: new FormControl(true, [Validators.required])
+    });
+    component.contactType = 'email';
+    jest.spyOn(otpService, 'generateOTP').mockReturnValue(throwError({ error: { params: { status: 'EMAIL_IN_USE', errmsg: 'error' } } }));
+    component.validateAndEditContact();
+    expect(otpService.generateOTP).toHaveBeenCalled();
+    expect(toasterService.error).toHaveBeenCalledWith('error');
+  });
+
+  it('should show appropriate error message when fails to generate OTP', () => {
+    component.accountRecoveryForm = new FormGroup({
+      email: new FormControl('test@demo.com', [Validators.required, Validators.pattern(/^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[a-z]{2,4}$/)]),
+      uniqueContact: new FormControl(true, [Validators.required])
+    });
+    component.contactType = 'email';
+    jest.spyOn(otpService, 'generateOTP').mockReturnValue(throwError({ error: { params: { status: 'error', errmsg: 'error' } } }));
+    component.validateAndEditContact();
+    expect(otpService.generateOTP).toHaveBeenCalled();
+    expect(toasterService.error).toHaveBeenCalledWith('error');
+  });
+
+
+  it('should unsubscribe from all observable subscriptions', () => {
+    component.contactType = 'phone';
+    component.accountRecoveryForm = new FormGroup({
+      email: new FormControl('test@demo.com', [Validators.required, Validators.pattern(/^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[a-z]{2,4}$/)]),
+    });
+    component.dialogProps = { id: "asd" };
+    jest.spyOn(component, 'closeMatDialog');
+    component.initializeFormFields();
+    component.ngOnDestroy();
+    expect(component.closeMatDialog).toHaveBeenCalled();
+  });
+});
\ No newline at end of file
diff --git a/src/app/client/src/app/plugins/profile/components/choose-user/choose-user.component.scss b/src/app/client/src/app/plugins/profile/components/choose-user/choose-user.component.scss
index 6329fe5e3d537784d82df1b64562f2e28acc8b57..256d9a13f0ca944500c56a58815685417dc2d5ea 100644
--- a/src/app/client/src/app/plugins/profile/components/choose-user/choose-user.component.scss
+++ b/src/app/client/src/app/plugins/profile/components/choose-user/choose-user.component.scss
@@ -1,3 +1,3 @@
-@import 'mixins/mixins';
-@import 'pages/user-mgmt';
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
+@use 'pages/user-mgmt' as *;
 
diff --git a/src/app/client/src/app/plugins/profile/components/create-user/create-user.component.scss b/src/app/client/src/app/plugins/profile/components/create-user/create-user.component.scss
index 6329fe5e3d537784d82df1b64562f2e28acc8b57..256d9a13f0ca944500c56a58815685417dc2d5ea 100644
--- a/src/app/client/src/app/plugins/profile/components/create-user/create-user.component.scss
+++ b/src/app/client/src/app/plugins/profile/components/create-user/create-user.component.scss
@@ -1,3 +1,3 @@
-@import 'mixins/mixins';
-@import 'pages/user-mgmt';
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
+@use 'pages/user-mgmt' as *;
 
diff --git a/src/app/client/src/app/plugins/profile/components/create-user/create-user.component.spec.ts b/src/app/client/src/app/plugins/profile/components/create-user/create-user.component.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..cf9b62d87e3b6847351c8cb2bc5eb4ba2c615c29
--- /dev/null
+++ b/src/app/client/src/app/plugins/profile/components/create-user/create-user.component.spec.ts
@@ -0,0 +1,295 @@
+import { FormBuilder, FormControl, FormGroup } from '@angular/forms';
+import { DomSanitizer } from '@angular/platform-browser';
+import { Router, ActivatedRoute } from '@angular/router';
+import { FrameworkService } from '../../../../modules/core/services/framework/framework.service';
+import { UtilService } from '@sunbird/shared';
+import { UserService, OrgDetailsService, ChannelService, FormService, TncService, ManagedUserService } from '../../../../modules/core';
+import { ResourceService, NavigationHelperService, LayoutService , ToasterService} from '../../../../modules/shared';
+import { ProfileService } from '../../services';
+import { CreateUserComponent } from './create-user.component';
+import { of, throwError } from 'rxjs';
+import {mockRes} from './create-user.component.spec.data'
+
+describe('CreateUserComponent', ()=> {
+    let createUserComponent : CreateUserComponent;
+    const mockResourceService: Partial<ResourceService> = {
+        messages: {
+            emsg: {
+                m0005: 'Something went wrong, try again later',
+            },
+            fmsg: {
+                m0085: 'There was a technical error. Try again.',
+                m0100: 'Enter valid Address line 2'
+            },
+        },
+    };
+    const mockToasterService: Partial<ToasterService> = {
+        error: jest.fn(),
+        custom: jest.fn()
+
+    };
+    const mockProfileService: Partial<ProfileService> = {};
+    const mockFormBuilder: Partial<FormBuilder> = {
+        group: jest.fn()
+    };
+    const mockRouter: Partial<Router> = {
+        url: 'sample-url' as any,
+        navigate: jest.fn(),
+    };
+    const mockUserService: Partial <UserService> = {};
+    const mockOrgDetailsService: Partial<OrgDetailsService> = {};
+    const mockChannelService: Partial<ChannelService> = {};
+    const mockFrameworkService: Partial <FrameworkService> = {};
+    const mockUtilService: Partial <UtilService> = {};
+    const mockFormService: Partial <FormService> = {
+        getFormConfig: jest.fn(()=> of ({}))
+    };
+    const mockActivatedRoute: Partial <ActivatedRoute> = {
+        snapshot: {
+            data: {
+                telemetry: { env: 'course', pageid: 'validate-certificate', type: 'view' ,subtype: ''}}
+            } as any
+    };
+    const mockNavigationHelperService: Partial <NavigationHelperService> = {
+        getPageLoadTime : jest.fn()
+    };
+    const mockTncService: Partial <TncService> = {};
+    const mockManagedUserService: Partial <ManagedUserService> = {
+        getUserId: jest.fn()
+    };
+    const mockLayoutService: Partial <LayoutService> = {
+        initlayoutConfig: jest.fn(),
+        switchableLayout: jest.fn(() => of([{layout: 'demo'}]))
+    };
+    const mockDomSanitizer: Partial <DomSanitizer> = {};
+    beforeAll(() => {
+        createUserComponent = new CreateUserComponent(
+            mockResourceService as ResourceService,
+            mockToasterService as ToasterService,
+            mockProfileService as ProfileService,
+            mockFormBuilder as FormBuilder,
+            mockRouter as Router,
+            mockUserService as UserService,
+            mockOrgDetailsService as OrgDetailsService,
+            mockChannelService as ChannelService,
+            mockFrameworkService as FrameworkService,
+            mockUtilService as UtilService,
+            mockFormService as FormService,
+            mockActivatedRoute as ActivatedRoute,
+            mockNavigationHelperService as NavigationHelperService,
+            mockTncService as TncService,
+            mockManagedUserService as ManagedUserService,
+            mockLayoutService as LayoutService,
+            mockDomSanitizer as DomSanitizer
+        )
+    });
+
+    beforeEach(() => {
+        jest.clearAllMocks();
+    });
+
+    it('should be create a instance of unroll batch component', () => {
+        expect(createUserComponent).toBeTruthy();
+    });
+
+    describe('ngOnInit', () => {
+
+        it('should be return create user details for web and Ios', ()=> {
+            // arrange
+            mockNavigationHelperService.setNavigationUrl = jest.fn();
+            mockLayoutService.initlayoutConfig = jest.fn(()=> Promise.resolve ({}));
+            // act
+            createUserComponent.ngOnInit();
+            // assert
+            expect(mockNavigationHelperService.setNavigationUrl).toBeCalled();
+            expect(mockLayoutService.initlayoutConfig).toHaveBeenCalled();
+            expect(createUserComponent.instance).toBeDefined();
+
+        });
+    });
+    describe('setTelemetryData', () => {
+        it('should set telemetry data', () => {
+            // arrange
+            createUserComponent.telemetryImpression = {
+                context: {
+                    env: mockActivatedRoute.snapshot.data.telemetry.env
+                },
+                edata: {
+                    type: mockActivatedRoute.snapshot.data.telemetry.type,
+                    pageid: createUserComponent.pageId,
+                    subtype: mockActivatedRoute.snapshot.data.telemetry.subtype,
+                    uri: mockRouter.url,
+                    duration: 10
+                }
+            };
+            // act
+            createUserComponent.setTelemetryData();
+            // assert
+            expect(createUserComponent.telemetryImpression).toBeDefined();
+        });
+        it('should return submiited interacted data', ()=> {
+            // arrange
+            createUserComponent.submitInteractEdata = {
+                id: 'submit-create-managed-user', 
+                type: 'click', 
+                pageid: createUserComponent.pageId
+            }
+            // act
+            createUserComponent.setTelemetryData();
+            // assert
+            expect(createUserComponent.submitInteractEdata).toBeDefined();
+        });
+
+        it('should return cancelled interacted data', ()=> {
+            // arrange
+            createUserComponent.submitCancelInteractEdata = {
+                id: 'cancel-create-managed-user',
+                type: 'click',
+                pageid: createUserComponent.pageId 
+            };
+            // act
+            createUserComponent.setTelemetryData();
+            // assert
+            expect(createUserComponent.submitCancelInteractEdata).toBeDefined();        
+
+        });
+
+    });
+    describe('getFormDetails', ()=> {
+
+        it('should call getFormDetails', () => {
+            // arrange
+            const formServiceInputParams = {
+                formType: 'user',
+                formAction: 'create',
+                contentType: 'child',
+                component: 'portal'
+            };
+            mockFormService.getFormConfig  = jest.fn(()=> (of(formServiceInputParams))) as any;
+            jest.spyOn(createUserComponent, 'initializeFormFields');
+            // act
+            createUserComponent.getFormDetails();
+            // assert
+            expect(mockFormService.getFormConfig).toHaveBeenCalled();
+            expect(createUserComponent.formData).toEqual(formServiceInputParams);
+            expect(createUserComponent.initializeFormFields).toHaveBeenCalled();
+        
+        });
+
+        it('should call when FormDetails response is failed', () => {
+            // arrange
+            const formServiceInputParams = {
+                formType: '',
+                formAction: '',
+                contentType: '',
+                component: ''
+            };
+            mockFormService.getFormConfig = jest.fn(() => throwError(of(formServiceInputParams))) as any;
+            // act
+            createUserComponent.getFormDetails();
+            // assert
+            expect(mockToasterService.error).toBeCalledWith(mockResourceService.messages.emsg.m0005);
+            expect(createUserComponent.showLoader).toBeFalsy();
+        });
+    });
+    describe('goBack', ()=> {
+        it('return back to the navigation helper page',()=> {
+            // arrange
+            mockNavigationHelperService.goBack = jest.fn();
+            //act
+            createUserComponent.goBack();
+            // assert
+            expect(mockNavigationHelperService.goBack).toHaveBeenCalled();
+
+        });
+
+    });
+    describe('onCancel', ()=> {
+        it('return back to the last navigation  page',()=> {
+            // arrange
+            mockNavigationHelperService.navigateToLastUrl = jest.fn();
+            //act
+            createUserComponent.onCancel();
+            // assert
+            expect(mockNavigationHelperService.navigateToLastUrl).toHaveBeenCalled();
+
+        });
+    });
+
+    describe('onSubmitForm', ()=> {
+        it('should submit the form data', ()=> {
+            // arrange  
+            createUserComponent.userDetailsForm = new FormGroup({
+                name: new FormControl('test-name'),
+            });
+            const createUserRequest = {
+                request: {
+                    firstName: createUserComponent.userDetailsForm.controls.value,
+                    managedBy: mockManagedUserService.getUserId()
+                }
+            };
+            const userProfileData = {
+                userLocations : mockRes.userData.userLocations,
+                // framework: mockRes.userData.framework
+                framework: 'demo'
+            };
+            jest.spyOn(createUserComponent, 'registerUser');
+            mockDomSanitizer.sanitize = jest.fn().mockReturnValue(createUserComponent.userDetailsForm.value.name);
+            mockManagedUserService.getParentProfile = jest.fn().mockReturnValue(of(userProfileData) )as any;
+            //act
+            createUserComponent.onSubmitForm();
+            //assert
+            expect(createUserComponent.enableSubmitBtn).toBeFalsy();
+            expect(createUserComponent.userDetailsForm.value).toBeDefined();
+            expect(createUserComponent.userDetailsForm.value.name).toBeDefined();
+        });
+    });
+    describe('registerUser', ()=> {
+
+        it('return the registered  user', ()=> {
+            //arrange
+            const createUserRequest = {
+            request: { firstName: createUserComponent.userDetailsForm.controls,managedBy: mockManagedUserService.getUserId()}};
+            const userProfileData = { userLocations : mockRes.userData.userLocations,framework: 'demo'};
+            const formServiceInputParams = { result: { value:'demo', userId:'demo'}};
+            mockManagedUserService.updateUserList = jest.fn(); 
+            mockUserService.registerUser  = jest.fn(()=> (of(formServiceInputParams))) as any;
+            mockManagedUserService.updateUserList({
+            firstName: createUserComponent.userDetailsForm.controls.value,
+            identifier: formServiceInputParams.result.value,
+            id: formServiceInputParams.result.userId,
+            managedBy: mockManagedUserService.getUserId()});
+            mockRouter.navigate = jest.fn(() => Promise.resolve(true));
+            //act
+            createUserComponent.registerUser(createUserRequest,userProfileData);
+            //assert
+            expect(mockManagedUserService.updateUserList).toBeDefined();
+            expect(mockToasterService.custom).toBeDefined();
+            expect(mockRouter.navigate).toHaveBeenCalledWith(['/profile/choose-managed-user']);
+        });
+        it('should show alert message from params when all list fail', ()=> {
+            // arrange
+            const createUserRequest = { request: { firstName: createUserComponent.userDetailsForm.controls, managedBy: mockManagedUserService.getUserId()}};
+            const userProfileData = { userLocations : mockRes.userData.userLocations, framework: 'demo'};
+            mockUserService.registerUser = jest.fn(() => throwError({error: {params: {status: 'MANAGED_USER_LIMIT_EXCEEDED'}}}));
+            // act
+            createUserComponent.registerUser(createUserRequest,userProfileData);
+            // assert
+            expect(mockToasterService.error).toBeCalledWith(mockResourceService.messages.fmsg.m0100);
+            expect(createUserComponent.enableSubmitBtn).toBeTruthy();
+        });
+        it('should show alert message from params when all list fail & status unmatched', ()=> {
+            // arrrange
+            const createUserRequest = {request: { firstName: createUserComponent.userDetailsForm.controls, managedBy: mockManagedUserService.getUserId()}};
+            const userProfileData = {userLocations : mockRes.userData.userLocations,framework: 'demo'};
+            mockUserService.registerUser  = jest.fn(()=> throwError({error: {params: {status: ''}}}));
+            // act
+            createUserComponent.registerUser(createUserRequest,userProfileData);
+            // assert
+            expect(mockToasterService.error).toBeCalledWith(mockResourceService.messages.fmsg.m0085);
+            expect(createUserComponent.enableSubmitBtn).toBeTruthy();
+
+        });
+    });
+
+});
\ No newline at end of file
diff --git a/src/app/client/src/app/plugins/profile/components/create-user/create-user.component.ts b/src/app/client/src/app/plugins/profile/components/create-user/create-user.component.ts
index 8dfae58ffb3667a7919b810091c9d2c723e32bd2..2ec02472870fdd992cbc796226884d93e91ee089 100644
--- a/src/app/client/src/app/plugins/profile/components/create-user/create-user.component.ts
+++ b/src/app/client/src/app/plugins/profile/components/create-user/create-user.component.ts
@@ -153,7 +153,7 @@ export class CreateUserComponent implements OnInit {
     this.userDetailsForm.value.name = this._sanitizer.sanitize(SecurityContext.HTML,this.userDetailsForm.value.name);
     const createUserRequest = {
       request: {
-        firstName: this.userDetailsForm.value.name,
+        firstName: this.userDetailsForm.controls?.name.value,
         managedBy: this.managedUserService.getUserId()
       }
     };
@@ -171,14 +171,14 @@ export class CreateUserComponent implements OnInit {
   registerUser(createUserRequest, userProfileData) {
     this.userService.registerUser(createUserRequest).subscribe((resp: ServerResponse) => {
         this.managedUserService.updateUserList({
-          firstName: this.userDetailsForm.value.name,
+          firstName: this.userDetailsForm.controls?.name.value,
           identifier: _.get(resp, 'result.userId'),
           id: _.get(resp, 'result.userId'),
           managedBy: this.managedUserService.getUserId()
         });
         const filterPipe = new InterpolatePipe();
         const successMessage = filterPipe.transform(_.get(this.resourceService, 'messages.imsg.m0096'),
-          '{firstName}', this.userDetailsForm.value.name);
+          '{firstName}', this.userDetailsForm.controls?.name.value);
         this.toasterService.custom({
           message: successMessage,
           class: 'sb-toaster sb-toast-success sb-toast-normal'
diff --git a/src/app/client/src/app/plugins/profile/components/profile-badge/profile-badge.component.scss b/src/app/client/src/app/plugins/profile/components/profile-badge/profile-badge.component.scss
index 05bd0285288fb0ed95ba22fdcfbd2a31473c5096..4b932c9d89dade4efd57d8101f5cfb4da3f6b3fc 100644
--- a/src/app/client/src/app/plugins/profile/components/profile-badge/profile-badge.component.scss
+++ b/src/app/client/src/app/plugins/profile/components/profile-badge/profile-badge.component.scss
@@ -1,4 +1,4 @@
-@import 'mixins/mixins';
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 .ui.small.custom.badge.image {
   height: calculateRem(75px);
diff --git a/src/app/client/src/app/plugins/profile/components/profile-page/profile-page.component.scss b/src/app/client/src/app/plugins/profile/components/profile-page/profile-page.component.scss
index 59a447d83a6dc224392a9f905d61b8226806c199..bb4c4af597d350e0c4c1adf8255c75f17589070a 100644
--- a/src/app/client/src/app/plugins/profile/components/profile-page/profile-page.component.scss
+++ b/src/app/client/src/app/plugins/profile/components/profile-page/profile-page.component.scss
@@ -1,5 +1,4 @@
-@import "variables";
-@import "../../../../../assets/styles/mixins/mixins";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 .content-header__title {
   color: var(--primary-400);
diff --git a/src/app/client/src/app/plugins/profile/components/profile-page/profile-page.component.ts b/src/app/client/src/app/plugins/profile/components/profile-page/profile-page.component.ts
index e42a11bd1c6f28d129a2b5a503203c609ea6f8c8..aaf6f057d304d3ffbed74d2b973f37a829d67207 100644
--- a/src/app/client/src/app/plugins/profile/components/profile-page/profile-page.component.ts
+++ b/src/app/client/src/app/plugins/profile/components/profile-page/profile-page.component.ts
@@ -27,7 +27,7 @@ import {CacheService} from 'ng2-cache-service';
 import {takeUntil} from 'rxjs/operators';
 import { CertificateDownloadAsPdfService } from 'sb-svg2pdf';
 import { CsCourseService } from '@project-sunbird/client-services/services/course/interface';
-import { FieldConfig, FieldConfigOption } from '@project-sunbird/common-form-elements-v9';
+import { FieldConfig, FieldConfigOption } from '@project-sunbird/common-form-elements';
 import { CsCertificateService } from '@project-sunbird/client-services/services/certificate/interface';
 
 @Component({
diff --git a/src/app/client/src/app/plugins/profile/components/submit-teacher-details/submit-teacher-details.component.scss b/src/app/client/src/app/plugins/profile/components/submit-teacher-details/submit-teacher-details.component.scss
index 34cee43734d1308da8f10c1fd928b0ee57248f33..f0189c116a97a89496c20e10855e59453e94afc9 100644
--- a/src/app/client/src/app/plugins/profile/components/submit-teacher-details/submit-teacher-details.component.scss
+++ b/src/app/client/src/app/plugins/profile/components/submit-teacher-details/submit-teacher-details.component.scss
@@ -1,5 +1,4 @@
-
-@import 'mixins/mixins';
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 :host{
   .sb-md-container {
diff --git a/src/app/client/src/app/plugins/profile/components/submit-teacher-details/submit-teacher-details.component.spec.data.ts b/src/app/client/src/app/plugins/profile/components/submit-teacher-details/submit-teacher-details.component.spec.data.ts
index 9e68dc1b584bc2ef0ac0d6fd841e1d48c172ea5d..77a04731e6f4b31f9ddecbef4d3ec51283e1d23a 100644
--- a/src/app/client/src/app/plugins/profile/components/submit-teacher-details/submit-teacher-details.component.spec.data.ts
+++ b/src/app/client/src/app/plugins/profile/components/submit-teacher-details/submit-teacher-details.component.spec.data.ts
@@ -1,4 +1,4 @@
-import { FieldConfigInputType } from '@project-sunbird/common-form-elements-v9';
+import { FieldConfigInputType } from '@project-sunbird/common-form-elements';
 
 export const mockRes = {
   orgSearch: {
diff --git a/src/app/client/src/app/plugins/profile/components/submit-teacher-details/submit-teacher-details.component.ts b/src/app/client/src/app/plugins/profile/components/submit-teacher-details/submit-teacher-details.component.ts
index 93d63026ca8b0a0ce4b97a5d7905a7b9914653b6..0850cc3d9f3c4c5f7f18234c15a2e61fb7e6986e 100644
--- a/src/app/client/src/app/plugins/profile/components/submit-teacher-details/submit-teacher-details.component.ts
+++ b/src/app/client/src/app/plugins/profile/components/submit-teacher-details/submit-teacher-details.component.ts
@@ -13,7 +13,7 @@ import {
   UtilService, LayoutService
 } from '@sunbird/shared';
 import { IInteractEventEdata, IInteractEventObject, TelemetryService } from '@sunbird/telemetry';
-import { FieldConfig } from '@project-sunbird/common-form-elements-v9';
+import { FieldConfig } from '@project-sunbird/common-form-elements';
 import * as _ from 'lodash-es';
 import { Subject } from 'rxjs';
 import { takeUntil } from 'rxjs/operators';
diff --git a/src/app/client/src/app/plugins/profile/components/update-contact-details/update-contact-details.component.scss b/src/app/client/src/app/plugins/profile/components/update-contact-details/update-contact-details.component.scss
index 9ccc53b4992e4cac924ccc483dc206ce148bc566..4157fbec8ef24bcffbd33af1f41219bc6305bd3c 100644
--- a/src/app/client/src/app/plugins/profile/components/update-contact-details/update-contact-details.component.scss
+++ b/src/app/client/src/app/plugins/profile/components/update-contact-details/update-contact-details.component.scss
@@ -1,6 +1,6 @@
-@import "variables";
-@import "components/form";
-@import "pages/mat-modal";
+
+@use "~@project-sunbird/sb-styles/assets/varSass" as *;
+@use 'components/form' as *;
 
 .ui.grey.button {
   background: var(--gray-200);
diff --git a/src/app/client/src/app/plugins/profile/components/update-contact-details/update-contact-details.spec.ts b/src/app/client/src/app/plugins/profile/components/update-contact-details/update-contact-details.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..5c7db34638f0482f3fabbe5294a5d862733c6f30
--- /dev/null
+++ b/src/app/client/src/app/plugins/profile/components/update-contact-details/update-contact-details.spec.ts
@@ -0,0 +1,357 @@
+import { FormControl, FormGroup, FormsModule, ReactiveFormsModule, Validators } from '@angular/forms';
+import { MatDialog } from '@angular/material/dialog';
+import {  OtpService } from '@sunbird/core';
+import { ProfileService } from '@sunbird/profile';
+import { ResourceService, SharedModule, ToasterService } from '@sunbird/shared';
+import { of, throwError } from 'rxjs';
+import { ConfigService } from '../../../../modules/shared';
+import { UserService } from '../../../../modules/core';
+import { UpdateContactDetailsComponent } from './update-contact-details.component';
+
+describe('UpdateContactDetailsComponent', () => {
+    let component: UpdateContactDetailsComponent;
+    const resourceService: Partial<ResourceService> = {
+
+        'messages': {
+            'smsg': {
+                'm0047': 'Your Mobile Number has been updated',
+                'm0048': 'Your email address has been updated'
+            },
+            'emsg': {
+                'm0014': 'Could not update mobile number',
+                'm0015': 'Could not update email address'
+            }
+        },
+        'frmelmnts': {
+            'lbl': {
+                unableToUpdateMobile: 'unableToUpdateMobile',
+                unableToUpdateEmail: 'unableToUpdateEmail',
+                wrongPhoneOTP: 'wrongPhoneOTP',
+                wrongEmailOTP: 'wrongEmailOTP'
+
+            },
+            instn: {
+                't0083': 'Could not update email address',
+                't0084': 'Could not update email address',
+            }
+        }
+    };
+    const userService: Partial<UserService> = {
+        getIsUserExistsUserByKey: jest.fn().mockImplementation(() => of(true))
+    };
+    const otpService: Partial<OtpService> = {
+        generateOTP: jest.fn().mockImplementation(() => of(true))
+    };
+    const toasterService: Partial<ToasterService> = {
+        success: jest.fn(),
+        error: jest.fn()
+
+    };
+    const profileService: Partial<ProfileService> = {
+        updateProfile: jest.fn().mockImplementation(() => of({}))
+    };
+    const matDialog: Partial<MatDialog> = {};
+    const configService: Partial<ConfigService> = {
+        appConfig: {
+            OTPTemplate: {
+                updateContactTemplate: "otpContactUpdateTemplate"
+            }
+        },
+    };
+
+    beforeEach(() => {
+        component = new UpdateContactDetailsComponent(
+            resourceService as ResourceService,
+            userService as UserService,
+            otpService as OtpService,
+            toasterService as ToasterService,
+            profileService as ProfileService,
+            matDialog as MatDialog,
+            configService as ConfigService,
+        )
+
+        component.userProfile = {
+            email: 'emailid',
+            phone: '5253252321'
+        };
+    });
+
+    it('should call ngOnInit()', () => {
+        component.contactType = 'phone';
+        jest.spyOn(component, 'generateOTP');
+        component.ngOnInit();
+        expect(component.generateOTP).toHaveBeenCalled();
+    });
+
+    it('should call generateOTP()', () => {
+        component.contactType = 'phone';
+        component.contactTypeForm = new FormGroup({
+            phone: new FormControl('9000000000', [Validators.required, Validators.pattern(/^[0-9]{10}$/)]),
+            uniqueContact: new FormControl(true, [Validators.required])
+        });
+        component.generateOTP();
+    });
+
+    it('should call validateAndEditContact() for email', () => {
+        component.userProfile = {
+            email: 'emailid',
+        };
+        jest.spyOn(component, 'generateOTP');
+        component.ngOnInit();
+        expect(component.generateOTP).toHaveBeenCalled();
+    });
+
+    it('should call validateAndEditContact() for recoveryEmail', () => {
+        component.userProfile = {
+            recoveryEmail: 'emailid',
+        };
+        jest.spyOn(component, 'generateOTP');
+        component.ngOnInit();
+        expect(component.generateOTP).toHaveBeenCalled();
+    });
+
+    it('should call validateAndEditContact() for recoveryPhone', () => {
+        component.userProfile = {
+            recoveryPhone: '9456789532'
+        };
+        jest.spyOn(component, 'generateOTP');
+        component.ngOnInit();
+        expect(component.generateOTP).toHaveBeenCalled();
+    });
+    it('should show validation error message for form', () => {
+        component.contactType = 'phone';
+        jest.spyOn(component, 'onContactValueChange');
+        jest.spyOn(component, 'enableSubmitButton');
+        component.initializeFormFields();
+        expect(component.contactTypeForm.valid).toBeFalsy();
+        expect(component.onContactValueChange).toHaveBeenCalled();
+        expect(component.enableSubmitButton).toHaveBeenCalled();
+        expect(component.enableSubmitBtn).toBeFalsy();
+    });
+
+    it('should call vaidateUserContact()', () => {
+        component.contactType = 'phone';
+        component.contactTypeForm = new FormGroup({
+            phone: new FormControl('9000000000', [Validators.required, Validators.pattern(/^[0-9]{10}$/)]),
+            uniqueContact: new FormControl(true, [Validators.required])
+        });
+        component.vaidateUserContact();
+    });
+
+    it('should throw error for vaidateUserContact()', () => {
+        component.contactType = 'phone';
+        component.contactTypeForm = new FormGroup({
+            phone: new FormControl('9000000000', [Validators.required, Validators.pattern(/^[0-9]{10}$/)]),
+            uniqueContact: new FormControl(true, [Validators.required])
+        });
+        jest.spyOn(userService, 'getIsUserExistsUserByKey').mockReturnValue(throwError({
+            error: {
+                params: {
+                    status: 'USER_ACCOUNT_BLOCKED'
+                }
+            }
+        }));
+        component.vaidateUserContact();
+    });
+
+    it('should throw error for vaidateUserContact() without status', () => {
+        component.contactType = 'phone';
+        component.contactTypeForm = new FormGroup({
+            phone: new FormControl('9000000000', [Validators.required, Validators.pattern(/^[0-9]{10}$/)]),
+            uniqueContact: new FormControl(true, [Validators.required])
+        });
+        jest.spyOn(userService, 'getIsUserExistsUserByKey').mockReturnValue(throwError({}));
+        component.vaidateUserContact();
+    });
+
+    it('should show validation error message for email', () => {
+        component.contactType = 'email';
+        jest.spyOn(component, 'onContactValueChange');
+        jest.spyOn(component, 'enableSubmitButton');
+        component.initializeFormFields();
+        let errors = {};
+        const email = component.contactTypeForm.controls['email'];
+        email.setValue('');
+        errors = email.errors || {};
+        expect(errors['required']).toBeTruthy();
+        expect(component.onContactValueChange).toHaveBeenCalled();
+        expect(component.enableSubmitButton).toHaveBeenCalled();
+        expect(component.enableSubmitBtn).toBeFalsy();
+    });
+
+    it('should show validation error message for phone', () => {
+        component.contactType = 'phone';
+        jest.spyOn(component, 'onContactValueChange');
+        jest.spyOn(component, 'enableSubmitButton');
+        component.initializeFormFields();
+        let errors = {};
+        const phone = component.contactTypeForm.controls['phone'];
+        phone.setValue('');
+        errors = phone.errors || {};
+        expect(errors['required']).toBeTruthy();
+        expect(component.onContactValueChange).toHaveBeenCalled();
+        expect(component.enableSubmitButton).toHaveBeenCalled();
+        expect(component.enableSubmitBtn).toBeFalsy();
+    });
+
+    it('should show pattern match error message for phone', () => {
+        component.contactType = 'phone';
+        jest.spyOn(component, 'onContactValueChange');
+        jest.spyOn(component, 'enableSubmitButton');
+        component.initializeFormFields();
+        let errors = {};
+        const phone = component.contactTypeForm.controls['phone'];
+        phone.setValue('8989');
+        errors = phone.errors || {};
+        expect(errors['pattern']).toBeTruthy();
+        expect(component.onContactValueChange).toHaveBeenCalled();
+        expect(component.enableSubmitButton).toHaveBeenCalled();
+        expect(component.enableSubmitBtn).toBeFalsy();
+    });
+
+    it('should call onContactValueChange method', () => {
+        component.contactType = 'email';
+        jest.spyOn(component, 'onContactValueChange');
+        jest.spyOn(component, 'enableSubmitButton');
+        component.initializeFormFields();
+        expect(component.onContactValueChange).toHaveBeenCalled();
+        expect(component.enableSubmitBtn).toBeFalsy();
+        expect(component.enableSubmitButton).toHaveBeenCalled();
+    });
+    
+    it('set values with enabling the submit button ', () => {
+        component.contactType = 'email';
+        component.initializeFormFields();
+        const email = component.contactTypeForm.controls['email'];
+        email.setValue('abc@gmail.com');
+        const uniqueContact = component.contactTypeForm.controls['uniqueContact'];
+        uniqueContact.setValue(true);
+        expect(component.enableSubmitBtn).toBeTruthy();
+    });
+
+    it('should unsubscribe from all observable subscriptions', () => {
+        component.contactType = 'phone';
+        component.initializeFormFields();
+        jest.spyOn(component.unsubscribe, 'complete');
+        component.ngOnDestroy();
+        expect(component.unsubscribe.complete).toHaveBeenCalled();
+    });
+
+    it('should call closeModal', () => {
+        jest.spyOn(component.close, 'emit');
+        component.closeModal();
+        expect(component.close.emit).toHaveBeenCalled();
+    });
+
+    it('should call showParentForm', () => {
+        component.contactTypeForm = new FormGroup({
+            email: new FormControl('test@demo.com', [Validators.required, Validators.pattern(/^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[a-z]{2,4}$/)]),
+            uniqueContact: new FormControl(true, [Validators.required])
+        });
+        jest.spyOn(component, 'initializeFormFields');
+        component.showParentForm('true');
+        expect(component.showForm).toBe(true);
+    });
+
+    it('should call onSubmitForm', () => {
+        component.contactTypeForm = new FormGroup({
+            email: new FormControl('test@demo.com', [Validators.required, Validators.pattern(/^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[a-z]{2,4}$/)]),
+            uniqueContact: new FormControl(true, [Validators.required])
+        });
+        component.contactType = 'email';
+        jest.spyOn(component, 'generateOTP');
+        component.onSubmitForm();
+        expect(component.enableSubmitBtn).toBe(false);
+        expect(component.generateOTP).toHaveBeenCalled();
+    });
+
+    it('should call updateProfile for contact type phone', () => {
+        component.verifiedUser = true;
+        jest.spyOn(component, 'closeModal');
+        component.contactType = 'phone';
+        component.updateProfile({});
+        expect(component.closeModal).toHaveBeenCalled();
+        expect(profileService.updateProfile).toHaveBeenCalled();
+        expect(toasterService.success).toHaveBeenCalledWith('Your Mobile Number has been updated');
+    });
+
+    it('should call updateProfile for contact type phone and unverified user', () => {
+        component.verifiedUser = false;
+        component.contactType = 'phone';
+        component.updateProfile({});
+        expect(component.verifiedUser).toBe(true);
+        expect(component.showForm).toBe(true);
+    });
+
+    it('should call updateProfile for contact type email', () => {
+        component.verifiedUser = true;
+        jest.spyOn(component, 'closeModal');
+        component.contactType = 'email';
+        component.updateProfile({});
+        expect(component.closeModal).toHaveBeenCalled();
+        expect(profileService.updateProfile).toHaveBeenCalled();
+        expect(toasterService.success).toHaveBeenCalledWith('Your email address has been updated');
+    });
+
+
+    it('should close the modal and show appropriate message on update fail for type phone', () => {
+        component.verifiedUser = true;
+        jest.spyOn(component, 'closeModal');
+        jest.spyOn(profileService, 'updateProfile').mockReturnValue(throwError({}));
+        component.contactType = 'phone';
+        component.updateProfile({});
+        expect(component.closeModal).toHaveBeenCalled();
+        expect(profileService.updateProfile).toHaveBeenCalled();
+        expect(toasterService.error).toHaveBeenCalledWith('Could not update mobile number');
+    });
+
+    it('should close the modal and show appropriate message on update fail for type email', () => {
+        component.verifiedUser = true;
+        jest.spyOn(component, 'closeModal');
+        jest.spyOn(profileService, 'updateProfile').mockReturnValue(throwError({}));
+        component.contactType = 'email';
+        component.updateProfile({});
+        expect(component.closeModal).toHaveBeenCalled();
+        expect(profileService.updateProfile).toHaveBeenCalled();
+        expect(toasterService.error).toHaveBeenCalledWith('Could not update email address');
+    });
+
+    it('should call generateOTP', () => {
+        component.contactTypeForm = new FormGroup({
+            email: new FormControl('test@demo.com', [Validators.required, Validators.pattern(/^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[a-z]{2,4}$/)]),
+            uniqueContact: new FormControl(true, [Validators.required])
+        });
+        component.contactType = 'email';
+        jest.spyOn(component, 'prepareOtpData');
+        component.generateOTP();
+        expect(otpService.generateOTP).toHaveBeenCalled();
+        expect(component.prepareOtpData).toHaveBeenCalled();
+        expect(component.showForm).toBe(false);
+    });
+
+    it('should show appropriate message when fails to generate OTP', () => {
+        component.contactTypeForm = new FormGroup({
+            email: new FormControl('test@demo.com', [Validators.required, Validators.pattern(/^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[a-z]{2,4}$/)]),
+            uniqueContact: new FormControl(true, [Validators.required])
+        });
+        component.contactType = 'email';
+        jest.spyOn(otpService, 'generateOTP').mockReturnValue(throwError({ error: { params: { status: 'EMAIL_IN_USE', errmsg: 'error' } } }));
+        component.generateOTP();
+        expect(otpService.generateOTP).toHaveBeenCalled();
+        expect(component.enableSubmitBtn).toBe(true);
+        expect(toasterService.error).toHaveBeenCalledWith('error');
+    });
+
+    it('should show appropriate message when fails to generate OTP', () => {
+        component.contactTypeForm = new FormGroup({
+            email: new FormControl('test@demo.com', [Validators.required, Validators.pattern(/^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[a-z]{2,4}$/)]),
+            uniqueContact: new FormControl(true, [Validators.required])
+        });
+        component.contactType = 'email';
+        jest.spyOn(otpService, 'generateOTP').mockReturnValue(throwError({ error: { params: { errmsg: 'error' } } }));
+        component.generateOTP();
+        expect(otpService.generateOTP).toHaveBeenCalled();
+        expect(component.enableSubmitBtn).toBe(false);
+        expect(toasterService.error).toHaveBeenCalledWith('error');
+    });
+});
\ No newline at end of file
diff --git a/src/app/client/src/app/plugins/profile/profile.module.ts b/src/app/client/src/app/plugins/profile/profile.module.ts
index ac2086d5b7b0acdbb8c218b0e0b9fbaa244f6089..c9b17161e1b0f1873478c420064d5465d742a8dd 100644
--- a/src/app/client/src/app/plugins/profile/profile.module.ts
+++ b/src/app/client/src/app/plugins/profile/profile.module.ts
@@ -16,11 +16,11 @@ import { FormsModule, ReactiveFormsModule } from '@angular/forms';
 import { TelemetryModule } from '@sunbird/telemetry';
 import { AvatarModule } from 'ngx-avatar';
 import { ContentSearchModule } from '@sunbird/content-search';
-import {CommonConsumptionModule} from '@project-sunbird/common-consumption-v9';
+import {CommonConsumptionModule} from '@project-sunbird/common-consumption';
 import { CertificateDirectivesModule } from 'sb-svg2pdf';
 import { CsModule } from '@project-sunbird/client-services';
 import { CsLibInitializerService } from '../../service/CsLibInitializer/cs-lib-initializer.service';
-import { CommonFormElementsModule } from '@project-sunbird/common-form-elements-v9';
+import { CommonFormElementsModule } from '@project-sunbird/common-form-elements';
 import {LocationModule} from '../location';
 import { MatTooltipModule } from '@angular/material/tooltip';
 
diff --git a/src/app/client/src/app/plugins/profile/services/profile/profile.service.spec.ts b/src/app/client/src/app/plugins/profile/services/profile/profile.service.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..4514d6dd7a2d27800333f2ff6b9d692c2707ecdc
--- /dev/null
+++ b/src/app/client/src/app/plugins/profile/services/profile/profile.service.spec.ts
@@ -0,0 +1,162 @@
+import { of } from 'rxjs';
+import { ProfileService } from '@sunbird/profile';
+import { LearnerService, UserService, FormService } from '@sunbird/core';
+import { mockRes } from './profile.service.spec.data';
+import { ConfigService } from '../../../../modules/shared';
+describe('ProfileService', () => {
+    let profileService: ProfileService;
+
+    const mockLearnerService: Partial<LearnerService> = {
+        get: jest.fn(),
+        post: jest.fn(),
+        patch: jest.fn()
+    };
+    const mockUserService: Partial<UserService> = {
+        getUserProfile: jest.fn(),
+    };
+    const mockConfigService: Partial<ConfigService> = {
+        urlConFig: {
+            URLS: {
+                USER: {
+                    SKILLS: "data/v1/skills",
+                },
+            }
+        }
+    };
+    const mockFormService: Partial<FormService> = {
+        getFormConfig: jest.fn()
+    };
+
+    beforeEach(() => {
+        profileService = new ProfileService(
+            mockLearnerService as LearnerService,
+            mockUserService as UserService,
+            mockConfigService as ConfigService,
+            mockFormService as FormService
+        );
+    });
+
+    it('should create ProfileService', () => {
+        expect(profileService).toBeTruthy();
+    });
+
+    it('should call getSkills method', () => {
+        jest.spyOn(mockLearnerService, 'get').mockReturnValue(of(mockRes.successData));
+        profileService.getSkills().subscribe(apiResponse => {
+            expect(apiResponse.responseCode).toBe('OK');
+            expect(apiResponse.result.response).toBe('SUCCESS');
+        });
+    });
+
+    it('should call add method', () => {
+        jest.spyOn(mockLearnerService, 'post').mockReturnValue(of(mockRes.successData));
+        const request = {
+            'skillName': ['skills'],
+            'endorsedUserId': '159e93d1-da0c-4231-be94-e75b0c226d7c'
+        };
+        profileService.add(request).subscribe(apiResponse => {
+            expect(apiResponse.responseCode).toBe('OK');
+            expect(apiResponse.result.response).toBe('SUCCESS');
+        });
+    });
+
+    it('should call updateProfile method', () => {
+        jest.spyOn(mockLearnerService, 'patch').mockReturnValue(of(mockRes.successData));
+        const request = {
+            profileSummary: 'summary'
+        };
+        profileService.updateProfile(request).subscribe(apiResponse => {
+            expect(apiResponse.responseCode).toBe('OK');
+            expect(apiResponse.result.response).toBe('SUCCESS');
+        });
+    });
+
+    it('should call updatePrivateProfile method', () => {
+        jest.spyOn(mockLearnerService, 'patch').mockReturnValue(of(mockRes.successData));
+        const request = {
+            profileSummary: 'summary'
+        };
+        profileService.updatePrivateProfile(request).subscribe(apiResponse => {
+            expect(apiResponse.responseCode).toBe('OK');
+            expect(apiResponse.result.response).toBe('SUCCESS');
+        });
+    });
+
+    it('should call getUserLocation method', () => {
+        jest.spyOn(mockLearnerService, 'post').mockReturnValue(of(mockRes.successData));
+        const request = {
+            profileSummary: 'location'
+        };
+        profileService.getUserLocation(request).subscribe(apiResponse => {
+            expect(apiResponse.responseCode).toBe('OK');
+            expect(apiResponse.result.response).toBe('SUCCESS');
+        });
+    });
+
+    it('should call downloadCertificates method', () => {
+        jest.spyOn(mockLearnerService, 'post').mockReturnValue(of(mockRes.successData));
+        const request = {
+            profileSummary: 'download'
+        };
+        profileService.downloadCertificates(request).subscribe(apiResponse => {
+            expect(apiResponse.responseCode).toBe('OK');
+            expect(apiResponse.result.response).toBe('SUCCESS');
+        });
+    });
+
+    it('should call updateProfileFieldVisibility method', () => {
+        jest.spyOn(mockLearnerService, 'post').mockReturnValue(of(mockRes.successData));
+        const request = {
+            private: ['address'],
+            userId: '159e93d1-da0c-4231-be94-e75b0c226d7c'
+        };
+        profileService.updateProfileFieldVisibility(request).subscribe(apiResponse => {
+            expect(apiResponse.responseCode).toBe('OK');
+            expect(apiResponse.result.response).toBe('SUCCESS');
+        });
+    });
+    it('should call declarations method', () => {
+        jest.spyOn(mockLearnerService, 'patch').mockReturnValue(of(mockRes.successData));
+        jest.spyOn(mockUserService, 'getUserProfile');
+        const request = {
+            profileSummary: 'summary'
+        };
+        profileService.declarations(request).subscribe(apiResponse => {
+            mockUserService.getUserProfile();
+            expect(apiResponse.responseCode).toBe('OK');
+            expect(apiResponse.result.response).toBe('SUCCESS');
+        });
+    });
+
+    it('should call getPersonas method', () => {
+        jest.spyOn(mockFormService, 'getFormConfig').mockReturnValue(of(mockRes.successData));
+        profileService.getPersonas().subscribe(apiResponse => {
+            expect(apiResponse.responseCode).toBe('OK');
+            expect(apiResponse.result.response).toBe('SUCCESS');
+        });
+    });
+
+    it('should call getPersonaTenantForm method', () => {
+        jest.spyOn(mockFormService, 'getFormConfig').mockReturnValue(of(mockRes.successData));
+        profileService.getPersonaTenantForm().subscribe(apiResponse => {
+            expect(apiResponse.responseCode).toBe('OK');
+            expect(apiResponse.result.response).toBe('SUCCESS');
+        });
+    });
+
+    it('should call getSelfDeclarationForm method', () => {
+        jest.spyOn(mockFormService, 'getFormConfig').mockReturnValue(of(mockRes.successData));
+        profileService.getSelfDeclarationForm('submit').subscribe(apiResponse => {
+            expect(apiResponse.responseCode).toBe('OK');
+            expect(apiResponse.result.response).toBe('SUCCESS');
+        });
+    });
+
+    it('should call getFaqReportIssueForm method', () => {
+        jest.spyOn(mockFormService, 'getFormConfig').mockReturnValue(of(mockRes.successData));
+        profileService.getFaqReportIssueForm('submit').subscribe(apiResponse => {
+            expect(apiResponse.responseCode).toBe('OK');
+            expect(apiResponse.result.response).toBe('SUCCESS');
+        });
+    });
+});
\ No newline at end of file
diff --git a/src/app/client/src/app/service/CsLibInitializer/cs-lib-initializer.service.spec.ts b/src/app/client/src/app/service/CsLibInitializer/cs-lib-initializer.service.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..90d5aaeb6ecc0803d0e9b677c3c6c697b705d7a5
--- /dev/null
+++ b/src/app/client/src/app/service/CsLibInitializer/cs-lib-initializer.service.spec.ts
@@ -0,0 +1,32 @@
+import { CsLibInitializerService } from './cs-lib-initializer.service';
+import { UserService } from '@sunbird/core';
+import { CsModule } from '@project-sunbird/client-services';
+import { of } from 'rxjs';
+
+describe('CsLibInitializerService', () => {
+    let csLibInitializerService: CsLibInitializerService;
+    const mockUserService: Partial<UserService> = {
+        userData$: of({
+            userProfile: {} as any
+        }) as any,
+        appId: '123',
+    };
+    beforeEach(() => {
+        csLibInitializerService = new CsLibInitializerService(
+            mockUserService as UserService)
+    });
+
+    it('should create CsLibInitializerService', () => {
+        expect(csLibInitializerService).toBeTruthy();
+    });
+
+    it('should initialize CsModule', () => {
+        jest.spyOn(document, 'getElementById').mockReturnValue(<HTMLElement><unknown>123)
+        CsModule.instance['_isInitialised'] = false;
+        jest.spyOn(CsModule.instance, 'init');
+        csLibInitializerService.initializeCs();
+        expect(CsModule.instance.init).toHaveBeenCalled();
+        expect(CsModule.instance.isInitialised).toBeTruthy();
+
+    });
+});
\ No newline at end of file
diff --git a/src/app/client/src/app/service/popup-control.service.spec.ts b/src/app/client/src/app/service/popup-control.service.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..c324dd91cd011e715ccdcb4a1a3b61c5da618bdb
--- /dev/null
+++ b/src/app/client/src/app/service/popup-control.service.spec.ts
@@ -0,0 +1,28 @@
+import { PopupControlService } from './popup-control.service';
+describe('PopupControlService', () => {
+    let popupControlService: PopupControlService;
+    beforeEach(() => popupControlService = new PopupControlService());
+
+    it('should create PopupControlService', () => {
+        expect(popupControlService).toBeTruthy();
+    });
+
+    it('should change the status of checkPopupStatus to true by calling changePopupStatus', () => {
+        jest.spyOn(popupControlService, 'changePopupStatus');
+        popupControlService.changePopupStatus(true);
+        const popupStatus = popupControlService.checkPopupStatus;
+        popupStatus.subscribe(result => {
+            expect(result).toBeTruthy();
+        });
+    });
+
+    it('should change the status of checkPopupStatus to false by calling changePopupStatus', () => {
+        jest.spyOn(popupControlService, 'changePopupStatus');
+        popupControlService.changePopupStatus(true);
+        const popupStatus = popupControlService.checkPopupStatus;
+        popupStatus.subscribe(result => {
+            expect(result).toBeFalsy();
+        });
+    });
+
+});
\ No newline at end of file
diff --git a/src/app/client/src/assets/styles/_variables.scss b/src/app/client/src/assets/styles/_variables.scss
deleted file mode 100644
index a3f15aa59d718a665ec4078e98f60a7314f13dd8..0000000000000000000000000000000000000000
--- a/src/app/client/src/assets/styles/_variables.scss
+++ /dev/null
@@ -1,334 +0,0 @@
-/* css3 variable & sass variables */
-:root {
-  font-size: 16px;
-  --font-stack-en: "Noto Sans", "Noto Sans Devanagari", "Noto Sans Tamil",
-    "Noto Sans Bengali", "Noto Sans Malayalam", "Noto Sans Gurmukhi",
-    "Noto Sans Gujarati", "Noto Sans Telugu", "Noto Sans Kannada",
-    "Noto Sans Oriya", "Noto Nastaliq Urdu", -apple-system, BlinkMacSystemFont,
-    "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue",
-    sans-serif;
-  --font-stack-hi: "Noto Sans Devanagari", "Noto Sans", "Noto Sans Tamil",
-    "Noto Sans Bengali", "Noto Sans Malayalam", "Noto Sans Gurmukhi",
-    "Noto Sans Gujarati", "Noto Sans Telugu", "Noto Sans Kannada",
-    "Noto Sans Oriya", "Noto Nastaliq Urdu", -apple-system, BlinkMacSystemFont,
-    "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue",
-    sans-serif;
-  --font-stack-ur: "Noto Sans", "Noto Nastaliq Urdu", "Noto Sans Devanagari",
-    "Noto Sans Tamil", "Noto Sans Bengali", "Noto Sans Malayalam",
-    "Noto Sans Gurmukhi", "Noto Sans Gujarati", "Noto Sans Telugu",
-    "Noto Sans Kannada", "Noto Sans Oriya", -apple-system, BlinkMacSystemFont,
-    "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue",
-    sans-serif;
-
-  // base colors
-  --blue: #024f9d;
-  --green: #008840;
-  --orange: #e55a28;
-  --red: #ff4558;
-  --indigo: #6610f2;
-  --purple: #6f42c1;
-  --pink: #e83e8c;
-  --yellow: #ffc107;
-  --teal: #20c997;
-  --cyan: #17a2b8;
-  --black: #000000;
-  --white: #ffffff;
-
-  // gray colors shades
-  --gray-hs: 0, 0%;
-  --gray: hsl(var(--gray-hs), 20%);
-  --gray-0: hsl(var(--gray-hs), 95%); // place holder active bg #F2F2F2
-  --gray-100: hsl(var(--gray-hs), 80%); // disable btn bg, icon color #CCCCCC
-  --gray-200: hsl(var(--gray-hs), 60%); // disable text, place holder text #999999
-  --gray-300: hsl(var(--gray-hs), 59%); // sub heading 2 #969696
-  --gray-400: hsl(var(--gray-hs), 40%); // sub heading #666666
-  --gray-800: var(--gray); // text color #333333
-
-  // basetheme
-  --primary-color: #024f9d;
-  --secondary-color: #008840;
-  --tertiary-color: #e55a28;
-
-  // primary colors
-  --primary-0: #f3f7fa; // bg
-  --primary-100: #edf4f9; // default button bg
-  --primary-200: #80a7ce; // divider
-  --primary-250: #d3e7f4; //pagination bg color
-  --primary-300: #7ab4ee; // outline, focus fields
-  --primary-400: var(--primary-color); // button bg, heading, table titles, links, toggles
-  --primary-600: #005391; // on press
-  --primary-800: #002e50; // hover
-
-  // secondary colors
-  --secondary-0: #e1ffdf; // toast bg, label
-  --secondary-100: #00c786; // button bg bg, toast
-  --secondary-200: #07bc81; // button bg
-  --secondary-400: var(--secondary-color); // hover
-
-  // tertiary colors
-  --tertiary-0: #feedd7; // toast bg, label
-  --tertiary-100: #ffa11d; // buttong bg, toast
-  --tertiary-400: var(--tertiary-color); // icon, label, notification bg
-
-  // red colors
-  --red-0: #fbccd1; // toast bg
-  --red-100: #ff6979; // buttong bg, toast
-  --red-400: var(--red); // icon color, lable, notification
-
-  // status colors
-  --info-color: var(--blue);
-  --success-color: var(--green);
-  --warning-color: var(--orange);
-  --danger-color: var(--red);
-
-  // element based variables
-  --body-background-color: var(--primary-0);
-  --default-text-color: var(--gray-800);
-  --bg-body: var(--primary-0);
-  --body-color: var(--gray-800);
-
-  // alpha
-  --alpha0: 0;
-  --alpha25: 0.25;
-  --alpha50: 0.5;
-  --alpha75: 0.75;
-
-  // fonts
-  --font-default-size: 0.875rem;
-  --font-size-base: var(--font-default-size); // 14px Assumes the browser default, typically `16px`
-  --font-weight-light: 300;
-  --font-weight-normal: 400;
-  --font-weight-bold: 700;
-  --font-weight-base: var(--font-weight-normal);
-  --line-height-base: calc(var(--font-size-base) * 1.61803398875);
-  --h1-font-size: 2rem; // 32px
-  --h2-font-size: 1.75rem; // 28px
-  --h3-font-size: 1.5rem; // 24px
-  --h4-font-size: 1.2rem; // 20px
-  --h5-font-size: 1rem; // 16px
-  --h6-font-size: var(--font-size-base); // 14px
-  --font-size-lg: var(--h4-font-size); //20px
-  --font-size-md: var(--h5-font-size); // 16px
-  --font-size-normal: var(--font-size-base); // 14px
-  --font-size-sm: 0.75rem; // 12px
-  --font-size-xs: 0.625rem; // 10px
-  --p-font-size: var(--font-size-base); //14px
-
-  // base variables
-  --base-font-size: 0.875rem;
-  --base-block-space: 0.5rem; //8px,
-  --icon-svg-xxs: 0.75rem;
-  --icon-svg-xs: calc(var(--base-block-space) * 2);
-  --icon-svg-sm: calc(var(--base-block-space) * 3);
-  --icon-svg-md: calc(var(--base-block-space) * 4);
-  --icon-svg-lg: calc(var(--base-block-space) * 5);
-  --icon-svg-xl: calc(var(--base-block-space) * 6);
-
-  //random colors and backgrounds
-  --rc-96C8DA: #96C8DA;
-  --rc-0076FE: #0076FE;
-  --rc-E5EDF5: #E5EDF5;
-  --rc-7c7b7b: #7c7b7b;
-  --rc-f5f5f5: #f5f5f5;
-  --rc-fdfdfd: #fdfdfd;
-  --rc-dedede: #dedede;
-  --rc-F5F9FC: #F5F9FC;
-  --rc-c4c4c4: #c4c4c4;
-  --rc-d8d8d8: #d8d8d8;
-  --rc-e9e5e5: #e9e5e5;
-  --rc-dddddd: #dddddd;
-  --rc-7b86f4: #7b86f4;
-  --rc-d0d0d0: #d0d0d0;
-  --rc-5c8db7: #5c8db7;
-  --rc-91aecc: #91aecc;
-  --rc-f9f9f9: #f9f9f9;
-  --rc-d4d3d3: #d4d3d3;
-  --rc-FAFAFA: #FAFAFA;
-  --rc-866A6A: #866a6a;
-  --rc-979797: #979797;
-  --rc-e0e1e2: #e0e1e2;
-  --rc-00BD7F: #00BD7F;
-  --rc-9F9F9F: #9F9F9F;
-  --rc-F3F8FF: #F3F8FF;
-  --rc-80A7CE: #80A7CE;
-  --rc-9b9b9b: #9b9b9b;
-  --rc-2ca58d: #2ca58d;
-  --rc-007AFF: #007AFF;
-  --rc-bdbdbd: #bdbdbd;
-  --rc-cecece: #cecece;
-  --rc-2972a4: #2972a4;
-  --rc-E0F1FD: #E0F1FD;
-  --rc-C8D6EA: #C8D6EA;
-  --rc-e2e3e5: #e2e3e5;
-  --rc-BCBEC0: #BCBEC0;
-  --rc-d4d4d5: #d4d4d5;
-  --rc-d4d8da: #d4d8da;
-  --rc-bfe1cf: #bfe1cf;
-  --rc-289fd9: #289fd9;
-  --rc-e68900: #e68900;
-  --rc-2f4272: #2f4272;
-  --rc-e0e0e0: #e0e0e0;
-  --rc-2361ff: #2361ff;
-  --rc-c2c2c2: #c2c2c2;
-  --rc-e5e5e5: #e5e5e5;
-  --rc-ffb300: #ffb300;
-  --rc-d8dee2: #d8dee2;
-  --rc-252525: #252525;
-  --rc-fcf2d6: #fcf2d6;
-  --rc-add8e6: #add8e6;
-  --rc-afd9e7: #afd9e7;
-  --rc-D9E4F2: #D9E4F2;
-  --rc-88B7E6: #88B7E6;
-  --rc-4a4a4a: #4a4a4a;
-  --rc-fff6f6: #fff6f6;
-  --rc-f7f7f7: #f7f7f7;
-  --rc-66c7f4: #66c7f4;
-  --rc-1B4785: #1B4785;
-  --rc-a9a9a9: #a9a9a9;
-  --rc-eeeeee: #eeeeee;
-  --rc-1b1c1d: #1b1c1d;
-  --rc-dededf: #dededf;
-  --rc-aaaaaa: #aaaaaa;
-  --rc-042D55: #042D55;
-  --rc-eeeeee: #eeeeee;
-  --rc-bbbbbb: #bbbbbb;
-  --rc-009D53: #009D53;
-  --rc-E0EFFF: #E0EFFF;
-  --rc-196DAB: #196DAB;
-  --rc-c2c2c2: #c2c2c2;
-  --rc-e5e5e5: #e5e5e5;
-  --rc-c3c3c3: #c3c3c3;
-  --rc-00abc7:#00abc7;
-  --rc-FCE6E6:#FCE6E6;
-  --rc-DECACA:#DECACA;
-  --rc-424242:#424242;
-  --rc-F5D7D7:#F5D7D7;
-  --rc-F7FFF5:#F7FFF5;
-  --rc-D3DED1:#D3DED1;
-  --rc-EBF6E0:#EBF6E0;
-  --rc-F6F6F6:#F6F6F6;
-  --rc-33B6CC:#33B6CC;
-  --rc-2dadc2:#2dadc2;
-  --rc-0fbad6:#0fbad6;
-  --rc-f7ffec:#f7ffec;
-  --rc-d2ddc7:#d2ddc7;
-  --rc-ffe1e1:#ffe1e1;
-  --rc-e6c8c8:#e6c8c8;
-  --rc-f56b56:#f56b56;
-  --rc-dc523d:#dc523d;
-  --rc-e65c47:#e65c47;
-  --rc-565c70:#565c70;
-  --rc-6D7278:#6D7278;
-  --rc-E08A20:#E08A20;
-  --rc-DD680F:#DD680F;
-  --rc-dad9cb:#dad9cb;
-  --rc-FFD954:#FFD954;
-  --rc-rgba-black: 0, 0, 0; // var(--black)
-  --rc-rgba-white: 255, 255, 255; // var(--white)
-  --rc-rgba-gray: 51, 51, 51; // var(--gray-300)
-  --rc-rgba-primary: 2, 79, 157; // var(--primary-color)
-  --rc-rgba-primary-300: 41, 114, 164; //var(--primary-300)
-  --rc-rgba-gray-300: 34, 36, 38; //var(--gray-100)
-  --rc-rgba-866a6a: 134, 106, 106;
-  --rc-rgba-d0d0d0: 208, 208, 208;
-  --rc-rgba-7b86f4: 123, 134, 244;
-  --rc-rgba-C8D6EA: 200, 214, 234;
-  --ui-dropdown-selection-icon:#49B1F2;
-}
-
-// Variables
-$font-stack-en: var(--font-stack-en);
-$font-stack-hi: var(--font-stack-hi);
-$font-stack-ur: var(--font-stack-ur);
-
-// Base Colors
-$blue: var(--primary-color);
-$green: var(--secondary-color);
-$orange: var(--tertiary-color);
-$red: var(--red);
-$black: var(--black);
-$white: var(--white);
-$indigo: var(--indigo);
-$purple: var(--purple);
-$pink: var(--pink);
-$yellow: var(--yellow);
-$teal: var(--teal);
-$cyan: var(--cyan);
-$gray: var(--gray);
-
-// brand Colors
-$primary-color: var(--primary-color);
-$secondary-color: var(--secondary-color);
-$tertiary-color: var(--tertiary-color);
-// Neutral Colors
-$white-color: var(--white);
-// gray colors shades
-$gray-0: var(--gray-0); // place holder active bg #F2F2F2
-$gray-100: var(--gray-100); // disable btn bg, icon color #CCCCCC
-$gray-200: var(--gray-200); // disable text, place holder text #999999
-$gray-300: var(--gray-300); // sub heading 2 #969696
-$gray-400: var(--gray-400); // sub heading #666666
-$gray-800: var(--gray-800); // text color #333333
-
-// primary colors shades
-$primary-0: var(--primary-0); // bg
-$primary-100: var(--primary-100); // default button bg
-$primary-200: var(--primary-200); // divider
-$primary-250: var(--primary-250); //pagination bg color
-$primary-300: var(--primary-300); // outline, focus fields
-$primary-400: var(--primary-400); // button bg, heading, table titles, links, toggles
-$primary-600: var(--primary-600); // on press
-$primary-800: var(--primary-800); // hover
-
-// secondary colors shades
-$secondary-0: var(--secondary-0); // toast bg, label
-$secondary-100: var(--secondary-100); // buttong bg, toast
-$secondary-200: var(--secondary-200); // button bg
-$secondary-400: var(--secondary-400); // hover
-
-// tertiary colors shades
-$tertiary-0: var(--tertiary-0); // toast bg, label
-$tertiary-100: var(--tertiary-100); // buttong bg, toast
-$tertiary-400: var(--tertiary-400); // icon, label, notification bg
-
-// red colors shades
-$red-0: var(--red-0); // toast bg
-$red-100: var(--red-100); // buttong bg, toast
-$red-400: var(--red-400); // icon color, lable, notification
-
-// input border width
-$input-border-width: 0.0625rem;
-
-// Status Colors
-$info-color: var(--primary-400);
-$success-color: var(--secondary-200);
-$warning-color: var(--tertiary-400);
-$danger-color: var(--red-100);
-$body-background-color: var(--primary-0);
-$default-text-color: var(--gray-800);
-$bg-body: var(--primary-0);
-$body-color: var(--gray-800);
-
-/* Fonts */
-$font-default-size: var(--font-default-size);
-$font-size-base: var(--font-size-base); // 14px Assumes the browser default, typically `16px`
-$font-weight-light: var(--font-weight-light);
-$font-weight-normal: var(--font-weight-normal);
-$font-weight-bold: var(--font-weight-bold);
-$font-weight-base: var(--font-weight-normal);
-$line-height-base: calc(var(--font-size-base) * 1.61803398875);
-$h1-font-size: var(--h1-font-size); // 32px
-$h2-font-size: var(--h2-font-size); // 28px
-$h3-font-size: var(--h3-font-size); // 24px
-$h4-font-size: var(--h4-font-size); // 20px
-$h5-font-size: var(--h5-font-size); // 16px
-$h6-font-size: var(--font-size-base); // 14px
-$font-size-lg: var(--h4-font-size); //20px
-$font-size-md: var(--h5-font-size); // 16px
-$font-size-normal: var(--font-size-base); // 14px
-$font-size-sm: var(--font-size-sm); // 12px
-$font-size-xs: var(--font-size-xs); // 10px
-$p-font-size: var(--font-size-base); //14px
-
-// spaces
-$base-block-space: 0.5rem;
diff --git a/src/app/client/src/assets/styles/components/_accordion.scss b/src/app/client/src/assets/styles/components/_accordion.scss
index 42cdd5862465315710c3d6d9e6c124e32487ebba..405686412ce72e89f69331ab9f818e81e5985093 100644
--- a/src/app/client/src/assets/styles/components/_accordion.scss
+++ b/src/app/client/src/assets/styles/components/_accordion.scss
@@ -1,3 +1,5 @@
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
+
 /* accordion styles */
 
 .ui.styled.accordion .accordion .content,
diff --git a/src/app/client/src/assets/styles/components/_banner.scss b/src/app/client/src/assets/styles/components/_banner.scss
index 2afbe4eacbfbd5fe1cdfe28acab54e48daa0b091..1b25ee2ca5bbde0281d65760575a02ce3ed22bf2 100644
--- a/src/app/client/src/assets/styles/components/_banner.scss
+++ b/src/app/client/src/assets/styles/components/_banner.scss
@@ -1,4 +1,5 @@
 
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 /* banner styles */
 
 .sb-banner {
diff --git a/src/app/client/src/assets/styles/components/_breadcrumb.scss b/src/app/client/src/assets/styles/components/_breadcrumb.scss
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/src/app/client/src/assets/styles/components/_bulk-upload.scss b/src/app/client/src/assets/styles/components/_bulk-upload.scss
index aba89b3107b8c1301ee3166c1273a5bff313e643..2f7b69894044f057e701dcd1048ee408bd14fc2d 100644
--- a/src/app/client/src/assets/styles/components/_bulk-upload.scss
+++ b/src/app/client/src/assets/styles/components/_bulk-upload.scss
@@ -1,4 +1,4 @@
-
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 .sb-bulk-upload {
     .bulk-upload-title {
       font-size: var(--h5-font-size);
diff --git a/src/app/client/src/assets/styles/components/_buttons.scss b/src/app/client/src/assets/styles/components/_buttons.scss
deleted file mode 100644
index 203b974cd380c780c17b342c2cfd6a64e8e94aea..0000000000000000000000000000000000000000
--- a/src/app/client/src/assets/styles/components/_buttons.scss
+++ /dev/null
@@ -1,435 +0,0 @@
-@import "../mixins/mixins";
-
-// Dashed Buttons
-$sb-btn-dashed-border: 0.5 solid $primary-color;
-$sb-btn-dashed-background-color: $white-color;
-$sb-btn-dashed-color: $primary-400;
-// Button groups
-$sb-btn-group-border-width: 0.0625rem;
-$sb-btn-group-border-width: 1px;
-$sb-btn-group-border-color: $gray-100;
-$sb-btn-group-btn-background: $white-color;
-$sb-btn-group-btn-color: $primary-400;
-$sb-btn-group-btn-active-background-color: $primary-100;
-
-/* buttons sytle guide */
-input[type="submit"],
-input[type="reset"],
-input[type="button"] {
-  &.btn-block {
-    width: 100%;
-  }
-}
-
-// anchor button style
-a.sb-btn {
-  text-align: center;
-  display: inline-flex;
-  justify-content: center;
-  align-items: center;
-  flex-wrap: wrap;
-  &:hover{
-    text-decoration: none;
-  }
-}
-
-button.sb-btn:focus {
-  outline: none !important;
-}
-
-.sb-btn {
-  white-space: nowrap;
-  -webkit-tap-highlight-color: transparent;
-  user-select: none;
-  outline: 0;
-  display: inline-block;
-  border: calculateRem(1px) solid;
-  cursor: pointer;
-  min-width: calculateRem(64px);
-  @include border-radius(0.125rem);
-  position: relative;
-  line-height: 1;
-
-  text: {
-    transform: inherit;
-    decoration: none;
-  }
-
-  &:hover {
-    opacity: 1;
-  }
-
-  &:after {
-    content: "";
-    position: absolute;
-    top: 50%;
-    left: 50%;
-    width: calculateRem(3px);
-    height: calculateRem(3px);
-    background: $primary-600;
-    opacity: 0;
-    border-radius: 50%;
-    transform: scale(1, 1) translate(-50%);
-    transform-origin: 50% 50%;
-  }
-
-  &.flat {
-    border-radius: 0;
-  }
-
-  &.sb-btn-radius {
-    border-radius: 2rem;
-  }
-}
-
-// Create button color classess from the below list
-// btnname basecolor hovercolor outlinecolor
-$btns: "gray"var(--gray-200) var(--gray-400) var(--gray-100),
-"primary"var(--primary-400) var(--primary-800) var(--primary-100),
-"secondary"var(--secondary-200) var(--secondary-400) var(--secondary-0),
-"tertiary"var(--tertiary-100) var(--tertiary-400) var(--tertiary-0),
-"red"var(--red-100) var(--red-400) var(--red-0),
-"info"var(--primary-400) var(--primary-800) var(--primary-100),
-"success"var(--secondary-200) var(--secondary-400) var(--secondary-100),
-"warning"var(--tertiary-100) var(--tertiary-400) var(--tertiary-0),
-"error"var(--red-100) var(--red-400) var(--red-0);
-
-@each $btn in $btns {
-  $btntypes: btn btn-outline btn-dashed btn-link btn-square;
-
-  @each $btntype in $btntypes {
-    .sb-#{nth($btntype, 1)}-#{nth($btn, 1)} {
-      @if $btntype==btn {
-        background-color: #{nth($btn, 2)};
-        border-color: #{nth($btn, 2)};
-        color: var(--white);
-
-        &:hover,
-        &:active,
-        &.active {
-          background-color: #{nth($btn, 3)};
-          border: 1px solid transparent;
-          color: var(--white);
-        }
-      }
-
-      @else if $btntype==btn-outline {
-        background-color: var(--white);
-        color: #{nth($btn, 2)};
-        border-color: #{nth($btn, 2)};
-
-        &:hover,
-        &:active,
-        &.active {
-          color: #{nth($btn, 3)};
-          background-color: #{nth($btn, 4)};
-        }
-      }
-
-      @else if $btntype==btn-link {
-        background: none;
-        border: 0px;
-        color: #{nth($btn, 2)};
-
-        &:hover,
-        &:active,
-        &.active {
-          background-color: #{nth($btn, 4)};
-        }
-      }
-
-      @else if $btntype==btn-dashed {
-        border-style: dashed;
-        border-width: calculateRem(1px);
-        background-color: var(--white);
-        border-color: #{nth($btn, 2)};
-        color: #{nth($btn, 2)};
-
-        &:hover,
-        &:active,
-        &.active {
-          background-color: #{nth($btn, 4)};
-        }
-      }
-    }
-  }
-}
-
-// Create button sizes classess from the below list
-// class height padding fontsize width
-$btnsizes: "xs"1.5rem "0.25rem 0.5rem"0.75rem null,
-"normal"2rem "0.5rem 1rem"0.75rem null,
-"sm"2.5rem "0.5rem 1rem"1rem null,
-"md"3rem "0.5rem 1rem"1rem null,
-"lg"3.5rem "1rem 1.5rem"1.25rem null,
-"full"1.5rem "0.5rem 1rem"1.25rem 100%;
-
-@each $btn in $btnsizes {
-  .sb-btn-#{nth($btn, 1)} {
-    height: #{nth($btn, 2)};
-    padding: #{nth($btn, 3)};
-    font-size: #{nth($btn, 4)};
-    width: #{nth($btn, 5)};
-  }
-}
-
-// Create button square classess from the below list
-// class height width fontsize padding
-$btnSquaresizes: "xs"1.5rem 1.5rem 1rem null,
-"normal"4rem 4rem 0.75rem null,
-"sm"3rem 3rem 0.75rem null,
-"md"4rem 4rem 1rem null,
-"lg"8rem 8rem 1.25rem null;
-
-@each $btn in $btnSquaresizes {
-  .sb-btn-square {
-    &.sb-btn-#{nth($btn, 1)} {
-      height: #{nth($btn, 2)};
-      width: #{nth($btn, 3)};
-      font-size: #{nth($btn, 4)};
-
-      //width: #{nth($btn, 5)};
-      i.icon {
-        margin: 0 0 0 0;
-        font-size: 2em;
-      }
-
-      span {
-        margin: 0.5rem 0 0 0;
-      }
-    }
-  }
-}
-
-.sb-btn-white {
-  box-shadow: 0 calculateRem(-1px) calculateRem(4px) 0 rgba(var(--rc-rgba-black), 0.1),
-    0 calculateRem(3px) calculateRem(4px) 0 rgba(var(--rc-rgba-black), 0.2);
-  border: 0px solid var(--rc-dddddd);
-}
-
-.sb-btn-square {
-  display: inline-flex;
-  flex-direction: column;
-  align-items: center;
-  justify-content: space-evenly;
-  font-size: 0.75rem;
-  padding: 0.5rem;
-}
-
-.sb-btn-disabled,
-.sb-btn-outline-disabled {
-  cursor: default;
-  font-weight: normal;
-}
-
-.sb-btn-disabled {
-  background-color: var(--gray-100);
-  border: calculateRem(1px) solid var(--gray-100);
-
-  &:hover {
-    background-color: var(--gray-100) !important;
-    color: var(--gray-200) !important;
-  }
-}
-
-.sb-btn-outline-disabled {
-  background-color: var(--white);
-  border: calculateRem(1px) solid var(--gray-100);
-
-  &:hover {
-    background-color: var(--white) !important;
-    ;
-    border: calculateRem(1px) solid var(--gray-100) !important;
-    color: var(--gray-200) !important;
-  }
-}
-
-// button link
-.sb-btn-link {
-  background: none;
-  border: 0;
-}
-
-
-
-// Buttons with icon
-.sb-right-icon-btn {
-  padding: calculateRem(8px);
-
-  i.icon {
-    margin-left: calculateRem(8px);
-    margin-right: 0;
-  }
-
-  html[dir="rtl"] & {
-    padding: calculateRem(8px);
-
-    i.icon {
-      margin-right: calculateRem(4px);
-      margin-right: 0;
-    }
-  }
-}
-
-.sb-left-icon-btn {
-  padding: calculateRem(8px);
-
-  i.icon {
-    margin-right: calculateRem(4px);
-  }
-
-  html[dir="rtl"] & {
-    padding: calculateRem(8px);
-
-    i.icon {
-      margin-left: calculateRem(8px);
-    }
-  }
-}
-
-.sb-left-icon-btn.sb-btn-xs {
-  padding: 0 calculateRem(8px);
-}
-
-//Buttons toggle
-.ui.toggle.checkbox.sb-toggle {
-  min-height: calculateRem(24px);
-  position: relative;
-  display: inline-block;
-  -webkit-backface-visibility: hidden;
-  backface-visibility: hidden;
-  outline: 0;
-  vertical-align: baseline;
-  font-style: normal;
-  min-height: calculateRem(16px);
-  font-size: 1rem;
-  min-width: calculateRem(16px);
-
-  input {
-    width: calculateRem(64px);
-    height: calculateRem(24px);
-    cursor: pointer;
-    position: absolute;
-    top: 0;
-    left: 0;
-    opacity: 0;
-    outline: 0;
-    z-index: 3;
-
-    &:focus:checked~label:before,
-    &:focus:checked~.box:before,
-    &:checked~.box:before,
-    &:checked~label:before {
-      background-color: var(--primary-color) !important;
-    }
-  }
-
-  label {
-    min-height: calculateRem(16px);
-    padding-left: calculateRem(72px);
-    color: rgba(var(--rc-rgba-black), 0.87);
-    position: relative;
-    display: block;
-    outline: 0;
-    font-size: 1rem;
-
-    &:before {
-      display: block;
-      position: absolute;
-      content: "";
-      z-index: 1;
-      transform: none;
-      border: none;
-      top: 1px;
-      left: 0;
-      background: rgba(var(--rc-rgba-black), 0.05);
-      box-shadow: none;
-      width: calculateRem(64px);
-      height: calculateRem(24px);
-      border-radius: 500rem;
-      @include btn-theme($primary-color);
-      transition: border 0.1s ease, opacity 0.1s ease, transform 0.1s ease,
-        box-shadow 0.1s ease, -webkit-transform 0.1s ease;
-    }
-
-    &:after {
-      background: var(--white) linear-gradient(transparent, rgba(var(--rc-rgba-black), 0.05));
-      position: absolute;
-      content: "" !important;
-      opacity: 1;
-      z-index: 2;
-      border: none;
-      width: calculateRem(20px);
-      height: calculateRem(20px);
-      top: calculateRem(3px);
-      left: 0;
-      border-radius: 500rem;
-      transition: background 0.3s ease, left 0.3s ease;
-    }
-  }
-
-  input~label:after {
-    left: 0.1rem;
-    box-shadow: none;
-  }
-
-  input:checked~label:after {
-    left: calculateRem(41px);
-    box-shadow: none;
-  }
-}
-
-// button groups
-.btn-group {
-  border: $sb-btn-group-border-width solid $sb-btn-group-border-color;
-  display: inline-flex;
-  -webkit-box-orient: horizontal;
-  -webkit-box-direction: normal;
-  flex-direction: row;
-  flex-direction: row;
-  font-size: 0;
-  vertical-align: baseline;
-
-  .sb-btn {
-    background: $sb-btn-group-btn-background;
-    border-left: $sb-btn-group-border-width solid $sb-btn-group-border-color;
-    flex: 1 0 auto;
-    margin: 0;
-    border-radius: 0;
-    margin: 0;
-    border: 0;
-    color: $sb-btn-group-btn-color;
-    min-width: calculateRem(40px);
-
-    &:first-child {
-      border-left: none;
-      margin-left: 0;
-    }
-
-    &:active,
-    &.active {
-      background-color: $sb-btn-group-btn-active-background-color;
-      color: $sb-btn-group-btn-color;
-    }
-
-    .icon {
-      margin: 0;
-      vertical-align: top;
-    }
-  }
-}
-
-*[lang="hi"] .sb-btn-xs {
-  line-height: 1.5;
-}
-
-*[lang="hi"] .sb-btn-normal {
-  line-height: 1.5;
-}
-
-.sb-btn-icon-fix {
-  display:flex;
-  align-items: center;
-  line-height: normal;
-}
-
diff --git a/src/app/client/src/assets/styles/components/_card.scss b/src/app/client/src/assets/styles/components/_card.scss
index 21536ff93a3777cbba98423cdcb74931c05de048..3702c9eb0feb1ebe2f6fe5907ba3c6bca4210bd9 100644
--- a/src/app/client/src/assets/styles/components/_card.scss
+++ b/src/app/client/src/assets/styles/components/_card.scss
@@ -1,3 +1,4 @@
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 // Card component
 
 /* sb card styles */
@@ -189,8 +190,8 @@ app-card[lang="ur"] {
 .sb-wspace-card {
   height: calculateRem(128px);
   max-width: calculateRem(292px);
-  @include border(border, 0.5px, var(--gray-0));
-  @include border(border-left, 4px, var(--white));
+  border:calculateRem(0.5px) solid var(--gray-0);
+  border-left:calculateRem(4px) solid var(--white);
   border-radius: calculateRem(4px);
   background: var(--white);
   padding: calculateRem(16px) calculateRem(24px);
diff --git a/src/app/client/src/assets/styles/components/_cbse.scss b/src/app/client/src/assets/styles/components/_cbse.scss
index babeac3c571793064eb506c5d67c19758e872f41..8de39b1cf855553cdc6b70b98f182ecf251cd263 100644
--- a/src/app/client/src/assets/styles/components/_cbse.scss
+++ b/src/app/client/src/assets/styles/components/_cbse.scss
@@ -1,9 +1,7 @@
-@import "../variables";
-@import "../mixins/mixins";
-
+@use "~@project-sunbird/sb-styles/assets/varSass" as *;
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 // mcq preview layout styles
-
 .sb-question-dsp-container {
   .sb-editor-image {
     height: calculateRem(392px);
@@ -437,7 +435,7 @@
   }
 
   .ui.progress .bar {
-    background: $tertiary-100;
+    background: var(--tertiary-100);
     height: ($base-block-space) !important;
   }
 
@@ -448,7 +446,7 @@
   &.ui.styled.accordion {	
     background: inherit;	
     .active.title {	
-      border: calculateRem(1px) solid $primary-200; 
+      border: calculateRem(1px) solid var(--primary-200); 
       border-bottom: none;	
       background-color: var(--rc-F3F8FF);	
       font-weight: $font-weight-bold;	
@@ -460,18 +458,18 @@
         border-left: none;	
       }	
       .chapter-status {	
-        background: $primary-color;	
+        background: var(--primary-color);
       }	
     }	
     .title {	
       margin-top: $base-block-space;	
-      background: $gray-0;	
-      border: calculateRem(1px) solid $gray-100;	
+      background: var(--gray-0);
+      border: calculateRem(1px) solid var(--gray-100);	
       border-radius: calculateRem(4px);	
       font-size: $font-size-sm;	
       .chevron-icon {	
-        background: $gray-0;	
-        border-left: calculateRem(1px) solid $gray-100;	
+        background: var(--gray-0);
+        border-left: calculateRem(1px) solid var(--gray-100);	
       } 
       .chapter-status {	
         height: calculateRem(8px);	
@@ -482,7 +480,7 @@
     }	
     .sb-chapterlist-child {	
       .active.title {	
-        border-top: calculateRem(1px) solid $primary-200;	
+        border-top: calculateRem(1px) solid var(--primary-200);	
         border-radius: 0;	
         .chapter-status {	
           background: var(--rc-88B7E6);	
@@ -492,7 +490,7 @@
         margin-top: 0;	
         border-radius: 0px 0px calculateRem(4px) calculateRem(4px);	
         border: none;	
-        border-top: calculateRem(1px) solid $gray-100;  
+        border-top: calculateRem(1px) solid var(--gray-100);  
       }	
       .content {	
         border: none;	
@@ -502,11 +500,11 @@
       }	
     }	
     .content {	
-      border: calculateRem(1px) solid $primary-200; 
+      border: calculateRem(1px) solid var(--primary-200);
       border-top: none;	
       border-bottom-left-radius: calculateRem(4px);	
       border-bottom-right-radius: calculateRem(4px);	
-      background: $white-color;	
+      background: var(--white);	
     }	
     .chevron-icon {	
       height: calculateRem(56px);	
@@ -523,13 +521,13 @@
     }	
     .accordion {	
       .active.title {	
-        border: calculateRem(1px) solid $primary-200;	
+        border: calculateRem(1px) solid var(--primary-200);	
         border-bottom: none;	
         background-color: var( --rc-F3F8FF);	
         font-weight: $font-weight-bold;	
       }	
       .content {	
-        border: calculateRem(1px) solid $primary-200; 
+        border: calculateRem(1px) solid var(--primary-200); 
         border-top: none;	
       }	
     }	
diff --git a/src/app/client/src/assets/styles/components/_certificate-trained.scss b/src/app/client/src/assets/styles/components/_certificate-trained.scss
index 6f5bb8d14cb9e701003adfa27582e6275ab6ced9..bbe1f1a378a6ca2b89966c76ba25a76394a769b4 100644
--- a/src/app/client/src/assets/styles/components/_certificate-trained.scss
+++ b/src/app/client/src/assets/styles/components/_certificate-trained.scss
@@ -1,3 +1,5 @@
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
+@use "~@project-sunbird/sb-styles/assets/flexbox" as *;
 .list-heading {
   padding: calculateRem(16px);
   display: flex;
@@ -39,32 +41,8 @@
       text-align: center !important;
       margin: calculateRem(4px) 0px !important;
     }
-    // &:first-child{
-    //   flex: 1 1 45%;
-    //   text-align: left;
-    //   @include respond-below(xl) {
-    //     flex: 1 1 35%;
-    //   }
-    //   @include respond-below(sm) {
-    //     flex:0 0 100%;
-    //   }
-    // }
-    // &:nth-child(2){
-    //   flex:1 1 20%;
-    // }
-    // &:nth-child(3){
-    //   flex:1 1 20%;
-    // }
-    // &:nth-child(4){
-    //   flex:1 1 5%;
-    // }
     &:last-child {
       text-align: right;
-      // flex: 1 1 15%;
-      // min-width: calculateRem(172px);
-      // @include respond-below(xl) {
-      //   flex: 1 1 25%;
-      // }
       html[dir="rtl"] & {
         text-align: left;
       }
@@ -74,11 +52,9 @@
   label {
     font-size: calculateRem(14px);
     font-weight: normal;
-    // flex: 2;
 
     @include respond-below(md) {
       margin-bottom: calculateRem(20px) !important;
-      // flex: 1 1 50%;
       font-size: var(--font-size-base);
     }
   }
diff --git a/src/app/client/src/assets/styles/components/_certificate.scss b/src/app/client/src/assets/styles/components/_certificate.scss
index b03f10d4b97dfcedc306bf265074d2037d94a239..7f996bf7abbf143007f071bec432f0530f6ce733 100644
--- a/src/app/client/src/assets/styles/components/_certificate.scss
+++ b/src/app/client/src/assets/styles/components/_certificate.scss
@@ -1,3 +1,5 @@
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
+@use "~@project-sunbird/sb-styles/assets/varSass" as *;
 /* Certificate */
 $sb-certificatePage-bg-color: var(--white);
 $sb-certificatePage-padding: calculateRem(16px);
diff --git a/src/app/client/src/assets/styles/components/_checkbox.scss b/src/app/client/src/assets/styles/components/_checkbox.scss
index 2d700ef980871c1d77ba135fa080d9404f05830c..3ab4d146615b23da5bfadf230888ee7c74339a82 100644
--- a/src/app/client/src/assets/styles/components/_checkbox.scss
+++ b/src/app/client/src/assets/styles/components/_checkbox.scss
@@ -1,18 +1,20 @@
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
+@use "~@project-sunbird/sb-styles/assets/varSass" as *;
 // Checkbox
-$sb-checkbox-primary-background: $primary-color;
-$sb-radio-btn-primary-border: $primary-color;
+$sb-checkbox-primary-background: var(--primary-color);
+$sb-radio-btn-primary-border: var(--primary-color);
 $sb-checkbox-border-width: calculateRem(1px);
 $sb-checkbox-label-font-size: 0.8571rem;
 $sb-checkbox-border-radius: calculateRem(4px);
-$sb-checkbox-after-checked-color: $white-color;
-$sb-checkbox-before-checked-background-color: $white-color;
+$sb-checkbox-after-checked-color: var(--white);
+$sb-checkbox-before-checked-background-color: var(--white);
 
 // Radio buttons
 $sb-radio-btn-border: calculateRem(1px); //width of the border
 $sb-radio-btn-border-radius: 100%;
 $sb-radio-btn-disabled-opacity: 0.5;
-$sb-radio-btn-border-color: $primary-300;
-$sb-radio-btn-border-disabled-color: $gray-100;
+$sb-radio-btn-border-color: var(--primary-300);
+$sb-radio-btn-border-disabled-color: var(--gray-100);
 
 .sb-checkbox,
 .sb-radio-btn-checkbox {
@@ -97,7 +99,7 @@ $sb-radio-btn-border-disabled-color: $gray-100;
     }
     &.sb-checkbox-rightaligned {
       input:checked~label {
-        color: $primary-color;
+        color: var(--primary-color);
       }
       label {
         padding: 0 calculateRem(24px) 0 0;
diff --git a/src/app/client/src/assets/styles/components/_collection-tree.scss b/src/app/client/src/assets/styles/components/_collection-tree.scss
index 963771a21441ef87c905d3c877e33dccae6ae63d..a59029af9415e224ca42475ffd0729234fb02cb9 100644
--- a/src/app/client/src/assets/styles/components/_collection-tree.scss
+++ b/src/app/client/src/assets/styles/components/_collection-tree.scss
@@ -1,44 +1,46 @@
 
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
+@use "~@project-sunbird/sb-styles/assets/varSass" as *;
 // TOC or Collection Tree
 $sb-collectionTree-border-radius: ($base-block-space / 2);
-$sb-collectionTree-border: 1px solid $primary-200;
+$sb-collectionTree-border: 1px solid var(--primary-200);
 $sb-collectionTree-padding: ($base-block-space * 2);
 $sb-collectionTree-margin: $base-block-space 0 0 0;
-$sb-collectionTree-background-color: $white-color;
-$sb-collectionTree-title-color: $gray-800;
+$sb-collectionTree-background-color: var(--white);
+$sb-collectionTree-title-color: var(--gray-800);
 $sb-collectionTree-title-font-size: $h6-font-size;
 $sb-collectionTree-title-line-height: 20px;
 $sb-collectionTree-title-font-weight: 400;
-$sb-collectionTree-active-title-color: $primary-color;
+$sb-collectionTree-active-title-color: var(--primary-color);
 $sb-collectionTree-active-title-font-weight: bold;
-$sb-collectionTree-title-icon-color: $tertiary-100;
+$sb-collectionTree-title-icon-color: var(--tertiary-100);
 $sb-collectionTree-title-icon-font-size: 20px;
 $sb-collectionTree-title-icon-line-height: 20px;
 $sb-collectionTree-title-icon-height: 20px;
 $sb-collectionTree-title-icon-font-weight: 500;
-$sb-collectionTree-title-toggle-icon-color: $primary-color;
+$sb-collectionTree-title-toggle-icon-color: var(--primary-color);
 $sb-collectionTree-title-toggle-icon-font-size: $font-size-sm;
 $sb-collectionTree-title-toggle-icon-line-height: 20px;
 $sb-collectionTree-title-toggle-icon-height: 20px;
 $sb-collectionTree-title-toggle-icon-font-weight: 500;
-$sb-collectionTree-disabled-border: 1px solid $gray-100;
-$sb-collectionTree-disabled-title-icon-color: $gray-100;
+$sb-collectionTree-disabled-border: 1px solid var(--gray-100);
+$sb-collectionTree-disabled-title-icon-color: var(--gray-100);
 
 // Fancy Tree
 $sb-fancyTree-margin-ltr: 0 0 0 ($base-block-space * 1.25);
 $sb-fancyTree-margin-rtl: 0 ($base-block-space * 1.25) 0 0;
 $sb-fancyTree-padding: ($base-block-space * 2) 0 0 0;
-$sb-fancyTree-list-border-color: $primary-200;
+$sb-fancyTree-list-border-color: var(--primary-200);
 $sb-fancyTree-list-border-width: 1px;
 $sb-fancyTree-list-item-margin: 0 0 (2 * $base-block-space) 0;
 $sb-fancyTree-list-item-padding-ltr: 0 0 0 ($base-block-space * 1.75);
 $sb-fancyTree-list-item-padding-rtl: 0 ($base-block-space * 1.75) 0 0;
 $sb-fancyTree-list-item-border-text-spacing: ($base-block-space * 1.75);
 $sb-fancyTree-list-item-icon-size: 20px;
-$sb-fancyTree-default-list-item-icon-color: $tertiary-100;
-$sb-fancyTree-completed-list-item-icon-color: $success-color;
-$sb-fancyTree-inprogress-list-item-icon-color: $primary-color;
-$sb-fancyTree-disabled-list-item-icon-color: $gray-100;
+$sb-fancyTree-default-list-item-icon-color: var(--tertiary-100);
+$sb-fancyTree-completed-list-item-icon-color: var(--success-color);
+$sb-fancyTree-inprogress-list-item-icon-color: var(--primary-color);
+$sb-fancyTree-disabled-list-item-icon-color: var(--gray-100);
 $sb-fancyTree-list-item-title-padding: 0 ($base-block-space);
 $sb-fancyTree-list-item-title-font-size: $h6-font-size;
 $sb-fancyTree-list-item-title-commingSoonMessage-spacing: 0
diff --git a/src/app/client/src/assets/styles/components/_dropdowns.scss b/src/app/client/src/assets/styles/components/_dropdowns.scss
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/src/app/client/src/assets/styles/components/_filters.scss b/src/app/client/src/assets/styles/components/_filters.scss
index 97afe5a7a507d30d41b968a3070efaef25728e97..ab8f0b7f325dc23cfebae86d909fd558e2dd829b 100644
--- a/src/app/client/src/assets/styles/components/_filters.scss
+++ b/src/app/client/src/assets/styles/components/_filters.scss
@@ -1,11 +1,13 @@
 
+@use "~@project-sunbird/sb-styles/assets/varSass" as *;
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 // Filters
-$sb-prominent-filter-background-color: $white-color;
+$sb-prominent-filter-background-color: var(--white);
 $sb-prominent-filter-padding: $base-block-space * 2 $base-block-space * 2;
 $sb-prominent-filter-header-font-weight: bold;
 $sb-prominent-filter-header-margin: ($base-block-space) 0
   ($base-block-space * 2) 0;
-$sb-prominent-filter-header-color: $primary-color;
+$sb-prominent-filter-header-color: var(--primary-color);
 $sb-prominent-filter-field-width-below-sm: 50%;
 $sb-prominent-filter-field-width-above-sm: 33.3333%;
 $sb-prominent-filter-field-width-above-md: 25%;
@@ -14,7 +16,7 @@ $sb-prominent-filter-field-bottom-spacing: ($base-block-space * 2);
 $sb-prominent-filter-field-side-spacing: ($base-block-space * 2);
 $sb-prominent-filter-field-label-font-size: calculateRem(14px);
 $sb-prominent-filter-field-label-font-weight: normal;
-$sb-prominent-filter-field-label-color: $gray-800;
+$sb-prominent-filter-field-label-color: var(--gray-800);
 $sb-prominent-filter-field-label-margin: 0 0 $base-block-space 0;
 $sb-prominent-filter-field-font-size: calculateRem(12px);
 $sb-prominent-filter-field-color: var(--rc-4a4a4a);
@@ -25,7 +27,7 @@ $sb-prominent-filter-field-width: 100%;
 $sb-prominent-filter-field-input-padding: calculateRem(8px);
 $sb-prominent-filter-dropdown-font-size: calculateRem(12px);
 $sb-prominent-filter-dropdown-header-font-weight: 500;
-$sb-prominent-filter-dropdown-item-active-color: $primary-color;
+$sb-prominent-filter-dropdown-item-active-color: var(--primary-color);
 $sb-prominent-filter-dropdown-item-active-font-weight: 700;
 
 .sb-prominent-filter {
@@ -111,13 +113,13 @@ $sb-prominent-filter-dropdown-item-active-font-weight: 700;
             font-weight: $sb-prominent-filter-dropdown-item-active-font-weight;
           }
           &:hover{
-            background: $primary-250;
+            background: var(--primary-250);
             color: var(--sb-filter-selected-dropdown-hover);
           }
           i.icon.square.outline{
             height: ($base-block-space * 2);
             width:  ($base-block-space * 2);
-            border: calculateRem(1px) solid $primary-300;
+            border: calculateRem(1px) solid var(--primary-300);
             border-radius: calculateRem(5px);
             &::before{
               content: "\f14a";
@@ -156,7 +158,7 @@ $sb-prominent-filter-dropdown-item-active-font-weight: 700;
   }
 }
 .sb-prominent-filter.sb-bg-color-gray-0 .sb-prominent-filter-container .sb-prominent-filter-field .ui.selection.dropdown{
-    background: $white;
+    background: var(--white);
     border: calculateRem(0.5px) solid var(--gray-200);
 }
 
diff --git a/src/app/client/src/assets/styles/components/_form.scss b/src/app/client/src/assets/styles/components/_form.scss
index ba5efb6418465a9f0057b8f0fcc7fe9473060e05..f57db4fa75e40bbb136a9219bddcf0b65dd46deb 100644
--- a/src/app/client/src/assets/styles/components/_form.scss
+++ b/src/app/client/src/assets/styles/components/_form.scss
@@ -1,34 +1,35 @@
-@import './mixins/mixins';
+@use "~@project-sunbird/sb-styles/assets/varSass" as *;
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 /* sb-field */
 $sb-field-margin-bottom: calculateRem(8px);
-$sb-field-disabled-background: $gray-100;
-$sb-field-disabled-border: $input-border-width solid $gray-100;
+$sb-field-disabled-background: var(--gray-100);
+$sb-field-disabled-border: $input-border-width solid var(--gray-100);
 $sb-field-disabled-opacity: 1;
 
 /* sb-input */
-$sb-input-background-color: $white-color;
+$sb-input-background-color: var(--white);
 $sb-input-font-size: calculateRem(13px);
 $sb-input-line-height: calculateRem(21px);
 $sb-input-padding: calculateRem(9px);
 $sb-input-color: var(--gray-800);
 $sb-input-border-radius: calculateRem(3px);
-$sb-input-border-normal: $input-border-width solid $gray-200;
-$sb-input-border-focus: $input-border-width solid $primary-600;
-$sb-input-border-hover: $input-border-width solid $primary-300;
-$sb-input-border-error: $input-border-width solid $red-400;
-$sb-input-border-success: $input-border-width solid $secondary-200;
+$sb-input-border-normal: $input-border-width solid var(--gray-200);
+$sb-input-border-focus: $input-border-width solid var(--primary-600);
+$sb-input-border-hover: $input-border-width solid var(--primary-300);
+$sb-input-border-error: $input-border-width solid var(--red-400);
+$sb-input-border-success: $input-border-width solid var(--secondary-200);
 
 /* sb-input label and text */
-$sb-error-text: $red-400;
+$sb-error-text: var(--red-400);
 $sb-label-font-size: calculateRem(13px);
 // Dropdown
-$sb-dropdown-border-color: $gray-200;
-$sb-dropdown-border-focus: $primary-600;
-$sb-dropdown-border-hover: $primary-300;
+$sb-dropdown-border-color: var(--gray-200);
+$sb-dropdown-border-focus: var(--primary-600);
+$sb-dropdown-border-hover: var(--primary-300);
 $sb-dropdown-min-height: calculateRem(39px);
 $sb-dropdown-border-radius: calculateRem(3px);
 $sb-dropdown-border: $input-border-width solid $sb-dropdown-border-color;
-$sb-dropdown-active-item: $gray-800;
+$sb-dropdown-active-item: var(--gray-800);
 $sb-multi-select-dropdown-icon-font-size: calculateRem(20px);
 $sb-dropdown-label-font-size: calculateRem(12px);
 $sb-selection-dropdown-min-height: calculateRem(32px);
@@ -203,7 +204,7 @@ textarea:-internal-autofill-previewed,
 textarea:-internal-autofill-selected,
 select:-internal-autofill-previewed,
 select:-internal-autofill-selected {
-  background-color: $white !important;
+  background-color: var(--white) !important;
 }
 
 .batchAddUserForm,
diff --git a/src/app/client/src/assets/styles/components/_icons.scss b/src/app/client/src/assets/styles/components/_icons.scss
index 15108e0c96b7de4e749c5369257a39f9e434d4c1..1df06035fde41626151dc260c747038c09452f73 100644
--- a/src/app/client/src/assets/styles/components/_icons.scss
+++ b/src/app/client/src/assets/styles/components/_icons.scss
@@ -1,12 +1,7 @@
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
+
 @font-face {
   font-family: "icomoon";
-  // src: url("./fonts/sb-icons/icomoon.eot?q5fmh5");
-  // // src: url('../../../assets/styles/fonts/sb-icons/icomoon.eot');
-  // src: url("./fonts/sb-icons/icomoon.eot?q5fmh5#iefix")
-  //     format("embedded-opentype"),
-  //   url("./fonts/sb-icons/icomoon.ttf?q5fmh5") format("truetype"),
-  //   url("./fonts/sb-icons/icomoon.woff?q5fmh5") format("woff"),
-  //   url("./fonts/sb-icons/icomoon.svg?q5fmh5#icomoon") format("svg");
   font-weight: normal;
   font-style: normal;
 }
diff --git a/src/app/client/src/assets/styles/components/_iframes.scss b/src/app/client/src/assets/styles/components/_iframes.scss
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/src/app/client/src/assets/styles/components/_labels.scss b/src/app/client/src/assets/styles/components/_labels.scss
index d0c2a748d3426bb708f291ee37d8e70dce54b65b..34dadf1fdb415917fd2dc9287a962a267531e6f2 100644
--- a/src/app/client/src/assets/styles/components/_labels.scss
+++ b/src/app/client/src/assets/styles/components/_labels.scss
@@ -1,5 +1,4 @@
-// label
-
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 // base label styles
 .sb-label {
@@ -7,7 +6,7 @@
     border: calculateRem(1px) solid;
     color: var(--white);
     line-height: inherit;
-    @include border-radius(3px);
+    border-radius: calculateRem(3px);
     text: {
         transform: capitalize;
         decoration: none;
diff --git a/src/app/client/src/assets/styles/components/_lists.scss b/src/app/client/src/assets/styles/components/_lists.scss
index 967631ff643a5c7ab10caf1054a20d8e95d8836a..db45c352cc536cced8dd0e708a4ba74d1a774344 100644
--- a/src/app/client/src/assets/styles/components/_lists.scss
+++ b/src/app/client/src/assets/styles/components/_lists.scss
@@ -1,19 +1,21 @@
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
+@use "~@project-sunbird/sb-styles/assets/varSass" as *;
 /* circular list*/
 $sb-circular-list-item-padding-ltr: ($base-block-space * 1) 0
   ($base-block-space * 1) ($base-block-space * 4);
 $sb-circular-list-item-padding-rtl: ($base-block-space * 1)
   ($base-block-space * 4) ($base-block-space * 1) 0;
 $sb-circular-list-item-font-size: ($base-block-space * 2);
-$sb-circular-list-item-circle-color: $primary-color;
+$sb-circular-list-item-circle-color: var(--primary-color);
 $sb-circular-list-item-circle-border-radius: 50%;
 $sb-circular-list-item-circle-width: calculateRem(12px);
 $sb-circular-list-item-circle-height: calculateRem(12px);
 $sb-circular-list-item-circle-top: calculateRem(12px);
 
 /* description list */
-$sb-description-list-key-color: $gray-400;
+$sb-description-list-key-color: var(--gray-400);
 $sb-description-list-key-font-size: ($base-block-space * 2);
-$sb-description-list-value-color: $gray-400;
+$sb-description-list-value-color: var(--gray-400);
 $sb-description-list-value-font-size: ($base-block-space * 2);
 $sb-description-list-value-margin-left: ($base-block-space * 1);
 $sb-description-list-value-margin-right: ($base-block-space * 1);
@@ -22,28 +24,28 @@ $sb-description-list-value-small-font-size: calculateRem(14px);
 
 //multiline list
 $multiline-list-key-font-size: calculateRem(11px);
-$multiline-list-key-font-color: $gray-400;
+$multiline-list-key-font-color: var(--gray-400);
 $multiline-list-value-font-size: calculateRem(11px);
-$multiline-list-value-font-color: $gray-400;
+$multiline-list-value-font-color: var(--gray-400);
 
 // bordered-list--adds border around the list
-$sb-bordered-list-border: calculateRem(1px) solid $gray-100;
+$sb-bordered-list-border: calculateRem(1px) solid var(--gray-100);
 $sb-bordered-list-border-radius: calculateRem(4px) calculateRem(4px) 0 0;
 $sb-bordered-list-item-font-size: ($base-block-space * 2);
 $sb-bordered-list-item-padding: ($base-block-space * 2) ($base-block-space * 3);
-$sb-bordered-list-item-border-bottom: calculateRem(1px) solid $gray-100;
+$sb-bordered-list-item-border-bottom: calculateRem(1px) solid var(--gray-100);
 $sb-bordered-list-item-border-background: var(--rc-f7f7f7);
 $sb-bordered-list-item-title-font-size: calculateRem(14px);
-$sb-bordered-list-item-title-color: $primary-color;
+$sb-bordered-list-item-title-color: var(--primary-color);
 $sb-bordered-list-item-title-extra-font-size: calculateRem(12px);
-$sb-bordered-list-item-title-extra-color: $gray-800;
+$sb-bordered-list-item-title-extra-color: var(--gray-800);
 $sb-bordered-list-item-heading-font-size: calculateRem(14px);
-$sb-bordered-list-item-heading-color: $gray-800;
+$sb-bordered-list-item-heading-color: var(--gray-800);
 $sb-bordered-list-item-subheading-font-size: calculateRem(12px);
-$sb-bordered-list-item-subheading-color: $gray-400;
+$sb-bordered-list-item-subheading-color: var(--gray-400);
 $sb-bordered-list-item-first-child-padding: ($base-block-space * 1)
   ($base-block-space * 2);
-$sb-bordered-list-item-first-child-background: $white-color;
+$sb-bordered-list-item-first-child-background: var(--white);
 
 [dir="ltr"] {
   .sb-circular-list {
diff --git a/src/app/client/src/assets/styles/components/_loaders.scss b/src/app/client/src/assets/styles/components/_loaders.scss
index daa18b7d625d9dde9ff340fe3556c7f146d8e7a4..7068896f719917baa23a0270453d9cf3ca28e6b7 100644
--- a/src/app/client/src/assets/styles/components/_loaders.scss
+++ b/src/app/client/src/assets/styles/components/_loaders.scss
@@ -1,3 +1,5 @@
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
+
 .sb-loader {
   position: fixed;
   top: 50%;
diff --git a/src/app/client/src/assets/styles/components/_masonry-grid.scss b/src/app/client/src/assets/styles/components/_masonry-grid.scss
index 1dc7d69fadd688a99858bbb2ada695d81c58cb93..47052d5cf21fef0f18842eabca91ce145584029c 100644
--- a/src/app/client/src/assets/styles/components/_masonry-grid.scss
+++ b/src/app/client/src/assets/styles/components/_masonry-grid.scss
@@ -1,3 +1,4 @@
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 .masonry-grid {
     display: flex;
     flex-wrap: wrap;
diff --git a/src/app/client/src/assets/styles/components/_menu.scss b/src/app/client/src/assets/styles/components/_menu.scss
index aee1d5e34c2007f147ec5b46795d556276e1062f..440db3dd0ed601bd8fed8241b20262f232dc309a 100644
--- a/src/app/client/src/assets/styles/components/_menu.scss
+++ b/src/app/client/src/assets/styles/components/_menu.scss
@@ -1,4 +1,4 @@
-
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 .sb-sidebar-menu {
   h5 {
diff --git a/src/app/client/src/assets/styles/components/_metadata.scss b/src/app/client/src/assets/styles/components/_metadata.scss
index 1d9d92f55750a10f7954dfa79591e6628af811e6..802c96a7771c7f690bb7e54bea755c0e992501a2 100644
--- a/src/app/client/src/assets/styles/components/_metadata.scss
+++ b/src/app/client/src/assets/styles/components/_metadata.scss
@@ -1,3 +1,5 @@
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
+
 .sb-meta-data-container {
   .sb-meta-data {
     display: flex;
diff --git a/src/app/client/src/assets/styles/components/_modal.scss b/src/app/client/src/assets/styles/components/_modal.scss
index d38cf04ccc66e1e49bd82e0f73093209f218517b..f55db24b2af5140a2c2286c4f281c6d52ed8f6c9 100644
--- a/src/app/client/src/assets/styles/components/_modal.scss
+++ b/src/app/client/src/assets/styles/components/_modal.scss
@@ -1,11 +1,15 @@
-@import "./buttons";
-
+@use "~@project-sunbird/sb-styles/assets/buttons" as *;
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 /* modal styles */
 .sb-modal {
   .ui.modal {
-    @include margin(3.5rem auto 0 auto);
-    @include position(null, 0 0 null 0); //bourbon
-    @include size(100%, auto); //bourbon
+    margin:3.5rem auto 0 auto;
+    position: inherit;
+    left:0;
+    right:0;
+    top:0;
+    width:100%;
+    height: auto;
     background: none;
 
     .sb-modal-header {
@@ -14,7 +18,7 @@
       font-weight: 700;
       font-size: calculateRem(16px);
       padding: calculateRem(8px) calculateRem(16px);
-      border-bottom: 0 solid var(--gray-100); //@include size(auto,($base-block-space * 5)); //bourbon
+      border-bottom: 0 solid var(--gray-100);
       min-height: calculateRem(40px);
       line-height: calculateRem(24px);
     }
@@ -30,15 +34,17 @@
     &>.close {
       color: var(--white);
       font-size: calculateRem(14px);
-      @include padding(0 0); //bourbon
-      @include margin(0 0);
-      @include size(($base-block-space * 5), ($base-block-space * 5)); //bourbon
+      padding:0 0 0 0;
+      margin: 0 0 0 0;
+      width:2.5rem;
+      height:2.5rem;
       display: flex;
       align-items: center;
       justify-content: center;
       cursor: pointer;
       outline: 0px;
-      @include position(absolute, 0 0 null null); //bourbon
+      position: absolute;
+      top:0;right:0;
     }
 
     .sb-modal-actions {
@@ -51,7 +57,7 @@
       align-items: center;
 
       .sb-btn+.sb-btn {
-        @include margin(0 0.5rem 0 0);
+        margin:0 0.5rem 0 0;
       }
     }
 
@@ -84,9 +90,9 @@
     }
 
     &.sb-modal-fullscreen {
-      @include position(fixed, 0 0 0 0); //bourbon
+      position: fixed;top:0;right:0;bottom:0;left:0;
       width: 100%;
-      @include margin(0 auto);
+      margin:0 auto;
       overflow-y: auto;
       overflow-x: hidden;
 
@@ -205,7 +211,7 @@
 
     .sb-modal-actions {
       .sb-btn+.sb-btn {
-        @include margin(0 0 0 0.5rem);
+        margin:0 0 0 0.5rem;
       }
     }
   }
diff --git a/src/app/client/src/assets/styles/components/_pagesection.scss b/src/app/client/src/assets/styles/components/_pagesection.scss
index e81f83f4b73035de8b6f1a836d8b69155ffaedde..544df20c7dee162782a12c2d471d3f70cef86e27 100644
--- a/src/app/client/src/assets/styles/components/_pagesection.scss
+++ b/src/app/client/src/assets/styles/components/_pagesection.scss
@@ -1,3 +1,5 @@
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
+
 .sb-pageSection {
   .sb-pageSection-header {
     display: flex;
diff --git a/src/app/client/src/assets/styles/components/_pagination.scss b/src/app/client/src/assets/styles/components/_pagination.scss
index bdc5ec3128139c4e76d9afa1a5dc32e9af317a27..fc06f42d52fd3e73ca185d71c76576be501972c2 100644
--- a/src/app/client/src/assets/styles/components/_pagination.scss
+++ b/src/app/client/src/assets/styles/components/_pagination.scss
@@ -1,3 +1,5 @@
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
+
 .sb-pagination-container {
     display: flex;
     .sb-pagination {
diff --git a/src/app/client/src/assets/styles/components/_popup.scss b/src/app/client/src/assets/styles/components/_popup.scss
index 70039ff2fc8f055589b651f1fb5f7ce0c738acb1..773d28619b553f727d0c42f98b57b3333db477be 100644
--- a/src/app/client/src/assets/styles/components/_popup.scss
+++ b/src/app/client/src/assets/styles/components/_popup.scss
@@ -1,3 +1,5 @@
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
+
 // tooltip Component
 .ui {
     &.popup {
diff --git a/src/app/client/src/assets/styles/components/_progress-bar.scss b/src/app/client/src/assets/styles/components/_progress-bar.scss
index 17154405bfccaa103b7bf34fc8c57e8784d5e3a7..2d3d279ef9dca537a212314fe6b9338535de9bb5 100644
--- a/src/app/client/src/assets/styles/components/_progress-bar.scss
+++ b/src/app/client/src/assets/styles/components/_progress-bar.scss
@@ -1,3 +1,5 @@
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
+
 .ui.progress {
   .bar {
     background: var(--primary-color);
diff --git a/src/app/client/src/assets/styles/components/_rating.scss b/src/app/client/src/assets/styles/components/_rating.scss
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/src/app/client/src/assets/styles/components/_recover-account.scss b/src/app/client/src/assets/styles/components/_recover-account.scss
index 78d000322deb8cd49a49eb2b638ba5b7f56a57ce..518dd18b33d3ca2420e446c012ba665d6fb197a0 100644
--- a/src/app/client/src/assets/styles/components/_recover-account.scss
+++ b/src/app/client/src/assets/styles/components/_recover-account.scss
@@ -1,3 +1,4 @@
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 .sb-account-recover-page {
   width: 100%;
   margin: 0 auto;
diff --git a/src/app/client/src/assets/styles/components/_search.scss b/src/app/client/src/assets/styles/components/_search.scss
index bdf6a2a679c4fa36f0e43b20686d6b3d55a5a189..266dd6a55f82fc5f8340cb761dc63d50baf09c32 100644
--- a/src/app/client/src/assets/styles/components/_search.scss
+++ b/src/app/client/src/assets/styles/components/_search.scss
@@ -1,3 +1,4 @@
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 /* Search Component */
 .sb-search-box {
   display: flex;
diff --git a/src/app/client/src/assets/styles/components/_segment.scss b/src/app/client/src/assets/styles/components/_segment.scss
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/src/app/client/src/assets/styles/components/_select.scss b/src/app/client/src/assets/styles/components/_select.scss
index 470d32c10fc4cd4545d56a5ccd822e8f63d79219..0b38a2329ef198d630636b5fbc858a469f2974a5 100644
--- a/src/app/client/src/assets/styles/components/_select.scss
+++ b/src/app/client/src/assets/styles/components/_select.scss
@@ -1,4 +1,5 @@
 
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 .ui.dropdown {
   &.selection {
     border-radius: calculateRem(3px);
diff --git a/src/app/client/src/assets/styles/components/_tables.scss b/src/app/client/src/assets/styles/components/_tables.scss
index f3dcb15865a4dcddb500c74719b38640c91b145c..8aced3cdac1ef0efc87f7e55231d310160c41ec6 100644
--- a/src/app/client/src/assets/styles/components/_tables.scss
+++ b/src/app/client/src/assets/styles/components/_tables.scss
@@ -1,3 +1,4 @@
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 .sb-table-responsive {
   overflow-x: auto;
   width: 100%;
diff --git a/src/app/client/src/assets/styles/components/_tabs.scss b/src/app/client/src/assets/styles/components/_tabs.scss
index 9f350651dce29dfb74290e6b60d473a8fe786696..e41ea065d7983ba9f891f5247e9e663943e89d8c 100644
--- a/src/app/client/src/assets/styles/components/_tabs.scss
+++ b/src/app/client/src/assets/styles/components/_tabs.scss
@@ -1,3 +1,5 @@
+
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 .ui.secondary.pointing.menu {
   &.sb-tabs__header {
     height: calculateRem(56px);
diff --git a/src/app/client/src/assets/styles/components/_toasters.scss b/src/app/client/src/assets/styles/components/_toasters.scss
index e93bdc9a74bc0b1b5311b6ac02881984879fbec7..21376c4cb69bc5eec9d790c702524db82d41db51 100644
--- a/src/app/client/src/assets/styles/components/_toasters.scss
+++ b/src/app/client/src/assets/styles/components/_toasters.scss
@@ -1,7 +1,7 @@
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 .sb-toaster {
   width: 100%;
   max-width: calculateRem(448px);
-  // min-height: calculateRem(48px);
   padding: calculateRem(24px) calculateRem(24px) calculateRem(24px) calculateRem(16px);
   border-radius: calculateRem(8px);
   border: 1px solid var(--primary-300);
diff --git a/src/app/client/src/assets/styles/components/_toolbar.scss b/src/app/client/src/assets/styles/components/_toolbar.scss
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/src/app/client/src/assets/styles/components/_topic-picker.scss b/src/app/client/src/assets/styles/components/_topic-picker.scss
index 432a510a7dfd7c56732fd6e1cbe0bfc3ffd66ed4..8885fa54e0e81a9ba9a357a26e50319197039026 100644
--- a/src/app/client/src/assets/styles/components/_topic-picker.scss
+++ b/src/app/client/src/assets/styles/components/_topic-picker.scss
@@ -1,3 +1,4 @@
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 // Topic Picker
 .sb-treePicker-body {
     display: flex;
diff --git a/src/app/client/src/assets/styles/components/_video.scss b/src/app/client/src/assets/styles/components/_video.scss
index de9d34e7c36bdd7c8f00cbfcdfae0300bf9c049f..a96e51c8c687df9a7de1f18fc4f17e24ddadcb08 100644
--- a/src/app/client/src/assets/styles/components/_video.scss
+++ b/src/app/client/src/assets/styles/components/_video.scss
@@ -1,5 +1,4 @@
-@import "variables";
-@import "mixins/mixins";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 // content video
 .content-video {
diff --git a/src/app/client/src/assets/styles/components/components.scss b/src/app/client/src/assets/styles/components/components.scss
index f6bb43a0d226005503aa7bd5d9ab2a0c5314011a..75a857ea0c49399c8246a07032b4e76edddbe8ec 100644
--- a/src/app/client/src/assets/styles/components/components.scss
+++ b/src/app/client/src/assets/styles/components/components.scss
@@ -1,31 +1,28 @@
-@import "./accordion";
-@import "./banner";
-@import "./breadcrumb";
-//@import "./buttons";  //using this from sb-styles repo _buttons.scss
-@import "./card";
-@import "./certificate";
-@import "./checkbox";
-@import "./collection-tree";
-@import "./cbse";
-@import "./filters";
-@import "./form";
-@import "./labels";
-@import "./lists";
-@import "./loaders";
-@import "./masonry-grid";
-@import "./menu";
-@import "./modal";
-@import "./pagesection";
-@import "./pagination";
-//@import "./popup";
-@import "./progress-bar";
-@import "./rating";
-@import "./icons";
-@import "./search";
-@import "./select";
-@import "./tables";
-@import "./toasters";
-@import "./topic-picker";
-@import "./bulk-upload";
-@import "./certificate-trained";
-@import "./mixins/mixins";
\ No newline at end of file
+@use "~@project-sunbird/sb-styles/assets/varSass" as *;
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
+@forward "./modal";
+@forward "./accordion";
+@forward "./banner";
+@forward "./card";
+@forward "./certificate";
+@forward "./checkbox";
+@forward "./collection-tree";
+@forward "./cbse";
+@forward "./filters";
+@forward "./form";
+@forward "./labels";
+@forward "./lists";
+@forward "./loaders";
+@forward "./masonry-grid";
+@forward "./menu";
+@forward "./pagesection";
+@forward "./pagination";
+@forward "./progress-bar";
+@forward "./icons";
+@forward "./search";
+@forward "./select";
+@forward "./tables";
+@forward "./toasters";
+@forward "./topic-picker";
+@forward "./bulk-upload";
+@forward "./certificate-trained";
\ No newline at end of file
diff --git a/src/app/client/src/assets/styles/components/sb-forms/_facet-filters.scss b/src/app/client/src/assets/styles/components/sb-forms/_facet-filters.scss
index 8f1ae47be56af4983741b4b08ee80a0bcddd0d12..c046aabee9f087b82ee73927f2ad6a1f400934a3 100644
--- a/src/app/client/src/assets/styles/components/sb-forms/_facet-filters.scss
+++ b/src/app/client/src/assets/styles/components/sb-forms/_facet-filters.scss
@@ -1,4 +1,3 @@
-@import "variables";
 
 .cfe-multiselect-container {
   ul, li {
diff --git a/src/app/client/src/assets/styles/fonts/noto-nastaliqurdu/NotoNastaliqUrdu-Regular.ttf b/src/app/client/src/assets/styles/fonts/noto-nastaliqurdu/NotoNastaliqUrdu-Regular.ttf
deleted file mode 100644
index d57d0c7006f15658f71f1087c3cf923349ab5af4..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/noto-nastaliqurdu/NotoNastaliqUrdu-Regular.ttf and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/noto-nastaliqurdu/NotoNastaliqUrdu-Regular.woff b/src/app/client/src/assets/styles/fonts/noto-nastaliqurdu/NotoNastaliqUrdu-Regular.woff
deleted file mode 100644
index 963f074ce9ca113a6b91fdff17336aadb2722f3d..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/noto-nastaliqurdu/NotoNastaliqUrdu-Regular.woff and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/noto-nastaliqurdu/notonastaliqurdu.css b/src/app/client/src/assets/styles/fonts/noto-nastaliqurdu/notonastaliqurdu.css
deleted file mode 100644
index 553cc80835c82f7f3b9820b0a1840037ce1c5b06..0000000000000000000000000000000000000000
--- a/src/app/client/src/assets/styles/fonts/noto-nastaliqurdu/notonastaliqurdu.css
+++ /dev/null
@@ -1,16 +0,0 @@
-/*
- * Noto Nastaliq Urdu (Arabic) http://www.google.com/fonts/earlyaccess
- */
- @font-face {
-    font-family: 'Noto Nastaliq Urdu';
-    font-style: normal;
-    font-weight: 400;
-    font-display: swap;
-    src: url(./NotoNastaliqUrdu-Regular.woff) format('woff'),
-         url(./NotoNastaliqUrdu-Regular.ttf) format('truetype');
-}
-
-/* 
- * scale.py 0.75 noto-nastaliqurdu/NotoNastaliqUrdu-Regular.ttf scaled/NotoNastaliqUrdu-Regular.ttf
- * scale.py 0.75 noto-nastaliqurdu/NotoNastaliqUrdu-Regular.woff scaled/NotoNastaliqUrdu-Regular.woff
- */
diff --git a/src/app/client/src/assets/styles/fonts/notosans-bengali/NotoSansBengali-Bold.eot b/src/app/client/src/assets/styles/fonts/notosans-bengali/NotoSansBengali-Bold.eot
deleted file mode 100644
index a71195b801e7b23a8bc3defb9600e87507eea4fb..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans-bengali/NotoSansBengali-Bold.eot and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans-bengali/NotoSansBengali-Bold.ttf b/src/app/client/src/assets/styles/fonts/notosans-bengali/NotoSansBengali-Bold.ttf
deleted file mode 100644
index 5db4e895a9a0f0959f57160e04250a59584b39e5..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans-bengali/NotoSansBengali-Bold.ttf and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans-bengali/NotoSansBengali-Bold.woff b/src/app/client/src/assets/styles/fonts/notosans-bengali/NotoSansBengali-Bold.woff
deleted file mode 100644
index 5b50fd745839d83091db61b0d0fb8ee4bfc11d2e..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans-bengali/NotoSansBengali-Bold.woff and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans-bengali/NotoSansBengali-Bold.woff2 b/src/app/client/src/assets/styles/fonts/notosans-bengali/NotoSansBengali-Bold.woff2
deleted file mode 100644
index 1891986a396005f9e63cc80fb7fcee720a49980f..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans-bengali/NotoSansBengali-Bold.woff2 and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans-bengali/NotoSansBengali-Regular.eot b/src/app/client/src/assets/styles/fonts/notosans-bengali/NotoSansBengali-Regular.eot
deleted file mode 100644
index ebc430807e2863922b2ece694f97ba2e1b070bbd..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans-bengali/NotoSansBengali-Regular.eot and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans-bengali/NotoSansBengali-Regular.ttf b/src/app/client/src/assets/styles/fonts/notosans-bengali/NotoSansBengali-Regular.ttf
deleted file mode 100644
index 418d336a90ef4b514fe9aa193bb97121de08bff2..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans-bengali/NotoSansBengali-Regular.ttf and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans-bengali/NotoSansBengali-Regular.woff b/src/app/client/src/assets/styles/fonts/notosans-bengali/NotoSansBengali-Regular.woff
deleted file mode 100644
index c08795e4525874fc495431852bc4c27effab27b3..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans-bengali/NotoSansBengali-Regular.woff and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans-bengali/NotoSansBengali-Regular.woff2 b/src/app/client/src/assets/styles/fonts/notosans-bengali/NotoSansBengali-Regular.woff2
deleted file mode 100644
index b54d8c906323b471ed80a89e179cf423d196760b..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans-bengali/NotoSansBengali-Regular.woff2 and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans-bengali/notosansbengali.css b/src/app/client/src/assets/styles/fonts/notosans-bengali/notosansbengali.css
deleted file mode 100644
index 7e510dc36ce2c6d3d07cffe715c0658d7311ff4f..0000000000000000000000000000000000000000
--- a/src/app/client/src/assets/styles/fonts/notosans-bengali/notosansbengali.css
+++ /dev/null
@@ -1,25 +0,0 @@
-@font-face {
-  font-family: 'Noto Sans Bengali';
-  font-style: normal;
-  font-weight: 400;
-  font-display: swap;
-  src: url(./NotoSansBengali-Regular.eot);
-  src:
-    url(./NotoSansBengali-Regular.eot?#iefix) format('embedded-opentype'),
-    url(./NotoSansBengali-Regular.woff2) format('woff2'),
-    url(./NotoSansBengali-Regular.woff) format('woff'),
-    url(./NotoSansBengali-Regular.ttf) format('truetype');
-}
-
-@font-face {
-  font-family: 'Noto Sans Bengali';
-  font-style: normal;
-  font-weight: 700;
-  font-display: swap;
-  src: url(./NotoSansBengali-Bold.eot);
-  src:
-    url(./NotoSansBengali-Bold.eot?#iefix) format('embedded-opentype'),
-    url(./NotoSansBengali-Bold.woff2) format('woff2'),
-    url(./NotoSansBengali-Bold.woff) format('woff'),
-    url(./NotoSansBengali-Bold.ttf) format('truetype');
-}
diff --git a/src/app/client/src/assets/styles/fonts/notosans-devanagari/NotoSansDevanagari-Bold.eot b/src/app/client/src/assets/styles/fonts/notosans-devanagari/NotoSansDevanagari-Bold.eot
deleted file mode 100644
index 1402a7a03320400bf808084e199aad8b4c471df8..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans-devanagari/NotoSansDevanagari-Bold.eot and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans-devanagari/NotoSansDevanagari-Bold.ttf b/src/app/client/src/assets/styles/fonts/notosans-devanagari/NotoSansDevanagari-Bold.ttf
deleted file mode 100644
index 73f9c42a8b31ebda07d2f6dd377b7f46a6204c50..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans-devanagari/NotoSansDevanagari-Bold.ttf and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans-devanagari/NotoSansDevanagari-Bold.woff b/src/app/client/src/assets/styles/fonts/notosans-devanagari/NotoSansDevanagari-Bold.woff
deleted file mode 100644
index 80d1eb1e6c2eae9c7a4dda7bc50097cadbe0eb2b..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans-devanagari/NotoSansDevanagari-Bold.woff and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans-devanagari/NotoSansDevanagari-Bold.woff2 b/src/app/client/src/assets/styles/fonts/notosans-devanagari/NotoSansDevanagari-Bold.woff2
deleted file mode 100644
index 4db409ff21184a4b5b9c81a8a77d20732c48c16c..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans-devanagari/NotoSansDevanagari-Bold.woff2 and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans-devanagari/NotoSansDevanagari-Regular.eot b/src/app/client/src/assets/styles/fonts/notosans-devanagari/NotoSansDevanagari-Regular.eot
deleted file mode 100644
index d24d1275b59fa700d5c039e1698d24ddba6ac8af..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans-devanagari/NotoSansDevanagari-Regular.eot and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans-devanagari/NotoSansDevanagari-Regular.ttf b/src/app/client/src/assets/styles/fonts/notosans-devanagari/NotoSansDevanagari-Regular.ttf
deleted file mode 100644
index 6f73add44b9086182b25d01930274c282c7bc780..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans-devanagari/NotoSansDevanagari-Regular.ttf and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans-devanagari/NotoSansDevanagari-Regular.woff b/src/app/client/src/assets/styles/fonts/notosans-devanagari/NotoSansDevanagari-Regular.woff
deleted file mode 100644
index aec6d9cac7b8570469caf930991af6f3565450f2..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans-devanagari/NotoSansDevanagari-Regular.woff and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans-devanagari/NotoSansDevanagari-Regular.woff2 b/src/app/client/src/assets/styles/fonts/notosans-devanagari/NotoSansDevanagari-Regular.woff2
deleted file mode 100644
index 2eec3db4e4a80ed293da6b1f0a2ffd1100ea2fa7..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans-devanagari/NotoSansDevanagari-Regular.woff2 and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans-devanagari/notosansdevanagari.css b/src/app/client/src/assets/styles/fonts/notosans-devanagari/notosansdevanagari.css
deleted file mode 100644
index e1508585e9b880b98a28e994b3fa801483da53ef..0000000000000000000000000000000000000000
--- a/src/app/client/src/assets/styles/fonts/notosans-devanagari/notosansdevanagari.css
+++ /dev/null
@@ -1,25 +0,0 @@
-@font-face {
-  font-family: 'Noto Sans Devanagari';
-  font-style: normal;
-  font-weight: 400;
-  font-display: swap;
-  src: url(./NotoSansDevanagari-Regular.eot);
-  src:
-    url(./NotoSansDevanagari-Regular.eot?#iefix) format('embedded-opentype'),
-    url(./NotoSansDevanagari-Regular.woff2) format('woff2'),
-    url(./NotoSansDevanagari-Regular.woff) format('woff'),
-    url(./NotoSansDevanagari-Regular.ttf) format('truetype');
-}
-
-@font-face {
-  font-family: 'Noto Sans Devanagari';
-  font-style: normal;
-  font-weight: 700;
-  font-display: swap;
-  src: url(./NotoSansDevanagari-Bold.eot);
-  src:
-    url(./NotoSansDevanagari-Bold.eot?#iefix) format('embedded-opentype'),
-    url(./NotoSansDevanagari-Bold.woff2) format('woff2'),
-    url(./NotoSansDevanagari-Bold.woff) format('woff'),
-    url(./NotoSansDevanagari-Bold.ttf) format('truetype');
-}
diff --git a/src/app/client/src/assets/styles/fonts/notosans-gujarati/NotoSansGujarati-Bold.eot b/src/app/client/src/assets/styles/fonts/notosans-gujarati/NotoSansGujarati-Bold.eot
deleted file mode 100644
index 75392ca30f0589cc2c5a7153ccda4941b066b19e..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans-gujarati/NotoSansGujarati-Bold.eot and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans-gujarati/NotoSansGujarati-Bold.ttf b/src/app/client/src/assets/styles/fonts/notosans-gujarati/NotoSansGujarati-Bold.ttf
deleted file mode 100644
index 8d06ec88091ac5c3825f8248f14881ffcdc98e26..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans-gujarati/NotoSansGujarati-Bold.ttf and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans-gujarati/NotoSansGujarati-Bold.woff b/src/app/client/src/assets/styles/fonts/notosans-gujarati/NotoSansGujarati-Bold.woff
deleted file mode 100644
index fbe82aecb04c3a582425cbbfa6a8b04a02dcd65c..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans-gujarati/NotoSansGujarati-Bold.woff and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans-gujarati/NotoSansGujarati-Bold.woff2 b/src/app/client/src/assets/styles/fonts/notosans-gujarati/NotoSansGujarati-Bold.woff2
deleted file mode 100644
index e159ea8b221116a2911c3ba07bd8d18c7d008e9c..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans-gujarati/NotoSansGujarati-Bold.woff2 and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans-gujarati/NotoSansGujarati-Regular.eot b/src/app/client/src/assets/styles/fonts/notosans-gujarati/NotoSansGujarati-Regular.eot
deleted file mode 100644
index 75804a140b1553a87d377f03104636fec31a2c4d..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans-gujarati/NotoSansGujarati-Regular.eot and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans-gujarati/NotoSansGujarati-Regular.ttf b/src/app/client/src/assets/styles/fonts/notosans-gujarati/NotoSansGujarati-Regular.ttf
deleted file mode 100644
index 162c9e0bb288f712ac2a3fe6eea393cf6c5e28bf..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans-gujarati/NotoSansGujarati-Regular.ttf and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans-gujarati/NotoSansGujarati-Regular.woff b/src/app/client/src/assets/styles/fonts/notosans-gujarati/NotoSansGujarati-Regular.woff
deleted file mode 100644
index 4b90b1b5f627ac001a215ddb3247e50d54c191ea..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans-gujarati/NotoSansGujarati-Regular.woff and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans-gujarati/NotoSansGujarati-Regular.woff2 b/src/app/client/src/assets/styles/fonts/notosans-gujarati/NotoSansGujarati-Regular.woff2
deleted file mode 100644
index 4cf61dda62bcdfd61ac65f679828cf27333bfa48..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans-gujarati/NotoSansGujarati-Regular.woff2 and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans-gujarati/notosansgujarati.css b/src/app/client/src/assets/styles/fonts/notosans-gujarati/notosansgujarati.css
deleted file mode 100644
index b9ef9c120dadb721ffc8902708b1eef2da44a745..0000000000000000000000000000000000000000
--- a/src/app/client/src/assets/styles/fonts/notosans-gujarati/notosansgujarati.css
+++ /dev/null
@@ -1,25 +0,0 @@
-@font-face {
-  font-family: 'Noto Sans Gujarati';
-  font-style: normal;
-  font-weight: 400;
-  font-display: swap;
-  src: url(./NotoSansGujarati-Regular.eot);
-  src:
-    url(./NotoSansGujarati-Regular.eot?#iefix) format('embedded-opentype'),
-    url(./NotoSansGujarati-Regular.woff2) format('woff2'),
-    url(./NotoSansGujarati-Regular.woff) format('woff'),
-    url(./NotoSansGujarati-Regular.ttf) format('truetype');
-}
-
-@font-face {
-  font-family: 'Noto Sans Gujarati';
-  font-style: normal;
-  font-weight: 700;
-  font-display: swap;
-  src: url(./NotoSansGujarati-Bold.eot);
-  src:
-    url(./NotoSansGujarati-Bold.eot?#iefix) format('embedded-opentype'),
-    url(./NotoSansGujarati-Bold.woff2) format('woff2'),
-    url(./NotoSansGujarati-Bold.woff) format('woff'),
-    url(./NotoSansGujarati-Bold.ttf) format('truetype');
-}
diff --git a/src/app/client/src/assets/styles/fonts/notosans-gurmukhi/NotoSansGurmukhi-Bold.eot b/src/app/client/src/assets/styles/fonts/notosans-gurmukhi/NotoSansGurmukhi-Bold.eot
deleted file mode 100644
index 0094f6fd6bdeea50494e952943c744ee514afda0..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans-gurmukhi/NotoSansGurmukhi-Bold.eot and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans-gurmukhi/NotoSansGurmukhi-Bold.ttf b/src/app/client/src/assets/styles/fonts/notosans-gurmukhi/NotoSansGurmukhi-Bold.ttf
deleted file mode 100644
index 7d64851ea7f5ce5b1196b5375be0a53810b20b5a..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans-gurmukhi/NotoSansGurmukhi-Bold.ttf and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans-gurmukhi/NotoSansGurmukhi-Bold.woff b/src/app/client/src/assets/styles/fonts/notosans-gurmukhi/NotoSansGurmukhi-Bold.woff
deleted file mode 100644
index 8654cea41d39cd2a7ac53d81c98cc123bd6f2881..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans-gurmukhi/NotoSansGurmukhi-Bold.woff and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans-gurmukhi/NotoSansGurmukhi-Bold.woff2 b/src/app/client/src/assets/styles/fonts/notosans-gurmukhi/NotoSansGurmukhi-Bold.woff2
deleted file mode 100644
index d33102d3fb9da89f76b96949dabdc8987da6f8a5..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans-gurmukhi/NotoSansGurmukhi-Bold.woff2 and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans-gurmukhi/NotoSansGurmukhi-Regular.eot b/src/app/client/src/assets/styles/fonts/notosans-gurmukhi/NotoSansGurmukhi-Regular.eot
deleted file mode 100644
index 34ed2bdabead299eca304852f86075727e5e822f..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans-gurmukhi/NotoSansGurmukhi-Regular.eot and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans-gurmukhi/NotoSansGurmukhi-Regular.ttf b/src/app/client/src/assets/styles/fonts/notosans-gurmukhi/NotoSansGurmukhi-Regular.ttf
deleted file mode 100644
index 53d342388d37f78223145e95ad4d3f40538cd6ff..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans-gurmukhi/NotoSansGurmukhi-Regular.ttf and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans-gurmukhi/NotoSansGurmukhi-Regular.woff b/src/app/client/src/assets/styles/fonts/notosans-gurmukhi/NotoSansGurmukhi-Regular.woff
deleted file mode 100644
index ddd3c5a44503a899ea4c3ab4cc6546d752cbf097..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans-gurmukhi/NotoSansGurmukhi-Regular.woff and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans-gurmukhi/NotoSansGurmukhi-Regular.woff2 b/src/app/client/src/assets/styles/fonts/notosans-gurmukhi/NotoSansGurmukhi-Regular.woff2
deleted file mode 100644
index 37d2185427129a0c5175297ce5d9d9c89efce280..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans-gurmukhi/NotoSansGurmukhi-Regular.woff2 and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans-gurmukhi/notosansgurmukhi.css b/src/app/client/src/assets/styles/fonts/notosans-gurmukhi/notosansgurmukhi.css
deleted file mode 100644
index cc505e3e4efad96ae1f30ed1d7615bca576a53d0..0000000000000000000000000000000000000000
--- a/src/app/client/src/assets/styles/fonts/notosans-gurmukhi/notosansgurmukhi.css
+++ /dev/null
@@ -1,25 +0,0 @@
-@font-face {
-  font-family: 'Noto Sans Gurmukhi';
-  font-style: normal;
-  font-weight: 400;
-  font-display: swap;
-  src: url(./NotoSansGurmukhi-Regular.eot);
-  src:
-    url(./NotoSansGurmukhi-Regular.eot?#iefix) format('embedded-opentype'),
-    url(./NotoSansGurmukhi-Regular.woff2) format('woff2'),
-    url(./NotoSansGurmukhi-Regular.woff) format('woff'),
-    url(./NotoSansGurmukhi-Regular.ttf) format('truetype');
-}
-
-@font-face {
-  font-family: 'Noto Sans Gurmukhi';
-  font-style: normal;
-  font-weight: 700;
-  font-display: swap;
-  src: url(./NotoSansGurmukhi-Bold.eot);
-  src:
-    url(./NotoSansGurmukhi-Bold.eot?#iefix) format('embedded-opentype'),
-    url(./NotoSansGurmukhi-Bold.woff2) format('woff2'),
-    url(./NotoSansGurmukhi-Bold.woff) format('woff'),
-    url(./NotoSansGurmukhi-Bold.ttf) format('truetype');
-}
diff --git a/src/app/client/src/assets/styles/fonts/notosans-kannada/NotoSansKannada-Bold.eot b/src/app/client/src/assets/styles/fonts/notosans-kannada/NotoSansKannada-Bold.eot
deleted file mode 100644
index d409a8f426930da0fb710b2d5303a8a51e4c5b09..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans-kannada/NotoSansKannada-Bold.eot and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans-kannada/NotoSansKannada-Bold.ttf b/src/app/client/src/assets/styles/fonts/notosans-kannada/NotoSansKannada-Bold.ttf
deleted file mode 100644
index 382e394c1db46e03f48083ac8b59b4a5689a81de..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans-kannada/NotoSansKannada-Bold.ttf and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans-kannada/NotoSansKannada-Bold.woff b/src/app/client/src/assets/styles/fonts/notosans-kannada/NotoSansKannada-Bold.woff
deleted file mode 100644
index 0ad6ea9d863fcf7ff6a52876ce4a01a670ce008e..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans-kannada/NotoSansKannada-Bold.woff and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans-kannada/NotoSansKannada-Bold.woff2 b/src/app/client/src/assets/styles/fonts/notosans-kannada/NotoSansKannada-Bold.woff2
deleted file mode 100644
index a5ba7ebc9c2c2c6649230995f5497f8c38cb4941..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans-kannada/NotoSansKannada-Bold.woff2 and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans-kannada/NotoSansKannada-Regular.eot b/src/app/client/src/assets/styles/fonts/notosans-kannada/NotoSansKannada-Regular.eot
deleted file mode 100644
index d5da33b70973d8c8fd6ea1f3cfc94b8948ed8441..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans-kannada/NotoSansKannada-Regular.eot and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans-kannada/NotoSansKannada-Regular.ttf b/src/app/client/src/assets/styles/fonts/notosans-kannada/NotoSansKannada-Regular.ttf
deleted file mode 100644
index 1327196dadb34c01232525d5e3a267096060ecab..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans-kannada/NotoSansKannada-Regular.ttf and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans-kannada/NotoSansKannada-Regular.woff b/src/app/client/src/assets/styles/fonts/notosans-kannada/NotoSansKannada-Regular.woff
deleted file mode 100644
index f940ab79e6f12829566c1561d6b1f5dbaa7e8d4b..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans-kannada/NotoSansKannada-Regular.woff and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans-kannada/NotoSansKannada-Regular.woff2 b/src/app/client/src/assets/styles/fonts/notosans-kannada/NotoSansKannada-Regular.woff2
deleted file mode 100644
index 181acd3c64b74186cde1fc758d1cce9fe9a2abe8..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans-kannada/NotoSansKannada-Regular.woff2 and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans-kannada/notosanskannada.css b/src/app/client/src/assets/styles/fonts/notosans-kannada/notosanskannada.css
deleted file mode 100644
index 164aec88ff950819ddda1b30733884f09668b3f1..0000000000000000000000000000000000000000
--- a/src/app/client/src/assets/styles/fonts/notosans-kannada/notosanskannada.css
+++ /dev/null
@@ -1,25 +0,0 @@
-@font-face {
-  font-family: 'Noto Sans Kannada';
-  font-style: normal;
-  font-weight: 400;
-  font-display: swap;
-  src: url(./NotoSansKannada-Regular.eot);
-  src:
-    url(./NotoSansKannada-Regular.eot?#iefix) format('embedded-opentype'),
-    url(./NotoSansKannada-Regular.woff2) format('woff2'),
-    url(./NotoSansKannada-Regular.woff) format('woff'),
-    url(./NotoSansKannada-Regular.ttf) format('truetype');
-}
-
-@font-face {
-  font-family: 'Noto Sans Kannada';
-  font-style: normal;
-  font-weight: 700;
-  font-display: swap;
-  src: url(./NotoSansKannada-Bold.eot);
-  src:
-    url(./NotoSansKannada-Bold.eot?#iefix) format('embedded-opentype'),
-    url(./NotoSansKannada-Bold.woff2) format('woff2'),
-    url(./NotoSansKannada-Bold.woff) format('woff'),
-    url(./NotoSansKannada-Bold.ttf) format('truetype');
-}
diff --git a/src/app/client/src/assets/styles/fonts/notosans-malayalam/NotoSansMalayalam-Bold.eot b/src/app/client/src/assets/styles/fonts/notosans-malayalam/NotoSansMalayalam-Bold.eot
deleted file mode 100644
index d3a206420fff96f2300cd5c2b85af59c7c47dada..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans-malayalam/NotoSansMalayalam-Bold.eot and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans-malayalam/NotoSansMalayalam-Bold.ttf b/src/app/client/src/assets/styles/fonts/notosans-malayalam/NotoSansMalayalam-Bold.ttf
deleted file mode 100644
index 346bd2103b4118b624878641ce11105be6394599..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans-malayalam/NotoSansMalayalam-Bold.ttf and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans-malayalam/NotoSansMalayalam-Bold.woff b/src/app/client/src/assets/styles/fonts/notosans-malayalam/NotoSansMalayalam-Bold.woff
deleted file mode 100644
index 764a96b3e4afe110a7974562211a78472c6594b8..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans-malayalam/NotoSansMalayalam-Bold.woff and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans-malayalam/NotoSansMalayalam-Bold.woff2 b/src/app/client/src/assets/styles/fonts/notosans-malayalam/NotoSansMalayalam-Bold.woff2
deleted file mode 100644
index 136d7135fad84699c0495231119f88e54bdd0350..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans-malayalam/NotoSansMalayalam-Bold.woff2 and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans-malayalam/NotoSansMalayalam-Regular.eot b/src/app/client/src/assets/styles/fonts/notosans-malayalam/NotoSansMalayalam-Regular.eot
deleted file mode 100644
index b67a6930815d064b4d60c352821ee664f1992ee2..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans-malayalam/NotoSansMalayalam-Regular.eot and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans-malayalam/NotoSansMalayalam-Regular.ttf b/src/app/client/src/assets/styles/fonts/notosans-malayalam/NotoSansMalayalam-Regular.ttf
deleted file mode 100644
index 7b8b1b852d2eba679c0de0b8c6f0a67501524190..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans-malayalam/NotoSansMalayalam-Regular.ttf and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans-malayalam/NotoSansMalayalam-Regular.woff b/src/app/client/src/assets/styles/fonts/notosans-malayalam/NotoSansMalayalam-Regular.woff
deleted file mode 100644
index b2c52efa14cb01a11bed49a3a46d35041f689468..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans-malayalam/NotoSansMalayalam-Regular.woff and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans-malayalam/NotoSansMalayalam-Regular.woff2 b/src/app/client/src/assets/styles/fonts/notosans-malayalam/NotoSansMalayalam-Regular.woff2
deleted file mode 100644
index eb944a63e2cb91a1fcac9e4d9c0b916b89b8d2c7..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans-malayalam/NotoSansMalayalam-Regular.woff2 and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans-malayalam/notosansmalayalam.css b/src/app/client/src/assets/styles/fonts/notosans-malayalam/notosansmalayalam.css
deleted file mode 100644
index bb17dbfb28af9c35a839c685ff1f9510c5a9b6f7..0000000000000000000000000000000000000000
--- a/src/app/client/src/assets/styles/fonts/notosans-malayalam/notosansmalayalam.css
+++ /dev/null
@@ -1,25 +0,0 @@
-@font-face {
-  font-family: 'Noto Sans Malayalam';
-  font-style: normal;
-  font-weight: 400;
-  font-display: swap;
-  src: url(./NotoSansMalayalam-Regular.eot);
-  src:
-    url(./NotoSansMalayalam-Regular.eot?#iefix) format('embedded-opentype'),
-    url(./NotoSansMalayalam-Regular.woff2) format('woff2'),
-    url(./NotoSansMalayalam-Regular.woff) format('woff'),
-    url(./NotoSansMalayalam-Regular.ttf) format('truetype');
-}
-
-@font-face {
-  font-family: 'Noto Sans Malayalam';
-  font-style: normal;
-  font-weight: 700;
-  font-display: swap;
-  src: url(./NotoSansMalayalam-Bold.eot);
-  src:
-    url(./NotoSansMalayalam-Bold.eot?#iefix) format('embedded-opentype'),
-    url(./NotoSansMalayalam-Bold.woff2) format('woff2'),
-    url(./NotoSansMalayalam-Bold.woff) format('woff'),
-    url(./NotoSansMalayalam-Bold.ttf) format('truetype');
-}
diff --git a/src/app/client/src/assets/styles/fonts/notosans-oriya/NotoSansOriya-Bold.eot b/src/app/client/src/assets/styles/fonts/notosans-oriya/NotoSansOriya-Bold.eot
deleted file mode 100644
index 2ba55026f31345537ae62a32fb4466c9b8777d51..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans-oriya/NotoSansOriya-Bold.eot and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans-oriya/NotoSansOriya-Bold.ttf b/src/app/client/src/assets/styles/fonts/notosans-oriya/NotoSansOriya-Bold.ttf
deleted file mode 100644
index 9420c7d84c3845a067959b3f09cf864fb47535d3..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans-oriya/NotoSansOriya-Bold.ttf and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans-oriya/NotoSansOriya-Bold.woff b/src/app/client/src/assets/styles/fonts/notosans-oriya/NotoSansOriya-Bold.woff
deleted file mode 100644
index 26a9e8518a255214ef87a63e3edf1821f402df94..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans-oriya/NotoSansOriya-Bold.woff and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans-oriya/NotoSansOriya-Bold.woff2 b/src/app/client/src/assets/styles/fonts/notosans-oriya/NotoSansOriya-Bold.woff2
deleted file mode 100644
index bc4e22beeee79b7bcc85746107130bc2bb0ebdc9..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans-oriya/NotoSansOriya-Bold.woff2 and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans-oriya/NotoSansOriya-Regular.eot b/src/app/client/src/assets/styles/fonts/notosans-oriya/NotoSansOriya-Regular.eot
deleted file mode 100644
index 1e56a150c52339c1f92038bbdd3895b58cfbfccb..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans-oriya/NotoSansOriya-Regular.eot and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans-oriya/NotoSansOriya-Regular.ttf b/src/app/client/src/assets/styles/fonts/notosans-oriya/NotoSansOriya-Regular.ttf
deleted file mode 100644
index 0453ab6a606d41f76dcc050a9f443a009ceeb4db..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans-oriya/NotoSansOriya-Regular.ttf and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans-oriya/NotoSansOriya-Regular.woff b/src/app/client/src/assets/styles/fonts/notosans-oriya/NotoSansOriya-Regular.woff
deleted file mode 100644
index b8e2834cd76e005831f11344488058cdd28629f4..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans-oriya/NotoSansOriya-Regular.woff and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans-oriya/NotoSansOriya-Regular.woff2 b/src/app/client/src/assets/styles/fonts/notosans-oriya/NotoSansOriya-Regular.woff2
deleted file mode 100644
index e085402bcc0acc21c772d6ccb3e7fb4bb56f2742..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans-oriya/NotoSansOriya-Regular.woff2 and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans-oriya/notosansoriya.css b/src/app/client/src/assets/styles/fonts/notosans-oriya/notosansoriya.css
deleted file mode 100644
index 3b2e7b300a06feb9a04d9109d08e4c738ae3744b..0000000000000000000000000000000000000000
--- a/src/app/client/src/assets/styles/fonts/notosans-oriya/notosansoriya.css
+++ /dev/null
@@ -1,25 +0,0 @@
-@font-face {
-  font-family: 'Noto Sans Oriya';
-  font-style: normal;
-  font-weight: 400;
-  font-display: swap;
-  src: url(./NotoSansOriya-Regular.eot);
-  src:
-    url(./NotoSansOriya-Regular.eot?#iefix) format('embedded-opentype'),
-    url(./NotoSansOriya-Regular.woff2) format('woff2'),
-    url(./NotoSansOriya-Regular.woff) format('woff'),
-    url(./NotoSansOriya-Regular.ttf) format('truetype');
-}
-
-@font-face {
-  font-family: 'Noto Sans Oriya';
-  font-style: normal;
-  font-weight: 700;
-  font-display: swap;
-  src: url(./NotoSansOriya-Bold.eot);
-  src:
-    url(./NotoSansOriya-Bold.eot?#iefix) format('embedded-opentype'),
-    url(./NotoSansOriya-Bold.woff2) format('woff2'),
-    url(./NotoSansOriya-Bold.woff) format('woff'),
-    url(./NotoSansOriya-Bold.ttf) format('truetype');
-}
diff --git a/src/app/client/src/assets/styles/fonts/notosans-tamil/NotoSansTamil-Bold.eot b/src/app/client/src/assets/styles/fonts/notosans-tamil/NotoSansTamil-Bold.eot
deleted file mode 100644
index 51e9f984a715fefc3321e570997926f312515d69..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans-tamil/NotoSansTamil-Bold.eot and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans-tamil/NotoSansTamil-Bold.ttf b/src/app/client/src/assets/styles/fonts/notosans-tamil/NotoSansTamil-Bold.ttf
deleted file mode 100644
index a2d64f50323593781a60290cff9975fa64515de0..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans-tamil/NotoSansTamil-Bold.ttf and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans-tamil/NotoSansTamil-Bold.woff b/src/app/client/src/assets/styles/fonts/notosans-tamil/NotoSansTamil-Bold.woff
deleted file mode 100644
index a230422316e5837804c7ac06cc41ff8703ae07d4..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans-tamil/NotoSansTamil-Bold.woff and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans-tamil/NotoSansTamil-Bold.woff2 b/src/app/client/src/assets/styles/fonts/notosans-tamil/NotoSansTamil-Bold.woff2
deleted file mode 100644
index 7b044a11d2365f35855c533d16fa8a4a61d9598f..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans-tamil/NotoSansTamil-Bold.woff2 and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans-tamil/NotoSansTamil-Regular.eot b/src/app/client/src/assets/styles/fonts/notosans-tamil/NotoSansTamil-Regular.eot
deleted file mode 100644
index cf47f6ddbe73953c3f7e5b89930cc4961d0edc94..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans-tamil/NotoSansTamil-Regular.eot and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans-tamil/NotoSansTamil-Regular.ttf b/src/app/client/src/assets/styles/fonts/notosans-tamil/NotoSansTamil-Regular.ttf
deleted file mode 100644
index 7a7d19feb4f33d918ad5db67faa3974134eb3618..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans-tamil/NotoSansTamil-Regular.ttf and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans-tamil/NotoSansTamil-Regular.woff b/src/app/client/src/assets/styles/fonts/notosans-tamil/NotoSansTamil-Regular.woff
deleted file mode 100644
index 0875d84979fa9d7919b8220b98f1ea9808e0c841..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans-tamil/NotoSansTamil-Regular.woff and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans-tamil/NotoSansTamil-Regular.woff2 b/src/app/client/src/assets/styles/fonts/notosans-tamil/NotoSansTamil-Regular.woff2
deleted file mode 100644
index 3a2a059be87c6aff71a38237b1d2635021097ce7..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans-tamil/NotoSansTamil-Regular.woff2 and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans-tamil/notosanstamil.css b/src/app/client/src/assets/styles/fonts/notosans-tamil/notosanstamil.css
deleted file mode 100644
index 3711a616d704bfb89c8d9c83990cf4cabc0cb04c..0000000000000000000000000000000000000000
--- a/src/app/client/src/assets/styles/fonts/notosans-tamil/notosanstamil.css
+++ /dev/null
@@ -1,25 +0,0 @@
-@font-face {
-  font-family: 'Noto Sans Tamil';
-  font-style: normal;
-  font-weight: 400;
-  font-display: swap;
-  src: url(./NotoSansTamil-Regular.eot);
-  src:
-    url(./NotoSansTamil-Regular.eot?#iefix) format('embedded-opentype'),
-    url(./NotoSansTamil-Regular.woff2) format('woff2'),
-    url(./NotoSansTamil-Regular.woff) format('woff'),
-    url(./NotoSansTamil-Regular.ttf) format('truetype');
-}
-
-@font-face {
-  font-family: 'Noto Sans Tamil';
-  font-style: normal;
-  font-weight: 700;
-  font-display: swap;
-  src: url(./NotoSansTamil-Bold.eot);
-  src:
-    url(./NotoSansTamil-Bold.eot?#iefix) format('embedded-opentype'),
-    url(./NotoSansTamil-Bold.woff2) format('woff2'),
-    url(./NotoSansTamil-Bold.woff) format('woff'),
-    url(./NotoSansTamil-Bold.ttf) format('truetype');
-}
diff --git a/src/app/client/src/assets/styles/fonts/notosans-telugu/NotoSansTelugu-Bold.eot b/src/app/client/src/assets/styles/fonts/notosans-telugu/NotoSansTelugu-Bold.eot
deleted file mode 100644
index 1f243bcf77e12a4a3b7cbf48df6497d3445bfb3b..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans-telugu/NotoSansTelugu-Bold.eot and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans-telugu/NotoSansTelugu-Bold.ttf b/src/app/client/src/assets/styles/fonts/notosans-telugu/NotoSansTelugu-Bold.ttf
deleted file mode 100644
index 1ec324929c796d9fd7afb7be2156686203c3d38e..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans-telugu/NotoSansTelugu-Bold.ttf and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans-telugu/NotoSansTelugu-Bold.woff b/src/app/client/src/assets/styles/fonts/notosans-telugu/NotoSansTelugu-Bold.woff
deleted file mode 100644
index bf7e0284ee8692793a41d356caff691da6cb28e3..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans-telugu/NotoSansTelugu-Bold.woff and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans-telugu/NotoSansTelugu-Bold.woff2 b/src/app/client/src/assets/styles/fonts/notosans-telugu/NotoSansTelugu-Bold.woff2
deleted file mode 100644
index b1fce26482cd0ffc4867bfc6873657857e067fcc..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans-telugu/NotoSansTelugu-Bold.woff2 and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans-telugu/NotoSansTelugu-Regular.eot b/src/app/client/src/assets/styles/fonts/notosans-telugu/NotoSansTelugu-Regular.eot
deleted file mode 100644
index 79be725c24510ef13e07a28573794c7c93b04508..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans-telugu/NotoSansTelugu-Regular.eot and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans-telugu/NotoSansTelugu-Regular.ttf b/src/app/client/src/assets/styles/fonts/notosans-telugu/NotoSansTelugu-Regular.ttf
deleted file mode 100644
index e10039476a3a69e670427ccb0e8307651922c37f..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans-telugu/NotoSansTelugu-Regular.ttf and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans-telugu/NotoSansTelugu-Regular.woff b/src/app/client/src/assets/styles/fonts/notosans-telugu/NotoSansTelugu-Regular.woff
deleted file mode 100644
index 3aed35a27e983babb26d6049ee35dc4222833684..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans-telugu/NotoSansTelugu-Regular.woff and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans-telugu/NotoSansTelugu-Regular.woff2 b/src/app/client/src/assets/styles/fonts/notosans-telugu/NotoSansTelugu-Regular.woff2
deleted file mode 100644
index 652d67d205a8a878ef36bd03328d0b3cde5fc9b8..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans-telugu/NotoSansTelugu-Regular.woff2 and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans-telugu/notosanstelugu.css b/src/app/client/src/assets/styles/fonts/notosans-telugu/notosanstelugu.css
deleted file mode 100644
index 2d3d96405245057a7087a96bc3e3e371ad191ac3..0000000000000000000000000000000000000000
--- a/src/app/client/src/assets/styles/fonts/notosans-telugu/notosanstelugu.css
+++ /dev/null
@@ -1,25 +0,0 @@
-@font-face {
-  font-family: 'Noto Sans Telugu';
-  font-style: normal;
-  font-weight: 400;
-  font-display: swap;
-  src: url(./NotoSansTelugu-Regular.eot);
-  src:
-    url(./NotoSansTelugu-Regular.eot?#iefix) format('embedded-opentype'),
-    url(./NotoSansTelugu-Regular.woff2) format('woff2'),
-    url(./NotoSansTelugu-Regular.woff) format('woff'),
-    url(./NotoSansTelugu-Regular.ttf) format('truetype');
-}
-
-@font-face {
-  font-family: 'Noto Sans Telugu';
-  font-style: normal;
-  font-weight: 700;
-  font-display: swap;
-  src: url(./NotoSansTelugu-Bold.eot);
-  src:
-    url(./NotoSansTelugu-Bold.eot?#iefix) format('embedded-opentype'),
-    url(./NotoSansTelugu-Bold.woff2) format('woff2'),
-    url(./NotoSansTelugu-Bold.woff) format('woff'),
-    url(./NotoSansTelugu-Bold.ttf) format('truetype');
-}
diff --git a/src/app/client/src/assets/styles/fonts/notosans/cyrillic-ext.woff2 b/src/app/client/src/assets/styles/fonts/notosans/cyrillic-ext.woff2
deleted file mode 100644
index 1d76abd4cda38c17a67f5173eb9ad648cab61c8c..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans/cyrillic-ext.woff2 and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans/cyrillic.woff2 b/src/app/client/src/assets/styles/fonts/notosans/cyrillic.woff2
deleted file mode 100644
index 1809b57742e823b2e10ccc3b575f6c314f0ebb4a..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans/cyrillic.woff2 and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans/devanagari.woff2 b/src/app/client/src/assets/styles/fonts/notosans/devanagari.woff2
deleted file mode 100644
index f228192f296147f3df3b60aca44a812819631e34..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans/devanagari.woff2 and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans/greek-ext.woff2 b/src/app/client/src/assets/styles/fonts/notosans/greek-ext.woff2
deleted file mode 100644
index c0ed67f8e69c51f913880ecb6cddfea6eaaef503..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans/greek-ext.woff2 and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans/greek.woff2 b/src/app/client/src/assets/styles/fonts/notosans/greek.woff2
deleted file mode 100644
index ae50fdd36e6ed769ad22e03ba34e9085ee2d2906..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans/greek.woff2 and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans/latin-ext.woff2 b/src/app/client/src/assets/styles/fonts/notosans/latin-ext.woff2
deleted file mode 100644
index f330caf6dadef7ee58c8341d2812312af1e770e2..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans/latin-ext.woff2 and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans/latin.woff2 b/src/app/client/src/assets/styles/fonts/notosans/latin.woff2
deleted file mode 100644
index 22818e7d4c3314490e1566fe3b3dfeb8ab0b174a..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans/latin.woff2 and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/notosans/notosans.css b/src/app/client/src/assets/styles/fonts/notosans/notosans.css
deleted file mode 100644
index fda7690d78a973c4f089787f31e33c310988a16f..0000000000000000000000000000000000000000
--- a/src/app/client/src/assets/styles/fonts/notosans/notosans.css
+++ /dev/null
@@ -1,74 +0,0 @@
-/* cyrillic-ext */
-@font-face {
-  font-family: 'Noto Sans';
-  font-style: normal;
-  font-weight: 400;
-  src: local('Noto Sans'), local('NotoSans'), url(./cyrillic-ext.woff2) format('woff2');
-  unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
-}
-
-/* cyrillic */
-@font-face {
-  font-family: 'Noto Sans';
-  font-style: normal;
-  font-weight: 400;
-  src: local('Noto Sans'), local('NotoSans'), url(./cyrillic.woff2) format('woff2');
-  unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
-}
-
-/* devanagari */
-@font-face {
-  font-family: 'Noto Sans';
-  font-style: normal;
-  font-weight: 400;
-  src: local('Noto Sans'), local('NotoSans'), url(./devanagari.woff2) format('woff2');
-  unicode-range: U+0900-097F, U+1CD0-1CF6, U+1CF8-1CF9, U+200C-200D, U+20A8, U+20B9, U+25CC, U+A830-A839, U+A8E0-A8FB;
-}
-
-/* greek-ext */
-@font-face {
-  font-family: 'Noto Sans';
-  font-style: normal;
-  font-weight: 400;
-  src: local('Noto Sans'), local('NotoSans'), url(./greek-ext.woff2) format('woff2');
-  unicode-range: U+1F00-1FFF;
-}
-
-/* greek */
-@font-face {
-  font-family: 'Noto Sans';
-  font-style: normal;
-  font-weight: 400;
-  src: local('Noto Sans'), local('NotoSans'), url(./greek.woff2) format('woff2');
-  unicode-range: U+0370-03FF;
-}
-
-/* vietnamese */
-@font-face {
-  font-family: 'Noto Sans';
-  font-style: normal;
-  font-weight: 400;
-  font-display: swap;
-  src: local('Noto Sans'), local('NotoSans'), url(./vietnamese.woff2) format('woff2');
-  unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB;
-}
-
-/* latin-ext */
-@font-face {
-  font-family: 'Noto Sans';
-  font-style: normal;
-  font-weight: 400;
-  font-display: swap;
-  src: local('Noto Sans'), local('NotoSans'), url(./latin-ext.woff2) format('woff2');
-  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
-}
-
-/* latin */
-@font-face {
-  font-family: 'Noto Sans';
-  font-style: normal;
-  font-weight: 400;
-  font-display: swap;
-  src: local('Noto Sans'), local('NotoSans'), url(./latin.woff2) format('woff2');
-  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
-}
diff --git a/src/app/client/src/assets/styles/fonts/notosans/vietnamese.woff2 b/src/app/client/src/assets/styles/fonts/notosans/vietnamese.woff2
deleted file mode 100644
index b28836f20376c17636d8fa3fa2fca8e43d5d9fff..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/notosans/vietnamese.woff2 and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/sb-icons/icomoon.eot b/src/app/client/src/assets/styles/fonts/sb-icons/icomoon.eot
deleted file mode 100644
index 29cba8b9ffde805b69f2e127a5ed8e561a708a45..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/sb-icons/icomoon.eot and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/sb-icons/icomoon.svg b/src/app/client/src/assets/styles/fonts/sb-icons/icomoon.svg
deleted file mode 100644
index 614fc3b5ca26a6b0f11bf49c5c6385fa38bb0dea..0000000000000000000000000000000000000000
--- a/src/app/client/src/assets/styles/fonts/sb-icons/icomoon.svg
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
-<svg xmlns="http://www.w3.org/2000/svg">
-<metadata>Generated by IcoMoon</metadata>
-<defs>
-<font id="icomoon" horiz-adv-x="1024">
-<font-face units-per-em="1024" ascent="960" descent="-64" />
-<missing-glyph horiz-adv-x="1024" />
-<glyph unicode="&#x20;" horiz-adv-x="512" d="" />
-<glyph unicode="&#xe900;" glyph-name="book" d="M192 832v-768h640v768h-640zM192 896h640c35.346 0 64-28.654 64-64v-768c0-35.346-28.654-64-64-64h-640c-35.346 0-64 28.654-64 64v768c0 35.346 28.654 64 64 64zM416 320c-17.673 0-32 14.327-32 32s14.327 32 32 32h320c17.673 0 32-14.327 32-32s-14.327-32-32-32h-320zM405.333 192c-11.782 0-21.333 14.327-21.333 32s9.551 32 21.333 32h213.333c11.782 0 21.333-14.327 21.333-32s-9.551-32-21.333-32h-213.333zM448 704v-192h256v192h-256zM416 768h320c17.673 0 32-14.327 32-32v-256c0-17.673-14.327-32-32-32h-320c-17.673 0-32 14.327-32 32v256c0 17.673 14.327 32 32 32zM896 768v0c17.673 0 32-14.327 32-32v0c0-17.673-14.327-32-32-32v64zM896 640v0c17.673 0 32-14.327 32-32v0c0-17.673-14.327-32-32-32v64zM896 512v0c17.673 0 32-14.327 32-32v0c0-17.673-14.327-32-32-32v64zM256 832h64v-768h-64z" />
-<glyph unicode="&#xe901;" glyph-name="content" d="M128 192h160c17.673 0 32-14.327 32-32s-14.327-32-32-32h-192c-17.673 0-32 14.327-32 32v576c0 17.673 14.327 32 32 32h832c17.673 0 32-14.327 32-32v-576c0-17.673-14.327-32-32-32h-128c-17.673 0-32 14.327-32 32s14.327 32 32 32h96v512h-768v-512zM748.095 348.095v-116.027c0-92.992-75.076-168.068-168.068-168.068-44.363 0-87.020 17.916-118.586 49.482l-130.53 130.53c-15.356 15.356-14.503 40.951 2.559 55.454 15.356 12.797 37.538 10.238 52.041-3.413l62.279-62.279v304.57c0 22.182 18.769 39.244 40.951 37.538 19.622-1.706 34.125-19.622 34.125-39.244v-118.586c4.266 17.916 20.475 31.566 40.097 29.86 20.475-0.853 34.979-18.769 34.979-39.244v-21.328c4.266 17.916 20.475 31.566 40.097 29.86 20.475-0.853 34.979-18.769 34.979-39.244v-21.328c4.266 17.916 20.475 31.566 40.097 29.86 20.475 0 34.979-17.916 34.979-38.391z" />
-<glyph unicode="&#xe902;" glyph-name="folder" d="M485.053 672h349.713c81.062 0 124.081-48.129 117.237-134.020l-85.808-448c-2.888-15.078-16.077-25.98-31.429-25.98h-738.767c-17.673 0-32 14.327-32 32v640c0 17.673 14.327 32 32 32h295.008c54.665 0 86.188-35.629 94.046-96zM551.008 576h115.439c77.672 0 123.288-45.616 128-128v-192c0-17.673-14.327-32-32-32s-32 14.327-32 32l0.053 190.152c-2.746 47.464-21.13 65.848-64.053 65.848h-115.439c-81.673 0-128 46.327-128 128 0 48.415-10.39 64-32 64h-263.008v-576h680.326l80.344 418.468c3.532 45.661-10.654 61.532-53.903 61.532h-343.503c7.66-22.725 26.183-32 59.744-32z" />
-<glyph unicode="&#xe903;" glyph-name="collection" d="M128 64h768v438.857h-499.2c-21.208 0-38.4 16.374-38.4 36.571v36.571h-230.4v-512zM437.333 568.889h485.333c20.619 0 37.333-15.919 37.333-35.556v-497.778c0-19.637-16.715-35.556-37.333-35.556h-821.333c-20.619 0-37.333 15.919-37.333 35.556v568.889c0 19.637 16.715 35.556 37.333 35.556h298.667c20.619 0 37.333-15.919 37.333-35.556v-35.556zM384 832v-96h-64v128c0 17.673 14.327 32 32 32h512c17.673 0 32-14.327 32-32v-352h-64v320h-448zM320 384h64v-64h-64v64zM448 384h256v-64h-256v64zM448 256h256v-64h-256v64zM320 256h64v-64h-64v64zM256 704v-64h-64v96c0 17.673 14.327 32 32 32h512c17.673 0 32-14.327 32-32v-224h-64v192h-448z" />
-<glyph unicode="&#xe904;" glyph-name="doc" d="M352 448c-17.673 0-32 14.327-32 32s14.327 32 32 32h320c17.673 0 32-14.327 32-32s-14.327-32-32-32h-320zM192 832v-768h640v576c0 106.039-85.961 192-192 192h-448zM128 832c0 35.346 28.654 64 64 64h448c141.385 0 256-114.615 256-256v-576c0-35.346-28.654-64-64-64h-640c-35.346 0-64 28.654-64 64v768zM832 672v-64h-128c-53.019 0-96 42.981-96 96v128h64v-128c0-17.673 14.327-32 32-32h128zM352 320c-17.673 0-32 14.327-32 32s14.327 32 32 32h320c17.673 0 32-14.327 32-32s-14.327-32-32-32h-320zM352 192c-17.673 0-32 14.327-32 32s14.327 32 32 32h192c17.673 0 32-14.327 32-32s-14.327-32-32-32h-192z" />
-<glyph unicode="&#xe905;" glyph-name="mp3" d="M338.745 320h-114.745c-17.673 0-32 14.327-32 32v192c0 17.673 14.327 32 32 32h114.745l246.627 246.627c20.159 20.159 54.627 5.882 54.627-22.627v-704c0-28.509-34.469-42.786-54.627-22.627l-246.627 246.627zM256 512v-128h96c8.487 0 16.626-3.371 22.627-9.373l201.373-201.373v549.49l-201.373-201.373c-6.001-6.001-14.14-9.373-22.627-9.373h-96zM704 288c-17.673 0-32 14.327-32 32s14.327 32 32 32c53.019 0 96 42.981 96 96s-42.981 96-96 96c-17.673 0-32 14.327-32 32s14.327 32 32 32c88.366 0 160-71.634 160-160s-71.634-160-160-160z" />
-<glyph unicode="&#xe906;" glyph-name="open-book" d="M64 768v-640h896v640h-896zM64 832h896c35.346 0 64-28.654 64-64v-640c0-35.346-28.654-64-64-64h-896c-35.346 0-64 28.654-64 64v640c0 35.346 28.654 64 64 64zM480 768h64v-704h-64zM160 640h192c17.673 0 32-14.327 32-32s-14.327-32-32-32h-192c-17.673 0-32 14.327-32 32s14.327 32 32 32zM672 640h192c17.673 0 32-14.327 32-32s-14.327-32-32-32h-192c-17.673 0-32 14.327-32 32s14.327 32 32 32zM160 512h192c17.673 0 32-14.327 32-32s-14.327-32-32-32h-192c-17.673 0-32 14.327-32 32s14.327 32 32 32zM672 512h192c17.673 0 32-14.327 32-32s-14.327-32-32-32h-192c-17.673 0-32 14.327-32 32s14.327 32 32 32zM672 384h128c17.673 0 32-14.327 32-32s-14.327-32-32-32h-128c-17.673 0-32 14.327-32 32s14.327 32 32 32zM160 384h192c17.673 0 32-14.327 32-32s-14.327-32-32-32h-192c-17.673 0-32 14.327-32 32s14.327 32 32 32z" />
-<glyph unicode="&#xe907;" glyph-name="video" d="M192 704v-512.004h704.004v512.004h-704.004zM192 768h704.004c35.346 0 64-28.654 64-64v-512.004c0-35.346-28.654-64-64-64h-704.004c-35.346 0-64 28.654-64 64v512.004c0 35.346 28.654 64 64 64zM448 552.842v-193.867c0-10.604 8.596-19.2 19.2-19.2 2.981 0 5.92 0.694 8.587 2.027l193.867 96.934c9.484 4.742 13.329 16.275 8.587 25.76-1.858 3.716-4.871 6.729-8.587 8.587l-193.867 96.934c-9.484 4.742-21.017 0.898-25.76-8.587-1.333-2.666-2.027-5.606-2.027-8.587z" />
-<glyph unicode="&#xe908;" glyph-name="comment" d="M537.975 224.61c185.148 8.728 326.025 109.109 326.025 223.39 0 120.328-155.508 224-352 224s-352-103.672-352-224c0-79.719 68.836-155.040 180.62-195.289 27.244-9.81 26.401-42.853 8.108-56.351-8.861-48.129-33.258-90.55-72.403-126.739 68.108 21.548 151.999 68.113 233.505 135.447 4.112 10.482 13.582 18.857 28.144 19.543zM285.399 205.98c-115.686 51.652-189.399 140.954-189.399 242.020 0 162.442 188.338 288 416 288s416-125.558 416-288c0-150.804-162.825-270.759-370.239-286.296-100.419-84.511-206.121-140.474-289.515-160.794-40.23-9.803-70.979-10.508-90.14 2.822-37.719 26.241-17.853 60.669 21.484 86.894 48.915 32.61 76.946 70.683 85.808 115.355zM384 416c-17.673 0-32 14.327-32 32s14.327 32 32 32h256c17.673 0 32-14.327 32-32s-14.327-32-32-32h-256zM480 576c0 17.673 14.327 32 32 32s32-14.327 32-32v-256c0-17.673-14.327-32-32-32s-32 14.327-32 32v256z" />
-<glyph unicode="&#xe909;" glyph-name="preview" d="M512 224c146.517 0 275.865 90.345 328.015 224-52.15 133.655-181.498 224-328.015 224s-275.865-90.345-328.015-224c52.15-133.655 181.498-224 328.015-224zM119.679 458.664c58.274 164.872 214.605 277.336 392.321 277.336s334.047-112.464 392.321-277.336l3.769-10.664-3.769-10.664c-58.274-164.872-214.605-277.336-392.321-277.336s-334.047 112.464-392.321 277.336l-3.769 10.664 3.769 10.664zM394.271 498.323c8.789-11.158 22.422-18.323 37.729-18.323 26.51 0 48 21.49 48 48 0 15.306-7.164 28.939-18.323 37.729 15.447 6.611 32.457 10.271 50.323 10.271 70.692 0 128-57.308 128-128s-57.308-128-128-128c-70.692 0-128 57.308-128 128 0 17.865 3.66 34.876 10.271 50.323z" />
-<glyph unicode="&#xe90a;" glyph-name="reviewer" d="M384 480c-88.366 0-160 71.634-160 160s71.634 160 160 160c88.366 0 160-71.634 160-160s-71.634-160-160-160zM384 544c53.019 0 96 42.981 96 96s-42.981 96-96 96c-53.019 0-96-42.981-96-96s42.981-96 96-96zM672 192c0-17.673-14.327-32-32-32s-32 14.327-32 32c0 123.712-100.288 224-224 224s-224-100.288-224-224c0-17.673-14.327-32-32-32s-32 14.327-32 32c0 159.058 128.942 288 288 288s288-128.942 288-288zM809.373 662.627c12.497 12.497 32.758 12.497 45.255 0s12.497-32.758 0-45.255l-128-128c-12.497-12.497-32.758-12.497-45.255 0l-64 64c-12.497 12.497-12.497 32.758 0 45.255s32.758 12.497 45.255 0l41.373-41.373 105.373 105.373zM809.373 534.627c12.497 12.497 32.758 12.497 45.255 0s12.497-32.758 0-45.255l-128-128c-12.497-12.497-32.758-12.497-45.255 0l-64 64c-12.497 12.497-12.497 32.758 0 45.255s32.758 12.497 45.255 0l41.373-41.373 105.373 105.373z" />
-<glyph unicode="&#xe90b;" glyph-name="send" d="M516.269 431.464c14.182-1.765 25.474-12.72 27.668-26.842l32.627-209.995 226.307 506.167-499.743-242.798 213.142-26.532zM188.047 407.828c-31.614 3.935-38.686 46.616-10.031 60.538l675.97 328.417c26.872 13.056 55.391-14.57 43.197-41.844l-306.4-685.307c-13.014-29.107-55.939-23.357-60.834 8.148l-45.547 293.157-296.355 36.891z" />
-<glyph unicode="&#xe90c;" glyph-name="refresh" d="M451.527 256.027c-1.438 2.301-3.278 3.681-5.838 4.392-2.41 0.669-4.747 0.345-7.095-0.948l-6.64-4.108c-1.319-0.659-1.846-1.528-1.956-3.732-0.169-3.381 0.548-6.249 2.112-8.753l54.95-85.685-19.492 4.873c-3.046 0.778-3.046 0.778-5.863 1.564-2.54 0.709-2.54 0.709-5.396 1.438-19.996 5.127-39.105 12.309-57.316 21.543-18.181 9.219-35.092 20.108-50.724 32.665s-29.853 26.65-42.66 42.275c-12.779 15.59-24.023 32.329-33.835 50.409-17.405 34.298-27.779 70.545-31.107 108.689-3.331 38.182 0.899 75.746 12.682 112.631 11.791 36.912 30.392 70.008 55.77 99.232 25.323 29.159 55.141 52.707 89.288 70.543 3.707 2.022 6.109 4.904 7.467 8.977 1.313 3.94 0.997 7.734-0.931 11.601-2.022 3.707-4.904 6.109-8.977 7.467-3.886 1.295-7.32 0.997-11.106-1.062-19.444-9.722-37.415-21.136-53.924-34.246-16.536-13.131-31.609-27.718-45.225-43.766-13.639-16.074-25.692-33.242-36.165-51.507-10.422-18.177-18.784-37.447-25.142-57.983-6.795-20.385-11.281-40.997-13.463-61.848-2.191-20.937-2.434-41.745-0.731-62.428 1.701-20.65 5.466-41.057 11.3-61.231 5.838-20.188 13.622-39.77 23.324-58.69 10.716-20.458 23.127-39.317 37.235-56.588 14.088-17.246 29.873-32.788 47.363-46.634 17.531-13.879 36.277-25.929 56.245-36.157 19.878-10.182 40.722-17.937 66.29-25.379-1.076 0.979-1.076 0.979-4.143 1.588h34.194l-89.682-46.501c-1.944-0.972-3.083-2.382-3.732-4.72-0.645-2.324-0.362-4.253 1.652-7.774l1.538-4.554c1.513-2.42 3.229-3.806 5.335-4.464 1.981-0.619 3.842-0.445 5.921 0.594l111.475 57.607 6.257 2.985c1.537 1.153 2.854 2.376 3.963 3.669 0.711 0.83 1.12 1.595 1.309 2.351 0.263 1.051 0.331 2.217 0.184 3.54-0.088 0.788-0.409 1.568-1.326 2.812l-4.485 6.728-68.899 108.587zM533.695 156.286l4.23-6.366c2.329-3.105 3.751-6.56 4.162-10.257 0.351-3.163 0.171-6.232-0.563-9.168-0.808-3.231-2.393-6.203-4.672-8.862-1.882-2.195-4.053-4.211-7.721-6.802l-7.38-3.689-111.475-57.607c-5.799-2.9-11.912-3.473-17.904-1.6-5.868 1.834-10.63 5.68-14.805 12.66l-1.538 4.554c-3.674 5.878-4.636 12.421-2.79 19.068 1.842 6.632 5.936 11.701 11.861 14.662l42.39 21.98c-16.938 5.189-33.301 11.825-49.082 19.909-20.897 10.703-40.523 23.32-58.873 37.847-18.391 14.56-34.998 30.911-49.815 49.048-14.796 18.112-27.8 37.874-39.043 59.339-10.2 19.889-18.363 40.424-24.485 61.599-6.127 21.189-10.086 42.642-11.873 64.352-1.785 21.676-1.53 43.477 0.764 65.397 2.303 22.008 7.036 43.754 14.142 65.067 6.651 21.488 15.482 41.837 26.489 61.036 10.957 19.111 23.571 37.076 37.84 53.893 14.291 16.843 30.116 32.157 47.467 45.937 17.379 13.801 36.285 25.809 56.457 35.889 7.43 4.053 15.458 4.751 23.533 2.059 7.888-2.629 13.976-7.702 18.066-15.211 3.921-7.841 4.601-16.007 1.928-24.028-2.629-7.888-7.702-13.976-15.085-18.001-32.505-16.98-60.744-39.28-84.758-66.933-23.958-27.588-41.487-58.778-52.62-93.628-11.141-34.877-15.133-70.321-11.986-106.392 3.151-36.11 12.959-70.378 29.339-102.663 9.229-17.001 19.911-32.903 32.050-47.712 12.11-14.774 25.546-28.089 40.314-39.952 14.767-11.862 30.747-22.153 47.949-30.874 14.546-7.376 29.7-13.363 45.439-17.956l-33.007 51.469c-3.37 5.392-4.895 11.493-4.566 18.079 0.388 7.763 4.097 13.871 10.092 16.829l6.334 3.946c6.269 3.483 12.901 4.404 19.462 2.581 6.411-1.781 11.548-5.633 15.050-11.239l69.587-111.234-0.901 2.974zM541.255 733.24l68.814-107.71c1.438-2.301 3.278-3.681 5.838-4.392 2.324-0.645 4.253-0.362 6.348 0.948l6.64 4.108c1.449 0.724 2.124 1.776 2.36 4.127 0.326 3.256-0.278 5.973-1.768 8.358l-54.547 85.056 18.885-4.197c4.3-0.955 8.852-1.794 13.656-2.515 5.431-0.815 10.613-2.042 15-3.525 39.991-10.254 75.676-28.225 106.979-53.883 31.235-25.603 56.339-56.598 75.292-92.967 17.92-34.816 28.43-71.218 31.506-109.152 3.075-37.919-1.283-75.341-13.060-112.208-11.778-36.87-29.976-69.934-54.57-99.14-24.592-29.203-54.065-52.782-88.246-70.636-3.707-2.022-6.109-4.904-7.467-8.977-1.313-3.94-0.997-7.734 1.062-11.853 1.319-2.638 3.138-4.615 5.567-6.073 2.526-1.516 4.978-2.228 7.484-2.228 1.269 0 2.402 0.151 3.416 0.441 1.243 0.355 2.658 0.921 4.158 1.671 18.954 9.72 36.561 21.134 52.83 34.247 16.302 13.139 31.138 27.61 44.515 43.42 13.364 15.793 25.15 32.926 35.363 51.406 10.201 18.459 18.459 37.89 24.83 58.466 6.795 20.385 11.281 40.997 13.463 61.848 2.191 20.937 2.434 41.745 0.731 62.428-1.701 20.65-5.466 41.057-11.3 61.231-5.838 20.188-13.622 39.77-23.356 58.752-10.24 20.48-22.379 39.294-36.456 56.527-14.113 17.276-29.678 32.841-46.701 46.703-16.987 13.832-35.431 25.724-55.343 35.68-19.947 9.974-40.869 17.88-63.242 23.862-2.747 0.916-5.619 1.72-8.615 2.411-3.016 0.696-6.158 1.278-9.426 1.745l-25.269 3.61 81.972 40.946c2.622 1.639 4.555 3.894 5.91 6.942 0.931 2.095 0.846 3.533-0.927 6.67l-1.538 4.554c-1.403 2.245-3.314 3.629-6.107 4.364-2.907 0.765-5.279 0.562-7.392-0.494l-111.475-57.607-6.257-2.985c-1.537-1.153-2.854-2.376-3.963-3.669-0.711-0.83-1.12-1.595-1.309-2.351-0.263-1.051-0.331-2.217-0.184-3.54 0.088-0.788 0.409-1.568 1.823-3.669l3.111-6.221 0.962-0.527zM870.356 525.969c6.127-21.189 10.086-42.642 11.873-64.352 1.785-21.676 1.53-43.477-0.764-65.397-2.303-22.008-7.036-43.754-14.142-65.067-6.639-21.449-15.324-41.885-26.054-61.301-10.718-19.395-23.101-37.395-37.147-53.994-14.032-16.583-29.594-31.763-46.682-45.535-17.12-13.798-35.643-25.806-55.633-36.057-2.414-1.207-4.737-2.136-6.982-2.778-2.474-0.707-5.079-1.054-7.797-1.054-5.467 0-10.74 1.531-15.689 4.5-5.046 3.027-8.958 7.28-11.626 12.615-3.921 7.841-4.601 16.007-1.928 24.028 2.629 7.888 7.702 13.976 15.085 18.001 32.472 16.963 60.308 39.232 83.557 66.84 23.247 27.606 40.431 58.828 51.577 93.72 11.147 34.895 15.261 70.231 12.356 106.067-2.904 35.821-12.826 70.183-29.772 103.107-17.943 34.431-41.677 63.736-71.24 87.968-29.495 24.177-63.080 41.090-101.372 50.929-2.962 0.987-6.055 1.796-9.282 2.426l34.263-53.427c3.444-5.51 4.834-11.764 4.162-18.475-0.762-7.616-4.571-13.541-10.436-16.433l-5.98-3.738c-5.878-3.674-12.421-4.636-19.068-2.79-6.411 1.781-11.548 5.633-15.050 11.239l-68.772 107.643-1.16 0.727-2.985 6.257c-2.329 3.105-3.751 6.56-4.162 10.257-0.351 3.163-0.171 6.232 0.563 9.168 0.808 3.231 2.393 6.203 4.672 8.862 1.882 2.195 4.053 4.211 7.721 6.802l7.38 3.689 111.475 57.607c5.766 2.883 12.115 3.427 18.677 1.701 6.676-1.757 11.991-5.606 16.276-12.76l1.538-4.554c3.914-6.263 4.328-13.297 1.272-20.172-2.632-5.922-6.679-10.644-12.691-14.359l-40.072-20.036c22.291-6.069 43.625-14.196 63.993-24.381 20.953-10.477 40.383-23.004 58.28-37.577 17.861-14.544 34.19-30.873 48.982-48.98 14.819-18.14 27.591-37.935 38.314-59.375 10.191-19.878 18.348-40.401 24.467-61.563zM527.061 151.863l4.485-6.728c1.495-1.993 2.367-4.111 2.616-6.354s0.125-4.361-0.374-6.354c-0.498-1.993-1.495-3.862-2.99-5.606s-3.239-3.364-5.233-4.859l-7.475-3.738-111.38-57.559c-3.987-1.993-7.974-2.367-11.96-1.121s-7.226 3.862-9.718 7.849l-2.243 5.98c-2.492 3.987-3.115 8.223-1.869 12.708s3.862 7.724 7.849 9.718l60.549 31.396h-1.495c-0.498 0-0.997 0.249-1.495 0.748-22.426 5.482-43.854 13.455-64.287 23.921s-39.618 22.799-57.559 37.002c-17.941 14.203-34.137 30.15-48.589 47.841s-27.16 37.002-38.123 57.933c-9.967 19.436-17.94 39.494-23.921 60.175s-9.842 41.612-11.587 62.792c-1.744 21.18-1.495 42.484 0.748 63.913s6.852 42.608 13.829 63.539c6.479 20.931 15.075 40.74 25.789 59.428s23.048 36.255 37.002 52.7c13.954 16.445 29.402 31.396 46.346 44.851s35.382 25.166 55.316 35.133c5.482 2.99 11.213 3.488 17.193 1.495s10.465-5.731 13.455-11.213c2.99-5.98 3.488-11.96 1.495-17.94s-5.731-10.465-11.213-13.455c-33.389-17.442-62.418-40.366-87.086-68.772s-42.733-60.549-54.195-96.43c-11.462-35.881-15.573-72.385-12.334-109.511s13.331-72.385 30.274-105.774c9.469-17.442 20.432-33.763 32.891-48.962s26.288-28.904 41.487-41.114c15.2-12.21 31.645-22.799 49.336-31.77s36.255-15.947 55.69-20.931c1.993-0.498 3.862-0.997 5.606-1.495s3.613-0.997 5.606-1.495l-44.104 68.772c-2.492 3.987-3.613 8.472-3.364 13.455s2.367 8.472 6.354 10.465l5.98 3.738c4.485 2.492 8.97 3.115 13.455 1.869s7.974-3.862 10.465-7.849l68.772-107.643v-0.748zM838.776 583.929c9.967-19.436 17.94-39.494 23.921-60.175s9.842-41.612 11.587-62.792c1.744-21.18 1.495-42.484-0.748-63.913s-6.852-42.608-13.829-63.539c-6.479-20.931-14.95-40.864-25.416-59.801s-22.55-36.504-36.255-52.7c-13.705-16.196-28.904-31.022-45.599-44.477s-34.76-25.166-54.195-35.133c-1.993-0.997-3.862-1.744-5.606-2.243s-3.613-0.748-5.606-0.748c-3.987 0-7.849 1.121-11.587 3.364s-6.603 5.357-8.596 9.344c-2.99 5.98-3.488 11.96-1.495 17.94s5.731 10.465 11.213 13.455c33.389 17.442 62.044 40.366 85.965 68.772s41.612 60.549 53.074 96.43c11.462 35.881 15.698 72.26 12.708 109.138s-13.206 72.26-30.648 106.148c-18.439 35.383-42.858 65.532-73.257 90.45s-65.034 42.359-103.905 52.326c-4.485 1.495-9.219 2.616-14.203 3.364s-9.718 1.62-14.203 2.616l44.104-68.772c2.492-3.987 3.488-8.472 2.99-13.455s-2.741-8.472-6.728-10.465l-5.98-3.738c-3.987-2.492-8.223-3.115-12.708-1.869s-7.974 3.862-10.465 7.849l-68.772 107.643c0 0-0.249 0-0.748 0l-3.738 7.475c-1.495 1.993-2.367 4.111-2.616 6.354s-0.125 4.361 0.374 6.354c0.498 1.993 1.495 3.862 2.99 5.606s3.239 3.364 5.233 4.859l7.475 3.738 111.38 57.559c3.987 1.993 8.347 2.367 13.082 1.121s8.347-3.862 10.839-7.849l2.243-5.98c2.492-3.987 2.741-8.223 0.748-12.708s-4.983-7.974-8.97-10.465l-59.801-29.901c3.488-0.498 6.852-1.121 10.091-1.869s6.354-1.62 9.344-2.616c22.426-5.98 43.854-14.078 64.287-24.294s39.369-22.425 56.811-36.628c17.442-14.203 33.389-30.15 47.841-47.841s26.911-37.002 37.376-57.933z" />
-</font></defs></svg>
\ No newline at end of file
diff --git a/src/app/client/src/assets/styles/fonts/sb-icons/icomoon.ttf b/src/app/client/src/assets/styles/fonts/sb-icons/icomoon.ttf
deleted file mode 100644
index 8dce0955da137aa0422ae357dd4da97e35bb9cc3..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/sb-icons/icomoon.ttf and /dev/null differ
diff --git a/src/app/client/src/assets/styles/fonts/sb-icons/icomoon.woff b/src/app/client/src/assets/styles/fonts/sb-icons/icomoon.woff
deleted file mode 100644
index 0882358b4944b6d13cf8cf17cbdbce0443eaac55..0000000000000000000000000000000000000000
Binary files a/src/app/client/src/assets/styles/fonts/sb-icons/icomoon.woff and /dev/null differ
diff --git a/src/app/client/src/assets/styles/global.scss b/src/app/client/src/assets/styles/global.scss
index 7653dd4aa46e97967e1bcc7ff3c02e4e35487d15..92fc0fee3d8a43dcfe9a338c967c0acb81b3deeb 100644
--- a/src/app/client/src/assets/styles/global.scss
+++ b/src/app/client/src/assets/styles/global.scss
@@ -1,15 +1,15 @@
-@import "~@project-sunbird/sb-styles/assets/variables";
-@import "./mixins/mixins";
+@use "~@project-sunbird/sb-styles/assets/varIndex"as *;
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins"as *;
 
-@import '~@angular/material/theming';
+@import "~@angular/material/theming";
 
 @include mat-core();
 
-$custom-typography: mat-typography-config(
-  $font-family: 'var(--font-stack-en) !important',
+$custom-typography: mat-typography-config($font-family: "var(--font-stack-en) !important",
 );
 
 @include angular-material-typography($custom-typography);
+
 :root {
   font-size: 16px;
 }
@@ -79,7 +79,6 @@ body {
   text-transform: capitalize;
 }
 
-
 [dir="rtl"] {
   .sb-explore-qr-container {
     .dial-section-column {
@@ -192,7 +191,6 @@ ol.ui.list ol {
   font-size: 0.86rem;
 }
 
-
 .licenseTag {
   word-break: break-all;
   font-weight: normal !important;
@@ -241,7 +239,6 @@ app-workspace {
   }
 }
 
-
 .sb-modal-addsummary {
   .ck.ck-editor__editable_inline {
     min-height: calc(100vh - 300px);
@@ -267,8 +264,12 @@ app-workspace {
   }
 }
 
+.cc-player__btn-back {
+  padding: 0.5rem 0;
+}
+
 .b-0 {
-  @include border(border, 0px, var(--gray-400));
+  border: 0px solid var(--gray-400);
 }
 
 .bl-0 {
@@ -295,7 +296,7 @@ app-workspace {
   box-shadow: 0 4px 8px 0px rgba(var(--rc-rgba-black), 0.25) !important;
 }
 
-// Footer fix 
+// Footer fix
 
 .theme .footer-fix {
   // padding-bottom: calculateRem(160px);
@@ -334,8 +335,6 @@ app-workspace {
   display: none !important;
 }
 
-
-
 /* new theme */
 .sbt-container {
   width: 100%;
@@ -362,7 +361,6 @@ app-workspace {
   padding-bottom: calculateRem(8px);
 
   @include respond-above(sm) {
-
     align-items: flex-end;
   }
 
@@ -414,7 +412,6 @@ app-workspace {
     background: var(--sbt-body-bg2);
   }
 
-
   &__div {
     position: relative;
     z-index: 99;
@@ -426,7 +423,7 @@ app-workspace {
 }
 
 .sbt-theme-bg-img {
-  display:none;
+  display: none;
   position: fixed;
   z-index: -50;
   left: calculateRem(-106px);
@@ -444,16 +441,6 @@ app-workspace {
   .st0 {
     fill: var(--themeflower-bg);
   }
-
-  // &--right {
-  //   right: calculateRem(-100px);
-  //   left: inherit;
-  //   transform: rotate(-67deg);
-  //   z-index: 1;
-  //   .st0 {
-  //     fill:var(--white);
-  //   }
-  // }
 }
 
 .sbt-theme-right-flower {
@@ -580,7 +567,6 @@ app-workspace {
     padding: 0px 16px;
     background: var(--sbt-compt-bg) !important;
   }
-
 }
 
 /* rtl for sbt filter */
@@ -622,7 +608,7 @@ html[dir="rtl"] {
     font-size: calculateRem(14px) !important;
   }
 
-  html[data-theme='Default'] .lib-chat-head {
+  html[data-theme="default"] .lib-chat-head {
     top: 5.75rem !important;
     z-index: inherit !important;
   }
@@ -642,7 +628,7 @@ html[dir="rtl"] {
 }
 
 .notAllowedCursor {
-  cursor: not-allowed
+  cursor: not-allowed;
 }
 
 #report-summary .ui.unordered.list .item {
@@ -676,14 +662,12 @@ html[dir="rtl"] {
   }
 }
 
-
 html.PlayerMediaQueryClass {
   @include respond-above(xl) {
     font-size: calc(12px + (18 - 12) * ((100vw - 320px) / (1920 - 320)));
   }
 }
 
-
 .sb-notification-modal {
   .ui.modal {
     left: auto;
@@ -774,8 +758,8 @@ html.PlayerMediaQueryClass {
   width: 1.5rem;
   border-radius: 50%;
   box-shadow: var(--sbt-box-shadow-3px);
-  right: .75rem !important;
-  top: .75rem !important;
+  right: 0.75rem !important;
+  top: 0.75rem !important;
   background-color: var(--white);
 
   &::before {
@@ -933,12 +917,14 @@ app-landing-page {
       flex-direction: column;
       width: 100%;
     }
+
     nav {
       @include respond-below(xs) {
         flex-wrap: wrap;
         justify-content: center;
       }
     }
+
     ul {
       list-style: none;
       display: flex;
@@ -1009,7 +995,7 @@ app-landing-page {
       justify-content: center;
       margin: 0px 0.25rem;
       padding: 0px 0.5rem;
-      transition: all .3s ease-in-out;
+      transition: all 0.3s ease-in-out;
       border-radius: 50%;
 
       &:hover,
@@ -1048,7 +1034,7 @@ app-landing-page {
     padding: 0px;
     background: none;
     cursor: pointer;
-    transition: all .3s ease-in-out;
+    transition: all 0.3s ease-in-out;
 
     &:hover {
       outline: none;
@@ -1132,7 +1118,7 @@ a.ui.labels .label:hover {
 
 // Buttons
 .sb-btn-outline-primary {
-  html[data-theme=Darkmode] & {
+  html[data-mode="darkmode"] & {
 
     &:hover,
     &:active,
@@ -1169,7 +1155,8 @@ a.ui.labels .label:hover {
   .multi-select-container .list-border .placeholder {
     color: var(--black) !important;
   }
-  .multi-select-container .list-border ul{
+
+  .multi-select-container .list-border ul {
     padding-left: 1rem;
   }
 }
@@ -1177,7 +1164,6 @@ a.ui.labels .label:hover {
 .sb-notification-container {
   .clear-text {
     cursor: pointer;
-    ;
   }
 }
 
@@ -1196,7 +1182,6 @@ a.ui.labels .label:hover {
   padding: 0.5rem;
 }
 
-
 .sb-slider-pills-container .sb-grade-pills-container .pill.active:hover {
   background-color: var(--cc-grade-pill-bg-hover) !important;
   color: var(--cc-grade-pill-text-hover) !important;
@@ -1205,7 +1190,7 @@ a.ui.labels .label:hover {
 .sbt-class-bar .sb-slider-pills-container .sb-pills-container .pill.active:hover {
   background-color: var(--cc-grade-pill-bg-hover) !important;
   color: var(--cc-grade-pill-text-hover) !important;
-  box-shadow: 0 3px 4px 0 rgba(var(--rc-rgba-black), .19) !important;
+  box-shadow: 0 3px 4px 0 rgba(var(--rc-rgba-black), 0.19) !important;
 }
 
 //moved from themes
@@ -1218,7 +1203,7 @@ a.ui.labels .label:hover {
 }
 
 // theme custom changes
-html[layout='joy'] {
+html[layout="joy"] {
   .sbt-sticky-topbar.sb-fontresizecontainer {
     position: sticky;
 
@@ -1247,7 +1232,7 @@ html[layout='joy'] {
   }
 }
 
-html[data-theme=Darkmode][layout='old'] {
+html[data-mode="darkmode"][layout="base"] {
   .sb-fontresizecontainer.sbt-sticky {
     position: relative;
   }
@@ -1257,10 +1242,8 @@ html[data-theme=Darkmode][layout='old'] {
   }
 }
 
-html[data-theme='Darkmode'][layout='joy'] {}
-
 //portal
-@media screen and (min-width:1024px) and (max-width:1199px) {
+@media screen and (min-width: 1024px) and (max-width: 1199px) {
   *[lang="ta"] {
     .sb-header-list-items {
 
@@ -1277,7 +1260,7 @@ html[data-theme='Darkmode'][layout='joy'] {}
   }
 }
 
-@media screen and (min-width:1200px) and (max-width:1280px) {
+@media screen and (min-width: 1200px) and (max-width: 1280px) {
   *[lang="ta"] {
     .sb-header-list-items {
 
@@ -1294,7 +1277,7 @@ html[data-theme='Darkmode'][layout='joy'] {}
   }
 }
 
-@media screen and (min-width:1024px) and (max-width:1199px) {
+@media screen and (min-width: 1024px) and (max-width: 1199px) {
   *[lang="ta"] {
     .sb-desktop-header-list-items {
 
@@ -1311,7 +1294,7 @@ html[data-theme='Darkmode'][layout='joy'] {}
   }
 }
 
-@media screen and (min-width:1200px) and (max-width:1600px) {
+@media screen and (min-width: 1200px) and (max-width: 1600px) {
   *[lang="ta"] {
     .sb-desktop-header-list-items {
 
@@ -1340,41 +1323,48 @@ html[data-theme='Darkmode'][layout='joy'] {}
 }
 
 // tab index css
-*:focus-visible{
+*:focus-visible {
   border: 0.0625rem #fe0000 solid !important;
   border-radius: 0.25rem;
   outline: none;
 }
-.profile-avtar:focus-within{
+
+.profile-avtar:focus-within {
   border: 1px #fe0000 solid !important;
   border-radius: 5px;
   outline: none;
 }
-input[type=radio]:focus-visible, input[type=checkbox]:focus-visible{
+
+input[type="radio"]:focus-visible,
+input[type="checkbox"]:focus-visible {
   outline: 2px solid #fe0000;
   border-radius: 5px;
-  
 }
-.sb-checkbox.sb-checkbox-primary.sb-checkbox-rightaligned label:focus-within{
+
+.sb-checkbox.sb-checkbox-primary.sb-checkbox-rightaligned label:focus-within {
   outline: 2px solid #fe0000;
   border-radius: 5px;
 }
+
 // tab index css end
 
 // player SB-24647 changes
 .contentViewerIframeShadow.player-fullscreen.content-full-video epub-viewer {
   height: calc(100% - 7rem);
 }
+
 .contentViewerIframeShadow.player-fullscreen.content-full-video quml-main-player .main-container {
   height: calc(100vh - 4rem);
 }
+
 .notVisible {
   top: 0rem !important;
   position: relative !important;
 }
 
 .contentViewerIframeShadow sunbird-pdf-player sb-player-side-menu-icon.notVisible,
-#playerFullscreen.player-fullscreen sunbird-pdf-player sb-player-side-menu-icon.notVisible, .contentViewerIframeShadow sunbird-epub-player sb-player-side-menu-icon.notVisible {
+#playerFullscreen.player-fullscreen sunbird-pdf-player sb-player-side-menu-icon.notVisible,
+.contentViewerIframeShadow sunbird-epub-player sb-player-side-menu-icon.notVisible {
   top: 0 !important;
   position: absolute !important;
 }
@@ -1400,8 +1390,8 @@ iframe#contentPlayer.player-fullscreen {
   position: inherit !important;
 }
 
-html[layout=joy] .player-fullscreen-action-items .content-video__player__details,
-html[layout=joy] #playerFullscreen .contentViewerIframeShadow {
+html[layout="joy"] .player-fullscreen-action-items .content-video__player__details,
+html[layout="joy"] #playerFullscreen .contentViewerIframeShadow {
   border-radius: 0px !important;
 }
 
@@ -1409,51 +1399,63 @@ html[layout="joy"] .contentViewerIframeShadow {
   overflow: hidden;
 }
 
-html[layout="old"] sunbird-pdf-player .sb-player-splash-container .loading-text {
-  color:var(--white);
+html[layout="base"] sunbird-pdf-player .sb-player-splash-container .loading-text {
+  color: var(--white);
 }
-html[data-theme=Darkmode][layout='old'] {
-  sunbird-pdf-player .sb-player-splash-container .loading-text{
+
+html[data-mode="darkmode"][layout="base"] {
+  sunbird-pdf-player .sb-player-splash-container .loading-text {
     color: var(--black);
   }
 }
-.contentViewerIframeShadow.player-fullscreen.content-full-video sunbird-pdf-player .player-endpage, .contentViewerIframeShadow.player-fullscreen.content-full-video sunbird-pdf-player .sb-player-splash-container, .contentViewerIframeShadow.player-fullscreen.content-full-video sunbird-epub-player .sb-player-splash-container {
-  height: calc(100% - 4rem)!important;
+
+.contentViewerIframeShadow.player-fullscreen.content-full-video sunbird-pdf-player .player-endpage,
+.contentViewerIframeShadow.player-fullscreen.content-full-video sunbird-pdf-player .sb-player-splash-container,
+.contentViewerIframeShadow.player-fullscreen.content-full-video sunbird-epub-player .sb-player-splash-container {
+  height: calc(100% - 4rem) !important;
 }
 
-sb-pills-grid{
+sb-pills-grid {
   .sb-label-grid.show-ellipsis .item label {
     @supports (-webkit-box-orient: vertical) {
       -webkit-box-orient: vertical !important;
     }
   }
 }
+
 // ends
 
 //epup player splash
 sunbird-epub-player .sunbird-epub-container {
-  div:first-child{
+  div:first-child {
     height: inherit;
-    sb-player-start-page{
-      .sb-player-splash-container{
+
+    sb-player-start-page {
+      .sb-player-splash-container {
         height: 100% !important;
       }
     }
   }
-  .epub-container sb-player-sidebar .navBlock .player-nav-unit{
+
+  .epub-container sb-player-sidebar .navBlock .player-nav-unit {
     height: auto !important;
   }
 }
-.PlayerMediaQueryClass sunbird-epub-player .sunbird-epub-container div:first-child.rendition{
-  height:auto;
+
+.PlayerMediaQueryClass sunbird-epub-player .sunbird-epub-container div:first-child.rendition {
+  height: auto;
 }
-.PlayerMediaQueryClass .contentViewerIframeShadow.player-fullscreen.content-full-video sunbird-epub-player .sb-player-splash-container{
+
+.PlayerMediaQueryClass .contentViewerIframeShadow.player-fullscreen.content-full-video sunbird-epub-player .sb-player-splash-container {
   height: calc(100% - 4rem) !important;
 }
-.PlayerMediaQueryClass .sb-epub-reading-status, .PlayerMediaQueryClass .sb-pdf-reading-status{
+
+.PlayerMediaQueryClass .sb-epub-reading-status,
+.PlayerMediaQueryClass .sb-pdf-reading-status {
   bottom: 4.75rem !important;
 }
-.contentViewerIframeShadow.player-fullscreen.content-full-video sunbird-epub-player .sb-player-splash-container{
+
+.contentViewerIframeShadow.player-fullscreen.content-full-video sunbird-epub-player .sb-player-splash-container {
   height: 100% !important;
 }
 
@@ -1464,9 +1466,11 @@ html[layout="joy"] .sb-modal-content .ui.center.aligned.segment {
 .sb-join-modal-content div.sb-h4 {
   line-height: normal;
 }
+
 .required-asterisk {
-  color: #A80011;
+  color: #a80011;
 }
+
 // .mat-dialog-container{
 //   box-shadow: none;
 //   background: transparent;
@@ -1487,55 +1491,63 @@ html[layout="joy"] .sb-modal-content .ui.center.aligned.segment {
   display: inline-block;
   margin: 0px 0.5rem;
 }
+
 .startpage__instruction .startpage__instr-desc p.text-right {
-    padding-right: 8px !important;
+  padding-right: 8px !important;
 }
+
 [dir="rtl"] {
-  .contentViewerIframeShadow{
-    transform: translate(50%,-50%) !important;
+  .contentViewerIframeShadow {
+    transform: translate(50%, -50%) !important;
   }
 }
 
-.sbaccordion__panel-header__title .sb-checkbox, .sbselectpopover .sb-checkbox {
+.sbaccordion__panel-header__title .sb-checkbox,
+.sbselectpopover .sb-checkbox {
   padding: 0 0;
   margin-top: 0;
 }
 
-
 /* error page */
 .error-page {
-  padding:0 5%;
-  @include respond-below(sm){
-    padding:0 1%;
+  padding: 0 5%;
+
+  @include respond-below(sm) {
+    padding: 0 1%;
   }
+
   .logo {
     height: 5rem;
     display: flex;
     align-items: center;
+
     img {
       min-height: 65%;
       height: 80%;
     }
   }
+
   .error-img img {
     max-width: 35.375rem;
-    width:100%;
-    @include respond-below(sm){
+    width: 100%;
+
+    @include respond-below(sm) {
       max-width: 25rem;
     }
   }
-
 }
 
 .slick-prev,
 .slick-next {
   &.slick-arrow.slick-disabled {
     display: none;
+
     &:focus-visible {
       border: none !important;
     }
+
     &::before {
       cursor: no-drop;
     }
   }
-}
\ No newline at end of file
+}
diff --git a/src/app/client/src/assets/styles/layout/_container.scss b/src/app/client/src/assets/styles/layout/_container.scss
index 472900254d732450b972a7895f3788c33bbe1105..dd072801c549afad8c3d5c09f6408e2bf3859874 100644
--- a/src/app/client/src/assets/styles/layout/_container.scss
+++ b/src/app/client/src/assets/styles/layout/_container.scss
@@ -1,3 +1,5 @@
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
+
 @include respond-above(lg) {
   .ui.container,.ui.grid.container {
     width: calculateRem(1216px) !important;
diff --git a/src/app/client/src/assets/styles/layout/_footer.scss b/src/app/client/src/assets/styles/layout/_footer.scss
index a9b6aa70540990e37683342d5b6584da3079b5f8..c4aa7d86a650ebcc5a7de738cbad24042e9d2053 100644
--- a/src/app/client/src/assets/styles/layout/_footer.scss
+++ b/src/app/client/src/assets/styles/layout/_footer.scss
@@ -1,3 +1,4 @@
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 .download-mobile-app {
   border-radius: calculateRem(20px) calculateRem(20px) 0 0;
   position: absolute;
diff --git a/src/app/client/src/assets/styles/layout/_grid.scss b/src/app/client/src/assets/styles/layout/_grid.scss
index 0e8ad8ae9c4bc701c602bd7f5903344de3de12aa..312966a1012eb08dac5cceaf26f8376469aefb98 100644
--- a/src/app/client/src/assets/styles/layout/_grid.scss
+++ b/src/app/client/src/assets/styles/layout/_grid.scss
@@ -1,3 +1,4 @@
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 // no IE support!
 $grid_gutter: 16px;
 $screen_viewport_xs: 0;
diff --git a/src/app/client/src/assets/styles/layout/_header.scss b/src/app/client/src/assets/styles/layout/_header.scss
index 13a20c83a4a28d713b9174456b86912a2cc99809..2b35b90b5bd86870e7745c75436f83c3c507282f 100644
--- a/src/app/client/src/assets/styles/layout/_header.scss
+++ b/src/app/client/src/assets/styles/layout/_header.scss
@@ -1,3 +1,4 @@
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 .sbt-header {
   .sbt-container {
     padding: 0 5%;
diff --git a/src/app/client/src/assets/styles/layout/layout.scss b/src/app/client/src/assets/styles/layout/layout.scss
index 2087e7244af3d13a7631e06aebfe80a0efe60dfc..1ce850cc61c1fac7950bbade9b6e950fe1679055 100644
--- a/src/app/client/src/assets/styles/layout/layout.scss
+++ b/src/app/client/src/assets/styles/layout/layout.scss
@@ -1,6 +1,6 @@
-@import "./container";
-@import "./grid";
-@import "./mixins/mixins";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
+@forward "./container";
+@forward "./grid";
 
 .ui.grid>.column:not(.row) {
     padding-top: calculateRem(12px);
diff --git a/src/app/client/src/assets/styles/legacy.scss b/src/app/client/src/assets/styles/legacy.scss
index 280e642d796f33d4e04adabe75651bf068e512b0..8154c64e4f6ab39d07947c07942d6f6c78e0c59b 100644
--- a/src/app/client/src/assets/styles/legacy.scss
+++ b/src/app/client/src/assets/styles/legacy.scss
@@ -1,5 +1,4 @@
-@import "./variables";
-@import "./mixins/mixins";
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
 .text-gray {
   color: var( --rc-9F9F9F) !important;
diff --git a/src/app/client/src/assets/styles/mixins/_border.scss b/src/app/client/src/assets/styles/mixins/_border.scss
deleted file mode 100644
index 90ad2980f00320fb159d3a8bf3b10fc481d9a6c8..0000000000000000000000000000000000000000
--- a/src/app/client/src/assets/styles/mixins/_border.scss
+++ /dev/null
@@ -1,38 +0,0 @@
-// Set basic variables
-$border-width:calculateRem(1px);
-$border-color: var(--gray-100);
-//@include border(border,$border-width,$border-color);
-
-@mixin border($var-direction: "border", $var-width: $border-width, $var-color: $border-color) {
-    @if $var-direction == 'border'{
-        border: $var-width solid $var-color !important;
-    }
-    @if $var-direction == 'border-bottom'{
-        border-bottom: $var-width solid $var-color !important;
-    }
-    @if $var-direction == 'border-top'{
-        border-top: $var-width solid $var-color !important;
-    }
-    @if $var-direction == 'border-right'{
-        border-right: $var-width solid $var-color !important;
-    }
-    @if $var-direction == 'border-left'{
-        border-left: $var-width solid $var-color !important;
-    }
-    @if $var-direction == 'border-tb'{
-        border-bottom: $var-width solid $var-color !important;
-        border-top:    $var-width solid $var-color !important;
-    }
-    @if $var-direction == 'border-lr'{
-        border-left: $var-width solid $var-color !important;
-        border-right: $var-width solid $var-color !important;
-    }
-    @if $var-direction == 'border-no-top'{
-        border: $var-width solid $var-color !important;
-        border-top: none;
-    }
-    @if $var-direction == 'border-no-bottom'{
-        border:        $var-width solid $var-color !important;
-        border-bottom: none !important;
-    }
-}
\ No newline at end of file
diff --git a/src/app/client/src/assets/styles/mixins/_button.scss b/src/app/client/src/assets/styles/mixins/_button.scss
deleted file mode 100644
index eee9409981663b67423800dd08b7e3b5e02a03e0..0000000000000000000000000000000000000000
--- a/src/app/client/src/assets/styles/mixins/_button.scss
+++ /dev/null
@@ -1,25 +0,0 @@
-@mixin btn-theme($btn-color) {
-	border-color: $btn-color;
-	background-color: $btn-color;
-	color: $white;
-}
-
-@mixin btn-theme-bgwhite($btn-color) {
-	background-color: $white;
-	color: $btn-color;
-}
-
-@mixin btn-theme-links($btn-color) {
-	color:($btn-color);
-}
-
-@mixin btn-theme-links($btn-color) {
-	color:($btn-color);
-}
-
-@mixin trans($val...) {
-	-webkit-transition: $val;
-	-moz-transition: $val;
-	-o-transition: $val;
-	transition: $val;
-}
diff --git a/src/app/client/src/assets/styles/mixins/_functions.scss b/src/app/client/src/assets/styles/mixins/_functions.scss
deleted file mode 100644
index c34dd9b9ee411d9c7babb0f9abdd0e5d20eb466c..0000000000000000000000000000000000000000
--- a/src/app/client/src/assets/styles/mixins/_functions.scss
+++ /dev/null
@@ -1,15 +0,0 @@
-//rem calculator
-@function calculateRem($size) {
-  $remSize: $size / 16px;
-  @return #{$remSize}rem;
-}
-
-@function calculateEm($size) {
-  $emSize: $size / 16px;
-  @return #{$emSize}em;
-}
-
-@mixin fontSize($size) {
-  font-size: $size; //Fallback in px
-  font-size: calculateRem($size);
-}
diff --git a/src/app/client/src/assets/styles/mixins/_label.scss b/src/app/client/src/assets/styles/mixins/_label.scss
deleted file mode 100644
index f7c7ae6d1ae3e1aa6637e29e01fd6370e438b35f..0000000000000000000000000000000000000000
--- a/src/app/client/src/assets/styles/mixins/_label.scss
+++ /dev/null
@@ -1,17 +0,0 @@
-@mixin label-theme($label-color) {
-	border-color:($label-color);
-	background-color: $label-color;
-}
-
-@mixin label-theme-bgwhite($label-color) {
-	//border-color: darken($label-color, 2%);
-	border-color: $label-color;
-	background-color: $white;
-  color:($label-color);
-}
-@mixin trans($val...) {
-	-webkit-transition: $val;
-	-moz-transition: $val; 
-	-o-transition: $val; 
-	transition: $val; 
-}
diff --git a/src/app/client/src/assets/styles/mixins/_media-queries.scss b/src/app/client/src/assets/styles/mixins/_media-queries.scss
deleted file mode 100644
index f81d32dc5ba634e5c03b2fa85819d14a8daac81a..0000000000000000000000000000000000000000
--- a/src/app/client/src/assets/styles/mixins/_media-queries.scss
+++ /dev/null
@@ -1,107 +0,0 @@
-//
-//  MEDIA QUERIES
-//––––––––––––––––––––––––––––––––––––––––––––––––––
-
-// A map of breakpoints.
-$breakpoints: (
-  xs: 576px,
-  sm: 768px,
-  md: 992px,
-  lg: 1280px,
-  xl: 1440px,
-  xxl: 1600px,
-  xxxl: 1900px
-);
-
-
-//
-//  RESPOND ABOVE
-//––––––––––––––––––––––––––––––––––––––––––––––––––
-
-// @include respond-above(sm) {}
-@mixin respond-above($breakpoint) {
-
-  // If the breakpoint exists in the map.
-  @if map-has-key($breakpoints, $breakpoint) {
-
-    // Get the breakpoint value.
-    $breakpoint-value: map-get($breakpoints, $breakpoint);
-
-    // Write the media query.
-    @media (min-width: $breakpoint-value) {
-      @content;
-    }
-  
-  // If the breakpoint doesn't exist in the map.
-  } @else {
-
-    // Log a warning.
-    @warn 'Invalid breakpoint: #{$breakpoint}.';
-  }
-}
-
-
-//
-//  RESPOND BELOW
-//––––––––––––––––––––––––––––––––––––––––––––––––––
-
-// @include respond-below(sm) {}
-@mixin respond-below($breakpoint) {
-
-  // If the breakpoint exists in the map.
-  @if map-has-key($breakpoints, $breakpoint) {
-
-    // Get the breakpoint value.
-    $breakpoint-value: map-get($breakpoints, $breakpoint);
-
-    // Write the media query.
-    @media (max-width: ($breakpoint-value - 1)) {
-      @content;
-    }
-  
-  // If the breakpoint doesn't exist in the map.
-  } @else {
-
-    // Log a warning.
-    @warn 'Invalid breakpoint: #{$breakpoint}.';
-  }
-}
-
-
-//
-//  RESPOND BETWEEN
-//––––––––––––––––––––––––––––––––––––––––––––––––––
-
-// @include respond-between(sm, md) {}
-@mixin respond-between($lower, $upper) {
-
-  // If both the lower and upper breakpoints exist in the map.
-  @if map-has-key($breakpoints, $lower) and map-has-key($breakpoints, $upper) {
-
-    // Get the lower and upper breakpoints.
-    $lower-breakpoint: map-get($breakpoints, $lower);
-    $upper-breakpoint: map-get($breakpoints, $upper);
-
-    // Write the media query.
-    @media (min-width: $lower-breakpoint) and (max-width: ($upper-breakpoint - 1)) {
-      @content;
-    }
-  
-  // If one or both of the breakpoints don't exist.
-  } @else {
-
-    // If lower breakpoint is invalid.
-    @if (map-has-key($breakpoints, $lower) == false) {
-
-      // Log a warning.
-      @warn 'Your lower breakpoint was invalid: #{$lower}.';
-    }
-
-    // If upper breakpoint is invalid.
-    @if (map-has-key($breakpoints, $upper) == false) {
-
-      // Log a warning.
-      @warn 'Your upper breakpoint was invalid: #{$upper}.';
-    }
-  }
-}
\ No newline at end of file
diff --git a/src/app/client/src/assets/styles/mixins/_mixins.scss b/src/app/client/src/assets/styles/mixins/_mixins.scss
deleted file mode 100644
index 83454d1400f2305042389f2e280f77ec616284e1..0000000000000000000000000000000000000000
--- a/src/app/client/src/assets/styles/mixins/_mixins.scss
+++ /dev/null
@@ -1,7 +0,0 @@
-@import "functions";
-@import "media-queries";
-@import "radius-shadow-gradient";
-@import "button";
-@import "label";
-@import "bourbon/bourbon";
-@import "border";
diff --git a/src/app/client/src/assets/styles/mixins/_radius-shadow-gradient.scss b/src/app/client/src/assets/styles/mixins/_radius-shadow-gradient.scss
deleted file mode 100644
index 1358e3e102b256835b5a43172e2ed3a642ace086..0000000000000000000000000000000000000000
--- a/src/app/client/src/assets/styles/mixins/_radius-shadow-gradient.scss
+++ /dev/null
@@ -1,42 +0,0 @@
-//Cross browser CSS3 mixins
-
-@mixin box-shadow($left, $top, $radius, $color) {
-	box-shadow: $left $top $radius $color;
-	-webkit-box-shadow: $left $top $radius $color;
-	-moz-box-shadow: $left $top $radius $color;
-}
-
-@mixin transition($property, $duration, $easing: linear) {
-	transition: $property $duration $easing;
-	-webkit-transition: $property $duration $easing;
-	-moz-transition: $property $duration $easing;
-}
-
-@mixin border-radius($radius) {
-	border-radius: $radius;
-	-webkit-border-radius: $radius;
-	-moz-border-radius: $radius;
-}
-
-@mixin border-radii($topleft, $topright, $bottomright, $bottomleft) {
-	border-top-left-radius: $topleft;
-	border-top-right-radius: $topright;
-	border-bottom-right-radius: $bottomright;
-	border-bottom-left-radius: $bottomleft;
-	-webkit-border-top-left-radius: $topleft;
-	-webkit-border-top-right-radius: $topright;
-	-webkit-border-bottom-right-radius: $bottomright;
-	-webkit-border-bottom-left-radius: $bottomleft;
-	-moz-border-radius-topleft: $topleft;
-	-moz-border-radius-topright: $topright;
-	-moz-border-radius-bottomright: $bottomright;
-	-moz-border-radius-bottomleft: $bottomleft;
-}
-
-@mixin gradient($color1, $color2) {
-	background-color: $color1;
-	filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr=#{$color1}, endColorstr=#{$color2});
-	background-image: -moz-linear-gradient(center top, $color1, $color2);
-	background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, from($color1), to($color2));
-}
-
diff --git a/src/app/client/src/assets/styles/mixins/bourbon/_bourbon.scss b/src/app/client/src/assets/styles/mixins/bourbon/_bourbon.scss
deleted file mode 100644
index b1ac948ce52971ff893c112bfbd7b379a9a97c1b..0000000000000000000000000000000000000000
--- a/src/app/client/src/assets/styles/mixins/bourbon/_bourbon.scss
+++ /dev/null
@@ -1,54 +0,0 @@
-// Bourbon 5.1.0
-// https://www.bourbon.io/
-// Copyright 2011-2018 thoughtbot, inc.
-// MIT License
-
-@import "bourbon/helpers/buttons-list";
-@import "bourbon/helpers/scales";
-@import "bourbon/helpers/text-inputs-list";
-
-@import "bourbon/settings/settings";
-
-@import "bourbon/validators/contains";
-@import "bourbon/validators/contains-falsy";
-@import "bourbon/validators/is-color";
-@import "bourbon/validators/is-length";
-@import "bourbon/validators/is-number";
-@import "bourbon/validators/is-size";
-
-@import "bourbon/utilities/assign-inputs";
-@import "bourbon/utilities/compact-shorthand";
-@import "bourbon/utilities/directional-property";
-@import "bourbon/utilities/fetch-bourbon-setting";
-@import "bourbon/utilities/font-source-declaration";
-@import "bourbon/utilities/gamma";
-@import "bourbon/utilities/lightness";
-@import "bourbon/utilities/contrast-ratio";
-@import "bourbon/utilities/unpack-shorthand";
-
-@import "bourbon/library/border-color";
-@import "bourbon/library/border-radius";
-@import "bourbon/library/border-style";
-@import "bourbon/library/border-width";
-@import "bourbon/library/buttons";
-@import "bourbon/library/clearfix";
-@import "bourbon/library/contrast-switch";
-@import "bourbon/library/ellipsis";
-@import "bourbon/library/font-face";
-@import "bourbon/library/font-stacks";
-@import "bourbon/library/hide-text";
-@import "bourbon/library/hide-visually";
-@import "bourbon/library/margin";
-@import "bourbon/library/modular-scale";
-@import "bourbon/library/overflow-wrap";
-@import "bourbon/library/padding";
-@import "bourbon/library/position";
-@import "bourbon/library/prefixer";
-@import "bourbon/library/shade";
-@import "bourbon/library/size";
-@import "bourbon/library/strip-unit";
-@import "bourbon/library/text-inputs";
-@import "bourbon/library/timing-functions";
-@import "bourbon/library/tint";
-@import "bourbon/library/triangle";
-@import "bourbon/library/value-prefixer";
diff --git a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/helpers/_buttons-list.scss b/src/app/client/src/assets/styles/mixins/bourbon/bourbon/helpers/_buttons-list.scss
deleted file mode 100644
index 2e845f762f0ca32cf9e53dfe9abe9d8c5543d83d..0000000000000000000000000000000000000000
--- a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/helpers/_buttons-list.scss
+++ /dev/null
@@ -1,14 +0,0 @@
-@charset "UTF-8";
-
-/// A list of all HTML button elements.
-///
-/// @type list
-///
-/// @access private
-
-$_buttons-list: (
-  "button",
-  "[type='button']",
-  "[type='reset']",
-  "[type='submit']",
-);
diff --git a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/helpers/_scales.scss b/src/app/client/src/assets/styles/mixins/bourbon/bourbon/helpers/_scales.scss
deleted file mode 100644
index de1efa0da9a495a1ab5469970a45e91454e1b999..0000000000000000000000000000000000000000
--- a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/helpers/_scales.scss
+++ /dev/null
@@ -1,27 +0,0 @@
-@charset "UTF-8";
-
-////
-/// Pre-defined scales for use with the `modular-scale` function.
-///
-/// @type number (unitless)
-///
-/// @see {function} modular-scale
-////
-
-$minor-second:     1.067;
-$major-second:     1.125;
-$minor-third:      1.2;
-$major-third:      1.25;
-$perfect-fourth:   1.333;
-$augmented-fourth: 1.414;
-$perfect-fifth:    1.5;
-$minor-sixth:      1.6;
-$golden:           1.618;
-$major-sixth:      1.667;
-$minor-seventh:    1.778;
-$major-seventh:    1.875;
-$octave:           2;
-$major-tenth:      2.5;
-$major-eleventh:   2.667;
-$major-twelfth:    3;
-$double-octave:    4;
diff --git a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/helpers/_text-inputs-list.scss b/src/app/client/src/assets/styles/mixins/bourbon/bourbon/helpers/_text-inputs-list.scss
deleted file mode 100644
index 479326ad87009aa69668e240285a9156e42f9615..0000000000000000000000000000000000000000
--- a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/helpers/_text-inputs-list.scss
+++ /dev/null
@@ -1,26 +0,0 @@
-@charset "UTF-8";
-
-/// A list of all _text-based_ HTML inputs.
-///
-/// @type list
-///
-/// @access private
-
-$_text-inputs-list: (
-  "[type='color']",
-  "[type='date']",
-  "[type='datetime']",
-  "[type='datetime-local']",
-  "[type='email']",
-  "[type='month']",
-  "[type='number']",
-  "[type='password']",
-  "[type='search']",
-  "[type='tel']",
-  "[type='text']",
-  "[type='time']",
-  "[type='url']",
-  "[type='week']",
-  "input:not([type])",
-  "textarea",
-);
diff --git a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_border-color.scss b/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_border-color.scss
deleted file mode 100644
index de25d17a78e75cfe3420d54f781d3ee74ce44e9c..0000000000000000000000000000000000000000
--- a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_border-color.scss
+++ /dev/null
@@ -1,26 +0,0 @@
-@charset "UTF-8";
-
-/// Provides a concise, one-line method for setting `border-color` on specific
-/// edges of a box. Use a `null` value to “skip” edges of the box with standard
-/// CSS shorthand.
-///
-/// @argument {list} $values
-///   List of colors; accepts CSS shorthand.
-///
-/// @example scss
-///   .element {
-///     @include border-color(#a60b55 #76cd9c null #e8ae1a);
-///   }
-///
-///   // CSS Output
-///   .element {
-///     border-left-color: #e8ae1a;
-///     border-right-color: #76cd9c;
-///     border-top-color: #a60b55;
-///   }
-///
-/// @require {mixin} _directional-property
-
-@mixin border-color($values) {
-  @include _directional-property(border, color, $values);
-}
diff --git a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_border-radius.scss b/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_border-radius.scss
deleted file mode 100644
index 3fce348b687ef1165e2798b6e1fedbd4c72722c3..0000000000000000000000000000000000000000
--- a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_border-radius.scss
+++ /dev/null
@@ -1,85 +0,0 @@
-@charset "UTF-8";
-
-/// Provides a concise, one-line method for setting `border-radius` on both the
-/// top-left and top-right of a box.
-///
-/// @argument {number (with unit)} $radii
-///
-/// @example scss
-///   .element {
-///     @include border-top-radius(4px);
-///   }
-///
-///   // CSS Output
-///   .element {
-///     border-top-left-radius: 4px;
-///     border-top-right-radius: 4px;
-///   }
-
-@mixin border-top-radius($radii) {
-  border-top-left-radius: $radii;
-  border-top-right-radius: $radii;
-}
-
-/// Provides a concise, one-line method for setting `border-radius` on both the
-/// top-right and bottom-right of a box.
-///
-/// @argument {number (with unit)} $radii
-///
-/// @example scss
-///   .element {
-///     @include border-right-radius(3px);
-///   }
-///
-///   // CSS Output
-///   .element {
-///     border-bottom-right-radius: 3px;
-///     border-top-right-radius: 3px;
-///   }
-
-@mixin border-right-radius($radii) {
-  border-bottom-right-radius: $radii;
-  border-top-right-radius: $radii;
-}
-
-/// Provides a concise, one-line method for setting `border-radius` on both the
-/// bottom-left and bottom-right of a box.
-///
-/// @argument {number (with unit)} $radii
-///
-/// @example scss
-///   .element {
-///     @include border-bottom-radius(2px);
-///   }
-///
-///   // CSS Output
-///   .element {
-///     border-bottom-left-radius: 2px;
-///     border-bottom-right-radius: 2px;
-///   }
-
-@mixin border-bottom-radius($radii) {
-  border-bottom-left-radius: $radii;
-  border-bottom-right-radius: $radii;
-}
-
-/// Provides a concise, one-line method for setting `border-radius` on both the
-/// top-left and bottom-left of a box.
-///
-/// @argument {number (with unit)} $radii
-///
-/// @example scss
-///   .element {
-///     @include border-left-radius(1px);
-///   }
-///
-///   // CSS Output
-///   .element {
-///     border-bottom-left-radius: 1px;
-///     border-top-left-radius: 1px;
-///   }
-
-@mixin border-left-radius($radii) {
-  border-bottom-left-radius: $radii;
-  border-top-left-radius: $radii;
-}
diff --git a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_border-style.scss b/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_border-style.scss
deleted file mode 100644
index 222f2740c4059853ae320826acd1170e03b7b10c..0000000000000000000000000000000000000000
--- a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_border-style.scss
+++ /dev/null
@@ -1,25 +0,0 @@
-@charset "UTF-8";
-
-/// Provides a concise, one-line method for setting `border-style` on specific
-/// edges of a box. Use a `null` value to “skip” edges of the box with standard
-/// CSS shorthand.
-///
-/// @argument {list} $values
-///   List of border styles; accepts CSS shorthand.
-///
-/// @example scss
-///   .element {
-///     @include border-style(dashed null solid);
-///   }
-///
-///   // CSS Output
-///   .element {
-///     border-bottom-style: solid;
-///     border-top-style: dashed;
-///   }
-///
-/// @require {mixin} _directional-property
-
-@mixin border-style($values) {
-  @include _directional-property(border, style, $values);
-}
diff --git a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_border-width.scss b/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_border-width.scss
deleted file mode 100644
index a64e4b88692df5555378f56310d777a80b398322..0000000000000000000000000000000000000000
--- a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_border-width.scss
+++ /dev/null
@@ -1,25 +0,0 @@
-@charset "UTF-8";
-
-/// Provides a concise, one-line method for setting `border-width` on specific
-/// edges of a box. Use a `null` value to “skip” edges of the box with standard
-/// CSS shorthand.
-///
-/// @argument {list} $values
-///   List of border widths; accepts CSS shorthand.
-///
-/// @example scss
-///   .element {
-///     @include border-width(1em null 20px);
-///   }
-///
-///   // CSS Output
-///   .element {
-///     border-bottom-width: 20px;
-///     border-top-width: 1em;
-///   }
-///
-/// @require {mixin} _directional-property
-
-@mixin border-width($values) {
-  @include _directional-property(border, width, $values);
-}
diff --git a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_buttons.scss b/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_buttons.scss
deleted file mode 100644
index a03485dbcdf95ddf4357d32211b161e6e9533b6c..0000000000000000000000000000000000000000
--- a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_buttons.scss
+++ /dev/null
@@ -1,84 +0,0 @@
-@charset "UTF-8";
-
-////
-/// @type list
-///
-/// @require {function} _assign-inputs
-///
-/// @require {variable} $_buttons-list
-////
-
-/// A list of all HTML button elements. Please note that you must interpolate
-/// the variable (`#{}`) to use it as a selector.
-///
-/// @example scss
-///   #{$all-buttons} {
-///     background-color: #f00;
-///   }
-///
-///   // CSS Output
-///   button,
-///   [type='button'],
-///   [type='reset'],
-///   [type='submit'] {
-///     background-color: #f00;
-///   }
-
-$all-buttons: _assign-inputs($_buttons-list);
-
-/// A list of all HTML button elements with the `:active` pseudo-class applied.
-/// Please note that you must interpolate the variable (`#{}`) to use it as a
-/// selector.
-///
-/// @example scss
-///   #{$all-buttons-active} {
-///     background-color: #00f;
-///   }
-///
-///   // CSS Output
-///   button:active,
-///   [type='button']:active,
-///   [type='reset']:active,
-///   [type='submit']:active {
-///     background-color: #00f;
-///   }
-
-$all-buttons-active: _assign-inputs($_buttons-list, active);
-
-/// A list of all HTML button elements with the `:focus` pseudo-class applied.
-/// Please note that you must interpolate the variable (`#{}`) to use it as a
-/// selector.
-///
-/// @example scss
-///   #{$all-buttons-focus} {
-///     background-color: #0f0;
-///   }
-///
-///   // CSS Output
-///   button:focus,
-///   [type='button']:focus,
-///   [type='reset']:focus,
-///   [type='submit']:focus {
-///     background-color: #0f0;
-///   }
-
-$all-buttons-focus: _assign-inputs($_buttons-list, focus);
-
-/// A list of all HTML button elements with the `:hover` pseudo-class applied.
-/// Please note that you must interpolate the variable (`#{}`) to use it as a
-/// selector.
-///
-/// @example scss
-///   #{$all-buttons-hover} {
-///     background-color: #0f0;
-///   }
-///
-///   // CSS Output
-///   button:hover,
-///   [type='button']:hover,
-///   [type='reset']:hover,
-///   [type='submit']:hover {
-///     background-color: #0f0;
-///   }
-
-$all-buttons-hover: _assign-inputs($_buttons-list, hover);
diff --git a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_clearfix.scss b/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_clearfix.scss
deleted file mode 100644
index d8ccc42114b8b0fa43a27beb2d1856484d3b193b..0000000000000000000000000000000000000000
--- a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_clearfix.scss
+++ /dev/null
@@ -1,25 +0,0 @@
-@charset "UTF-8";
-
-/// Provides an easy way to include a clearfix for containing floats.
-///
-/// @link https://goo.gl/yP5hiZ
-///
-/// @example scss
-///   .element {
-///     @include clearfix;
-///   }
-///
-///   // CSS Output
-///   .element::after {
-///     clear: both;
-///     content: "";
-///     display: block;
-///   }
-
-@mixin clearfix {
-  &::after {
-    clear: both;
-    content: "";
-    display: block;
-  }
-}
diff --git a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_contrast-switch.scss b/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_contrast-switch.scss
deleted file mode 100644
index 6f3c8e49450287b72240988daab96025d62c4466..0000000000000000000000000000000000000000
--- a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_contrast-switch.scss
+++ /dev/null
@@ -1,81 +0,0 @@
-@charset "UTF-8";
-
-/// Switches between two colors based on the contrast to another color. It’s
-/// like a [ternary operator] for color contrast and can be useful for building
-/// a button system.
-///
-/// The calculation of the contrast ratio is based on the [WCAG 2.0
-/// specification]. However, we cannot guarantee full compliance, though all of
-/// our manual testing passed.
-///
-///   [ternary operator]: https://goo.gl/ccfLqi
-///   [WCAG 2.0 specification]: https://goo.gl/zhQuYA
-///
-/// @argument {color} $base-color
-///   The color to evaluate lightness against.
-///
-/// @argument {color} $dark-color [#000]
-///   The color to be output when `$base-color` is light. Can also be set
-///   globally using the `contrast-switch-dark-color` key in the
-///   Bourbon settings.
-///
-/// @argument {color} $light-color [#fff]
-///   The color to be output when `$base-color` is dark. Can also be set
-///   globally using the `contrast-switch-light-color` key in the
-///   Bourbon settings.
-///
-/// @return {color}
-///
-/// @example scss
-///   .element {
-///     color: contrast-switch(#bae6e6);
-///   }
-///
-///   // CSS Output
-///   .element {
-///     color: #000;
-///   }
-///
-/// @example scss
-///   .element {
-///     $button-color: #2d72d9;
-///     background-color: $button-color;
-///     color: contrast-switch($button-color, #222, #eee);
-///   }
-///
-///   // CSS Output
-///   .element {
-///     background-color: #2d72d9;
-///     color: #eee;
-///   }
-///
-/// @require {function} _fetch-bourbon-setting
-///
-/// @require {function} _is-color
-///
-/// @require {function} _contrast-ratio
-///
-/// @since 5.0.0
-
-@function contrast-switch(
-  $base-color,
-  $dark-color: _fetch-bourbon-setting("contrast-switch-dark-color"),
-  $light-color: _fetch-bourbon-setting("contrast-switch-light-color")
-) {
-  @if not _is-color($base-color) {
-    @error "`#{$base-color}` is not a valid color for the `$base-color` " +
-           "argument in the `contrast-switch` function.";
-  } @else if not _is-color($dark-color) {
-    @error "`#{$dark-color}` is not a valid color for the `$dark-color` " +
-           "argument in the `contrast-switch` function.";
-  } @else if not _is-color($light-color) {
-    @error "`#{$light-color}` is not a valid color for the `$light-color` " +
-           "argument in the `contrast-switch` function.";
-  } @else {
-    $-contrast-to-dark: _contrast-ratio($base-color, $dark-color);
-    $-contrast-to-light: _contrast-ratio($base-color, $light-color);
-    $-prefer-dark: $-contrast-to-dark >= $-contrast-to-light;
-
-    @return if($-prefer-dark, $dark-color, $light-color);
-  }
-}
diff --git a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_ellipsis.scss b/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_ellipsis.scss
deleted file mode 100644
index 6d3e5c63d57ca63f6e5a95a2a7b62fb2c04ae1cb..0000000000000000000000000000000000000000
--- a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_ellipsis.scss
+++ /dev/null
@@ -1,36 +0,0 @@
-@charset "UTF-8";
-
-/// Truncates text and adds an ellipsis to represent overflow.
-///
-/// @argument {number} $width [100%]
-///   The `max-width` for the string to respect before being truncated.
-///
-/// @argument {string} $display [inline-block]
-///   Sets the display-value of the element.
-///
-/// @example scss
-///   .element {
-///     @include ellipsis;
-///   }
-///
-///   // CSS Output
-///   .element {
-///     display: inline-block;
-///     max-width: 100%;
-///     overflow: hidden;
-///     text-overflow: ellipsis;
-///     white-space: nowrap;
-///     word-wrap: normal;
-///   }
-
-@mixin ellipsis(
-  $width: 100%,
-  $display: inline-block
-) {
-  display: $display;
-  max-width: $width;
-  overflow: hidden;
-  text-overflow: ellipsis;
-  white-space: nowrap;
-  word-wrap: normal;
-}
diff --git a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_font-face.scss b/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_font-face.scss
deleted file mode 100644
index 08f06e5048dc54d51e34297d81cb65c44e43ee62..0000000000000000000000000000000000000000
--- a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_font-face.scss
+++ /dev/null
@@ -1,65 +0,0 @@
-@charset "UTF-8";
-
-/// Generates an `@font-face` declaration. You can choose the specific file
-/// formats you need to output; the mixin supports `eot`, `ttf`, `svg`, `woff2`
-/// and `woff`. The mixin also supports usage with the Rails Asset Pipeline,
-/// which you can enable per use, or globally in the `$bourbon()` settings.
-///
-/// @argument {string} $font-family
-///
-/// @argument {string} $file-path
-///
-/// @argument {string | list} $file-formats [("ttf", "woff2", "woff")]
-///   List of the font file formats to include. Can also be set globally using
-///   the `global-font-file-formats` key in the Bourbon settings.
-///
-/// @argument {string} $asset-pipeline [false]
-///   Set to `true` if you’re using the Rails Asset Pipeline (place the fonts
-///   in `app/assets/fonts/`). Can also be set globally using the
-///   `rails-asset-pipeline` key in the Bourbon settings.
-///
-/// @content
-///   Any additional CSS properties that are included in the `@include`
-///   directive will be output within the `@font-face` declaration, e.g. you can
-///   pass in `font-weight`, `font-style` and/or `unicode-range`.
-///
-/// @example scss
-///   @include font-face(
-///     "source-sans-pro",
-///     "fonts/source-sans-pro-regular",
-///     ("woff2", "woff")
-///   ) {
-///     font-style: normal;
-///     font-weight: 400;
-///   }
-///
-///   // CSS Output
-///   @font-face {
-///     font-family: "source-sans-pro";
-///     src: url("fonts/source-sans-pro-regular.woff2") format("woff2"),
-///          url("fonts/source-sans-pro-regular.woff") format("woff");
-///     font-style: normal;
-///     font-weight: 400;
-///   }
-///
-/// @require {function} _font-source-declaration
-///
-/// @require {function} _fetch-bourbon-setting
-
-@mixin font-face(
-  $font-family,
-  $file-path,
-  $file-formats: _fetch-bourbon-setting("global-font-file-formats"),
-  $asset-pipeline: _fetch-bourbon-setting("rails-asset-pipeline")
-) {
-  @font-face {
-    font-family: $font-family;
-    src: _font-source-declaration(
-      $font-family,
-      $file-path,
-      $asset-pipeline,
-      $file-formats
-    );
-    @content;
-  }
-}
diff --git a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_font-stacks.scss b/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_font-stacks.scss
deleted file mode 100644
index e1676ba191418db267d3036a7eb02f5bb4ac4b18..0000000000000000000000000000000000000000
--- a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_font-stacks.scss
+++ /dev/null
@@ -1,248 +0,0 @@
-@charset "UTF-8";
-
-/// A variable that outputs a Helvetica font stack.
-///
-/// @link https://goo.gl/uSJvZe
-///
-/// @type list
-///
-/// @example scss
-///   .element {
-///     font-family: $font-stack-helvetica;
-///   }
-///
-///   // CSS Output
-///   .element {
-///     font-family: "Helvetica Neue", "Helvetica", "Arial", sans-serif;
-///   }
-
-$font-stack-helvetica: (
-  "Helvetica Neue",
-  "Helvetica",
-  "Arial",
-  sans-serif,
-);
-
-/// A variable that outputs a Lucida Grande font stack.
-///
-/// @link https://goo.gl/R5UyYE
-///
-/// @type list
-///
-/// @example scss
-///   .element {
-///     font-family: $font-stack-lucida-grande;
-///   }
-///
-///   // CSS Output
-///   .element {
-///     font-family: "Lucida Grande", "Lucida Sans Unicode", "Geneva", "Verdana", sans-serif;
-///   }
-
-$font-stack-lucida-grande: (
-  "Lucida Grande",
-  "Lucida Sans Unicode",
-  "Geneva",
-  "Verdana",
-  sans-serif,
-);
-
-/// A variable that outputs a Verdana font stack.
-///
-/// @link https://goo.gl/yGXWSS
-///
-/// @type list
-///
-/// @example scss
-///   .element {
-///     font-family: $font-stack-verdana;
-///   }
-///
-///   // CSS Output
-///   .element {
-///     font-family: "Verdana", "Geneva", sans-serif;
-///   }
-
-$font-stack-verdana: (
-  "Verdana",
-  "Geneva",
-  sans-serif,
-);
-
-/// A variable that outputs a system font stack.
-///
-/// @type list
-///
-/// @example scss
-///   .element {
-///     font-family: $font-stack-system;
-///   }
-///
-///   // CSS Output
-///   .element {
-///     font-family: system-ui, -apple-system, BlinkMacSystemFont, "Avenir Next", "Avenir", "Segoe UI", "Lucida Grande", "Helvetica Neue", "Helvetica", "Fira Sans", "Roboto", "Noto", "Droid Sans", "Cantarell", "Oxygen", "Ubuntu", "Franklin Gothic Medium", "Century Gothic", "Liberation Sans", sans-serif;
-///   }
-
-$font-stack-system: (
-  system-ui,
-  -apple-system,
-  BlinkMacSystemFont,
-  "Avenir Next",
-  "Avenir",
-  "Segoe UI",
-  "Lucida Grande",
-  "Helvetica Neue",
-  "Helvetica",
-  "Fira Sans",
-  "Roboto",
-  "Noto",
-  "Droid Sans",
-  "Cantarell",
-  "Oxygen",
-  "Ubuntu",
-  "Franklin Gothic Medium",
-  "Century Gothic",
-  "Liberation Sans",
-  sans-serif,
-);
-
-/// A variable that outputs a Garamond font stack.
-///
-/// @link https://goo.gl/QQFEkV
-///
-/// @type list
-///
-/// @example scss
-///   .element {
-///     font-family: $font-stack-garamond;
-///   }
-///
-///   // CSS Output
-///   .element {
-///     font-family: "Garamond", "Baskerville", "Baskerville Old Face", "Hoefler Text", "Times New Roman", serif;
-///   }
-
-$font-stack-garamond: (
-  "Garamond",
-  "Baskerville",
-  "Baskerville Old Face",
-  "Hoefler Text",
-  "Times New Roman",
-  serif,
-);
-
-/// A variable that outputs a Georgia font stack.
-///
-/// @link https://goo.gl/wtzVPy
-///
-/// @type list
-///
-/// @example scss
-///   .element {
-///     font-family: $font-stack-georgia;
-///   }
-///
-///   // CSS Output
-///   .element {
-///     font-family: "Georgia", "Times", "Times New Roman", serif;
-///   }
-
-$font-stack-georgia: (
-  "Georgia",
-  "Times",
-  "Times New Roman",
-  serif,
-);
-
-/// A variable that outputs a Hoefler Text font stack.
-///
-/// @link https://goo.gl/n7U7zx
-///
-/// @type list
-///
-/// @example scss
-///   .element {
-///     font-family: $font-stack-hoefler-text;
-///   }
-///
-///   // CSS Output
-///   .element {
-///     font-family: "Hoefler Text", "Baskerville Old Face", "Garamond", "Times New Roman", serif;
-///   }
-
-$font-stack-hoefler-text: (
-  "Hoefler Text",
-  "Baskerville Old Face",
-  "Garamond",
-  "Times New Roman",
-  serif,
-);
-
-/// A variable that outputs a Consolas font stack.
-///
-/// @link https://goo.gl/iKrtqv
-///
-/// @type list
-///
-/// @example scss
-///   .element {
-///     font-family: $font-stack-consolas;
-///   }
-///
-///   // CSS Output
-///   .element {
-///     font-family: "Consolas", "monaco", monospace;
-///   }
-
-$font-stack-consolas: (
-  "Consolas",
-  "monaco",
-  monospace,
-);
-
-/// A variable that outputs a Courier New font stack.
-///
-/// @link https://goo.gl/bHfWMP
-///
-/// @type list
-///
-/// @example scss
-///   .element {
-///     font-family: $font-stack-courier-new;
-///   }
-///
-///   // CSS Output
-///   .element {
-///     font-family: "Courier New", "Courier", "Lucida Sans Typewriter", "Lucida Typewriter", monospace;
-///   }
-
-$font-stack-courier-new: (
-  "Courier New",
-  "Courier",
-  "Lucida Sans Typewriter",
-  "Lucida Typewriter",
-  monospace,
-);
-
-/// A variable that outputs a Monaco font stack.
-///
-/// @link https://goo.gl/9PgKDO
-///
-/// @type list
-///
-/// @example scss
-///   .element {
-///     font-family: $font-stack-monaco;
-///   }
-///
-///   // CSS Output
-///   .element {
-///     font-family: "Monaco", "Consolas", "Lucida Console", monospace;
-///   }
-
-$font-stack-monaco: (
-  "Monaco",
-  "Consolas",
-  "Lucida Console",
-  monospace,
-);
diff --git a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_hide-text.scss b/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_hide-text.scss
deleted file mode 100644
index e9ee0f929b94771d9a8f1f940a725c955482b362..0000000000000000000000000000000000000000
--- a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_hide-text.scss
+++ /dev/null
@@ -1,24 +0,0 @@
-@charset "UTF-8";
-
-/// Hides the text in an element, commonly used to show an image instead. Some
-/// elements will need block-level styles applied.
-///
-/// @link https://goo.gl/EvLRIu
-///
-/// @example scss
-///   .element {
-///     @include hide-text;
-///   }
-///
-///   // CSS Output
-///   .element {
-///     overflow: hidden;
-///     text-indent: 101%;
-///     white-space: nowrap;
-///   }
-
-@mixin hide-text {
-  overflow: hidden;
-  text-indent: 101%;
-  white-space: nowrap;
-}
diff --git a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_hide-visually.scss b/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_hide-visually.scss
deleted file mode 100644
index e803dfffc9c90a5a53ab2d693f34858e6244f7d7..0000000000000000000000000000000000000000
--- a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_hide-visually.scss
+++ /dev/null
@@ -1,70 +0,0 @@
-@charset "UTF-8";
-
-/// Hides an element visually while still allowing the content to be accessible
-/// to assistive technology, e.g. screen readers. Passing `unhide` will reverse
-/// the affects of the hiding, which is handy for showing the element on focus,
-/// for example.
-///
-/// @link https://goo.gl/Vf1TGn
-///
-/// @argument {string} $toggle [hide]
-///   Accepts `hide` or `unhide`. `unhide` reverses the affects of `hide`.
-///
-/// @example scss
-///   .element {
-///     @include hide-visually;
-///
-///     &:active,
-///     &:focus {
-///       @include hide-visually("unhide");
-///     }
-///   }
-///
-///   // CSS Output
-///   .element {
-///     border: 0;
-///     clip: rect(1px, 1px, 1px, 1px);
-///     clip-path: inset(100%);
-///     height: 1px;
-///     overflow: hidden;
-///     padding: 0;
-///     position: absolute;
-///     width: 1px;
-///   }
-///
-///   .hide-visually:active,
-///   .hide-visually:focus {
-///     clip: auto;
-///     clip-path: none;
-///     height: auto;
-///     overflow: visible;
-///     position: static;
-///     width: auto;
-///   }
-///
-/// @since 5.0.0
-
-@mixin hide-visually($toggle: "hide") {
-  @if not index("hide" "unhide", $toggle) {
-    @error "`#{$toggle}` is not a valid value for the `$toggle` argument in " +
-           "the `hide-visually` mixin. Must be either `hide` or `unhide`.";
-  } @else if $toggle == "hide" {
-    border: 0;
-    clip: rect(1px, 1px, 1px, 1px);
-    clip-path: inset(100%);
-    height: 1px;
-    overflow: hidden;
-    padding: 0;
-    position: absolute;
-    white-space: nowrap;
-    width: 1px;
-  } @else if $toggle == "unhide" {
-    clip: auto;
-    clip-path: none;
-    height: auto;
-    overflow: visible;
-    position: static;
-    white-space: inherit;
-    width: auto;
-  }
-}
diff --git a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_margin.scss b/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_margin.scss
deleted file mode 100644
index 29fa7abbb8a61b56653136f00a53cd544b9a74e3..0000000000000000000000000000000000000000
--- a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_margin.scss
+++ /dev/null
@@ -1,37 +0,0 @@
-@charset "UTF-8";
-
-/// Provides a concise, one-line method for setting `margin` on specific edges
-/// of a box. Use a `null` value to “skip” edges of the box with standard
-/// CSS shorthand.
-///
-/// @argument {list} $values
-///   List of margin values; accepts CSS shorthand.
-///
-/// @example scss
-///   .element {
-///     @include margin(null auto);
-///   }
-///
-///   // CSS Output
-///   .element {
-///     margin-left: auto;
-///     margin-right: auto;
-///   }
-///
-/// @example scss
-///   .element {
-///     @include margin(10px 3em 20vh null);
-///   }
-///
-///   // CSS Output
-///   .element {
-///     margin-bottom: 20vh;
-///     margin-right: 3em;
-///     margin-top: 10px;
-///   }
-///
-/// @require {mixin} _directional-property
-
-@mixin margin($values) {
-  @include _directional-property(margin, null, $values);
-}
diff --git a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_modular-scale.scss b/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_modular-scale.scss
deleted file mode 100644
index 81f2ab9a0cc965f15de6eec19c8bc9002bef39c1..0000000000000000000000000000000000000000
--- a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_modular-scale.scss
+++ /dev/null
@@ -1,120 +0,0 @@
-@charset "UTF-8";
-
-/// Increments up or down a defined scale and returns an adjusted value. This
-/// helps establish consistent measurements and spacial relationships throughout
-/// your project. We provide a list of commonly used scales as
-/// [pre-defined variables][scales].
-///
-/// [scales]: https://github.com/thoughtbot/bourbon/blob/master/core/bourbon/helpers/_scales.scss
-///
-/// @argument {number (unitless)} $increment
-///   How many steps to increment up or down the scale.
-///
-/// @argument {number (with unit) | list} $value [1em]
-///   The base value the scale starts at. Can also be set globally using the
-///   `modular-scale-base` key in the Bourbon settings.
-///
-/// @argument {number (unitless)} $ratio [1.25]
-///   The ratio the scale is built on. Can also be set globally using the
-///   `modular-scale-ratio` key in the Bourbon settings.
-///
-/// @return {number (with unit)}
-///
-/// @example scss
-///   .element {
-///     font-size: modular-scale(2);
-///   }
-///
-///   // CSS Output
-///   .element {
-///     font-size: 1.5625em;
-///   }
-///
-/// @example scss
-///   .element {
-///     margin-right: modular-scale(3, 2em);
-///   }
-///
-///   // CSS Output
-///   .element {
-///     margin-right: 3.90625em;
-///   }
-///
-/// @example scss
-///   .element {
-///     font-size: modular-scale(3, 1em 1.6em, $major-seventh);
-///   }
-///
-///   // CSS Output
-///   .element {
-///     font-size: 3em;
-///   }
-///
-/// @example scss
-///   // Globally change the base ratio
-///   $bourbon: (
-///     "modular-scale-ratio": 1.2,
-///   );
-///
-///   .element {
-///     font-size: modular-scale(3);
-///   }
-///
-///   // CSS Output
-///   .element {
-///     font-size: 1.728em;
-///   }
-///
-/// @require {function} _fetch-bourbon-setting
-
-@function modular-scale(
-  $increment,
-  $value: _fetch-bourbon-setting("modular-scale-base"),
-  $ratio: _fetch-bourbon-setting("modular-scale-ratio")
-) {
-  $v1: nth($value, 1);
-  $v2: nth($value, length($value));
-  $value: $v1;
-
-  // scale $v2 to just above $v1
-  @while $v2 > $v1 {
-    $v2: ($v2 / $ratio); // will be off-by-1
-  }
-  @while $v2 < $v1 {
-    $v2: ($v2 * $ratio); // will fix off-by-1
-  }
-
-  // check AFTER scaling $v2 to prevent double-counting corner-case
-  $double-stranded: $v2 > $v1;
-
-  @if $increment > 0 {
-    @for $i from 1 through $increment {
-      @if $double-stranded and ($v1 * $ratio) > $v2 {
-        $value: $v2;
-        $v2: ($v2 * $ratio);
-      } @else {
-        $v1: ($v1 * $ratio);
-        $value: $v1;
-      }
-    }
-  }
-
-  @if $increment < 0 {
-    // adjust $v2 to just below $v1
-    @if $double-stranded {
-      $v2: ($v2 / $ratio);
-    }
-
-    @for $i from $increment through -1 {
-      @if $double-stranded and ($v1 / $ratio) < $v2 {
-        $value: $v2;
-        $v2: ($v2 / $ratio);
-      } @else {
-        $v1: ($v1 / $ratio);
-        $value: $v1;
-      }
-    }
-  }
-
-  @return $value;
-}
diff --git a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_overflow-wrap.scss b/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_overflow-wrap.scss
deleted file mode 100644
index 16e0a645707798ee26d6b65d48a8e6bb6460e2e4..0000000000000000000000000000000000000000
--- a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_overflow-wrap.scss
+++ /dev/null
@@ -1,24 +0,0 @@
-@charset "UTF-8";
-
-/// Outputs the `overflow-wrap` property and its legacy name `word-wrap` to
-/// support browsers that do not yet use `overflow-wrap`.
-///
-/// @argument {string} $wrap [break-word]
-///   Accepted CSS values are `normal`, `break-word`, `inherit`, `initial`,
-///   or `unset`.
-///
-/// @example scss
-///   .wrapper {
-///     @include overflow-wrap;
-///   }
-///
-///   // CSS Output
-///   .wrapper {
-///     word-wrap: break-word;
-///     overflow-wrap: break-word;
-///   }
-
-@mixin overflow-wrap($wrap: break-word) {
-  word-wrap: $wrap;
-  overflow-wrap: $wrap;
-}
diff --git a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_padding.scss b/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_padding.scss
deleted file mode 100644
index 7d401bb7d4812f9bcb50d13e46ee1818e2ff419f..0000000000000000000000000000000000000000
--- a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_padding.scss
+++ /dev/null
@@ -1,36 +0,0 @@
-@charset "UTF-8";
-
-/// Provides a concise method for targeting `padding` on specific sides of a
-/// box. Use a `null` value to “skip” a side.
-///
-/// @argument {list} $values
-///   List of padding values; accepts CSS shorthand.
-///
-/// @example scss
-///   .element-one {
-///     @include padding(null 1rem);
-///   }
-///
-///   // CSS Output
-///   .element-one {
-///     padding-left: 1rem;
-///     padding-right: 1rem;
-///   }
-///
-/// @example scss
-///   .element-two {
-///     @include padding(10vh null 10px 5%);
-///   }
-///
-///   // CSS Output
-///   .element-two {
-///     padding-bottom: 10px;
-///     padding-left: 5%;
-///     padding-top: 10vh;
-///   }
-///
-/// @require {mixin} _directional-property
-
-@mixin padding($values) {
-  @include _directional-property(padding, null, $values);
-}
diff --git a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_position.scss b/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_position.scss
deleted file mode 100644
index d65d2bbd51618a0787fb70828b814c1d7715b831..0000000000000000000000000000000000000000
--- a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_position.scss
+++ /dev/null
@@ -1,62 +0,0 @@
-@charset "UTF-8";
-
-/// Provides a concise, one-line method for setting an element’s positioning
-/// properties: `position`, `top`, `right`, `bottom` and `left`. Use a `null`
-/// value to “skip” an edge of the box.
-///
-/// @argument {string} $position
-///   A CSS position value.
-///
-/// @argument {list} $box-edge-values
-///   List of lengths; accepts CSS shorthand.
-///
-/// @example scss
-///   .element {
-///     @include position(relative, 0 null null 10em);
-///   }
-///
-///   // CSS Output
-///   .element {
-///     left: 10em;
-///     position: relative;
-///     top: 0;
-///   }
-///
-/// @example scss
-///   .element {
-///     @include position(absolute, 0);
-///   }
-///
-///   // CSS Output
-///   .element {
-///     position: absolute;
-///     top: 0;
-///     right: 0;
-///     bottom: 0;
-///     left: 0;
-///   }
-///
-/// @require {function} _is-length
-///
-/// @require {function} _unpack-shorthand
-
-@mixin position(
-  $position,
-  $box-edge-values
-) {
-  $box-edge-values: _unpack-shorthand($box-edge-values);
-  $offsets: (
-    top:    nth($box-edge-values, 1),
-    right:  nth($box-edge-values, 2),
-    bottom: nth($box-edge-values, 3),
-    left:   nth($box-edge-values, 4),
-  );
-
-  position: $position;
-
-  @each $offset, $value in $offsets {
-    @if _is-length($value) {
-      #{$offset}: $value;
-    }
-  }
-}
diff --git a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_prefixer.scss b/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_prefixer.scss
deleted file mode 100644
index ad28e5a5f03506040f416603bedac716ab6db939..0000000000000000000000000000000000000000
--- a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_prefixer.scss
+++ /dev/null
@@ -1,37 +0,0 @@
-@charset "UTF-8";
-
-/// Generates vendor prefixes.
-///
-/// @argument {string} $property
-///   Property to prefix.
-///
-/// @argument {string} $value
-///   Value to use.
-///
-/// @argument {list} $prefixes
-///   Vendor prefixes to output.
-///
-/// @example scss
-///   .element {
-///     @include prefixer(appearance, none, ("webkit", "moz"));
-///   }
-///
-///   // CSS Output
-///   .element {
-///     -webkit-appearance: none;
-///     -moz-appearance: none;
-///     appearance: none;
-///   }
-///
-/// @author Hugo Giraudel
-
-@mixin prefixer(
-  $property,
-  $value,
-  $prefixes: ()
-) {
-  @each $prefix in $prefixes {
-    #{"-" + $prefix + "-" + $property}: $value;
-  }
-  #{$property}: $value;
-}
diff --git a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_shade.scss b/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_shade.scss
deleted file mode 100644
index 44b545b89ba195e80d9c24160b9715e238ce1771..0000000000000000000000000000000000000000
--- a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_shade.scss
+++ /dev/null
@@ -1,32 +0,0 @@
-@charset "UTF-8";
-
-/// Mixes a color with black.
-///
-/// @argument {color} $color
-///
-/// @argument {number (percentage)} $percent
-///   The amount of black to be mixed in.
-///
-/// @return {color}
-///
-/// @example scss
-///   .element {
-///     background-color: shade(#ffbb52, 60%);
-///   }
-///
-///   // CSS Output
-///   .element {
-///     background-color: #664a20;
-///   }
-
-@function shade(
-  $color,
-  $percent
-) {
-  @if not _is-color($color) {
-    @error "`#{$color}` is not a valid color for the `$color` argument in " +
-           "the `shade` mixin.";
-  } @else {
-    @return mix(#000, $color, $percent);
-  }
-}
diff --git a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_size.scss b/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_size.scss
deleted file mode 100644
index cc52b237c8c4ced85b649c5238d96afe596a008a..0000000000000000000000000000000000000000
--- a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_size.scss
+++ /dev/null
@@ -1,50 +0,0 @@
-@charset "UTF-8";
-
-/// Sets the `width` and `height` of the element in one statement.
-///
-/// @argument {number (with unit) | string} $width
-///
-/// @argument {number (with unit) | string} $height [$width]
-///
-/// @example scss
-///   .first-element {
-///     @include size(2em);
-///   }
-///
-///   // CSS Output
-///   .first-element {
-///     width: 2em;
-///     height: 2em;
-///   }
-///
-/// @example scss
-///   .second-element {
-///     @include size(auto, 10em);
-///   }
-///
-///   // CSS Output
-///   .second-element {
-///     width: auto;
-///     height: 10em;
-///   }
-///
-/// @require {function} _is-size
-
-@mixin size(
-  $width,
-  $height: $width
-) {
-  @if _is-size($height) {
-    height: $height;
-  } @else {
-    @error "`#{$height}` is not a valid length for the `$height` argument " +
-           "in the `size` mixin.";
-  }
-
-  @if _is-size($width) {
-    width: $width;
-  } @else {
-    @error "`#{$width}` is not a valid length for the `$width` argument " +
-           "in the `size` mixin.";
-  }
-}
diff --git a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_strip-unit.scss b/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_strip-unit.scss
deleted file mode 100644
index f4f660a35bec04fe6401a49690554af5b07b57da..0000000000000000000000000000000000000000
--- a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_strip-unit.scss
+++ /dev/null
@@ -1,17 +0,0 @@
-@charset "UTF-8";
-
-/// Strips the unit from a number.
-///
-/// @argument {number} $value
-///
-/// @return {number (unitless)}
-///
-/// @example scss
-///   $dimension: strip-unit(10em);
-///
-///   // Output
-///   $dimension: 10;
-
-@function strip-unit($value) {
-  @return ($value / ($value * 0 + 1));
-}
diff --git a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_text-inputs.scss b/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_text-inputs.scss
deleted file mode 100644
index dfebb79d5fb2cf42cecb3101463df0a85e5d97fc..0000000000000000000000000000000000000000
--- a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_text-inputs.scss
+++ /dev/null
@@ -1,163 +0,0 @@
-@charset "UTF-8";
-
-////
-/// @type list
-///
-/// @require {function} _assign-inputs
-///
-/// @require {variable} $_text-inputs-list
-////
-
-/// A list of all _text-based_ HTML inputs. Please note that you must
-/// interpolate the variable (`#{}`) to use it as a selector.
-///
-/// @example scss
-///   #{$all-text-inputs} {
-///     border: 1px solid #ccc;
-///   }
-///
-///   // CSS Output
-///   [type='color'],
-///   [type='date'],
-///   [type='datetime'],
-///   [type='datetime-local'],
-///   [type='email'],
-///   [type='month'],
-///   [type='number'],
-///   [type='password'],
-///   [type='search'],
-///   [type='tel'],
-///   [type='text'],
-///   [type='time'],
-///   [type='url'],
-///   [type='week'],
-///   input:not([type]),
-///   textarea {
-///     border: 1px solid #ccc;
-///   }
-
-$all-text-inputs: _assign-inputs($_text-inputs-list);
-
-/// A list of all _text-based_ HTML inputs with the `:active` pseudo-class
-/// applied. Please note that you must interpolate the variable (`#{}`) to use
-/// it as a selector.
-///
-/// @example scss
-///   #{$all-text-inputs-active} {
-///     border: 1px solid #aaa;
-///   }
-///
-///   // CSS Output
-///   [type='color']:active,
-///   [type='date']:active,
-///   [type='datetime']:active,
-///   [type='datetime-local']:active,
-///   [type='email']:active,
-///   [type='month']:active,
-///   [type='number']:active,
-///   [type='password']:active,
-///   [type='search']:active,
-///   [type='tel']:active,
-///   [type='text']:active,
-///   [type='time']:active,
-///   [type='url']:active,
-///   [type='week']:active,
-///   input:not([type]):active,
-///   textarea:active {
-///     border: 1px solid #aaa;
-///   }
-
-$all-text-inputs-active: _assign-inputs($_text-inputs-list, active);
-
-/// A list of all _text-based_ HTML inputs with the `:focus` pseudo-class
-/// applied. Please note that you must interpolate the variable (`#{}`) to use
-/// it as a selector.
-///
-/// @example scss
-///   #{$all-text-inputs-focus} {
-///     border: 1px solid #1565c0;
-///   }
-///
-///   // CSS Output
-///   [type='color']:focus,
-///   [type='date']:focus,
-///   [type='datetime']:focus,
-///   [type='datetime-local']:focus,
-///   [type='email']:focus,
-///   [type='month']:focus,
-///   [type='number']:focus,
-///   [type='password']:focus,
-///   [type='search']:focus,
-///   [type='tel']:focus,
-///   [type='text']:focus,
-///   [type='time']:focus,
-///   [type='url']:focus,
-///   [type='week']:focus,
-///   input:not([type]):focus,
-///   textarea:focus {
-///     border: 1px solid #1565c0;
-///   }
-
-$all-text-inputs-focus: _assign-inputs($_text-inputs-list, focus);
-
-/// A list of all _text-based_ HTML inputs with the `:hover` pseudo-class
-/// applied. Please note that you must interpolate the variable (`#{}`) to use
-/// it as a selector.
-///
-/// @example scss
-///   #{$all-text-inputs-hover} {
-///     border: 1px solid #aaa;
-///   }
-///
-///   // CSS Output
-///   [type='color']:hover,
-///   [type='date']:hover,
-///   [type='datetime']:hover,
-///   [type='datetime-local']:hover,
-///   [type='email']:hover,
-///   [type='month']:hover,
-///   [type='number']:hover,
-///   [type='password']:hover,
-///   [type='search']:hover,
-///   [type='tel']:hover,
-///   [type='text']:hover,
-///   [type='time']:hover,
-///   [type='url']:hover,
-///   [type='week']:hover,
-///   input:not([type]):hover,
-///   textarea:hover {
-///     border: 1px solid #aaa;
-///   }
-
-$all-text-inputs-hover: _assign-inputs($_text-inputs-list, hover);
-
-/// A list of all _text-based_ HTML inputs with the `:invalid` pseudo-class
-/// applied. Please note that you must interpolate the variable (`#{}`) to use
-/// it as a selector.
-///
-/// @example scss
-///   #{$all-text-inputs-invalid} {
-///     border: 1px solid #00f;
-///   }
-///
-///   // CSS Output
-///   [type='color']:invalid,
-///   [type='date']:invalid,
-///   [type='datetime']:invalid,
-///   [type='datetime-local']:invalid,
-///   [type='email']:invalid,
-///   [type='month']:invalid,
-///   [type='number']:invalid,
-///   [type='password']:invalid,
-///   [type='search']:invalid,
-///   [type='tel']:invalid,
-///   [type='text']:invalid,
-///   [type='time']:invalid,
-///   [type='url']:invalid,
-///   [type='week']:invalid,
-///   input:not([type]):invalid,
-///   textarea:invalid {
-///     border: 1px solid #00f;
-///   }
-
-$all-text-inputs-invalid: _assign-inputs($_text-inputs-list, invalid);
diff --git a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_timing-functions.scss b/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_timing-functions.scss
deleted file mode 100644
index a694b6483533be6f02c2864dfdb419e3b6f0ab6d..0000000000000000000000000000000000000000
--- a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_timing-functions.scss
+++ /dev/null
@@ -1,38 +0,0 @@
-@charset "UTF-8";
-
-// scss-lint:disable SpaceAfterComma, UnnecessaryMantissa, TrailingZero
-
-////
-/// CSS cubic-bezier timing functions.
-///
-/// @link https://goo.gl/p8u6SK
-///
-/// @type string
-////
-
-$ease-in-quad:      cubic-bezier(0.550,  0.085, 0.680, 0.530);
-$ease-in-cubic:     cubic-bezier(0.550,  0.055, 0.675, 0.190);
-$ease-in-quart:     cubic-bezier(0.895,  0.030, 0.685, 0.220);
-$ease-in-quint:     cubic-bezier(0.755,  0.050, 0.855, 0.060);
-$ease-in-sine:      cubic-bezier(0.470,  0.000, 0.745, 0.715);
-$ease-in-expo:      cubic-bezier(0.950,  0.050, 0.795, 0.035);
-$ease-in-circ:      cubic-bezier(0.600,  0.040, 0.980, 0.335);
-$ease-in-back:      cubic-bezier(0.600, -0.280, 0.735, 0.045);
-
-$ease-out-quad:     cubic-bezier(0.250,  0.460, 0.450, 0.940);
-$ease-out-cubic:    cubic-bezier(0.215,  0.610, 0.355, 1.000);
-$ease-out-quart:    cubic-bezier(0.165,  0.840, 0.440, 1.000);
-$ease-out-quint:    cubic-bezier(0.230,  1.000, 0.320, 1.000);
-$ease-out-sine:     cubic-bezier(0.390,  0.575, 0.565, 1.000);
-$ease-out-expo:     cubic-bezier(0.190,  1.000, 0.220, 1.000);
-$ease-out-circ:     cubic-bezier(0.075,  0.820, 0.165, 1.000);
-$ease-out-back:     cubic-bezier(0.175,  0.885, 0.320, 1.275);
-
-$ease-in-out-quad:  cubic-bezier(0.455,  0.030, 0.515, 0.955);
-$ease-in-out-cubic: cubic-bezier(0.645,  0.045, 0.355, 1.000);
-$ease-in-out-quart: cubic-bezier(0.770,  0.000, 0.175, 1.000);
-$ease-in-out-quint: cubic-bezier(0.860,  0.000, 0.070, 1.000);
-$ease-in-out-sine:  cubic-bezier(0.445,  0.050, 0.550, 0.950);
-$ease-in-out-expo:  cubic-bezier(1.000,  0.000, 0.000, 1.000);
-$ease-in-out-circ:  cubic-bezier(0.785,  0.135, 0.150, 0.860);
-$ease-in-out-back:  cubic-bezier(0.680, -0.550, 0.265, 1.550);
diff --git a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_tint.scss b/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_tint.scss
deleted file mode 100644
index 1c536ed1fb492a2a5c6198e0b97672fcc4604810..0000000000000000000000000000000000000000
--- a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_tint.scss
+++ /dev/null
@@ -1,32 +0,0 @@
-@charset "UTF-8";
-
-/// Mixes a color with white.
-///
-/// @argument {color} $color
-///
-/// @argument {number (percentage)} $percent
-///   The amount of white to be mixed in.
-///
-/// @return {color}
-///
-/// @example scss
-///   .element {
-///     background-color: tint(#6ecaa6, 40%);
-///   }
-///
-///   // CSS Output
-///   .element {
-///     background-color: #a8dfc9;
-///   }
-
-@function tint(
-  $color,
-  $percent
-) {
-  @if not _is-color($color) {
-    @error "`#{$color}` is not a valid color for the `$color` argument in " +
-           "the `tint` mixin.";
-  } @else {
-    @return mix(#fff, $color, $percent);
-  }
-}
diff --git a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_triangle.scss b/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_triangle.scss
deleted file mode 100644
index 2ba96b595b9f711426d767c8422cafbcc0e188ff..0000000000000000000000000000000000000000
--- a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_triangle.scss
+++ /dev/null
@@ -1,82 +0,0 @@
-@charset "UTF-8";
-
-/// Generates a triangle pointing in a specified direction.
-///
-/// @argument {string} $direction
-///   The direction the triangle should point. Accepts `up`, `up-right`,
-///   `right`, `down-right`, `down`, `down-left`, `left` or `up-left`.
-///
-/// @argument {number (with unit)} $width
-///   Width of the triangle.
-///
-/// @argument {number (with unit)} $height
-///   Height of the triangle.
-///
-/// @argument {color} $color
-///   Color of the triangle.
-///
-/// @example scss
-///   .element {
-///     &::before {
-///       @include triangle("up", 2rem, 1rem, #b25c9c);
-///       content: "";
-///     }
-///   }
-///
-///   // CSS Output
-///   .element::before {
-///     border-style: solid;
-///     height: 0;
-///     width: 0;
-///     border-color: transparent transparent #b25c9c;
-///     border-width: 0 1rem 1rem;
-///     content: "";
-///   }
-
-@mixin triangle(
-  $direction,
-  $width,
-  $height,
-  $color
-) {
-  @if not index(
-    "up" "up-right" "right" "down-right" "down" "down-left" "left" "up-left",
-    $direction
-  ) {
-    @error "Direction must be `up`, `up-right`, `right`, `down-right`, " +
-           "`down`, `down-left`, `left` or `up-left`.";
-  } @else if not _is-color($color) {
-    @error "`#{$color}` is not a valid color for the `$color` argument in " +
-           "the `triangle` mixin.";
-  } @else {
-    border-style: solid;
-    height: 0;
-    width: 0;
-
-    @if $direction == "up" {
-      border-color: transparent transparent $color;
-      border-width: 0 ($width / 2) $height;
-    } @else if $direction == "up-right" {
-      border-color: transparent $color transparent transparent;
-      border-width: 0 $width $width 0;
-    } @else if $direction == "right" {
-      border-color: transparent transparent transparent $color;
-      border-width: ($height / 2) 0 ($height / 2) $width;
-    } @else if $direction == "down-right" {
-      border-color: transparent transparent $color;
-      border-width: 0 0 $width $width;
-    } @else if $direction == "down" {
-      border-color: $color transparent transparent;
-      border-width: $height ($width / 2) 0;
-    } @else if $direction == "down-left" {
-      border-color: transparent transparent transparent $color;
-      border-width: $width 0 0 $width;
-    } @else if $direction == "left" {
-      border-color: transparent $color transparent transparent;
-      border-width: ($height / 2) $width ($height / 2) 0;
-    } @else if $direction == "up-left" {
-      border-color: $color transparent transparent;
-      border-width: $width $width 0 0;
-    }
-  }
-}
diff --git a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_value-prefixer.scss b/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_value-prefixer.scss
deleted file mode 100644
index 6eb886732a2f06c1fcf256c2d824b020799b0765..0000000000000000000000000000000000000000
--- a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/library/_value-prefixer.scss
+++ /dev/null
@@ -1,37 +0,0 @@
-@charset "UTF-8";
-
-/// Generates vendor prefixes for values.
-///
-/// @argument {string} $property
-///   Property to use.
-///
-/// @argument {string} $value
-///   Value to prefix.
-///
-/// @argument {list} $prefixes
-///   Vendor prefixes to output.
-///
-/// @example scss
-///   .element {
-///     @include value-prefixer(cursor, grab, ("webkit", "moz"));
-///   }
-///
-///   // CSS Output
-///   .element {
-///     cursor: -webkit-grab;
-///     cursor: -moz-grab;
-///     cursor: grab;
-///   }
-///
-/// @author Matthew Tobiasz
-
-@mixin value-prefixer(
-  $property,
-  $value,
-  $prefixes: ()
-) {
-  @each $prefix in $prefixes {
-    #{$property}: #{"-" + $prefix + "-" + $value};
-  }
-  #{$property}: $value;
-}
diff --git a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/settings/_settings.scss b/src/app/client/src/assets/styles/mixins/bourbon/bourbon/settings/_settings.scss
deleted file mode 100644
index 62690f436158eb4c73a9bf84bc512c44bf3184b6..0000000000000000000000000000000000000000
--- a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/settings/_settings.scss
+++ /dev/null
@@ -1,75 +0,0 @@
-@charset "UTF-8";
-
-/// Default global Bourbon settings. Values in this map are overwritten by any
-/// values set in the `$bourbon` map.
-///
-/// @type map
-///
-/// @property {color} contrast-switch-dark-color [#000]
-///   Global dark color for the `contrast-switch` function.
-///
-/// @property {color} contrast-switch-light-color [#fff]
-///   Global light color for the `contrast-switch` function.
-///
-/// @property {list} global-font-file-formats [("ttf", "woff2", "woff")]
-///   Global font file formats for the `font-face` mixin.
-///
-/// @property {number (with unit)} modular-scale-base [1em]
-///   Global base value for the `modular-scale` function.
-///
-/// @property {number (unitless)} modular-scale-ratio [$major-third (1.25)]
-///   Global base ratio for the `modular-scale` function.
-///
-/// @property {boolean} rails-asset-pipeline [false]
-///   Set this to `true` when using the Rails Asset Pipeline and Bourbon will
-///   write asset paths using
-///   [sass-rails’ asset helpers](https://github.com/rails/sass-rails#asset-helpers).
-///
-/// @access private
-
-$_bourbon-defaults: (
-  "contrast-switch-dark-color": #000,
-  "contrast-switch-light-color": #fff,
-  "global-font-file-formats": ("ttf", "woff2", "woff"),
-  "modular-scale-base": 1em,
-  "modular-scale-ratio": $major-third,
-  "rails-asset-pipeline": false,
-);
-
-/// Global Bourbon settings.
-///
-/// @name Settings
-///
-/// @type map
-///
-/// @property {color} contrast-switch-dark-color [#000]
-///   Global dark color for the `contrast-switch` function.
-///
-/// @property {color} contrast-switch-light-color [#fff]
-///   Global light color for the `contrast-switch` function.
-///
-/// @property {list} global-font-file-formats [("ttf", "woff2", "woff")]
-///   Global font file formats for the `font-face` mixin.
-///
-/// @property {number (with unit)} modular-scale-base [1em]
-///   Global base value for the `modular-scale` function.
-///
-/// @property {number (unitless)} modular-scale-ratio [$major-third (1.25)]
-///   Global base ratio for the `modular-scale` function.
-///
-/// @property {boolean} rails-asset-pipeline [false]
-///   Set this to `true` when using the Rails Asset Pipeline and Bourbon will
-///   write asset paths using
-///   [sass-rails’ asset helpers](https://github.com/rails/sass-rails#asset-helpers).
-///
-/// @example scss
-///   $bourbon: (
-///     "contrast-switch-dark-color": #000,
-///     "contrast-switch-light-color": #fff,
-///     "global-font-file-formats": ("ttf", "woff2", "woff"),
-///     "modular-scale-base": 1em,
-///     "modular-scale-ratio": $major-third,
-///     "rails-asset-pipeline": false,
-///   );
-
-$bourbon: () !default;
diff --git a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/utilities/_assign-inputs.scss b/src/app/client/src/assets/styles/mixins/bourbon/bourbon/utilities/_assign-inputs.scss
deleted file mode 100644
index e37455373fda41fa4676eaf061474188edfb763d..0000000000000000000000000000000000000000
--- a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/utilities/_assign-inputs.scss
+++ /dev/null
@@ -1,28 +0,0 @@
-@charset "UTF-8";
-
-/// Append pseudo-classes to a selector(s).
-///
-/// @argument {list | string} $inputs
-///   A selector, or list of selectors, to apply the pseudo-class to.
-///
-/// @argument {pseudo-class} $pseudo [null]
-///   The pseudo-class to be appended.
-///
-/// @return {list}
-///
-/// @access private
-
-@function _assign-inputs(
-  $inputs,
-  $pseudo: null
-) {
-  $list: ();
-
-  @each $input in $inputs {
-    $input: unquote($input);
-    $input: if($pseudo, $input + ":" + $pseudo, $input);
-    $list: append($list, $input, comma);
-  }
-
-  @return $list;
-}
diff --git a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/utilities/_compact-shorthand.scss b/src/app/client/src/assets/styles/mixins/bourbon/bourbon/utilities/_compact-shorthand.scss
deleted file mode 100644
index 25f0212add78b09d7105c3ee7189975ce3b24621..0000000000000000000000000000000000000000
--- a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/utilities/_compact-shorthand.scss
+++ /dev/null
@@ -1,39 +0,0 @@
-@charset "UTF-8";
-
-// scss-lint:disable ElsePlacement
-
-/// Transforms shorthand to its shortest possible form.
-///
-/// @argument {list} $values
-///   List of directional values.
-///
-/// @example scss
-///   $values: _compact-shorthand(10px 20px 10px 20px);
-///
-///   // Output
-///   $values: 10px 20px;
-///
-/// @return {list}
-///
-/// @access private
-
-@function _compact-shorthand($values) {
-  $output: null;
-
-  $a: nth($values, 1);
-  $b: if(length($values) < 2, $a, nth($values, 2));
-  $c: if(length($values) < 3, $a, nth($values, 3));
-  $d: if(length($values) < 2, $a, nth($values, if(length($values) < 4, 2, 4)));
-
-  @if $a == 0 { $a: 0; }
-  @if $b == 0 { $b: 0; }
-  @if $c == 0 { $c: 0; }
-  @if $d == 0 { $d: 0; }
-
-  @if $a == $b and $a == $c and $a == $d { $output: $a;          }
-  @else if $a == $c and $b == $d         { $output: $a $b;       }
-  @else if $b == $d                      { $output: $a $b $c;    }
-  @else                                  { $output: $a $b $c $d; }
-
-  @return $output;
-}
diff --git a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/utilities/_contrast-ratio.scss b/src/app/client/src/assets/styles/mixins/bourbon/bourbon/utilities/_contrast-ratio.scss
deleted file mode 100644
index 1ba65ce1525ef2c7f3b152e9be31f57540fef38f..0000000000000000000000000000000000000000
--- a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/utilities/_contrast-ratio.scss
+++ /dev/null
@@ -1,31 +0,0 @@
-@charset "UTF-8";
-
-/// Programatically determines the contrast ratio between two colors.
-///
-/// Note that the alpha channel is ignored.
-///
-/// @link https://goo.gl/54htLV
-///
-/// @argument {color (hex)} $color-1
-///
-/// @argument {color (hex)} $color-2
-///
-/// @return {number (1-21)}
-///
-/// @example scss
-///   _contrast-ratio(black, white)
-///
-/// @require {function} _lightness
-///
-/// @access private
-
-@function _contrast-ratio($color-1, $color-2) {
-  $-local-lightness-1: _lightness($color-1) + 0.05;
-  $-local-lightness-2: _lightness($color-2) + 0.05;
-
-  @if $-local-lightness-1 > $-local-lightness-2 {
-    @return $-local-lightness-1 / $-local-lightness-2;
-  } @else {
-    @return $-local-lightness-2 / $-local-lightness-1;
-  }
-}
diff --git a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/utilities/_directional-property.scss b/src/app/client/src/assets/styles/mixins/bourbon/bourbon/utilities/_directional-property.scss
deleted file mode 100644
index c9a3f1aa5febf65bb914cb2555cbb1bbfa813688..0000000000000000000000000000000000000000
--- a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/utilities/_directional-property.scss
+++ /dev/null
@@ -1,70 +0,0 @@
-@charset "UTF-8";
-
-// scss-lint:disable SpaceAroundOperator
-
-/// Builds directional properties by parsing CSS shorthand values. For example,
-/// a value of `10px null` will output top and bottom directional properties,
-/// but the `null` skips left and right from being output.
-///
-/// @argument {string} $property
-///   Base property.
-///
-/// @argument {string} $suffix
-///   Suffix to append. Use `null` to omit.
-///
-/// @argument {list} $values
-///   List of values to set for the property.
-///
-/// @example scss
-///   .element {
-///     @include _directional-property(border, width, null 5px);
-///   }
-///
-///   // CSS Output
-///   .element {
-///     border-right-width: 5px;
-///     border-left-width: 5px;
-///   }
-///
-/// @require {function} _compact-shorthand
-///
-/// @require {function} _contains-falsy
-///
-/// @access private
-
-@mixin _directional-property(
- $property,
- $suffix,
- $values
-) {
- $top:    $property + "-top"    + if($suffix, "-#{$suffix}", "");
- $bottom: $property + "-bottom" + if($suffix, "-#{$suffix}", "");
- $left:   $property + "-left"   + if($suffix, "-#{$suffix}", "");
- $right:  $property + "-right"  + if($suffix, "-#{$suffix}", "");
- $all:    $property +             if($suffix, "-#{$suffix}", "");
-
- $values: _compact-shorthand($values);
-
- @if _contains-falsy($values) {
-   @if nth($values, 1) { #{$top}: nth($values, 1) !important; }
-
-   @if length($values) == 1 {
-     @if nth($values, 1) { #{$right}: nth($values, 1) !important; }
-   } @else {
-     @if nth($values, 2) { #{$right}: nth($values, 2) !important; }
-   }
-
-   @if length($values) == 2 {
-     @if nth($values, 1) { #{$bottom}: nth($values, 1) !important; }
-     @if nth($values, 2) { #{$left}: nth($values, 2) !important; }
-   } @else if length($values) == 3 {
-     @if nth($values, 3) { #{$bottom}: nth($values, 3) !important; }
-     @if nth($values, 2) { #{$left}: nth($values, 2) !important; }
-   } @else if length($values) == 4 {
-     @if nth($values, 3) { #{$bottom}: nth($values, 3) !important; }
-     @if nth($values, 4) { #{$left}: nth($values, 4) !important; }
-   }
- } @else {
-   #{$all}: $values !important;
- }
-}
diff --git a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/utilities/_fetch-bourbon-setting.scss b/src/app/client/src/assets/styles/mixins/bourbon/bourbon/utilities/_fetch-bourbon-setting.scss
deleted file mode 100644
index b6e4366c1394b9af1efa009c8e232819a5016c2e..0000000000000000000000000000000000000000
--- a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/utilities/_fetch-bourbon-setting.scss
+++ /dev/null
@@ -1,16 +0,0 @@
-@charset "UTF-8";
-
-/// Return a Bourbon setting.
-///
-/// @argument {string} $setting
-///
-/// @return {boolean | color | list | number | string}
-///
-/// @example scss
-///   _fetch-bourbon-setting(rails-asset-pipeline)
-///
-/// @access private
-
-@function _fetch-bourbon-setting($setting) {
-  @return map-get(map-merge($_bourbon-defaults, $bourbon), $setting);
-}
diff --git a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/utilities/_font-source-declaration.scss b/src/app/client/src/assets/styles/mixins/bourbon/bourbon/utilities/_font-source-declaration.scss
deleted file mode 100644
index 3c9d51ea51e6c46826c4f401c46afa7361a58d70..0000000000000000000000000000000000000000
--- a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/utilities/_font-source-declaration.scss
+++ /dev/null
@@ -1,51 +0,0 @@
-@charset "UTF-8";
-
-/// Builds the `src` list for an `@font-face` declaration.
-///
-/// @link https://goo.gl/Ru1bKP
-///
-/// @argument {string} $font-family
-///
-/// @argument {string} $file-path
-///
-/// @argument {boolean} $asset-pipeline
-///
-/// @argument {list} $file-formats
-///
-/// @return {list}
-///
-/// @require {function} _contains
-///
-/// @access private
-
-@function _font-source-declaration(
-  $font-family,
-  $file-path,
-  $asset-pipeline,
-  $file-formats
-) {
-  $src: ();
-
-  $formats-map: (
-    eot:   "#{$file-path}.eot?#iefix" format("embedded-opentype"),
-    woff2: "#{$file-path}.woff2" format("woff2"),
-    woff:  "#{$file-path}.woff" format("woff"),
-    ttf:   "#{$file-path}.ttf" format("truetype"),
-    svg:   "#{$file-path}.svg##{$font-family}" format("svg"),
-  );
-
-  @each $key, $values in $formats-map {
-    @if _contains($file-formats, $key) {
-      $file-path: nth($values, 1);
-      $font-format: nth($values, 2);
-
-      @if $asset-pipeline == true {
-        $src: append($src, font-url($file-path) $font-format, comma);
-      } @else {
-        $src: append($src, url($file-path) $font-format, comma);
-      }
-    }
-  }
-
-  @return $src;
-}
diff --git a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/utilities/_gamma.scss b/src/app/client/src/assets/styles/mixins/bourbon/bourbon/utilities/_gamma.scss
deleted file mode 100644
index 3e5145b127b1c9d59520edc683c968c79e68ab4d..0000000000000000000000000000000000000000
--- a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/utilities/_gamma.scss
+++ /dev/null
@@ -1,24 +0,0 @@
-@charset "UTF-8";
-
-/// Performs gamma correction on a single color channel.
-///
-/// Note that the calculation is approximate if a `pow()` is not available.
-///
-/// @argument {number (0-1)} $channel
-///
-/// @return {number (0-1)}
-///
-/// @access private
-
-@function _gamma($channel) {
-  @if $channel < 0.03928 {
-    @return $channel / 12.92;
-  } @else {
-    $c: ($channel + 0.055) / 1.055;
-    @if function-exists("pow") {
-      @return pow($c, 2.4);
-    } @else {
-      @return 0.56 * $c * $c * $c + 0.44 * $c * $c;
-    }
-  }
-}
diff --git a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/utilities/_lightness.scss b/src/app/client/src/assets/styles/mixins/bourbon/bourbon/utilities/_lightness.scss
deleted file mode 100644
index a2929044ba795acf5ac28f684c5f738a428a9bc7..0000000000000000000000000000000000000000
--- a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/utilities/_lightness.scss
+++ /dev/null
@@ -1,24 +0,0 @@
-@charset "UTF-8";
-
-/// Programatically determines the lightness of a color.
-///
-/// @argument {color (hex)} $hex-color
-///
-/// @return {number (0-1)}
-///
-/// @example scss
-///   _lightness($color)
-///
-/// @access private
-
-@function _lightness($hex-color) {
-  $-local-red-raw: red(rgba($hex-color, 1));
-  $-local-green-raw: green(rgba($hex-color, 1));
-  $-local-blue-raw: blue(rgba($hex-color, 1));
-
-  $-local-red: _gamma($-local-red-raw / 255);
-  $-local-green: _gamma($-local-green-raw / 255);
-  $-local-blue: _gamma($-local-blue-raw / 255);
-
-  @return $-local-red * 0.2126 + $-local-green * 0.7152 + $-local-blue * 0.0722;
-}
diff --git a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/utilities/_unpack-shorthand.scss b/src/app/client/src/assets/styles/mixins/bourbon/bourbon/utilities/_unpack-shorthand.scss
deleted file mode 100644
index 5d39a713c288479514d7da8b06f05eb0bd155948..0000000000000000000000000000000000000000
--- a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/utilities/_unpack-shorthand.scss
+++ /dev/null
@@ -1,29 +0,0 @@
-@charset "UTF-8";
-
-/// Transforms shorthand that can range from 1-to-4 values to be 4 values.
-///
-/// @argument {list} $shorthand
-///
-/// @example scss
-///   .element {
-///     margin: _unpack-shorthand(1em 2em);
-///   }
-///
-///   // CSS Output
-///   .element {
-///     margin: 1em 2em 1em 2em;
-///   }
-///
-/// @access private
-
-@function _unpack-shorthand($shorthand) {
-  @if length($shorthand) == 1 {
-    @return nth($shorthand, 1) nth($shorthand, 1) nth($shorthand, 1) nth($shorthand, 1);
-  } @else if length($shorthand) == 2 {
-    @return nth($shorthand, 1) nth($shorthand, 2) nth($shorthand, 1) nth($shorthand, 2);
-  } @else if length($shorthand) == 3 {
-    @return nth($shorthand, 1) nth($shorthand, 2) nth($shorthand, 3) nth($shorthand, 2);
-  } @else {
-    @return $shorthand;
-  }
-}
diff --git a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/validators/_contains-falsy.scss b/src/app/client/src/assets/styles/mixins/bourbon/bourbon/validators/_contains-falsy.scss
deleted file mode 100644
index 4501e588aea19a25751099804693228803fcb9e8..0000000000000000000000000000000000000000
--- a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/validators/_contains-falsy.scss
+++ /dev/null
@@ -1,20 +0,0 @@
-@charset "UTF-8";
-
-/// Checks if a list does not contain any values.
-///
-/// @argument {list} $list
-///   The list to check against.
-///
-/// @return {boolean}
-///
-/// @access private
-
-@function _contains-falsy($list) {
-  @each $item in $list {
-    @if not $item {
-      @return true;
-    }
-  }
-
-  @return false;
-}
diff --git a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/validators/_contains.scss b/src/app/client/src/assets/styles/mixins/bourbon/bourbon/validators/_contains.scss
deleted file mode 100644
index 97910a1b1719d1910bbf590b2667e3585a7e0396..0000000000000000000000000000000000000000
--- a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/validators/_contains.scss
+++ /dev/null
@@ -1,26 +0,0 @@
-@charset "UTF-8";
-
-/// Checks if a list contains a value(s).
-///
-/// @argument {list} $list
-///   The list to check against.
-///
-/// @argument {list} $values
-///   A single value or list of values to check for.
-///
-/// @return {boolean}
-///
-/// @access private
-
-@function _contains(
-  $list,
-  $values...
-) {
-  @each $value in $values {
-    @if type-of(index($list, $value)) != "number" {
-      @return false;
-    }
-  }
-
-  @return true;
-}
diff --git a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/validators/_is-color.scss b/src/app/client/src/assets/styles/mixins/bourbon/bourbon/validators/_is-color.scss
deleted file mode 100644
index fa40e74f693ea010dccfc4740af8a1d256c79c9d..0000000000000000000000000000000000000000
--- a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/validators/_is-color.scss
+++ /dev/null
@@ -1,13 +0,0 @@
-@charset "UTF-8";
-
-/// Checks for a valid CSS color.
-///
-/// @argument {string} $color
-///
-/// @return {boolean}
-///
-/// @access private
-
-@function _is-color($color) {
-  @return (type-of($color) == color) or ($color == "currentColor");
-}
diff --git a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/validators/_is-length.scss b/src/app/client/src/assets/styles/mixins/bourbon/bourbon/validators/_is-length.scss
deleted file mode 100644
index aec94cf3d0d064f03aaeb1bc58134aad327e353c..0000000000000000000000000000000000000000
--- a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/validators/_is-length.scss
+++ /dev/null
@@ -1,15 +0,0 @@
-@charset "UTF-8";
-
-/// Checks for a valid CSS length.
-///
-/// @argument {string} $value
-///
-/// @return {boolean}
-///
-/// @access private
-
-@function _is-length($value) {
-  @return type-of($value) != "null" and (str-slice($value + "", 1, 4) == "calc"
-       or index(auto inherit initial 0, $value)
-       or (type-of($value) == "number" and not(unitless($value))));
-}
diff --git a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/validators/_is-number.scss b/src/app/client/src/assets/styles/mixins/bourbon/bourbon/validators/_is-number.scss
deleted file mode 100644
index 36fa0864f1b1f37c0cdaddfe3da9d708e3503ca0..0000000000000000000000000000000000000000
--- a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/validators/_is-number.scss
+++ /dev/null
@@ -1,15 +0,0 @@
-@charset "UTF-8";
-
-/// Checks for a valid number.
-///
-/// @argument {number} $value
-///
-/// @require {function} _contains
-///
-/// @return {boolean}
-///
-/// @access private
-
-@function _is-number($value) {
-  @return _contains("0" "1" "2" "3" "4" "5" "6" "7" "8" "9" 0 1 2 3 4 5 6 7 8 9, $value);
-}
diff --git a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/validators/_is-size.scss b/src/app/client/src/assets/styles/mixins/bourbon/bourbon/validators/_is-size.scss
deleted file mode 100644
index f68df1ea5f7afb977b7fa2fd82cc4a26f0755a75..0000000000000000000000000000000000000000
--- a/src/app/client/src/assets/styles/mixins/bourbon/bourbon/validators/_is-size.scss
+++ /dev/null
@@ -1,18 +0,0 @@
-@charset "UTF-8";
-
-/// Checks for a valid CSS size.
-///
-/// @argument {string} $value
-///
-/// @return {boolean}
-///
-/// @require {function} _contains
-///
-/// @require {function} _is-length
-///
-/// @access private
-
-@function _is-size($value) {
-  @return _is-length($value)
-          or _contains("fill" "fit-content" "min-content" "max-content", $value);
-}
diff --git a/src/app/client/src/assets/styles/pages/_content-header.scss b/src/app/client/src/assets/styles/pages/_content-header.scss
index e4e012ef9688bcec87d60c403a37cbddc7abf8f0..ef8ea802ea5b3bc34edcd589c5c5c3374583ed04 100644
--- a/src/app/client/src/assets/styles/pages/_content-header.scss
+++ b/src/app/client/src/assets/styles/pages/_content-header.scss
@@ -1,3 +1,4 @@
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 .content-header {
   margin-bottom: calculateRem(24px);
   min-height: calculateRem(14px);
diff --git a/src/app/client/src/assets/styles/pages/_course-player.scss b/src/app/client/src/assets/styles/pages/_course-player.scss
index fe88c7decd5f5b919eb351df17a59940225c8eaa..eef20c94eca5b0a115898e3c94c2e266b6b05392 100644
--- a/src/app/client/src/assets/styles/pages/_course-player.scss
+++ b/src/app/client/src/assets/styles/pages/_course-player.scss
@@ -1,4 +1,4 @@
-
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 // Course Player & Public course player cards styles
 
 .course-player {
diff --git a/src/app/client/src/assets/styles/pages/_kabab-menu.scss b/src/app/client/src/assets/styles/pages/_kabab-menu.scss
new file mode 100644
index 0000000000000000000000000000000000000000..d9386a869549256f8fe2dcc058b4802887218f2f
--- /dev/null
+++ b/src/app/client/src/assets/styles/pages/_kabab-menu.scss
@@ -0,0 +1,59 @@
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
+// Course Player & My Groups kabab menu styles
+
+.kabab-menu {
+    color: var(--primary-400);
+    width: calculateRem(30px);
+    height: calculateRem(30px);
+    line-height: calculateRem(28px);
+    text-align: center;
+    border-radius: 50%;
+    padding-left: calculateRem(6px);
+    &:hover {
+      background: var(--kabab-menu-hover-bg);
+      cursor: pointer;
+    }
+  }
+  .kabab-menu::after {
+    content: "\2807";
+    font-size: calculateRem(24px);
+  }
+
+.kabab-menu-dropdown-content {
+    position: absolute;
+    border-radius: calculateRem(2px);
+    background-color: var(--kabab-menu-dropdown-bg);
+    box-shadow: 0 calculateRem(3px) calculateRem(5px) calculateRem(4px) rgba(0, 0, 0, 0.05);
+    padding: calculateRem(8px);
+    z-index: 1;
+    text-align: left;
+    right: 0;
+    top: 0;
+    min-width: calculateRem(170px);
+  
+    .list {
+      display: flex;
+      align-items: center;
+      cursor: pointer;
+      font-size: calculateRem(14px);
+      padding: calculateRem(8px);
+      &:hover,&:active{
+        background-color: var(--kabab-menu-dropdown-item-active);
+      }
+      &:last-child{
+        .sb-btn-normal{
+          color: var(--red-400);
+        }
+      }
+      .sb-btn-normal{
+        font-size: calculateRem(14px);
+      }
+    }
+  }
+  ::ng-deep {
+    html[dir='rtl'] .kabab-menu-dropdown-content {
+      right:auto;
+      left:0;
+    }
+  }
+  
\ No newline at end of file
diff --git a/src/app/client/src/assets/styles/pages/_mat-modal.scss b/src/app/client/src/assets/styles/pages/_mat-modal.scss
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/src/app/client/src/assets/styles/pages/_sbt-dropdown.scss b/src/app/client/src/assets/styles/pages/_sbt-dropdown.scss
index 51de4c7090af7523b8fb8ef4da97d822aefc73b1..12dd92d8e13e7b513eea69bd3d6596dc50428843 100644
--- a/src/app/client/src/assets/styles/pages/_sbt-dropdown.scss
+++ b/src/app/client/src/assets/styles/pages/_sbt-dropdown.scss
@@ -1,3 +1,4 @@
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 /* select box */
 .sbt-dropdown-language.ui.selection.sbt-dropdown.dropdown {
   >.text span:last-child {
diff --git a/src/app/client/src/assets/styles/pages/_sbt-filter.scss b/src/app/client/src/assets/styles/pages/_sbt-filter.scss
index a9da6288bc2d1c29d2279837906a5d44834cc936..76209cc4e24c3fc9bbcc11c3aa46de07d009299a 100644
--- a/src/app/client/src/assets/styles/pages/_sbt-filter.scss
+++ b/src/app/client/src/assets/styles/pages/_sbt-filter.scss
@@ -1,3 +1,4 @@
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 :host::ng-deep {
   .sbt-class-bar {
     label {
@@ -131,7 +132,7 @@
 }
 
 .filter-pref-text {
-  color:var(--filter-pref-text);
+  color:var(--sbt-class-bar-label-text);
 }
 .sbt-filter {
   // margin-bottom: calculateRem(16px);
diff --git a/src/app/client/src/assets/styles/pages/_sign_in_up.scss b/src/app/client/src/assets/styles/pages/_sign_in_up.scss
index a71677acb8771cc90ac2c6751fd935178f67b0ae..3d3cd2cc103603b2f7f178f72d5e5794d327af42 100644
--- a/src/app/client/src/assets/styles/pages/_sign_in_up.scss
+++ b/src/app/client/src/assets/styles/pages/_sign_in_up.scss
@@ -1,4 +1,5 @@
 
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 // new signup changes
 .signup-background {
   background: url('/assets/images/bg.svg') no-repeat center center fixed;
diff --git a/src/app/client/src/assets/styles/pages/_user-mgmt.scss b/src/app/client/src/assets/styles/pages/_user-mgmt.scss
index 4373f31b8920499225fed7226ee8d948a8a0d3d7..95c07b5621ee4e3a998c53800d88810d97d95373 100644
--- a/src/app/client/src/assets/styles/pages/_user-mgmt.scss
+++ b/src/app/client/src/assets/styles/pages/_user-mgmt.scss
@@ -1,3 +1,4 @@
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 /* user create and choose user page UI styles */
 
 .user-profile-box {
diff --git a/src/app/client/src/assets/styles/pages/custom-carousel.scss b/src/app/client/src/assets/styles/pages/custom-carousel.scss
index a4844b76820542d57c755f60665d744cd4a78e04..f68f501969b971ed6e198eabe02a6763ac8a8f13 100644
--- a/src/app/client/src/assets/styles/pages/custom-carousel.scss
+++ b/src/app/client/src/assets/styles/pages/custom-carousel.scss
@@ -1,3 +1,4 @@
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 ::ng-deep {
   .modal-custom-carousel {
     .slick-slide {
diff --git a/src/app/client/src/assets/styles/pages/page-center-view.scss b/src/app/client/src/assets/styles/pages/page-center-view.scss
index 44ae2734980c4a7c29c094c10464939f14228c2e..be21cb263e56f579d42d9257a5c4680d5a80b2bb 100644
--- a/src/app/client/src/assets/styles/pages/page-center-view.scss
+++ b/src/app/client/src/assets/styles/pages/page-center-view.scss
@@ -1,3 +1,4 @@
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 .sb-group-page-container {
     position:fixed;
     top:0px;
diff --git a/src/app/client/src/assets/styles/semantic/semantic-overrides.scss b/src/app/client/src/assets/styles/semantic/semantic-overrides.scss
index 250052178a2bcfc9b3ce58bb512025e55602cdb1..d638412a0d471ac3f9c87c8471cb9e39654161b2 100644
--- a/src/app/client/src/assets/styles/semantic/semantic-overrides.scss
+++ b/src/app/client/src/assets/styles/semantic/semantic-overrides.scss
@@ -82,12 +82,3 @@ input[type=number]::-webkit-outer-spin-button {
 .ui.dimmer:not(.inverted)::-webkit-scrollbar-thumb {
   background: rgba(255, 255, 255, 1);
 }
-
-
-// @include respond-below(sm) {
-//   .ui.container {
-//     margin: 0 0px !important;
-//     padding-left: 16px !important;
-//     padding-right: 16px !important;
-//   }
-// }
\ No newline at end of file
diff --git a/src/app/client/src/assets/styles/styles.scss b/src/app/client/src/assets/styles/styles.scss
index 39228fc6a509f4058cb2fd43376295ed59b05864..871a781247dc5a39c5c3e60b94c197b26d0464c9 100644
--- a/src/app/client/src/assets/styles/styles.scss
+++ b/src/app/client/src/assets/styles/styles.scss
@@ -1,32 +1,19 @@
-/* Load fonts first*/
-@import "./fonts/notosans/notosans.css";
-@import "./fonts/notosans-bengali/notosansbengali.css";
-@import "./fonts/notosans-malayalam/notosansmalayalam.css";
-@import "./fonts/notosans-gurmukhi/notosansgurmukhi.css";
-@import "./fonts/notosans-devanagari/notosansdevanagari.css";
-@import "./fonts/notosans-gujarati/notosansgujarati.css";
-@import "./fonts/notosans-telugu/notosanstelugu.css";
-@import "./fonts/notosans-tamil/notosanstamil.css";
-@import "./fonts/notosans-kannada/notosanskannada.css";
-@import "./fonts/notosans-oriya/notosansoriya.css";
-@import "./fonts/noto-nastaliqurdu/notonastaliqurdu.css";
+// from sb-styles
+@use "~@project-sunbird/sb-styles/assets/varIndex" as *;
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
 
+// from portal
+@use "./components/components" as *;
+@use "./vendors/vendors" as *;
+@use "./layout/layout" as *;
+@use "./legacy" as *;
+@use "./global" as *;
+@use "./pages/sbt-dropdown" as *;
 
-// base structure @import "~@project-sunbird/sb-styles/assets/mixins/mixins";
-@import "./mixins/mixins";
-@import "~@project-sunbird/sb-styles/assets/variables";
-@import "./layout/layout";
-@import "./semantic/semantic-overrides";
-@import "./semantic/semantic-rtl";
-@import "./vendors/vendors";
-@import "./components/components";
-@import "~@project-sunbird/sb-styles/assets/buttons";
-@import "./legacy";
-@import "./global";
-@import "./pages/sbt-dropdown";
-
+// from semantic
+@use "./semantic/semantic-overrides" as *;
+@use "./semantic/semantic-rtl" as *;
 
 // @import '~@swimlane/ngx-datatable/src/themes/material';
 @import '~@swimlane/ngx-datatable/assets/icons.css';
-
 @import url( 'https://fonts.googleapis.com/css?family=Material+Icons');
diff --git a/src/app/client/src/assets/styles/themes/_default.scss b/src/app/client/src/assets/styles/themes/_default.scss
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/src/app/client/src/assets/styles/vendors/_fine-uploader-new.scss b/src/app/client/src/assets/styles/vendors/_fine-uploader-new.scss
index 55d1c220b7dc68e9413c9d2d315bf7274e91b550..61aac5f9eacda56df748f8e6f5ee6d3b1ac05a49 100644
--- a/src/app/client/src/assets/styles/vendors/_fine-uploader-new.scss
+++ b/src/app/client/src/assets/styles/vendors/_fine-uploader-new.scss
@@ -1,3 +1,5 @@
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
+
 /***********************************************
    Hacks -
 
diff --git a/src/app/client/src/assets/styles/vendors/_iziToast.scss b/src/app/client/src/assets/styles/vendors/_iziToast.scss
index d0a75ae5848215c881a54bcaa8426e35421e8655..c69b5cc308d4b3c351ac5f33a806b1c8dc1f073f 100644
--- a/src/app/client/src/assets/styles/vendors/_iziToast.scss
+++ b/src/app/client/src/assets/styles/vendors/_iziToast.scss
@@ -1,3 +1,5 @@
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
+
 /*
 * iziToast | v1.3.0
 * http://izitoast.marcelodolce.com
diff --git a/src/app/client/src/assets/styles/vendors/_slick-theme.scss b/src/app/client/src/assets/styles/vendors/_slick-theme.scss
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/src/app/client/src/assets/styles/vendors/_slick.scss b/src/app/client/src/assets/styles/vendors/_slick.scss
index dabe6cd008d9557c8842ab302d8ff63bd926ee5a..28ed94bb0070f69d60b0e565a59b50086cff6f53 100644
--- a/src/app/client/src/assets/styles/vendors/_slick.scss
+++ b/src/app/client/src/assets/styles/vendors/_slick.scss
@@ -1,3 +1,5 @@
+@use "~@project-sunbird/sb-styles/assets/mixins/mixins" as *;
+
 /***********************************************
    Hacks -
 
@@ -18,8 +20,8 @@
 $slick-font-path: "../../../node_modules/slick-carousel/slick/fonts/" !default;
 $slick-font-family: normal normal normal 14px/1 FontAwesome !default;
 $slick-loader-path: "../../../node_modules/slick-carousel/slick/" !default;
-$slick-arrow-color: $danger-color !default;
-$slick-dot-color: black !default;
+$slick-arrow-color: var(--danger-color) !default;
+$slick-dot-color: var(--black) !default;
 $slick-dot-color-active: $slick-dot-color !default;
 $slick-prev-character: "\f104" !default;
 $slick-next-character: "\f105" !default;
diff --git a/src/app/client/src/assets/styles/vendors/vendors.scss b/src/app/client/src/assets/styles/vendors/vendors.scss
index 919c1cefc42c3362061a883a9d82d9b7de57a1c8..c071fb2e1e1febcc749fd4db199c4cfe520bb799 100644
--- a/src/app/client/src/assets/styles/vendors/vendors.scss
+++ b/src/app/client/src/assets/styles/vendors/vendors.scss
@@ -1,7 +1,6 @@
-// @import "./angular2select-default.theme";
-// @import "./fine-uploader-gallery";
-@import "./fine-uploader-new";
-// @import "./slick-theme";
-@import "./slick";
-@import "./iziToast";
+// @forward "./angular2select-default.theme";
+// @forward "./fine-uploader-gallery";
+@forward "./fine-uploader-new";
+@forward "./slick";
+@forward "./iziToast";
 
diff --git a/src/app/client/src/index.html b/src/app/client/src/index.html
index 64d57be54990b743637c2a12b1b2d8a28c69150a..3662831780df3e092383ca2e6794acc77c79b6bf 100644
--- a/src/app/client/src/index.html
+++ b/src/app/client/src/index.html
@@ -1,5 +1,5 @@
 <!doctype html>
-<html lang="en" dir="ltr" data-theme="Default" accessable-theme="accessible" data-mode="" layout="old" >
+<html lang="en" dir="ltr" data-theme="default" data-mode="light" layout="base" accessible-theme="accessible">
 
 <head>
   <meta charset="utf-8">
@@ -27,8 +27,8 @@
   <input type="hidden" id="cloudStorageUrls" value="<%=cloudStorageUrls%>" />
   <% } %>
   <% if (publicStorageAccount) { %>
-    <input type="hidden" id="publicStorageAccount" value="<%=publicStorageAccount%>" />
-    <% } %>
+  <input type="hidden" id="publicStorageAccount" value="<%=publicStorageAccount%>" />
+  <% } %>
   <% if (defaultTenant) { %>
   <input type="hidden" id="defaultTenant" value="<%=defaultTenant%>" />
   <% } %>
@@ -74,7 +74,7 @@
   <% if (deviceId) { %>
   <input type="hidden" id="deviceId" value="<%=deviceId%>" />
   <%} else { %>
-  <input type="hidden" id="deviceId"/>
+  <input type="hidden" id="deviceId" />
   <% } %>
   <% if (googleCaptchaSiteKey) { %>
   <input type="hidden" id="googleCaptchaSiteKey" value="<%=googleCaptchaSiteKey%>" />
@@ -83,16 +83,16 @@
   <input type="hidden" id="videoMaxSize" value="<%=videoMaxSize%>" />
   <% } %>
   <% if (sunbirdDefaultFileSize) { %>
-    <input type="hidden" id="sunbirdDefaultFileSize" value="<%=sunbirdDefaultFileSize%>" />
+  <input type="hidden" id="sunbirdDefaultFileSize" value="<%=sunbirdDefaultFileSize%>" />
   <% } %>
   <% if (reportsLocation) { %>
   <input type="hidden" id="reportsLocation" value="<%=reportsLocation%>" />
   <% } %>
   <% if (previewCdnUrl) { %>
-    <input type="hidden" id="previewCdnUrl" value="<%=previewCdnUrl%>" />
+  <input type="hidden" id="previewCdnUrl" value="<%=previewCdnUrl%>" />
   <% } %>
   <% if (cdnWorking) { %>
-    <input type="hidden" id="cdnWorking" value="<%=cdnWorking%>" />
+  <input type="hidden" id="cdnWorking" value="<%=cdnWorking%>" />
   <% } %>
   <% if (offlineDesktopAppTenant) { %>
   <input type="hidden" id="offlineDesktopAppTenant" value="<%=offlineDesktopAppTenant%>" />
@@ -107,69 +107,70 @@
   <input type="hidden" id="offlineDesktopAppSupportedLanguage" value="<%=offlineDesktopAppSupportedLanguage%>" />
   <% } %>
   <% if (offlineDesktopAppDownloadUrl) { %>
-    <input type="hidden" id="offlineDesktopAppDownloadUrl" value="<%=offlineDesktopAppDownloadUrl%>" />
+  <input type="hidden" id="offlineDesktopAppDownloadUrl" value="<%=offlineDesktopAppDownloadUrl%>" />
   <% } %>
   <% if (logFingerprintDetails) { %>
-    <input type="hidden" id="logFingerprintDetails" value="<%=logFingerprintDetails%>" />
+  <input type="hidden" id="logFingerprintDetails" value="<%=logFingerprintDetails%>" />
   <% } %>
   <% if (deviceApi) { %>
-    <input type="hidden" id="deviceApi" value="<%=deviceApi%>" />
+  <input type="hidden" id="deviceApi" value="<%=deviceApi%>" />
   <% } %>
   <% if (slugForProminentFilter) { %>
-    <input type="hidden" id="slugForProminentFilter" value="<%=slugForProminentFilter%>" />
+  <input type="hidden" id="slugForProminentFilter" value="<%=slugForProminentFilter%>" />
   <% } %>
   <% if (collectionEditorURL) { %>
-    <input type="hidden" id="collectionEditorURL" value="<%=collectionEditorURL%>" />
+  <input type="hidden" id="collectionEditorURL" value="<%=collectionEditorURL%>" />
   <% } %>
   <% if (contentEditorURL) { %>
-    <input type="hidden" id="contentEditorURL" value="<%=contentEditorURL%>" />
+  <input type="hidden" id="contentEditorURL" value="<%=contentEditorURL%>" />
   <% } %>
   <% if (genericEditorURL) { %>
-    <input type="hidden" id="genericEditorURL" value="<%=genericEditorURL%>" />
+  <input type="hidden" id="genericEditorURL" value="<%=genericEditorURL%>" />
   <% } %>
   <% if (botConfigured) { %>
-    <input type="hidden" id="isBotConfigured" value="<%=botConfigured%>" />
+  <input type="hidden" id="isBotConfigured" value="<%=botConfigured%>" />
   <% } %>
   <% if (botServiceURL) { %>
-    <input type="hidden" id="botServiceURL" value="<%=botServiceURL%>" />
+  <input type="hidden" id="botServiceURL" value="<%=botServiceURL%>" />
   <% } %>
   <% if (superAdminSlug) { %>
-    <input type="hidden" id="superAdminSlug" value="<%=superAdminSlug%>" />
+  <input type="hidden" id="superAdminSlug" value="<%=superAdminSlug%>" />
   <% } %>
   <% if (p1reCaptchaEnabled == "true" || p1reCaptchaEnabled == true) { %>
-    <input type="hidden" id="p1reCaptchaEnabled" value="true" />
+  <input type="hidden" id="p1reCaptchaEnabled" value="true" />
   <% } else { %>
-      <input type="hidden" id="p1reCaptchaEnabled" value="false" />
+  <input type="hidden" id="p1reCaptchaEnabled" value="false" />
   <% } %>
   <% if (p2reCaptchaEnabled == "true" || p2reCaptchaEnabled == true) { %>
-    <input type="hidden" id="p2reCaptchaEnabled" value="true" />
+  <input type="hidden" id="p2reCaptchaEnabled" value="true" />
   <% } else { %>
-    <input type="hidden" id="p2reCaptchaEnabled" value="false" />
+  <input type="hidden" id="p2reCaptchaEnabled" value="false" />
   <% } %>
   <% if (p3reCaptchaEnabled == "true" || p3reCaptchaEnabled == true) { %>
-    <input type="hidden" id="p3reCaptchaEnabled" value="true>" />
+  <input type="hidden" id="p3reCaptchaEnabled" value="true>" />
   <% } else { %>
-    <input type="hidden" id="p3reCaptchaEnabled" value="false" />
+  <input type="hidden" id="p3reCaptchaEnabled" value="false" />
   <% } %>
-    <input type="hidden" id="enableSSO" value="<%=enableSSO%>" />
+  <input type="hidden" id="enableSSO" value="<%=enableSSO%>" />
   <% if (reportsListVersion) { %>
   <input type="hidden" id="reportsListVersion" value="<%=reportsListVersion%>" />
   <% } %>
   <% if (baseUrl) { %>
-    <input type="hidden" id="baseUrl" value="<%=baseUrl%>" />
+  <input type="hidden" id="baseUrl" value="<%=baseUrl%>" />
   <% } %>
   <% if (blobUrl) { %>
-    <input type="hidden" id="blobUrl" value="<%=blobUrl%>" />
+  <input type="hidden" id="blobUrl" value="<%=blobUrl%>" />
   <% } %>
   <% if (sunbirdQuestionSetChildrenLimit) { %>
-    <input type="hidden" id="sunbirdQuestionSetChildrenLimit" value="<%=sunbirdQuestionSetChildrenLimit%>" />
+  <input type="hidden" id="sunbirdQuestionSetChildrenLimit" value="<%=sunbirdQuestionSetChildrenLimit%>" />
   <% } %>
   <% if (sunbirdCollectionChildrenLimit) { %>
-    <input type="hidden" id="sunbirdCollectionChildrenLimit" value="<%=sunbirdCollectionChildrenLimit%>" />
+  <input type="hidden" id="sunbirdCollectionChildrenLimit" value="<%=sunbirdCollectionChildrenLimit%>" />
   <% } %>
   <% if (uciBotPhoneNumber) { %>
-    <input type="hidden" id="uciBotPhoneNumber" value="<%=uciBotPhoneNumber%>" />
+  <input type="hidden" id="uciBotPhoneNumber" value="<%=uciBotPhoneNumber%>" />
   <% } %>
   <app-root></app-root>
 </body>
+
 </html>
diff --git a/src/app/client/yarn.lock b/src/app/client/yarn.lock
index 9211598b1f28afc089d1aedf1342b48ab4080934..b8d320528c77b84c61d7b0a55eb1a9e895a659ed 100644
--- a/src/app/client/yarn.lock
+++ b/src/app/client/yarn.lock
@@ -419,10 +419,10 @@
   dependencies:
     "@babel/highlight" "^7.18.6"
 
-"@babel/compat-data@^7.12.7", "@babel/compat-data@^7.18.8", "@babel/compat-data@^7.19.3":
-  version "7.19.3"
-  resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.19.3.tgz#707b939793f867f5a73b2666e6d9a3396eb03151"
-  integrity sha512-prBHMK4JYYK+wDjJF1q99KK4JLL+egWS4nmNqdlMUgCExMZ+iZW0hGhyC3VEbsPjvaN0TBhW//VIFwBrk8sEiw==
+"@babel/compat-data@^7.12.7", "@babel/compat-data@^7.20.0", "@babel/compat-data@^7.20.1":
+  version "7.20.5"
+  resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.20.5.tgz#86f172690b093373a933223b4745deeb6049e733"
+  integrity sha512-KZXo2t10+/jxmkhNXc7pZTqRvSOIvVv/+lJwHS+B2rErwOyjuVRh60yVpb7liQ1U5t7lLJ1bz+t8tSypUZdm0g==
 
 "@babel/core@7.12.10":
   version "7.12.10"
@@ -467,20 +467,20 @@
     source-map "^0.5.0"
 
 "@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.7.2", "@babel/core@^7.7.5", "@babel/core@^7.8.0", "@babel/core@^7.8.6":
-  version "7.19.3"
-  resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.19.3.tgz#2519f62a51458f43b682d61583c3810e7dcee64c"
-  integrity sha512-WneDJxdsjEvyKtXKsaBGbDeiyOjR5vYq4HcShxnIbG0qixpoHjI3MqeZM9NDvsojNCEBItQE4juOo/bU6e72gQ==
+  version "7.20.5"
+  resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.20.5.tgz#45e2114dc6cd4ab167f81daf7820e8fa1250d113"
+  integrity sha512-UdOWmk4pNWTm/4DlPUl/Pt4Gz4rcEMb7CY0Y3eJl5Yz1vI8ZJGmHWaVE55LoxRjdpx0z259GE9U5STA9atUinQ==
   dependencies:
     "@ampproject/remapping" "^2.1.0"
     "@babel/code-frame" "^7.18.6"
-    "@babel/generator" "^7.19.3"
-    "@babel/helper-compilation-targets" "^7.19.3"
-    "@babel/helper-module-transforms" "^7.19.0"
-    "@babel/helpers" "^7.19.0"
-    "@babel/parser" "^7.19.3"
+    "@babel/generator" "^7.20.5"
+    "@babel/helper-compilation-targets" "^7.20.0"
+    "@babel/helper-module-transforms" "^7.20.2"
+    "@babel/helpers" "^7.20.5"
+    "@babel/parser" "^7.20.5"
     "@babel/template" "^7.18.10"
-    "@babel/traverse" "^7.19.3"
-    "@babel/types" "^7.19.3"
+    "@babel/traverse" "^7.20.5"
+    "@babel/types" "^7.20.5"
     convert-source-map "^1.7.0"
     debug "^4.1.0"
     gensync "^1.0.0-beta.2"
@@ -496,12 +496,12 @@
     jsesc "^2.5.1"
     source-map "^0.5.0"
 
-"@babel/generator@^7.12.10", "@babel/generator@^7.19.3", "@babel/generator@^7.7.2", "@babel/generator@^7.8.3":
-  version "7.19.3"
-  resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.19.3.tgz#d7f4d1300485b4547cb6f94b27d10d237b42bf59"
-  integrity sha512-fqVZnmp1ncvZU757UzDheKZpfPgatqY59XtW2/j/18H7u76akb8xqvjw82f+i2UKd/ksYsSick/BCLQUUtJ/qQ==
+"@babel/generator@^7.12.10", "@babel/generator@^7.20.5", "@babel/generator@^7.7.2", "@babel/generator@^7.8.3":
+  version "7.20.5"
+  resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.20.5.tgz#cb25abee3178adf58d6814b68517c62bdbfdda95"
+  integrity sha512-jl7JY2Ykn9S0yj4DQP82sYvPU+T3g0HFcWTqDLqiuA9tGRNIj9VfbtXGAYTTkyNEnQk1jkMGOdYka8aG/lulCA==
   dependencies:
-    "@babel/types" "^7.19.3"
+    "@babel/types" "^7.20.5"
     "@jridgewell/gen-mapping" "^0.3.2"
     jsesc "^2.5.1"
 
@@ -520,36 +520,36 @@
     "@babel/helper-explode-assignable-expression" "^7.18.6"
     "@babel/types" "^7.18.9"
 
-"@babel/helper-compilation-targets@^7.12.5", "@babel/helper-compilation-targets@^7.18.9", "@babel/helper-compilation-targets@^7.19.0", "@babel/helper-compilation-targets@^7.19.3":
-  version "7.19.3"
-  resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.3.tgz#a10a04588125675d7c7ae299af86fa1b2ee038ca"
-  integrity sha512-65ESqLGyGmLvgR0mst5AdW1FkNlj9rQsCKduzEoEPhBCDFGXvz2jW6bXFG6i0/MrV2s7hhXjjb2yAzcPuQlLwg==
+"@babel/helper-compilation-targets@^7.12.5", "@babel/helper-compilation-targets@^7.18.9", "@babel/helper-compilation-targets@^7.20.0":
+  version "7.20.0"
+  resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz#6bf5374d424e1b3922822f1d9bdaa43b1a139d0a"
+  integrity sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==
   dependencies:
-    "@babel/compat-data" "^7.19.3"
+    "@babel/compat-data" "^7.20.0"
     "@babel/helper-validator-option" "^7.18.6"
     browserslist "^4.21.3"
     semver "^6.3.0"
 
 "@babel/helper-create-class-features-plugin@^7.18.6":
-  version "7.19.0"
-  resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.19.0.tgz#bfd6904620df4e46470bae4850d66be1054c404b"
-  integrity sha512-NRz8DwF4jT3UfrmUoZjd0Uph9HQnP30t7Ash+weACcyNkiYTywpIjDBgReJMKgr+n86sn2nPVVmJ28Dm053Kqw==
+  version "7.20.5"
+  resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.5.tgz#327154eedfb12e977baa4ecc72e5806720a85a06"
+  integrity sha512-3RCdA/EmEaikrhayahwToF0fpweU/8o2p8vhc1c/1kftHOdTKuC65kik/TLc+qfbS8JKw4qqJbne4ovICDhmww==
   dependencies:
     "@babel/helper-annotate-as-pure" "^7.18.6"
     "@babel/helper-environment-visitor" "^7.18.9"
     "@babel/helper-function-name" "^7.19.0"
     "@babel/helper-member-expression-to-functions" "^7.18.9"
     "@babel/helper-optimise-call-expression" "^7.18.6"
-    "@babel/helper-replace-supers" "^7.18.9"
+    "@babel/helper-replace-supers" "^7.19.1"
     "@babel/helper-split-export-declaration" "^7.18.6"
 
-"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.19.0":
-  version "7.19.0"
-  resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.19.0.tgz#7976aca61c0984202baca73d84e2337a5424a41b"
-  integrity sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==
+"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.20.5":
+  version "7.20.5"
+  resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.20.5.tgz#5ea79b59962a09ec2acf20a963a01ab4d076ccca"
+  integrity sha512-m68B1lkg3XDGX5yCvGO0kPx3v9WIYLnzjKfPcQiwntEQa5ZeRkPmo2X/ISJc8qxWGfwUr+kvZAeEzAwLec2r2w==
   dependencies:
     "@babel/helper-annotate-as-pure" "^7.18.6"
-    regexpu-core "^5.1.0"
+    regexpu-core "^5.2.1"
 
 "@babel/helper-environment-visitor@^7.18.9":
   version "7.18.9"
@@ -592,19 +592,19 @@
   dependencies:
     "@babel/types" "^7.18.6"
 
-"@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.19.0":
-  version "7.19.0"
-  resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.19.0.tgz#309b230f04e22c58c6a2c0c0c7e50b216d350c30"
-  integrity sha512-3HBZ377Fe14RbLIA+ac3sY4PTgpxHVkFrESaWhoI5PuyXPBBX8+C34qblV9G89ZtycGJCmCI/Ut+VUDK4bltNQ==
+"@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.19.6", "@babel/helper-module-transforms@^7.20.2":
+  version "7.20.2"
+  resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz#ac53da669501edd37e658602a21ba14c08748712"
+  integrity sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==
   dependencies:
     "@babel/helper-environment-visitor" "^7.18.9"
     "@babel/helper-module-imports" "^7.18.6"
-    "@babel/helper-simple-access" "^7.18.6"
+    "@babel/helper-simple-access" "^7.20.2"
     "@babel/helper-split-export-declaration" "^7.18.6"
-    "@babel/helper-validator-identifier" "^7.18.6"
+    "@babel/helper-validator-identifier" "^7.19.1"
     "@babel/template" "^7.18.10"
-    "@babel/traverse" "^7.19.0"
-    "@babel/types" "^7.19.0"
+    "@babel/traverse" "^7.20.1"
+    "@babel/types" "^7.20.2"
 
 "@babel/helper-optimise-call-expression@^7.18.6":
   version "7.18.6"
@@ -613,10 +613,10 @@
   dependencies:
     "@babel/types" "^7.18.6"
 
-"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.19.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3":
-  version "7.19.0"
-  resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.19.0.tgz#4796bb14961521f0f8715990bee2fb6e51ce21bf"
-  integrity sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw==
+"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.19.0", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3":
+  version "7.20.2"
+  resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz#d1b9000752b18d0877cff85a5c376ce5c3121629"
+  integrity sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==
 
 "@babel/helper-remap-async-to-generator@^7.12.1", "@babel/helper-remap-async-to-generator@^7.18.6", "@babel/helper-remap-async-to-generator@^7.18.9":
   version "7.18.9"
@@ -628,7 +628,7 @@
     "@babel/helper-wrap-function" "^7.18.9"
     "@babel/types" "^7.18.9"
 
-"@babel/helper-replace-supers@^7.18.6", "@babel/helper-replace-supers@^7.18.9":
+"@babel/helper-replace-supers@^7.18.6", "@babel/helper-replace-supers@^7.19.1":
   version "7.19.1"
   resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz#e1592a9b4b368aa6bdb8784a711e0bcbf0612b78"
   integrity sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==
@@ -639,19 +639,19 @@
     "@babel/traverse" "^7.19.1"
     "@babel/types" "^7.19.0"
 
-"@babel/helper-simple-access@^7.18.6":
-  version "7.18.6"
-  resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz#d6d8f51f4ac2978068df934b569f08f29788c7ea"
-  integrity sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==
+"@babel/helper-simple-access@^7.19.4", "@babel/helper-simple-access@^7.20.2":
+  version "7.20.2"
+  resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz#0ab452687fe0c2cfb1e2b9e0015de07fc2d62dd9"
+  integrity sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==
   dependencies:
-    "@babel/types" "^7.18.6"
+    "@babel/types" "^7.20.2"
 
 "@babel/helper-skip-transparent-expression-wrappers@^7.18.9":
-  version "7.18.9"
-  resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz#778d87b3a758d90b471e7b9918f34a9a02eb5818"
-  integrity sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw==
+  version "7.20.0"
+  resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz#fbe4c52f60518cab8140d77101f0e63a8a230684"
+  integrity sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==
   dependencies:
-    "@babel/types" "^7.18.9"
+    "@babel/types" "^7.20.0"
 
 "@babel/helper-split-export-declaration@^7.18.6":
   version "7.18.6"
@@ -660,10 +660,10 @@
   dependencies:
     "@babel/types" "^7.18.6"
 
-"@babel/helper-string-parser@^7.18.10":
-  version "7.18.10"
-  resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz#181f22d28ebe1b3857fa575f5c290b1aaf659b56"
-  integrity sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==
+"@babel/helper-string-parser@^7.19.4":
+  version "7.19.4"
+  resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz#38d3acb654b4701a9b77fb0615a96f775c3a9e63"
+  integrity sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==
 
 "@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1":
   version "7.19.1"
@@ -676,23 +676,23 @@
   integrity sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==
 
 "@babel/helper-wrap-function@^7.18.9":
-  version "7.19.0"
-  resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.19.0.tgz#89f18335cff1152373222f76a4b37799636ae8b1"
-  integrity sha512-txX8aN8CZyYGTwcLhlk87KRqncAzhh5TpQamZUa0/u3an36NtDpUP6bQgBCBcLeBs09R/OwQu3OjK0k/HwfNDg==
+  version "7.20.5"
+  resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz#75e2d84d499a0ab3b31c33bcfe59d6b8a45f62e3"
+  integrity sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==
   dependencies:
     "@babel/helper-function-name" "^7.19.0"
     "@babel/template" "^7.18.10"
-    "@babel/traverse" "^7.19.0"
-    "@babel/types" "^7.19.0"
+    "@babel/traverse" "^7.20.5"
+    "@babel/types" "^7.20.5"
 
-"@babel/helpers@^7.12.5", "@babel/helpers@^7.19.0", "@babel/helpers@^7.8.3":
-  version "7.19.0"
-  resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.19.0.tgz#f30534657faf246ae96551d88dd31e9d1fa1fc18"
-  integrity sha512-DRBCKGwIEdqY3+rPJgG/dKfQy9+08rHIAJx8q2p+HSWP87s2HCrQmaAMMyMll2kIXKCW0cO1RdQskx15Xakftg==
+"@babel/helpers@^7.12.5", "@babel/helpers@^7.20.5", "@babel/helpers@^7.8.3":
+  version "7.20.6"
+  resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.20.6.tgz#e64778046b70e04779dfbdf924e7ebb45992c763"
+  integrity sha512-Pf/OjgfgFRW5bApskEz5pvidpim7tEDPlFtKcNRXWmfHGn9IEI2W2flqRQXTFb7gIPTyK++N6rVHuwKut4XK6w==
   dependencies:
     "@babel/template" "^7.18.10"
-    "@babel/traverse" "^7.19.0"
-    "@babel/types" "^7.19.0"
+    "@babel/traverse" "^7.20.5"
+    "@babel/types" "^7.20.5"
 
 "@babel/highlight@^7.18.6":
   version "7.18.6"
@@ -703,15 +703,15 @@
     chalk "^2.0.0"
     js-tokens "^4.0.0"
 
-"@babel/parser@^7.1.0", "@babel/parser@^7.12.10", "@babel/parser@^7.12.7", "@babel/parser@^7.14.7", "@babel/parser@^7.18.10", "@babel/parser@^7.19.3", "@babel/parser@^7.8.3":
-  version "7.19.3"
-  resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.19.3.tgz#8dd36d17c53ff347f9e55c328710321b49479a9a"
-  integrity sha512-pJ9xOlNWHiy9+FuFP09DEAFbAn4JskgRsVcc169w2xRBC3FRGuQEwjeIMMND9L2zc0iEhO/tGv4Zq+km+hxNpQ==
+"@babel/parser@^7.1.0", "@babel/parser@^7.12.10", "@babel/parser@^7.12.7", "@babel/parser@^7.14.7", "@babel/parser@^7.18.10", "@babel/parser@^7.20.5", "@babel/parser@^7.8.3":
+  version "7.20.5"
+  resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.5.tgz#7f3c7335fe417665d929f34ae5dceae4c04015e8"
+  integrity sha512-r27t/cy/m9uKLXQNWWebeCUHgnAZq0CpG1OwKRxzJMP1vpSU4bSIK2hq+/cp0bQxetkXx38n09rNu8jVkcK/zA==
 
 "@babel/plugin-proposal-async-generator-functions@^7.12.1":
-  version "7.19.1"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.19.1.tgz#34f6f5174b688529342288cd264f80c9ea9fb4a7"
-  integrity sha512-0yu8vNATgLy4ivqMNBIwb1HebCelqN7YX8SL3FDXORv/RqT0zEEWUCH4GH44JsSrvCu6GqnAdR5EBFAPeNBB4Q==
+  version "7.20.1"
+  resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.1.tgz#352f02baa5d69f4e7529bdac39aaa02d41146af9"
+  integrity sha512-Gh5rchzSwE4kC+o/6T8waD0WHEQIsDmjltY8WnWRXHUdH8axZhuH86Ov9M72YhJfDrZseQwuuWaaIT/TmePp3g==
   dependencies:
     "@babel/helper-environment-visitor" "^7.18.9"
     "@babel/helper-plugin-utils" "^7.19.0"
@@ -775,15 +775,15 @@
     "@babel/plugin-syntax-numeric-separator" "^7.10.4"
 
 "@babel/plugin-proposal-object-rest-spread@^7.12.1":
-  version "7.18.9"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.9.tgz#f9434f6beb2c8cae9dfcf97d2a5941bbbf9ad4e7"
-  integrity sha512-kDDHQ5rflIeY5xl69CEqGEZ0KY369ehsCIEbTGb4siHG5BE9sga/T0r0OUwyZNLMmZE79E1kbsqAjwFCW4ds6Q==
+  version "7.20.2"
+  resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.2.tgz#a556f59d555f06961df1e572bb5eca864c84022d"
+  integrity sha512-Ks6uej9WFK+fvIMesSqbAto5dD8Dz4VuuFvGJFKgIGSkJuRGcrwGECPA1fDgQK3/DbExBJpEkTeYeB8geIFCSQ==
   dependencies:
-    "@babel/compat-data" "^7.18.8"
-    "@babel/helper-compilation-targets" "^7.18.9"
-    "@babel/helper-plugin-utils" "^7.18.9"
+    "@babel/compat-data" "^7.20.1"
+    "@babel/helper-compilation-targets" "^7.20.0"
+    "@babel/helper-plugin-utils" "^7.20.2"
     "@babel/plugin-syntax-object-rest-spread" "^7.8.3"
-    "@babel/plugin-transform-parameters" "^7.18.8"
+    "@babel/plugin-transform-parameters" "^7.20.1"
 
 "@babel/plugin-proposal-optional-catch-binding@^7.12.1":
   version "7.18.6"
@@ -917,11 +917,11 @@
     "@babel/helper-plugin-utils" "^7.14.5"
 
 "@babel/plugin-syntax-typescript@^7.7.2":
-  version "7.18.6"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.18.6.tgz#1c09cd25795c7c2b8a4ba9ae49394576d4133285"
-  integrity sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA==
+  version "7.20.0"
+  resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz#4e9a0cfc769c85689b77a2e642d24e9f697fc8c7"
+  integrity sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==
   dependencies:
-    "@babel/helper-plugin-utils" "^7.18.6"
+    "@babel/helper-plugin-utils" "^7.19.0"
 
 "@babel/plugin-transform-arrow-functions@^7.12.1":
   version "7.18.6"
@@ -956,24 +956,24 @@
     "@babel/helper-plugin-utils" "^7.18.6"
 
 "@babel/plugin-transform-block-scoping@^7.12.11":
-  version "7.18.9"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.9.tgz#f9b7e018ac3f373c81452d6ada8bd5a18928926d"
-  integrity sha512-5sDIJRV1KtQVEbt/EIBwGy4T01uYIo4KRB3VUqzkhrAIOGx7AoctL9+Ux88btY0zXdDyPJ9mW+bg+v+XEkGmtw==
+  version "7.20.5"
+  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.5.tgz#401215f9dc13dc5262940e2e527c9536b3d7f237"
+  integrity sha512-WvpEIW9Cbj9ApF3yJCjIEEf1EiNJLtXagOrL5LNWEZOo3jv8pmPoYTSNJQvqej8OavVlgOoOPw6/htGZro6IkA==
   dependencies:
-    "@babel/helper-plugin-utils" "^7.18.9"
+    "@babel/helper-plugin-utils" "^7.20.2"
 
 "@babel/plugin-transform-classes@^7.12.1":
-  version "7.19.0"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.19.0.tgz#0e61ec257fba409c41372175e7c1e606dc79bb20"
-  integrity sha512-YfeEE9kCjqTS9IitkgfJuxjcEtLUHMqa8yUJ6zdz8vR7hKuo6mOy2C05P0F1tdMmDCeuyidKnlrw/iTppHcr2A==
+  version "7.20.2"
+  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.2.tgz#c0033cf1916ccf78202d04be4281d161f6709bb2"
+  integrity sha512-9rbPp0lCVVoagvtEyQKSo5L8oo0nQS/iif+lwlAz29MccX2642vWDlSZK+2T2buxbopotId2ld7zZAzRfz9j1g==
   dependencies:
     "@babel/helper-annotate-as-pure" "^7.18.6"
-    "@babel/helper-compilation-targets" "^7.19.0"
+    "@babel/helper-compilation-targets" "^7.20.0"
     "@babel/helper-environment-visitor" "^7.18.9"
     "@babel/helper-function-name" "^7.19.0"
     "@babel/helper-optimise-call-expression" "^7.18.6"
-    "@babel/helper-plugin-utils" "^7.19.0"
-    "@babel/helper-replace-supers" "^7.18.9"
+    "@babel/helper-plugin-utils" "^7.20.2"
+    "@babel/helper-replace-supers" "^7.19.1"
     "@babel/helper-split-export-declaration" "^7.18.6"
     globals "^11.1.0"
 
@@ -985,11 +985,11 @@
     "@babel/helper-plugin-utils" "^7.18.9"
 
 "@babel/plugin-transform-destructuring@^7.12.1":
-  version "7.18.13"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.13.tgz#9e03bc4a94475d62b7f4114938e6c5c33372cbf5"
-  integrity sha512-TodpQ29XekIsex2A+YJPj5ax2plkGa8YYY6mFjCohk/IG9IY42Rtuj1FuDeemfg2ipxIFLzPeA83SIBnlhSIow==
+  version "7.20.2"
+  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.2.tgz#c23741cfa44ddd35f5e53896e88c75331b8b2792"
+  integrity sha512-mENM+ZHrvEgxLTBXUiQ621rRXZes3KWUv6NdQlrnr1TkWVw+hUjQBZuP2X32qKlrlG2BzgR95gkuCRSkJl8vIw==
   dependencies:
-    "@babel/helper-plugin-utils" "^7.18.9"
+    "@babel/helper-plugin-utils" "^7.20.2"
 
 "@babel/plugin-transform-dotall-regex@^7.12.1", "@babel/plugin-transform-dotall-regex@^7.4.4":
   version "7.18.6"
@@ -1045,34 +1045,31 @@
     "@babel/helper-plugin-utils" "^7.18.6"
 
 "@babel/plugin-transform-modules-amd@^7.12.1":
-  version "7.18.6"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.6.tgz#8c91f8c5115d2202f277549848874027d7172d21"
-  integrity sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg==
+  version "7.19.6"
+  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.19.6.tgz#aca391801ae55d19c4d8d2ebfeaa33df5f2a2cbd"
+  integrity sha512-uG3od2mXvAtIFQIh0xrpLH6r5fpSQN04gIVovl+ODLdUMANokxQLZnPBHcjmv3GxRjnqwLuHvppjjcelqUFZvg==
   dependencies:
-    "@babel/helper-module-transforms" "^7.18.6"
-    "@babel/helper-plugin-utils" "^7.18.6"
-    babel-plugin-dynamic-import-node "^2.3.3"
+    "@babel/helper-module-transforms" "^7.19.6"
+    "@babel/helper-plugin-utils" "^7.19.0"
 
 "@babel/plugin-transform-modules-commonjs@^7.12.1":
-  version "7.18.6"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.6.tgz#afd243afba166cca69892e24a8fd8c9f2ca87883"
-  integrity sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q==
+  version "7.19.6"
+  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.19.6.tgz#25b32feef24df8038fc1ec56038917eacb0b730c"
+  integrity sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ==
   dependencies:
-    "@babel/helper-module-transforms" "^7.18.6"
-    "@babel/helper-plugin-utils" "^7.18.6"
-    "@babel/helper-simple-access" "^7.18.6"
-    babel-plugin-dynamic-import-node "^2.3.3"
+    "@babel/helper-module-transforms" "^7.19.6"
+    "@babel/helper-plugin-utils" "^7.19.0"
+    "@babel/helper-simple-access" "^7.19.4"
 
 "@babel/plugin-transform-modules-systemjs@^7.12.1":
-  version "7.19.0"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.0.tgz#5f20b471284430f02d9c5059d9b9a16d4b085a1f"
-  integrity sha512-x9aiR0WXAWmOWsqcsnrzGR+ieaTMVyGyffPVA7F8cXAGt/UxefYv6uSHZLkAFChN5M5Iy1+wjE+xJuPt22H39A==
+  version "7.19.6"
+  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.6.tgz#59e2a84064b5736a4471b1aa7b13d4431d327e0d"
+  integrity sha512-fqGLBepcc3kErfR9R3DnVpURmckXP7gj7bAlrTQyBxrigFqszZCkFkcoxzCp2v32XmwXLvbw+8Yq9/b+QqksjQ==
   dependencies:
     "@babel/helper-hoist-variables" "^7.18.6"
-    "@babel/helper-module-transforms" "^7.19.0"
+    "@babel/helper-module-transforms" "^7.19.6"
     "@babel/helper-plugin-utils" "^7.19.0"
-    "@babel/helper-validator-identifier" "^7.18.6"
-    babel-plugin-dynamic-import-node "^2.3.3"
+    "@babel/helper-validator-identifier" "^7.19.1"
 
 "@babel/plugin-transform-modules-umd@^7.12.1":
   version "7.18.6"
@@ -1083,12 +1080,12 @@
     "@babel/helper-plugin-utils" "^7.18.6"
 
 "@babel/plugin-transform-named-capturing-groups-regex@^7.12.1":
-  version "7.19.1"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.1.tgz#ec7455bab6cd8fb05c525a94876f435a48128888"
-  integrity sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw==
+  version "7.20.5"
+  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz#626298dd62ea51d452c3be58b285d23195ba69a8"
+  integrity sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==
   dependencies:
-    "@babel/helper-create-regexp-features-plugin" "^7.19.0"
-    "@babel/helper-plugin-utils" "^7.19.0"
+    "@babel/helper-create-regexp-features-plugin" "^7.20.5"
+    "@babel/helper-plugin-utils" "^7.20.2"
 
 "@babel/plugin-transform-new-target@^7.12.1":
   version "7.18.6"
@@ -1105,12 +1102,12 @@
     "@babel/helper-plugin-utils" "^7.18.6"
     "@babel/helper-replace-supers" "^7.18.6"
 
-"@babel/plugin-transform-parameters@^7.12.1", "@babel/plugin-transform-parameters@^7.18.8":
-  version "7.18.8"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz#ee9f1a0ce6d78af58d0956a9378ea3427cccb48a"
-  integrity sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg==
+"@babel/plugin-transform-parameters@^7.12.1", "@babel/plugin-transform-parameters@^7.20.1":
+  version "7.20.5"
+  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.5.tgz#f8f9186c681d10c3de7620c916156d893c8a019e"
+  integrity sha512-h7plkOmcndIUWXZFLgpbrh2+fXAi47zcUX7IrOQuZdLD0I0KvjJ6cvo3BEcAOsDOcZhVKGJqv07mkSqK0y2isQ==
   dependencies:
-    "@babel/helper-plugin-utils" "^7.18.6"
+    "@babel/helper-plugin-utils" "^7.20.2"
 
 "@babel/plugin-transform-property-literals@^7.12.1":
   version "7.18.6"
@@ -1120,12 +1117,12 @@
     "@babel/helper-plugin-utils" "^7.18.6"
 
 "@babel/plugin-transform-regenerator@^7.12.1":
-  version "7.18.6"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz#585c66cb84d4b4bf72519a34cfce761b8676ca73"
-  integrity sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==
+  version "7.20.5"
+  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz#57cda588c7ffb7f4f8483cc83bdcea02a907f04d"
+  integrity sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==
   dependencies:
-    "@babel/helper-plugin-utils" "^7.18.6"
-    regenerator-transform "^0.15.0"
+    "@babel/helper-plugin-utils" "^7.20.2"
+    regenerator-transform "^0.15.1"
 
 "@babel/plugin-transform-reserved-words@^7.12.1":
   version "7.18.6"
@@ -1285,11 +1282,11 @@
     regenerator-runtime "^0.13.4"
 
 "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4":
-  version "7.19.0"
-  resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.19.0.tgz#22b11c037b094d27a8a2504ea4dcff00f50e2259"
-  integrity sha512-eR8Lo9hnDS7tqkO7NsV+mKvCmv5boaXFSZ70DnfhcgiEne8hv9oCEd36Klw74EtizEqLsy4YnW8UWwpBVolHZA==
+  version "7.20.6"
+  resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.20.6.tgz#facf4879bfed9b5326326273a64220f099b0fce3"
+  integrity sha512-Q+8MqP7TiHMWzSfwiJwXCjyf4GYA4Dgw3emg/7xmwsdLJOZUp+nMqcOwOzzYheuM1rhDu8FSj2l0aoMygEuXuA==
   dependencies:
-    regenerator-runtime "^0.13.4"
+    regenerator-runtime "^0.13.11"
 
 "@babel/template@7.12.7":
   version "7.12.7"
@@ -1309,28 +1306,28 @@
     "@babel/parser" "^7.18.10"
     "@babel/types" "^7.18.10"
 
-"@babel/traverse@^7.12.10", "@babel/traverse@^7.19.0", "@babel/traverse@^7.19.1", "@babel/traverse@^7.19.3", "@babel/traverse@^7.7.2", "@babel/traverse@^7.8.3":
-  version "7.19.3"
-  resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.19.3.tgz#3a3c5348d4988ba60884e8494b0592b2f15a04b4"
-  integrity sha512-qh5yf6149zhq2sgIXmwjnsvmnNQC2iw70UFjp4olxucKrWd/dvlUsBI88VSLUsnMNF7/vnOiA+nk1+yLoCqROQ==
+"@babel/traverse@^7.12.10", "@babel/traverse@^7.19.1", "@babel/traverse@^7.20.1", "@babel/traverse@^7.20.5", "@babel/traverse@^7.7.2", "@babel/traverse@^7.8.3":
+  version "7.20.5"
+  resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.20.5.tgz#78eb244bea8270fdda1ef9af22a5d5e5b7e57133"
+  integrity sha512-WM5ZNN3JITQIq9tFZaw1ojLU3WgWdtkxnhM1AegMS+PvHjkM5IXjmYEGY7yukz5XS4sJyEf2VzWjI8uAavhxBQ==
   dependencies:
     "@babel/code-frame" "^7.18.6"
-    "@babel/generator" "^7.19.3"
+    "@babel/generator" "^7.20.5"
     "@babel/helper-environment-visitor" "^7.18.9"
     "@babel/helper-function-name" "^7.19.0"
     "@babel/helper-hoist-variables" "^7.18.6"
     "@babel/helper-split-export-declaration" "^7.18.6"
-    "@babel/parser" "^7.19.3"
-    "@babel/types" "^7.19.3"
+    "@babel/parser" "^7.20.5"
+    "@babel/types" "^7.20.5"
     debug "^4.1.0"
     globals "^11.1.0"
 
-"@babel/types@^7.0.0", "@babel/types@^7.12.10", "@babel/types@^7.12.11", "@babel/types@^7.12.7", "@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.19.0", "@babel/types@^7.19.3", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.8.3", "@babel/types@^7.8.6":
-  version "7.19.3"
-  resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.19.3.tgz#fc420e6bbe54880bce6779ffaf315f5e43ec9624"
-  integrity sha512-hGCaQzIY22DJlDh9CH7NOxgKkFjBk0Cw9xDO1Xmh2151ti7wiGfQ3LauXzL4HP1fmFlTX6XjpRETTpUcv7wQLw==
+"@babel/types@^7.0.0", "@babel/types@^7.12.10", "@babel/types@^7.12.11", "@babel/types@^7.12.7", "@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.19.0", "@babel/types@^7.20.0", "@babel/types@^7.20.2", "@babel/types@^7.20.5", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.8.3", "@babel/types@^7.8.6":
+  version "7.20.5"
+  resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.20.5.tgz#e206ae370b5393d94dfd1d04cd687cace53efa84"
+  integrity sha512-c9fst/h2/dcF7H+MJKZ2T0KjEQ8hY/BNnDk/H3XY8C4Aw/eWQXWn/lWntHF9ooUBnGmEvbfGrTgLWc+um0YDUg==
   dependencies:
-    "@babel/helper-string-parser" "^7.18.10"
+    "@babel/helper-string-parser" "^7.19.4"
     "@babel/helper-validator-identifier" "^7.19.1"
     to-fast-properties "^2.0.0"
 
@@ -1392,14 +1389,14 @@
   dependencies:
     ckeditor5 "^28.0.0"
 
-"@ckeditor/ckeditor5-core@>=23.0.0", "@ckeditor/ckeditor5-core@^35.1.0":
-  version "35.1.0"
-  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-core/-/ckeditor5-core-35.1.0.tgz#f6b0906b98a260324d45e2366ca0377cdfdaf5ae"
-  integrity sha512-yqPP7tEOT/rsxtDf6qvL5Yszmf2MZJJDK426SQryJiKpAEysX+337FEeLpK1silIL+UMejh5Y2/oNr4L+wTRXw==
+"@ckeditor/ckeditor5-core@>=23.0.0", "@ckeditor/ckeditor5-core@^35.3.2":
+  version "35.3.2"
+  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-core/-/ckeditor5-core-35.3.2.tgz#0c8efda8f3f998fa5170bedc16b346b516b856e8"
+  integrity sha512-OnrHf9i0D79DdIMIE98A9x0y4XCxGItcOXcTHd9s+jWFMtiAvQ37vDGrqgDlHW646RBBF0GAmxrmP4F9HzEeMA==
   dependencies:
-    "@ckeditor/ckeditor5-engine" "^35.1.0"
-    "@ckeditor/ckeditor5-ui" "^35.1.0"
-    "@ckeditor/ckeditor5-utils" "^35.1.0"
+    "@ckeditor/ckeditor5-engine" "^35.3.2"
+    "@ckeditor/ckeditor5-ui" "^35.3.2"
+    "@ckeditor/ckeditor5-utils" "^35.3.2"
     lodash-es "^4.17.15"
 
 "@ckeditor/ckeditor5-core@^12.3.0":
@@ -1436,12 +1433,12 @@
     ckeditor5 "^28.0.0"
     lodash-es "^4.17.15"
 
-"@ckeditor/ckeditor5-engine@>=23.0.0", "@ckeditor/ckeditor5-engine@^35.1.0":
-  version "35.1.0"
-  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-engine/-/ckeditor5-engine-35.1.0.tgz#82de6316e9b0c45b40c6928497313597a142a3fa"
-  integrity sha512-1xyzPkN2N0xzdeVpT53Eqj4Awfbwl6lN3JIpgntBmCOdiZejRZipdPFkbS0ZkhG14aLAV1blbk/ZMJSsOmaTWg==
+"@ckeditor/ckeditor5-engine@>=23.0.0", "@ckeditor/ckeditor5-engine@^35.3.2":
+  version "35.3.2"
+  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-engine/-/ckeditor5-engine-35.3.2.tgz#1f3d45a71670b0b85087d04d17e72f88bcd6761f"
+  integrity sha512-/H20Y6VlYxRyNiorRXF3VtbykQqgo+RbhMfzRQasC9TdrFyRaC3HW67Kq5bjeKoeoZweEM6Dziy8pnrMZlhecg==
   dependencies:
-    "@ckeditor/ckeditor5-utils" "^35.1.0"
+    "@ckeditor/ckeditor5-utils" "^35.3.2"
     lodash-es "^4.17.15"
 
 "@ckeditor/ckeditor5-engine@^14.0.0":
@@ -1469,14 +1466,13 @@
     "@ckeditor/ckeditor5-engine" "^28.0.0"
     "@ckeditor/ckeditor5-utils" "^28.0.0"
 
-"@ckeditor/ckeditor5-enter@^35.1.0":
-  version "35.1.0"
-  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-enter/-/ckeditor5-enter-35.1.0.tgz#4e61b67c446da5512403656ccaab086b973e1ecd"
-  integrity sha512-H+6vscBZqzU/Q4/N8so/UJzH2tiGN5cDa/5qbXGr/WwyWDez2Nl2y9bAl7ASB4vhzqr2/1WJ4ckBMGke5zR6pg==
+"@ckeditor/ckeditor5-enter@^35.3.2":
+  version "35.3.2"
+  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-enter/-/ckeditor5-enter-35.3.2.tgz#0109817aca29d6c18a180bd663240985e0ac2f4a"
+  integrity sha512-9bm4TbyIUu880FFVkNRUqSOYOs5R37CIB8BQZqV2T7cOI7L4RT0+hyXu+Zmg844WSD/+GtAZ+y0FlSi50Ze6oA==
   dependencies:
-    "@ckeditor/ckeditor5-core" "^35.1.0"
-    "@ckeditor/ckeditor5-engine" "^35.1.0"
-    "@ckeditor/ckeditor5-utils" "^35.1.0"
+    "@ckeditor/ckeditor5-core" "^35.3.2"
+    "@ckeditor/ckeditor5-engine" "^35.3.2"
 
 "@ckeditor/ckeditor5-essentials@^28.0.0":
   version "28.0.0"
@@ -1583,23 +1579,23 @@
     "@ckeditor/ckeditor5-utils" "^28.0.0"
     lodash-es "^4.17.15"
 
-"@ckeditor/ckeditor5-typing@^35.1.0":
-  version "35.1.0"
-  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-typing/-/ckeditor5-typing-35.1.0.tgz#f3d5f83e6362fb9f74ab7e8c5e3cea5f507a6632"
-  integrity sha512-GiOK8MlsfsVRze4+qbNnT3t4FRvnFge6F+l/knxpM07DIf8qdtf1xVvFRL2OfBBGXbBpcQ6W4aqZhWtSUrPJ5Q==
+"@ckeditor/ckeditor5-typing@^35.3.2":
+  version "35.3.2"
+  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-typing/-/ckeditor5-typing-35.3.2.tgz#6735a9ac62caa671fde33d1cfc4ba90f23ca6da2"
+  integrity sha512-cu5gSAKGHAUdKVA1p8NBppoBuQSbDFdTaBFE51ske+RQhFpMBQVyHzgxfsXb/Ui7f3fDw91eJLg8MtrChvDPsA==
   dependencies:
-    "@ckeditor/ckeditor5-core" "^35.1.0"
-    "@ckeditor/ckeditor5-engine" "^35.1.0"
-    "@ckeditor/ckeditor5-utils" "^35.1.0"
+    "@ckeditor/ckeditor5-core" "^35.3.2"
+    "@ckeditor/ckeditor5-engine" "^35.3.2"
+    "@ckeditor/ckeditor5-utils" "^35.3.2"
     lodash-es "^4.17.15"
 
-"@ckeditor/ckeditor5-ui@>=23.0.0", "@ckeditor/ckeditor5-ui@^35.1.0":
-  version "35.1.0"
-  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-ui/-/ckeditor5-ui-35.1.0.tgz#fed659a65c5b9383f0decd8b13c1f3c4de53514d"
-  integrity sha512-nHi8Y9VBXhtva166PxvtOir+PKigmvpqzq8NPZwwZBsi+REPNy9gg6tWb9UCkwQXpGR1LOX4nEhKa3e1LKJbig==
+"@ckeditor/ckeditor5-ui@>=23.0.0", "@ckeditor/ckeditor5-ui@^35.3.2":
+  version "35.3.2"
+  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-ui/-/ckeditor5-ui-35.3.2.tgz#bf5d84541066064e7a2c9164bc8f85e04b395214"
+  integrity sha512-0NlDVRsC9H9dx9I54reolXp2O/4a31aV7vhubiIzVVNiHkOxzfUSNnzhOzeMP7pej6ZYt/jTqCtv0qy+35ByOQ==
   dependencies:
-    "@ckeditor/ckeditor5-core" "^35.1.0"
-    "@ckeditor/ckeditor5-utils" "^35.1.0"
+    "@ckeditor/ckeditor5-core" "^35.3.2"
+    "@ckeditor/ckeditor5-utils" "^35.3.2"
     lodash-es "^4.17.15"
 
 "@ckeditor/ckeditor5-ui@^14.0.0":
@@ -1653,24 +1649,24 @@
   dependencies:
     lodash-es "^4.17.15"
 
-"@ckeditor/ckeditor5-utils@^35.1.0":
-  version "35.1.0"
-  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-utils/-/ckeditor5-utils-35.1.0.tgz#5c56e701de5a38f317d654dc7871095a8aebbe05"
-  integrity sha512-a13oY43cHzS0uwLB/m6JKXhNNWftcNsUrI2/+UGsUElmFEnJ7aG24iHkdmh62kHY/X5SxowW9hBQR+yb6sKC4w==
+"@ckeditor/ckeditor5-utils@^35.3.2":
+  version "35.3.2"
+  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-utils/-/ckeditor5-utils-35.3.2.tgz#2366c9bbb22a082c792371d79dd9821247812b01"
+  integrity sha512-iw2361Ek9K8Dqu8JI60DcijSsDzHMZVCNiwxBCxDEywmEKod5hENwnwZvQM+C0CWBmshQCAXhy/dJ1YWTvGrsg==
   dependencies:
     lodash-es "^4.17.15"
 
 "@ckeditor/ckeditor5-widget@>=23.0.0":
-  version "35.1.0"
-  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-widget/-/ckeditor5-widget-35.1.0.tgz#ecf12655ef91e64c148bac50879cc7ae2fba3160"
-  integrity sha512-Gi7zWRmcxkGWjx6pbn2HUqUUftVzCMfRX22SmOQOl9GKQmJAQaKtdM/sBnv0kY5DLsWLrI9HAED9TJhT0zuN9w==
-  dependencies:
-    "@ckeditor/ckeditor5-core" "^35.1.0"
-    "@ckeditor/ckeditor5-engine" "^35.1.0"
-    "@ckeditor/ckeditor5-enter" "^35.1.0"
-    "@ckeditor/ckeditor5-typing" "^35.1.0"
-    "@ckeditor/ckeditor5-ui" "^35.1.0"
-    "@ckeditor/ckeditor5-utils" "^35.1.0"
+  version "35.3.2"
+  resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-widget/-/ckeditor5-widget-35.3.2.tgz#c6dc031a2ae506c5ab5eb47119d5c515f56ae4bb"
+  integrity sha512-68T4X6hx9wKC8W5FZ1fcREFQu3O5GDRECZjSZ7xpPZU42ahzeolRVmGFeeRVl2ZgMMVp1YdE2tU4rXFQ8Uwk7Q==
+  dependencies:
+    "@ckeditor/ckeditor5-core" "^35.3.2"
+    "@ckeditor/ckeditor5-engine" "^35.3.2"
+    "@ckeditor/ckeditor5-enter" "^35.3.2"
+    "@ckeditor/ckeditor5-typing" "^35.3.2"
+    "@ckeditor/ckeditor5-ui" "^35.3.2"
+    "@ckeditor/ckeditor5-utils" "^35.3.2"
     lodash-es "^4.17.15"
 
 "@ckeditor/ckeditor5-widget@^28.0.0":
@@ -1919,7 +1915,7 @@
     "@jridgewell/sourcemap-codec" "^1.4.10"
     "@jridgewell/trace-mapping" "^0.3.9"
 
-"@jridgewell/resolve-uri@^3.0.3":
+"@jridgewell/resolve-uri@3.1.0":
   version "3.1.0"
   resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78"
   integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==
@@ -1937,18 +1933,18 @@
     "@jridgewell/gen-mapping" "^0.3.0"
     "@jridgewell/trace-mapping" "^0.3.9"
 
-"@jridgewell/sourcemap-codec@^1.4.10":
+"@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10":
   version "1.4.14"
   resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24"
   integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==
 
 "@jridgewell/trace-mapping@^0.3.9":
-  version "0.3.15"
-  resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz#aba35c48a38d3fd84b37e66c9c0423f9744f9774"
-  integrity sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==
+  version "0.3.17"
+  resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz#793041277af9073b0951a7fe0f0d8c4c98c36985"
+  integrity sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==
   dependencies:
-    "@jridgewell/resolve-uri" "^3.0.3"
-    "@jridgewell/sourcemap-codec" "^1.4.10"
+    "@jridgewell/resolve-uri" "3.1.0"
+    "@jridgewell/sourcemap-codec" "1.4.14"
 
 "@jsdevtools/coverage-istanbul-loader@3.0.5":
   version "3.0.5"
@@ -2068,12 +2064,12 @@
     node-gyp "^7.1.0"
     read-package-json-fast "^2.0.1"
 
-"@project-sunbird/chatbot-client-v8@2.0.3":
-  version "2.0.3"
-  resolved "https://registry.yarnpkg.com/@project-sunbird/chatbot-client-v8/-/chatbot-client-v8-2.0.3.tgz#bb6b2dae607599a9a5e7cbd6383254b2b48a0b8d"
-  integrity sha512-UBUpK7D1y1J+ihBwXL7LCdlW6BfsVdlyH+KeJHYnSLGyYTF6j0K9z8rBSYcJPgptpnDcW3393WRD2UNJsOvPAw==
+"@project-sunbird/chatbot-client@3.0.3":
+  version "3.0.3"
+  resolved "https://registry.yarnpkg.com/@project-sunbird/chatbot-client/-/chatbot-client-3.0.3.tgz#da74b4ce70305e855ec0affac4ce706624e732a1"
+  integrity sha512-zq9MwsCJiGULXb9sjRRqx21upMaGz1ly6CHj3ZqCEV8DaTAfj9UHj09z6BuBI+W+rq6lzh6Ee8Evx3M3A1aB+g==
   dependencies:
-    tslib "^1.9.0"
+    tslib "^2.0.0"
 
 "@project-sunbird/ckeditor-build-classic@4.1.3":
   version "4.1.3"
@@ -2123,19 +2119,21 @@
     reflect-metadata "^0.1.13"
     whatwg-fetch "^3.1.0"
 
-"@project-sunbird/common-consumption-v9@^4.10.3":
-  version "4.10.3"
-  resolved "https://registry.yarnpkg.com/@project-sunbird/common-consumption-v9/-/common-consumption-v9-4.10.3.tgz#a2e89a22ee7c9dff157c10f1f3e57ba95d1dd0f0"
-  integrity sha512-gnm12hGha7N4KBlPE+Zg5buWXpF9LnS8/D1IAk/iAlO3POcpA7zyhmzwbE5UfO2krZUyDfhz6MN5Qky57w/qpA==
+"@project-sunbird/common-consumption@4.12.0":
+  version "4.12.0"
+  resolved "https://registry.yarnpkg.com/@project-sunbird/common-consumption/-/common-consumption-4.12.0.tgz#ef4bdf7c77445b7b0d3b46cf6d44c49d68d061ec"
+  integrity sha512-ijX69lPrG4bIV9Dprzq/mFYnTXvqLwcyTG212tshXyeTMxiwCrJ314jRwjMD/jOnV5tyTptw7s0ogDlB1M8vJA==
+  dependencies:
+    tslib "^2.0.0"
 
-"@project-sunbird/common-form-elements-v9@5.0.1":
-  version "5.0.1"
-  resolved "https://registry.yarnpkg.com/@project-sunbird/common-form-elements-v9/-/common-form-elements-v9-5.0.1.tgz#2ca2e169c124b16c825444e91a99ec01dc100bc8"
-  integrity sha512-F1mpC5awPvzb3il4Cmt8PiOAvro+J8dmOk8Hz0AU0yqEI48JG+keosmonkvML3HeYUK5zfQasGwdcezE78k8CQ==
+"@project-sunbird/common-form-elements@5.1.1":
+  version "5.1.1"
+  resolved "https://registry.yarnpkg.com/@project-sunbird/common-form-elements/-/common-form-elements-5.1.1.tgz#4fff567e7e9f6d8bf3ba4378ef55a9e18c2549db"
+  integrity sha512-RiryQoA+PZGLfALAgAY1Ye+v1OgHrpWUNaO9XTPpvZcVu9QyWjMNfEFbWHe9K+8NkYA6twQv6J6OZxpdKsT46Q==
   dependencies:
     immutable "^4.0.0-rc.12"
     moment "^2.29.1"
-    tslib "^1.10.0"
+    tslib "^2.0.0"
 
 "@project-sunbird/discussions-ui-v8@2.6.0-beta.2":
   version "2.6.0-beta.2"
@@ -2163,15 +2161,22 @@
     ngx-daterangepicker-material "^4.0.1"
     tslib "^1.10.0"
 
-"@project-sunbird/sb-styles@0.0.8":
-  version "0.0.8"
-  resolved "https://registry.yarnpkg.com/@project-sunbird/sb-styles/-/sb-styles-0.0.8.tgz#66c11fc6cdcf2761680b8ccd76af929a5a0226a7"
-  integrity sha512-CU7lkBEg7J3b9urACPY5jf8GJa6ccyCLETncvssXUO7Kco7uhMvlUXr3HHc5mS+Zw1G3ZtcCN8fp2XszukNA2A==
+"@project-sunbird/sb-notification@5.0.7":
+  version "5.0.7"
+  resolved "https://registry.yarnpkg.com/@project-sunbird/sb-notification/-/sb-notification-5.0.7.tgz#9ba99e54d64f91e1228f47f72cbecd28908fa422"
+  integrity sha512-zwIDqe+jfgHwoZ3P1SuaYV6rNPH6OWeQVxJzV/lrVmH2N2NxZATonkz5v519/8SagpEX/BFPtM8WfeZDqX9Csw==
+  dependencies:
+    tslib "^2.0.0"
 
-"@project-sunbird/sb-themes@0.0.80":
-  version "0.0.80"
-  resolved "https://registry.yarnpkg.com/@project-sunbird/sb-themes/-/sb-themes-0.0.80.tgz#3f6107fedc0d72088d3376b06ba3556442f471d1"
-  integrity sha512-saaAgbyO8/2BiB3KN+rOadCZB7CX0b1OJIwJzF/RiTY4opeDeH2j0Exn3/J24kCMmA5uoQElpvVl0Kgx6ZnQJQ==
+"@project-sunbird/sb-styles@0.0.10":
+  version "0.0.10"
+  resolved "https://registry.yarnpkg.com/@project-sunbird/sb-styles/-/sb-styles-0.0.10.tgz#45add8f8917e300dccadb893167703e1c2729290"
+  integrity sha512-JEyHbYmSlX887deJ7gsNHxNSUwDR7B6sVHRQR00bQ05UywtwDoBrSgBof0kNcYAE+iAyCYUyy2slHm5JeXmltQ==
+
+"@project-sunbird/sb-themes@0.0.85":
+  version "0.0.85"
+  resolved "https://registry.yarnpkg.com/@project-sunbird/sb-themes/-/sb-themes-0.0.85.tgz#9d975aaf39d23100127faf37f2bdef33c0a17c0f"
+  integrity sha512-wHPJwPn9TfWJ/lSb+loRDA6mEdD4BM5T+D14v/VF0OTkKC7cdVcjZwl5jTtg+YbpyWYCTGns6dMgIC3mCd5dfA==
 
 "@project-sunbird/sunbird-collection-editor-v9@5.0.14":
   version "5.0.14"
@@ -2334,24 +2339,24 @@
     semver "7.1.3"
     semver-intersect "1.4.0"
 
-"@shikshalokam/sl-questionnaire@1.5.0":
-  version "1.5.0"
-  resolved "https://registry.yarnpkg.com/@shikshalokam/sl-questionnaire/-/sl-questionnaire-1.5.0.tgz#e46571cf744aa2972e35accecdd611bafb7a8bac"
-  integrity sha512-eoSRYWDS4oxprWZUIJ/zqyElPvAm+3wz631Da1oH40ploKSJFua0ZonSts48BnF6vOuIwwiOgAzrzGuiNof2Yw==
+"@shikshalokam/sl-questionnaire@2.1.0":
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/@shikshalokam/sl-questionnaire/-/sl-questionnaire-2.1.0.tgz#07683cfc176d820ab6f8c92fbf0e8e0621c860ba"
+  integrity sha512-Y4R0FT5YYS0Zrhr6h0f6vlWSAqkuZuAUp2ptPtZpf2iCo4ELxPBspI3wuIoItQcg6JB8QyWPQg34DbCrmAgcnw==
   dependencies:
     "@angular-slider/ngx-slider" "^2.0.3"
     tslib "^2.0.0"
 
-"@shikshalokam/sl-reports-library@^1.0.7":
-  version "1.0.7"
-  resolved "https://registry.yarnpkg.com/@shikshalokam/sl-reports-library/-/sl-reports-library-1.0.7.tgz#8164cd522759be04dd66818f57ddd6f6ed972a5a"
-  integrity sha512-wyeUkXPaQWuGpe11VsEC5MS/3n9cuxbF6bVpcrG1OhnNKS6mFXCY4GsPsLnMyESjtvD+XRG0/ovmmJTd/9yvfg==
+"@shikshalokam/sl-reports-library@2.0.0":
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/@shikshalokam/sl-reports-library/-/sl-reports-library-2.0.0.tgz#67dd3e4f0fe6ae5572741cfa05611ef7bd854bd9"
+  integrity sha512-N8LSxJsxoJBvJ1EMcx/ejumSsAA3Qt2X9+aeOr21hI2DMzQx5HClTcoEq1l4JxB5XlcQIr/IfWNp2JZxsui8SA==
   dependencies:
     chart.js "^2.9.4"
     chartjs-plugin-datalabels "^0.7.0"
     chartjs-plugin-stacked100 "^0.7.1"
     ng2-charts "^2.4.2"
-    tslib "^1.10.0"
+    tslib "^2.0.0"
 
 "@sideway/address@^4.1.0":
   version "4.1.4"
@@ -2371,9 +2376,9 @@
   integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==
 
 "@sinonjs/commons@^1.7.0":
-  version "1.8.3"
-  resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.3.tgz#3802ddd21a50a949b6721ddd72da36e67e7f1b2d"
-  integrity sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==
+  version "1.8.5"
+  resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.5.tgz#e280c94c95f206dcfd5aca00a43f2156b758c764"
+  integrity sha512-rTpCA0wG1wUxglBSFdMMY0oTrKYvgf4fNgv/sXbfCVAdf+FnPBdKJR/7XbpTCwbCrvCbdPYnlWaUUYz4V2fPDA==
   dependencies:
     type-detect "4.0.8"
 
@@ -2402,9 +2407,9 @@
   integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==
 
 "@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14":
-  version "7.1.19"
-  resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.19.tgz#7b497495b7d1b4812bdb9d02804d0576f43ee460"
-  integrity sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==
+  version "7.1.20"
+  resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.20.tgz#e168cdd612c92a2d335029ed62ac94c95b362359"
+  integrity sha512-PVb6Bg2QuscZ30FvOU7z4guG6c926D9YRvOxEaelzndpMsvP+YM74Q/dAFASpg2l6+XLalxSGxcq/lrgYWZtyQ==
   dependencies:
     "@babel/parser" "^7.1.0"
     "@babel/types" "^7.0.0"
@@ -2537,9 +2542,9 @@
     localforage "*"
 
 "@types/lodash@^4.14.104":
-  version "4.14.186"
-  resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.186.tgz#862e5514dd7bd66ada6c70ee5fce844b06c8ee97"
-  integrity sha512-eHcVlLXP0c2FlMPm56ITode2AgLMSa6aJ05JTTbYbI+7EMkCEE5qk2E41d5g2lCVTqRe0GnnRFurmlCsDODrPw==
+  version "4.14.190"
+  resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.190.tgz#d8e99647af141c63902d0ca53cf2b34d2df33545"
+  integrity sha512-5iJ3FBJBvQHQ8sFhEhJfjUP+G+LalhavTkYyrAYqz5MEJG+erSv0k9KJLb6q7++17Lafk1scaTIFXcMJlwK8Mw==
 
 "@types/minimatch@*":
   version "5.1.2"
@@ -2547,9 +2552,9 @@
   integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==
 
 "@types/node@*":
-  version "18.8.0"
-  resolved "https://registry.yarnpkg.com/@types/node/-/node-18.8.0.tgz#b8ee8d83a99470c0661bd899417fcd77060682fe"
-  integrity sha512-u+h43R6U8xXDt2vzUaVP3VwjjLyOJk6uEciZS8OSyziUQGOwmk+l+4drxcsDboHXwyTaqS1INebghmWMRxq3LA==
+  version "18.11.9"
+  resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.9.tgz#02d013de7058cea16d36168ef2fc653464cfbad4"
+  integrity sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==
 
 "@types/node@^12.20.15":
   version "12.20.55"
@@ -2842,9 +2847,9 @@
     uuid "^8.3.2"
 
 "@xmldom/xmldom@^0.7.2":
-  version "0.7.5"
-  resolved "https://registry.yarnpkg.com/@xmldom/xmldom/-/xmldom-0.7.5.tgz#09fa51e356d07d0be200642b0e4f91d8e6dd408d"
-  integrity sha512-V3BIhmY36fXZ1OtVcI9W+FxQqxVLsPKcNjWigIaa81dLC9IolJl5Mt4Cvhmr0flUnjSpTdrbMTSbXqYqV5dT6A==
+  version "0.7.9"
+  resolved "https://registry.yarnpkg.com/@xmldom/xmldom/-/xmldom-0.7.9.tgz#7f9278a50e737920e21b297b8a35286e9942c056"
+  integrity sha512-yceMpm/xd4W2a85iqZyO09gTnHvXF6pyiWjD2jcOJs7hRoZtNNOO1eJlhHj1ixA+xip2hOyGn+LgcvLCMo5zXA==
 
 "@xtuc/ieee754@^1.2.0":
   version "1.2.0"
@@ -2900,9 +2905,9 @@ accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8:
     negotiator "0.6.3"
 
 ace-builds@^1.4.2:
-  version "1.11.2"
-  resolved "https://registry.yarnpkg.com/ace-builds/-/ace-builds-1.11.2.tgz#93fd7b7770909f3a48a23d71bd212d1b77baaaf5"
-  integrity sha512-1VNeUF56b6gkaeeWJXMBBuz5n0ceDchjUwwVmTKpNM/N3YRrUEpykGEEsg7Y1PKP7IRyqtXfAu6VJDg7OZaLfA==
+  version "1.13.1"
+  resolved "https://registry.yarnpkg.com/ace-builds/-/ace-builds-1.13.1.tgz#8afa31a79bea3bb83fbbdf99c4176396a271ceca"
+  integrity sha512-HvkZv/AhDRSA4k5Co5Dg8dWOTfID0AQ7Sa5cU6V82fz/XfCA0A/icC3sdBoh9yg0WQoJqbFrRYc+ogr/971Vww==
 
 acorn-globals@^1.0.4:
   version "1.0.9"
@@ -2940,9 +2945,9 @@ acorn@^7.1.1:
   integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
 
 acorn@^8.2.4, acorn@^8.5.0:
-  version "8.8.0"
-  resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.0.tgz#88c0187620435c7f6015803f5539dae05a9dbea8"
-  integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==
+  version "8.8.1"
+  resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.1.tgz#0a3f9cbecc4ec3bea6f0a80b66ae8dd2da250b73"
+  integrity sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==
 
 adjust-sourcemap-loader@^4.0.0:
   version "4.0.0"
@@ -3197,9 +3202,9 @@ anymatch@^2.0.0:
     normalize-path "^2.1.1"
 
 anymatch@^3.0.3, anymatch@~3.1.2:
-  version "3.1.2"
-  resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716"
-  integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==
+  version "3.1.3"
+  resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e"
+  integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==
   dependencies:
     normalize-path "^3.0.0"
     picomatch "^2.0.4"
@@ -3384,14 +3389,14 @@ array-unique@^0.3.2:
   resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
   integrity sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==
 
-array.prototype.reduce@^1.0.4:
-  version "1.0.4"
-  resolved "https://registry.yarnpkg.com/array.prototype.reduce/-/array.prototype.reduce-1.0.4.tgz#8167e80089f78bff70a99e20bd4201d4663b0a6f"
-  integrity sha512-WnM+AjG/DvLRLo4DDl+r+SvCzYtD2Jd9oeBYMcEaI7t3fFrHY9M53/wdLcTvmZNQ70IU6Htj0emFkZ5TS+lrdw==
+array.prototype.reduce@^1.0.5:
+  version "1.0.5"
+  resolved "https://registry.yarnpkg.com/array.prototype.reduce/-/array.prototype.reduce-1.0.5.tgz#6b20b0daa9d9734dd6bc7ea66b5bbce395471eac"
+  integrity sha512-kDdugMl7id9COE8R7MHF5jWk7Dqt/fs4Pv+JXoICnYwqpjjjbUurz6w5fT5IG6brLdJhv6/VoHB0H7oyIBXd+Q==
   dependencies:
     call-bind "^1.0.2"
-    define-properties "^1.1.3"
-    es-abstract "^1.19.2"
+    define-properties "^1.1.4"
+    es-abstract "^1.20.4"
     es-array-method-boxes-properly "^1.0.0"
     is-string "^1.0.7"
 
@@ -3547,13 +3552,6 @@ babel-loader@8.2.2:
     make-dir "^3.1.0"
     schema-utils "^2.6.5"
 
-babel-plugin-dynamic-import-node@^2.3.3:
-  version "2.3.3"
-  resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3"
-  integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==
-  dependencies:
-    object.assign "^4.1.0"
-
 babel-plugin-istanbul@^6.1.1:
   version "6.1.1"
   resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73"
@@ -3768,10 +3766,10 @@ bn.js@^5.0.0, bn.js@^5.1.1:
   resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70"
   integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==
 
-body-parser@1.20.0, body-parser@^1.16.1:
-  version "1.20.0"
-  resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.0.tgz#3de69bd89011c11573d7bfee6a64f11b6bd27cc5"
-  integrity sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==
+body-parser@1.20.1, body-parser@^1.16.1:
+  version "1.20.1"
+  resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668"
+  integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==
   dependencies:
     bytes "3.1.2"
     content-type "~1.0.4"
@@ -3781,7 +3779,7 @@ body-parser@1.20.0, body-parser@^1.16.1:
     http-errors "2.0.0"
     iconv-lite "0.4.24"
     on-finished "2.4.1"
-    qs "6.10.3"
+    qs "6.11.0"
     raw-body "2.5.1"
     type-is "~1.6.18"
     unpipe "1.0.0"
@@ -3922,7 +3920,7 @@ browserify-zlib@^0.2.0:
   dependencies:
     pako "~1.0.5"
 
-browserslist@^4.0.0, browserslist@^4.16.1, browserslist@^4.16.6, browserslist@^4.20.3, browserslist@^4.21.3, browserslist@^4.21.4, browserslist@^4.9.1:
+browserslist@^4.0.0, browserslist@^4.16.1, browserslist@^4.16.6, browserslist@^4.21.3, browserslist@^4.21.4, browserslist@^4.9.1:
   version "4.21.4"
   resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.4.tgz#e7496bbc67b9e39dd0f98565feccdcb0d4ff6987"
   integrity sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==
@@ -3979,9 +3977,9 @@ buffer-crc32@~0.2.3:
   integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==
 
 buffer-equal@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-1.0.0.tgz#59616b498304d556abd466966b22eeda3eca5fbe"
-  integrity sha512-tcBWO2Dl4e7Asr9hTGcpVrCe+F7DubpmqWCTbj4FHLmjqO2hIaC383acQubWtRJhdceqs5uBHs6Es+Sk//RKiQ==
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-1.0.1.tgz#2f7651be5b1b3f057fcd6e7ee16cf34767077d90"
+  integrity sha512-QoV3ptgEaQpvVwbXdSO39iqPQTCxSF7A5U99AxbHYqUdCizL/lH2Z0A2y6nbZucxMEOtNyZfG2s6gsVugGpKkg==
 
 buffer-fill@^1.0.0:
   version "1.0.0"
@@ -4172,9 +4170,9 @@ caniuse-api@^3.0.0:
     lodash.uniq "^4.5.0"
 
 caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001032, caniuse-lite@^1.0.30001181, caniuse-lite@^1.0.30001400:
-  version "1.0.30001414"
-  resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001414.tgz#5f1715e506e71860b4b07c50060ea6462217611e"
-  integrity sha512-t55jfSaWjCdocnFdKQoO+d2ct9C59UZg4dY3OnUlSZ447r8pUtIKdp0hpAzrGFultmTC+Us+KpKi4GZl/LXlFg==
+  version "1.0.30001434"
+  resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001434.tgz#ec1ec1cfb0a93a34a0600d37903853030520a4e5"
+  integrity sha512-aOBHrLmTQw//WFa2rcF1If9fa3ypkC1wzqqiKHgfdrXTWcU8C4gKVZT77eQAPWN1APys3+uQ0Df07rKauXGEYA==
 
 canonical-path@1.0.0:
   version "1.0.0"
@@ -4342,9 +4340,9 @@ ci-info@^2.0.0:
   integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==
 
 ci-info@^3.2.0:
-  version "3.4.0"
-  resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.4.0.tgz#b28484fd436cbc267900364f096c9dc185efb251"
-  integrity sha512-t5QdPT5jq3o262DOQ8zA6E1tlH2upmUc4Hlvrbx1pGYJuiiHl7O7rvVNI+l8HTVhd/q3Qc9vqimkNk5yiXsAug==
+  version "3.7.0"
+  resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.7.0.tgz#6d01b3696c59915b6ce057e4aa4adfc2fa25f5ef"
+  integrity sha512-2CpRNYmImPx+RXKLq6jko/L07phmS9I02TyqkcNU20GCF/GgaWvc58hPtjxDX8lPpkdwc9sNh72V9k00S7ezog==
 
 cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3:
   version "1.0.4"
@@ -4748,12 +4746,12 @@ content-disposition@0.5.4:
   dependencies:
     safe-buffer "5.2.1"
 
-content-section@0.0.5:
-  version "0.0.5"
-  resolved "https://registry.yarnpkg.com/content-section/-/content-section-0.0.5.tgz#4b5ff3e3d3cec35a4ddb81161467b1f3e96e5e9a"
-  integrity sha512-6LIPFIcqGajDUChDx7iKDhIlQsnWNpkWZDNjzDCnEiBppu25DgUsXPveLy30JwO9k1OLbInwRdfmyb5U6uUT3Q==
+content-section-v11@0.0.9:
+  version "0.0.9"
+  resolved "https://registry.yarnpkg.com/content-section-v11/-/content-section-v11-0.0.9.tgz#8c73c4ec75f49634ffe0f678aa3d82e5aa23c259"
+  integrity sha512-YagJEw5YbT8mwrU2tayxRCkBJNOAbf58B31dyS2ritaR7ZHvb9T787BwPkwzCLTMaUeZMb/XKbF8oQ0rN5XdTw==
   dependencies:
-    tslib "^1.10.0"
+    tslib "^2.0.0"
 
 content-type@~1.0.4:
   version "1.0.4"
@@ -4761,11 +4759,9 @@ content-type@~1.0.4:
   integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==
 
 convert-source-map@^1.4.0, convert-source-map@^1.5.0, convert-source-map@^1.5.1, convert-source-map@^1.6.0, convert-source-map@^1.7.0:
-  version "1.8.0"
-  resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369"
-  integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==
-  dependencies:
-    safe-buffer "~5.1.1"
+  version "1.9.0"
+  resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f"
+  integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==
 
 cookie-signature@1.0.6:
   version "1.0.6"
@@ -4832,9 +4828,9 @@ copy-webpack-plugin@6.3.2:
     webpack-sources "^1.4.3"
 
 core-js-compat@^3.8.0:
-  version "3.25.4"
-  resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.25.4.tgz#730a255d4a47a937513abf1672bf278dc24dcebf"
-  integrity sha512-gCEcIEEqCR6230WroNunK/653CWKhqyCKJ9b+uESqOt/WFJA8B4lTnnQFdpYY5vmBcwJAA90Bo5vXs+CVsf6iA==
+  version "3.26.1"
+  resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.26.1.tgz#0e710b09ebf689d719545ac36e49041850f943df"
+  integrity sha512-622/KzTudvXCDLRw70iHW4KKs1aGpcRcowGWyYJr2DEBfRrd6hNJybxSWJFuZYD4ma86xhrwDDHxmDaIq4EA8A==
   dependencies:
     browserslist "^4.21.4"
 
@@ -4849,9 +4845,9 @@ core-js@^2.2.0, core-js@^2.4.1:
   integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==
 
 core-js@^3.6.5:
-  version "3.25.4"
-  resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.25.4.tgz#76f6bc330a79aafbaf77e9645293351ea5d09b5b"
-  integrity sha512-JDLxg61lFPFYQ7U0HKoyKwVUV63VbbVTb/K73Yf+k4Mf4ZBZxCjfyrWZjTk1ZM7ZrgFSqhSIOmuzYAxG2f/reQ==
+  version "3.26.1"
+  resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.26.1.tgz#7a9816dabd9ee846c1c0fe0e8fcad68f3709134e"
+  integrity sha512-21491RRQVzUn0GGM9Z1Jrpr6PNPxPi+Za8OM9q4tksTSnlbXXGKK1nXNg/QvwFYettXvSX6zWKCtHHfjN4puyA==
 
 core-util-is@1.0.2:
   version "1.0.2"
@@ -4864,9 +4860,9 @@ core-util-is@~1.0.0:
   integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==
 
 cosmiconfig@^7.0.0:
-  version "7.0.1"
-  resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d"
-  integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==
+  version "7.1.0"
+  resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6"
+  integrity sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==
   dependencies:
     "@types/parse-json" "^4.0.0"
     import-fresh "^3.2.1"
@@ -4976,7 +4972,7 @@ crypto-ld@^3.7.0:
   optionalDependencies:
     sodium-native "^3.2.0"
 
-css-declaration-sorter@^6.3.0:
+css-declaration-sorter@^6.3.1:
   version "6.3.1"
   resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-6.3.1.tgz#be5e1d71b7a992433fb1c542c7a1b835e45682ec"
   integrity sha512-fBffmak0bPAnyqc/HO8C3n2sHrp9wcqQz6ES9koRF2/mLOVAx9zIQ3Y7R29sYCteTPqMCwns4WYQoCX91Xl3+w==
@@ -5080,24 +5076,24 @@ cssesc@^3.0.0:
   integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==
 
 cssnano-preset-default@^5.0.1:
-  version "5.2.12"
-  resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.2.12.tgz#ebe6596ec7030e62c3eb2b3c09f533c0644a9a97"
-  integrity sha512-OyCBTZi+PXgylz9HAA5kHyoYhfGcYdwFmyaJzWnzxuGRtnMw/kR6ilW9XzlzlRAtB6PLT/r+prYgkef7hngFew==
+  version "5.2.13"
+  resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.2.13.tgz#e7353b0c57975d1bdd97ac96e68e5c1b8c68e990"
+  integrity sha512-PX7sQ4Pb+UtOWuz8A1d+Rbi+WimBIxJTRyBdgGp1J75VU0r/HFQeLnMYgHiCAp6AR4rqrc7Y4R+1Rjk3KJz6DQ==
   dependencies:
-    css-declaration-sorter "^6.3.0"
+    css-declaration-sorter "^6.3.1"
     cssnano-utils "^3.1.0"
     postcss-calc "^8.2.3"
     postcss-colormin "^5.3.0"
-    postcss-convert-values "^5.1.2"
+    postcss-convert-values "^5.1.3"
     postcss-discard-comments "^5.1.2"
     postcss-discard-duplicates "^5.1.0"
     postcss-discard-empty "^5.1.1"
     postcss-discard-overridden "^5.1.0"
-    postcss-merge-longhand "^5.1.6"
-    postcss-merge-rules "^5.1.2"
+    postcss-merge-longhand "^5.1.7"
+    postcss-merge-rules "^5.1.3"
     postcss-minify-font-values "^5.1.0"
     postcss-minify-gradients "^5.1.1"
-    postcss-minify-params "^5.1.3"
+    postcss-minify-params "^5.1.4"
     postcss-minify-selectors "^5.2.1"
     postcss-normalize-charset "^5.1.0"
     postcss-normalize-display-values "^5.1.0"
@@ -5105,11 +5101,11 @@ cssnano-preset-default@^5.0.1:
     postcss-normalize-repeat-style "^5.1.1"
     postcss-normalize-string "^5.1.0"
     postcss-normalize-timing-functions "^5.1.0"
-    postcss-normalize-unicode "^5.1.0"
+    postcss-normalize-unicode "^5.1.1"
     postcss-normalize-url "^5.1.0"
     postcss-normalize-whitespace "^5.1.1"
     postcss-ordered-values "^5.1.3"
-    postcss-reduce-initial "^5.1.0"
+    postcss-reduce-initial "^5.1.1"
     postcss-reduce-transforms "^5.1.0"
     postcss-svgo "^5.1.0"
     postcss-unique-selectors "^5.1.1"
@@ -5212,11 +5208,11 @@ datatables.net-dt@1.10.20:
     jquery ">=1.7"
 
 datatables.net-dt@^1.10.20:
-  version "1.12.1"
-  resolved "https://registry.yarnpkg.com/datatables.net-dt/-/datatables.net-dt-1.12.1.tgz#43aa00adb1ea9a3adbffae4a0b6baf56ec74ccd9"
-  integrity sha512-HYsHbSYqOqlgsgjKMH/kkCB5455t51GmmtXRxgnDMRbjPLEIKo5CZmAlUe5mdD/RVPRtAUaj5K3SDlkEZ1bUmw==
+  version "1.13.1"
+  resolved "https://registry.yarnpkg.com/datatables.net-dt/-/datatables.net-dt-1.13.1.tgz#c3e31c8ae85dabe6895e740f6fbe0ed2e8276c39"
+  integrity sha512-J5ul/Y+Hpyfh8y02DKwgbmUij4e4R6bstnx4iYvY7FV2b2XuCP0Qow/Uuc0gtxDHSz2bTsoeRHqg4teoGftVDg==
   dependencies:
-    datatables.net ">=1.11.3"
+    datatables.net ">=1.12.1"
     jquery ">=1.7"
 
 datatables.net@1.10.20:
@@ -5226,10 +5222,10 @@ datatables.net@1.10.20:
   dependencies:
     jquery ">=1.7"
 
-datatables.net@>=1.11.3:
-  version "1.12.1"
-  resolved "https://registry.yarnpkg.com/datatables.net/-/datatables.net-1.12.1.tgz#3e625e49a3341f605b0efb519fae94e37b278f24"
-  integrity sha512-e6XAMUoV41JdQPS/r9YRfRcmTPcCVvyZbWI+xog1Zg+kjVliMQbEkvWK5XFItmi64Cvwg+IqsZbTUJ1KSY3umA==
+datatables.net@>=1.12.1:
+  version "1.13.1"
+  resolved "https://registry.yarnpkg.com/datatables.net/-/datatables.net-1.13.1.tgz#199f7cb63f4536c135e161f95254212835a1c130"
+  integrity sha512-cX5dDHsbVdLLYKsWOSE0MvuGUcV88zU5dZ/taK2puJV6F9Fw0CFsP3+U/kr+qpDSFOBLWISRyM4Q9wWWovPTNg==
   dependencies:
     jquery ">=1.7"
 
@@ -5249,9 +5245,9 @@ dateformat@^2.0.0:
   integrity sha512-GODcnWq3YGoTnygPfi02ygEiRxqUxpJwuRHjdhJYuxpcZmDq4rjBiXYmbCCzStxo176ixfLT6i4NPwQooRySnw==
 
 dayjs@^1.8.26:
-  version "1.11.5"
-  resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.5.tgz#00e8cc627f231f9499c19b38af49f56dc0ac5e93"
-  integrity sha512-CAdX5Q3YW3Gclyo5Vpqkgpj8fSdLQcRuzfX6mC6Phy0nfJ0eGYOeS7m4mt2plDWLAtA4TqTakvbboHvUxfe4iA==
+  version "1.11.6"
+  resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.6.tgz#2e79a226314ec3ec904e3ee1dd5a4f5e5b1c7afb"
+  integrity sha512-zZbY5giJAinCG+7AGaw0wIhNZ6J8AhWuSXKvuc1KAyMiRsvGQWqh4L+MomvhdAYjN+lqvVCMq1I41e3YHvXkyQ==
 
 debug@2.6.9, debug@^2.2.0, debug@^2.3.3:
   version "2.6.9"
@@ -5306,9 +5302,9 @@ decamelize@^1.1.1, decamelize@^1.2.0:
   integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==
 
 decimal.js@^10.2.1:
-  version "10.4.1"
-  resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.1.tgz#be75eeac4a2281aace80c1a8753587c27ef053e7"
-  integrity sha512-F29o+vci4DodHYT9UrR5IEbfBw9pE5eSapIJdTqXK5+6hq+t8VRxwQyKlW2i+KDKFkkJQRvFyI/QXD83h8LyQw==
+  version "10.4.2"
+  resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.2.tgz#0341651d1d997d86065a2ce3a441fbd0d8e8b98e"
+  integrity sha512-ic1yEvwT6GuvaYwBLLY6/aFFgjZdySKTE8en/fkU3QICTmRtgtSlFn0u0BXN06InZwtfCelR7j8LRiDI/02iGA==
 
 decode-uri-component@^0.2.0:
   version "0.2.0"
@@ -5428,9 +5424,9 @@ default-resolution@^2.0.0:
   integrity sha512-2xaP6GiwVwOEbXCGoJ4ufgC76m8cj805jrghScewJC2ZDsb9U0b4BIrba+xt/Uytyd0HvQ6+WymSRTfnYj59GQ==
 
 defaults@^1.0.3:
-  version "1.0.3"
-  resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d"
-  integrity sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA==
+  version "1.0.4"
+  resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a"
+  integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==
   dependencies:
     clone "^1.0.2"
 
@@ -5730,9 +5726,9 @@ ee-first@1.1.1:
   integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==
 
 electron-to-chromium@^1.4.251:
-  version "1.4.270"
-  resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.270.tgz#2c6ea409b45cdb5c3e0cb2c08cf6c0ba7e0f2c26"
-  integrity sha512-KNhIzgLiJmDDC444dj9vEOpZEgsV96ult9Iff98Vanumn+ShJHd5se8aX6KeVxdc0YQeqdrezBZv89rleDbvSg==
+  version "1.4.284"
+  resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz#61046d1e4cab3a25238f6bf7413795270f125592"
+  integrity sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==
 
 element-closest@^2.0.2:
   version "2.0.2"
@@ -5902,10 +5898,10 @@ error-ex@^1.2.0, error-ex@^1.3.1:
   dependencies:
     is-arrayish "^0.2.1"
 
-es-abstract@^1.19.0, es-abstract@^1.19.2, es-abstract@^1.19.5, es-abstract@^1.20.1:
-  version "1.20.3"
-  resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.20.3.tgz#90b143ff7aedc8b3d189bcfac7f1e3e3f81e9da1"
-  integrity sha512-AyrnaKVpMzljIdwjzrj+LxGmj8ik2LckwXacHqrJJ/jxz6dDDBcZ7I7nlHM0FvEW8MfbWJwOd+yT2XzYW49Frw==
+es-abstract@^1.19.0, es-abstract@^1.20.4:
+  version "1.20.4"
+  resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.20.4.tgz#1d103f9f8d78d4cf0713edcd6d0ed1a46eed5861"
+  integrity sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA==
   dependencies:
     call-bind "^1.0.2"
     es-to-primitive "^1.2.1"
@@ -5917,7 +5913,7 @@ es-abstract@^1.19.0, es-abstract@^1.19.2, es-abstract@^1.19.5, es-abstract@^1.20
     has-property-descriptors "^1.0.0"
     has-symbols "^1.0.3"
     internal-slot "^1.0.3"
-    is-callable "^1.2.6"
+    is-callable "^1.2.7"
     is-negative-zero "^2.0.2"
     is-regex "^1.1.4"
     is-shared-array-buffer "^1.0.2"
@@ -6342,13 +6338,13 @@ export-to-csv@0.2.1:
   integrity sha512-KTbrd3CAZ0cFceJEZr1e5uiMasabeCpXq1/5uvVxDl53o4jXJHnltasQoj2NkzrxD8hU9kdwjnMhoir/7nNx/A==
 
 express@^4.17.1:
-  version "4.18.1"
-  resolved "https://registry.yarnpkg.com/express/-/express-4.18.1.tgz#7797de8b9c72c857b9cd0e14a5eea80666267caf"
-  integrity sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==
+  version "4.18.2"
+  resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59"
+  integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==
   dependencies:
     accepts "~1.3.8"
     array-flatten "1.1.1"
-    body-parser "1.20.0"
+    body-parser "1.20.1"
     content-disposition "0.5.4"
     content-type "~1.0.4"
     cookie "0.5.0"
@@ -6367,7 +6363,7 @@ express@^4.17.1:
     parseurl "~1.3.3"
     path-to-regexp "0.1.7"
     proxy-addr "~2.0.7"
-    qs "6.10.3"
+    qs "6.11.0"
     range-parser "~1.2.1"
     safe-buffer "5.2.1"
     send "0.18.0"
@@ -6549,7 +6545,7 @@ file-loader@6.2.0:
     loader-utils "^2.0.0"
     schema-utils "^3.0.0"
 
-"file-saver@github:eligrey/FileSaver.js#1.3.8":
+file-saver@eligrey/FileSaver.js#1.3.8:
   version "1.3.8"
   resolved "https://codeload.github.com/eligrey/FileSaver.js/tar.gz/e865e37af9f9947ddcced76b549e27dc45c1cb2e"
 
@@ -7712,9 +7708,9 @@ ignore-walk@^3.0.1, ignore-walk@^3.0.3:
     minimatch "^3.0.4"
 
 ignore@^5.2.0:
-  version "5.2.0"
-  resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a"
-  integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==
+  version "5.2.1"
+  resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.1.tgz#c2b1f76cb999ede1502f3a226a9310fdfe88d46c"
+  integrity sha512-d2qQLzTJ9WxQftPAuEQpSPmKqzxePjzVbpAVv62AQ64NTL+wR4JkrVqR/LqFsFEUsHDAiId52mJteHDFuDkElA==
 
 iltorb@^2.0.0:
   version "2.4.5"
@@ -8022,15 +8018,15 @@ is-buffer@^1.1.5, is-buffer@~1.1.1:
   resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
   integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
 
-is-callable@^1.1.4, is-callable@^1.2.6:
+is-callable@^1.1.4, is-callable@^1.2.7:
   version "1.2.7"
   resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055"
   integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==
 
 is-core-module@^2.1.0, is-core-module@^2.9.0:
-  version "2.10.0"
-  resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.10.0.tgz#9012ede0a91c69587e647514e1d5277019e728ed"
-  integrity sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==
+  version "2.11.0"
+  resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144"
+  integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==
   dependencies:
     has "^1.0.3"
 
@@ -8307,9 +8303,9 @@ is-typedarray@^1.0.0, is-typedarray@~1.0.0:
   integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==
 
 is-ua-webview@^1.0.0:
-  version "1.0.5"
-  resolved "https://registry.yarnpkg.com/is-ua-webview/-/is-ua-webview-1.0.5.tgz#f5798e50e379aced92b6bf1a13b5ee645dbef09b"
-  integrity sha512-CfaCxjFTU3xUluvcKg0+3j5uXeyneANFnC9ynSCTFA06nFt1okFBXpkKVxqxtFAKcbsFl+vrOQ7g6hlaDIQu8A==
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/is-ua-webview/-/is-ua-webview-1.1.0.tgz#0830e5f164ff9c78e9a6c8df5ce5e7ce404c59e6"
+  integrity sha512-DXvpf4ouWLwxCp6+DNJ2UBTBAJbH6oCqxgpH8rRMDnA0HntfMYMKUJjiCKCJGGnoFwK7i942zCbLU0SfAjvrbg==
 
 is-unc-path@^1.0.0:
   version "1.0.0"
@@ -8422,9 +8418,9 @@ istanbul-lib-instrument@^4.0.3:
     semver "^6.3.0"
 
 istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0:
-  version "5.2.0"
-  resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz#31d18bdd127f825dd02ea7bfdfd906f8ab840e9f"
-  integrity sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A==
+  version "5.2.1"
+  resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d"
+  integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==
   dependencies:
     "@babel/core" "^7.12.3"
     "@babel/parser" "^7.14.7"
@@ -8709,9 +8705,9 @@ jest-mock@^27.5.1:
     "@types/node" "*"
 
 jest-pnp-resolver@^1.2.2:
-  version "1.2.2"
-  resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c"
-  integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==
+  version "1.2.3"
+  resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e"
+  integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==
 
 jest-preset-angular@^11.1.1:
   version "11.1.2"
@@ -9313,9 +9309,9 @@ lead@^1.0.0:
     flush-write-stream "^1.0.2"
 
 leaflet@^1.7.1:
-  version "1.9.1"
-  resolved "https://registry.yarnpkg.com/leaflet/-/leaflet-1.9.1.tgz#73c3c31233f5bc69ad3dd681e67860ba28c87291"
-  integrity sha512-5FcDAMTLAuOq0RisQQbTFatl8Sl4bM0gMrBfuHbl7CYbYJv45BfCS8oU3T644MLjleBq1Ncq541QEA1pqUGTFA==
+  version "1.9.3"
+  resolved "https://registry.yarnpkg.com/leaflet/-/leaflet-1.9.3.tgz#52ec436954964e2d3d39e0d433da4b2500d74414"
+  integrity sha512-iB2cR9vAkDOu5l3HAay2obcUHZ7xwUBBjph8+PGtmW/2lYhbLizWtG7nTeYht36WfOslixQF9D/uSIzhZgGMfQ==
 
 less-loader@7.3.0:
   version "7.3.0"
@@ -9423,18 +9419,18 @@ loader-utils@2.0.0:
     json5 "^2.1.2"
 
 loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0:
-  version "1.4.0"
-  resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613"
-  integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==
+  version "1.4.2"
+  resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.2.tgz#29a957f3a63973883eb684f10ffd3d151fec01a3"
+  integrity sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==
   dependencies:
     big.js "^5.2.2"
     emojis-list "^3.0.0"
     json5 "^1.0.1"
 
 loader-utils@^2.0.0:
-  version "2.0.2"
-  resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.2.tgz#d6e3b4fb81870721ae4e0868ab11dd638368c129"
-  integrity sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==
+  version "2.0.4"
+  resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.4.tgz#8b5cb38b5c34a9a018ee1fc0e6a066d1dfcc528c"
+  integrity sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==
   dependencies:
     big.js "^5.2.2"
     emojis-list "^3.0.0"
@@ -9620,9 +9616,9 @@ log4js@^3.0.0:
     streamroller "0.7.0"
 
 loglevel@^1.6.8:
-  version "1.8.0"
-  resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.8.0.tgz#e7ec73a57e1e7b419cb6c6ac06bf050b67356114"
-  integrity sha512-G6A/nJLRgWOuuwdNuA6koovfEV1YpqqAG4pRUlFaz3jj2QNZ8M4vBqnVA+HBTmU/AMNUtlOsMmSpF6NyOjztbA==
+  version "1.8.1"
+  resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.8.1.tgz#5c621f83d5b48c54ae93b6156353f555963377b4"
+  integrity sha512-tCRIJM51SHjAayKwC+QAg8hT8vg6z7GSgLJKGvzuPb1Wc+hLzqtuVLxp6/HzSPOozuK+8ErAhy7U/sVzw8Dgfg==
 
 lru-cache@4.1.x:
   version "4.1.5"
@@ -9985,9 +9981,9 @@ minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.1.1:
     brace-expansion "^1.1.7"
 
 minimist@^1.1.0, minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5, minimist@^1.2.6:
-  version "1.2.6"
-  resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44"
-  integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==
+  version "1.2.7"
+  resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18"
+  integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==
 
 minimist@~0.0.1:
   version "0.0.10"
@@ -10050,9 +10046,9 @@ minipass@^2.3.5, minipass@^2.6.0, minipass@^2.9.0:
     yallist "^3.0.0"
 
 minipass@^3.0.0, minipass@^3.1.0, minipass@^3.1.1, minipass@^3.1.3:
-  version "3.3.4"
-  resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.4.tgz#ca99f95dd77c43c7a76bf51e6d200025eee0ffae"
-  integrity sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==
+  version "3.3.6"
+  resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a"
+  integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==
   dependencies:
     yallist "^4.0.0"
 
@@ -10208,9 +10204,9 @@ mux.js@6.0.1:
     global "^4.4.0"
 
 nan@^2.12.1, nan@^2.14.0:
-  version "2.16.0"
-  resolved "https://registry.yarnpkg.com/nan/-/nan-2.16.0.tgz#664f43e45460fb98faf00edca0bb0d7b8dce7916"
-  integrity sha512-UdAqHyFngu7TfQKsCBgAA6pWDkT8MAO7d0jyOecVhN5354xbLqdn8mV9Tat9gepAupm0bt2DbeaSC8vS52MuFA==
+  version "2.17.0"
+  resolved "https://registry.yarnpkg.com/nan/-/nan-2.17.0.tgz#c0150a2368a182f033e9aa5195ec76ea41a199cb"
+  integrity sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==
 
 nanoid@^3.1.23, nanoid@^3.3.4:
   version "3.3.4"
@@ -10834,14 +10830,14 @@ object.defaults@^1.0.0, object.defaults@^1.1.0:
     isobject "^3.0.0"
 
 object.getownpropertydescriptors@^2.0.3:
-  version "2.1.4"
-  resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.4.tgz#7965e6437a57278b587383831a9b829455a4bc37"
-  integrity sha512-sccv3L/pMModT6dJAYF3fzGMVcb38ysQ0tEE6ixv2yXJDtEIPph268OlAdJj5/qZMZDq2g/jqvwppt36uS/uQQ==
+  version "2.1.5"
+  resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.5.tgz#db5a9002489b64eef903df81d6623c07e5b4b4d3"
+  integrity sha512-yDNzckpM6ntyQiGTik1fKV1DcVDRS+w8bvpWNCBanvH5LfRX9O8WTHqQzG4RZwRAM4I0oU7TV11Lj5v0g20ibw==
   dependencies:
-    array.prototype.reduce "^1.0.4"
+    array.prototype.reduce "^1.0.5"
     call-bind "^1.0.2"
     define-properties "^1.1.4"
-    es-abstract "^1.20.1"
+    es-abstract "^1.20.4"
 
 object.map@^1.0.0:
   version "1.0.1"
@@ -11585,12 +11581,12 @@ postcss-colormin@^5.3.0:
     colord "^2.9.1"
     postcss-value-parser "^4.2.0"
 
-postcss-convert-values@^5.1.2:
-  version "5.1.2"
-  resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-5.1.2.tgz#31586df4e184c2e8890e8b34a0b9355313f503ab"
-  integrity sha512-c6Hzc4GAv95B7suy4udszX9Zy4ETyMCgFPUDtWjdFTKH1SE9eFY/jEpHSwTH1QPuwxHpWslhckUQWbNRM4ho5g==
+postcss-convert-values@^5.1.3:
+  version "5.1.3"
+  resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz#04998bb9ba6b65aa31035d669a6af342c5f9d393"
+  integrity sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==
   dependencies:
-    browserslist "^4.20.3"
+    browserslist "^4.21.4"
     postcss-value-parser "^4.2.0"
 
 postcss-discard-comments@^5.1.2:
@@ -11633,20 +11629,20 @@ postcss-loader@4.2.0:
     schema-utils "^3.0.0"
     semver "^7.3.4"
 
-postcss-merge-longhand@^5.1.6:
-  version "5.1.6"
-  resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-5.1.6.tgz#f378a8a7e55766b7b644f48e5d8c789ed7ed51ce"
-  integrity sha512-6C/UGF/3T5OE2CEbOuX7iNO63dnvqhGZeUnKkDeifebY0XqkkvrctYSZurpNE902LDf2yKwwPFgotnfSoPhQiw==
+postcss-merge-longhand@^5.1.7:
+  version "5.1.7"
+  resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz#24a1bdf402d9ef0e70f568f39bdc0344d568fb16"
+  integrity sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==
   dependencies:
     postcss-value-parser "^4.2.0"
-    stylehacks "^5.1.0"
+    stylehacks "^5.1.1"
 
-postcss-merge-rules@^5.1.2:
-  version "5.1.2"
-  resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-5.1.2.tgz#7049a14d4211045412116d79b751def4484473a5"
-  integrity sha512-zKMUlnw+zYCWoPN6yhPjtcEdlJaMUZ0WyVcxTAmw3lkkN/NDMRkOkiuctQEoWAOvH7twaxUUdvBWl0d4+hifRQ==
+postcss-merge-rules@^5.1.3:
+  version "5.1.3"
+  resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-5.1.3.tgz#8f97679e67cc8d08677a6519afca41edf2220894"
+  integrity sha512-LbLd7uFC00vpOuMvyZop8+vvhnfRGpp2S+IMQKeuOZZapPRY4SMq5ErjQeHbHsjCUgJkRNrlU+LmxsKIqPKQlA==
   dependencies:
-    browserslist "^4.16.6"
+    browserslist "^4.21.4"
     caniuse-api "^3.0.0"
     cssnano-utils "^3.1.0"
     postcss-selector-parser "^6.0.5"
@@ -11667,12 +11663,12 @@ postcss-minify-gradients@^5.1.1:
     cssnano-utils "^3.1.0"
     postcss-value-parser "^4.2.0"
 
-postcss-minify-params@^5.1.3:
-  version "5.1.3"
-  resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-5.1.3.tgz#ac41a6465be2db735099bbd1798d85079a6dc1f9"
-  integrity sha512-bkzpWcjykkqIujNL+EVEPOlLYi/eZ050oImVtHU7b4lFS82jPnsCb44gvC6pxaNt38Els3jWYDHTjHKf0koTgg==
+postcss-minify-params@^5.1.4:
+  version "5.1.4"
+  resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz#c06a6c787128b3208b38c9364cfc40c8aa5d7352"
+  integrity sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==
   dependencies:
-    browserslist "^4.16.6"
+    browserslist "^4.21.4"
     cssnano-utils "^3.1.0"
     postcss-value-parser "^4.2.0"
 
@@ -11751,12 +11747,12 @@ postcss-normalize-timing-functions@^5.1.0:
   dependencies:
     postcss-value-parser "^4.2.0"
 
-postcss-normalize-unicode@^5.1.0:
-  version "5.1.0"
-  resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.0.tgz#3d23aede35e160089a285e27bf715de11dc9db75"
-  integrity sha512-J6M3MizAAZ2dOdSjy2caayJLQT8E8K9XjLce8AUQMwOrCvjCHv24aLC/Lps1R1ylOfol5VIDMaM/Lo9NGlk1SQ==
+postcss-normalize-unicode@^5.1.1:
+  version "5.1.1"
+  resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz#f67297fca3fea7f17e0d2caa40769afc487aa030"
+  integrity sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==
   dependencies:
-    browserslist "^4.16.6"
+    browserslist "^4.21.4"
     postcss-value-parser "^4.2.0"
 
 postcss-normalize-url@^5.1.0:
@@ -11782,12 +11778,12 @@ postcss-ordered-values@^5.1.3:
     cssnano-utils "^3.1.0"
     postcss-value-parser "^4.2.0"
 
-postcss-reduce-initial@^5.1.0:
-  version "5.1.0"
-  resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-5.1.0.tgz#fc31659ea6e85c492fb2a7b545370c215822c5d6"
-  integrity sha512-5OgTUviz0aeH6MtBjHfbr57tml13PuedK/Ecg8szzd4XRMbYxH4572JFG067z+FqBIf6Zp/d+0581glkvvWMFw==
+postcss-reduce-initial@^5.1.1:
+  version "5.1.1"
+  resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-5.1.1.tgz#c18b7dfb88aee24b1f8e4936541c29adbd35224e"
+  integrity sha512-//jeDqWcHPuXGZLoolFrUXBDyuEGbr9S2rMo19bkTIjBQ4PqkaO+oI8wua5BOUxpfi97i3PCoInsiFIEBfkm9w==
   dependencies:
-    browserslist "^4.16.6"
+    browserslist "^4.21.4"
     caniuse-api "^3.0.0"
 
 postcss-reduce-transforms@^5.1.0:
@@ -11798,9 +11794,9 @@ postcss-reduce-transforms@^5.1.0:
     postcss-value-parser "^4.2.0"
 
 postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.9:
-  version "6.0.10"
-  resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz#79b61e2c0d1bfc2602d549e11d0876256f8df88d"
-  integrity sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==
+  version "6.0.11"
+  resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz#2e41dc39b7ad74046e1615185185cd0b17d0c8dc"
+  integrity sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==
   dependencies:
     cssesc "^3.0.0"
     util-deprecate "^1.0.2"
@@ -11843,9 +11839,9 @@ postcss@^7.0.35:
     source-map "^0.6.1"
 
 postcss@^8.1.4, postcss@^8.3.7:
-  version "8.4.17"
-  resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.17.tgz#f87863ec7cd353f81f7ab2dec5d67d861bbb1be5"
-  integrity sha512-UNxNOLQydcOFi41yHNMcKRZ39NeXlr8AxGuZJsdub8vIb12fHzcq37DTU/QtbI6WLxNg2gF9Z+8qtRwTj1UI1Q==
+  version "8.4.19"
+  resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.19.tgz#61178e2add236b17351897c8bcc0b4c8ecab56fc"
+  integrity sha512-h+pbPsyhlYj6N2ozBmHhHrs9DzGmbaarbLvWipMRO7RLS+v4onj26MPFXA5OBYFxyqYhUJK456SwDcY9H2/zsA==
   dependencies:
     nanoid "^3.3.4"
     picocolors "^1.0.0"
@@ -12058,14 +12054,7 @@ qjobs@^1.1.4:
   resolved "https://registry.yarnpkg.com/qjobs/-/qjobs-1.2.0.tgz#c45e9c61800bd087ef88d7e256423bdd49e5d071"
   integrity sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==
 
-qs@6.10.3:
-  version "6.10.3"
-  resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.3.tgz#d6cde1b2ffca87b5aa57889816c5f81535e22e8e"
-  integrity sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==
-  dependencies:
-    side-channel "^1.0.4"
-
-qs@^6.9.4:
+qs@6.11.0, qs@^6.9.4:
   version "6.11.0"
   resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a"
   integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==
@@ -12311,15 +12300,15 @@ regenerator-runtime@0.13.7:
   resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55"
   integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==
 
-regenerator-runtime@^0.13.4:
-  version "0.13.9"
-  resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52"
-  integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==
+regenerator-runtime@^0.13.11, regenerator-runtime@^0.13.4:
+  version "0.13.11"
+  resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9"
+  integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==
 
-regenerator-transform@^0.15.0:
-  version "0.15.0"
-  resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.0.tgz#cbd9ead5d77fae1a48d957cf889ad0586adb6537"
-  integrity sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==
+regenerator-transform@^0.15.1:
+  version "0.15.1"
+  resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.1.tgz#f6c4e99fc1b4591f780db2586328e4d9a9d8dc56"
+  integrity sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==
   dependencies:
     "@babel/runtime" "^7.8.4"
 
@@ -12345,17 +12334,17 @@ regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.4.3:
     define-properties "^1.1.3"
     functions-have-names "^1.2.2"
 
-regexpu-core@^5.1.0:
-  version "5.2.1"
-  resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.2.1.tgz#a69c26f324c1e962e9ffd0b88b055caba8089139"
-  integrity sha512-HrnlNtpvqP1Xkb28tMhBUO2EbyUHdQlsnlAhzWcwHy8WJR53UWr7/MAvqrsQKMbV4qdpv03oTMG8iIhfsPFktQ==
+regexpu-core@^5.2.1:
+  version "5.2.2"
+  resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.2.2.tgz#3e4e5d12103b64748711c3aad69934d7718e75fc"
+  integrity sha512-T0+1Zp2wjF/juXMrMxHxidqGYn8U4R+zleSJhX9tQ1PUsS8a9UtYfbsF9LdiVgNX3kiX8RNaKM42nfSgvFJjmw==
   dependencies:
     regenerate "^1.4.2"
     regenerate-unicode-properties "^10.1.0"
     regjsgen "^0.7.1"
     regjsparser "^0.9.1"
     unicode-match-property-ecmascript "^2.0.0"
-    unicode-match-property-value-ecmascript "^2.0.0"
+    unicode-match-property-value-ecmascript "^2.1.0"
 
 regjsgen@^0.7.1:
   version "0.7.1"
@@ -12763,13 +12752,6 @@ saxes@^5.0.1:
   dependencies:
     xmlchars "^2.2.0"
 
-sb-notification@0.0.3:
-  version "0.0.3"
-  resolved "https://registry.yarnpkg.com/sb-notification/-/sb-notification-0.0.3.tgz#ef655b6e0071c43ba2610c4f46917e16c11e0b7d"
-  integrity sha512-bRjbIrRg6WK0wg5RS84YP88pDnzaxByGhlSCUZfnsAVeLzydMUqOWm1u2LvZLUsUMCOdEby9SezVvMZ0w2CDPQ==
-  dependencies:
-    tslib "^1.9.0"
-
 sb-svg2pdf@0.0.11:
   version "0.0.11"
   resolved "https://registry.yarnpkg.com/sb-svg2pdf/-/sb-svg2pdf-0.0.11.tgz#cc9ad575a3d7716e8932fa70d6bbfc6346d1d842"
@@ -12902,9 +12884,9 @@ semver@7.3.4:
     lru-cache "^6.0.0"
 
 semver@7.x, semver@^7.0.0, semver@^7.1.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5:
-  version "7.3.7"
-  resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f"
-  integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==
+  version "7.3.8"
+  resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798"
+  integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==
   dependencies:
     lru-cache "^6.0.0"
 
@@ -13435,9 +13417,9 @@ stack-trace@0.0.10:
   integrity sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==
 
 stack-utils@^2.0.3:
-  version "2.0.5"
-  resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.5.tgz#d25265fca995154659dbbfba3b49254778d2fdd5"
-  integrity sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==
+  version "2.0.6"
+  resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f"
+  integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==
   dependencies:
     escape-string-regexp "^2.0.0"
 
@@ -13566,22 +13548,22 @@ string-width@^3.0.0, string-width@^3.1.0:
     strip-ansi "^5.1.0"
 
 string.prototype.trimend@^1.0.5:
-  version "1.0.5"
-  resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz#914a65baaab25fbdd4ee291ca7dde57e869cb8d0"
-  integrity sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==
+  version "1.0.6"
+  resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz#c4a27fa026d979d79c04f17397f250a462944533"
+  integrity sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==
   dependencies:
     call-bind "^1.0.2"
     define-properties "^1.1.4"
-    es-abstract "^1.19.5"
+    es-abstract "^1.20.4"
 
 string.prototype.trimstart@^1.0.5:
-  version "1.0.5"
-  resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz#5466d93ba58cfa2134839f81d7f42437e8c01fef"
-  integrity sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==
+  version "1.0.6"
+  resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz#e90ab66aa8e4007d92ef591bbf3cd422c56bdcf4"
+  integrity sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==
   dependencies:
     call-bind "^1.0.2"
     define-properties "^1.1.4"
-    es-abstract "^1.19.5"
+    es-abstract "^1.20.4"
 
 string_decoder@^1.0.0, string_decoder@^1.1.1:
   version "1.3.0"
@@ -13675,12 +13657,12 @@ style-loader@2.0.0:
     loader-utils "^2.0.0"
     schema-utils "^3.0.0"
 
-stylehacks@^5.1.0:
-  version "5.1.0"
-  resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-5.1.0.tgz#a40066490ca0caca04e96c6b02153ddc39913520"
-  integrity sha512-SzLmvHQTrIWfSgljkQCw2++C9+Ne91d/6Sp92I8c5uHTcy/PgeHamwITIbBW9wnFTY/3ZfSXR9HIL6Ikqmcu6Q==
+stylehacks@^5.1.1:
+  version "5.1.1"
+  resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-5.1.1.tgz#7934a34eb59d7152149fa69d6e9e56f2fc34bcc9"
+  integrity sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==
   dependencies:
-    browserslist "^4.16.6"
+    browserslist "^4.21.4"
     postcss-selector-parser "^6.0.4"
 
 stylus-loader@4.3.3:
@@ -13848,9 +13830,9 @@ tar@^4.4.10, tar@^4.4.8:
     yallist "^3.1.1"
 
 tar@^6.0.2, tar@^6.1.0:
-  version "6.1.11"
-  resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621"
-  integrity sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==
+  version "6.1.12"
+  resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.12.tgz#3b742fb05669b55671fb769ab67a7791ea1a62e6"
+  integrity sha512-jU4TdemS31uABHd+Lt5WEYJuzn+TJTCBLljvIAHZOz6M9Os5pJ4dD+vRFLxPa/n3T0iEFzpi+0x1UfuDZYbRMw==
   dependencies:
     chownr "^2.0.0"
     fs-minipass "^2.0.0"
@@ -13916,9 +13898,9 @@ terser@^4.1.2:
     source-map-support "~0.5.12"
 
 terser@^5.3.4:
-  version "5.15.0"
-  resolved "https://registry.yarnpkg.com/terser/-/terser-5.15.0.tgz#e16967894eeba6e1091509ec83f0c60e179f2425"
-  integrity sha512-L1BJiXVmheAQQy+as0oF3Pwtlo4s3Wi1X2zNZ2NxOB4wx9bdS9Vk67XQENLFdLYGCK/Z2di53mTj/hBafR+dTA==
+  version "5.16.0"
+  resolved "https://registry.yarnpkg.com/terser/-/terser-5.16.0.tgz#29362c6f5506e71545c73b069ccd199bb28f7f54"
+  integrity sha512-KjTV81QKStSfwbNiwlBXfcgMcOloyuRdb62/iLFPGBcVNF4EXjhdYBhYHmbJpiBrVxZhDvltE11j+LBQUxEEJg==
   dependencies:
     "@jridgewell/source-map" "^0.3.2"
     acorn "^8.5.0"
@@ -14182,9 +14164,9 @@ tslib@^1.10.0, tslib@^1.13.0, tslib@^1.8.1, tslib@^1.9.0:
   integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
 
 tslib@^2.0.0, tslib@^2.2.0, tslib@^2.3.0:
-  version "2.4.0"
-  resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3"
-  integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==
+  version "2.4.1"
+  resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.1.tgz#0d0bfbaac2880b91e22df0768e55be9753a5b17e"
+  integrity sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==
 
 tslint@~6.1.0:
   version "6.1.3"
@@ -14353,10 +14335,10 @@ unicode-match-property-ecmascript@^2.0.0:
     unicode-canonical-property-names-ecmascript "^2.0.0"
     unicode-property-aliases-ecmascript "^2.0.0"
 
-unicode-match-property-value-ecmascript@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz#1a01aa57247c14c568b89775a54938788189a714"
-  integrity sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==
+unicode-match-property-value-ecmascript@^2.1.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz#cb5fffdcd16a05124f5a4b0bf7c3770208acbbe0"
+  integrity sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==
 
 unicode-property-aliases-ecmascript@^2.0.0:
   version "2.1.0"
@@ -14442,9 +14424,9 @@ upath@^1.1.1:
   integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==
 
 update-browserslist-db@^1.0.9:
-  version "1.0.9"
-  resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.9.tgz#2924d3927367a38d5c555413a7ce138fc95fcb18"
-  integrity sha512-/xsqn21EGVdXI3EXSum1Yckj3ZVZugqyOZQ/CxYPBD/R+ko9NSUScf8tFF4dOKY+2pvSSJA/S+5B8s4Zr4kyvg==
+  version "1.0.10"
+  resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz#0f54b876545726f17d00cd9a2561e6dade943ff3"
+  integrity sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==
   dependencies:
     escalade "^3.1.1"
     picocolors "^1.0.0"
@@ -14624,7 +14606,7 @@ video.js@7.18.1:
     videojs-font "3.2.0"
     videojs-vtt.js "^0.15.3"
 
-"video.js@^6 || ^7", video.js@^7.0.0:
+"video.js@^6 || ^7", "video.js@^6 || ^7 || ^8", video.js@^7.0.0:
   version "7.20.3"
   resolved "https://registry.yarnpkg.com/video.js/-/video.js-7.20.3.tgz#5694741346dc683255993e5069daa15d4bacb646"
   integrity sha512-JMspxaK74LdfWcv69XWhX4rILywz/eInOVPdKefpQiZJSMD5O8xXYueqACP2Q5yqKstycgmmEKlJzZ+kVmDciw==
@@ -14652,12 +14634,12 @@ videojs-contrib-quality-levels@2.1.0:
     video.js "^6 || ^7"
 
 videojs-contrib-quality-levels@^2.0.4:
-  version "2.2.0"
-  resolved "https://registry.yarnpkg.com/videojs-contrib-quality-levels/-/videojs-contrib-quality-levels-2.2.0.tgz#f711cc78fd5e6559b68cb55537aba1a7e5ee931b"
-  integrity sha512-r4LFNhjyeBmlGk4Ul43xl+f7sNJ9vFyM6p4NcZNbPlvs1IvykEXCqxvsvaR6KTBjHoHGJnr26grXWcJiLFP+cA==
+  version "2.2.1"
+  resolved "https://registry.yarnpkg.com/videojs-contrib-quality-levels/-/videojs-contrib-quality-levels-2.2.1.tgz#46bd7e1db25e6e45824dadf933b08f0c6ec724a1"
+  integrity sha512-cnF6OGGgoC/2nUrbdz54nzPm3BpEZQzMTpyekiX6AXs8imATX2sHbrUz97xXVSHITldk/+d7ZAUrdQYJJTyuug==
   dependencies:
     global "^4.3.2"
-    video.js "^6 || ^7"
+    video.js "^6 || ^7 || ^8"
 
 videojs-font@3.2.0:
   version "3.2.0"
diff --git a/src/app/helpers/cloudStorage/AWSStorageService.js b/src/app/helpers/cloudStorage/AWSStorageService.js
deleted file mode 100644
index c658f0ada9af23ed9aeab5151f533e2cbecad9ca..0000000000000000000000000000000000000000
--- a/src/app/helpers/cloudStorage/AWSStorageService.js
+++ /dev/null
@@ -1,240 +0,0 @@
-/**
- * @file        - AWS Storage Service
- * @exports     - `AWSStorageService`
- * @since       - 5.0.1
- * @version     - 1.0.0
- * @implements  - BaseStorageService
- * @see {@link https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-query-string-auth.html | X-Amz-Credential}
- * @see {@link https://docs.aws.amazon.com/directconnect/latest/APIReference/CommonParameters.html#CommonParameters-X-Amz-Credential | X-Amz-Credential}
- */
-
-const BaseStorageService  = require('./BaseStorageService');
-const envHelper           = require('./../../helpers/environmentVariablesHelper');
-const { logger }          = require('@project-sunbird/logger');
-const _                   = require('lodash');
-const dateFormat          = require('dateformat');
-const uuidv1              = require('uuid/v1');
-const async               = require('async');
-const reports             = envHelper.sunbird_aws_reports + '/';
-const region              = envHelper.sunbird_aws_region?.toString();
-const storageLogger       = require('./storageLogger');
-const { getSignedUrl }    = require("@aws-sdk/s3-request-presigner");
-const { S3Client, GetObjectCommand, HeadObjectCommand } = require("@aws-sdk/client-s3");
-const client              = new S3Client({ region });
-
-class AWSStorageService extends BaseStorageService {
-
-  /**
-   * @description                     - Function to generate AWS command for an operation
-   * @param  {string} bucketName      - AWS bucket name
-   * @param  {string} fileToGet       - AWS File to fetch
-   * @param  {string} prefix          - `Optional` - Prefix for file path
-   * @returns                         - AWS Command to be executed by SDK
-   */
-  getAWSCommand(bucketName, fileToGet, prefix = '') {
-    return new GetObjectCommand({ Bucket: bucketName, Key: prefix + fileToGet });
-  }
-
-  /**
-   * @description                     - Function to check whether file exists in specified bucket or not
-   * @param  {string} bucketName      - AWS bucket name
-   * @param  {string} fileToGet       - AWS File to check
-   * @param  {string} prefix          - `Optional` - Prefix for file path
-   * @param  {function} cb            - Callback function
-   */
-  async fileExists(bucketName, fileToGet, prefix = '', cb) {
-    const params = { Bucket: bucketName, Key: prefix + fileToGet };
-    const command = new HeadObjectCommand(params);
-    logger.info({ msg: 'AWS__StorageService - fileExists called for bucketName ' + bucketName + ' for file ' + params.Key });
-    await client.send(command).then((resp) => {
-      cb(null, resp)
-    }).catch((err) => {
-      cb(err);
-    });
-  }
-
-  /**
-   * @description                     - Provides a stream to read from a storage
-   * @param {string} bucketName       - Bucket name or folder name in storage service
-   * @param {string} fileToGet        - File path in storage service
-   */
-  fileReadStream(bucketName = undefined, fileToGet = undefined) {
-    return async (req, res, next) => {
-      let bucketName = envHelper.sunbird_aws_bucket_name;
-      let fileToGet = req.params.slug.replace('__', '\/') + '/' + req.params.filename;
-      logger.info({ msg: 'AWS__StorageService - fileReadStream called for bucketName ' + bucketName + ' for file ' + fileToGet });
-
-      if (fileToGet.includes('.json')) {
-        const streamToString = (stream) =>
-          new Promise((resolve, reject) => {
-            const chunks = [];
-            stream.on("data", (chunk) => chunks.push(chunk));
-            stream.on("error", (err) => {
-              reject(err)
-            });
-            stream.on("end", () => {
-              resolve(Buffer.concat(chunks).toString("utf8"))
-            });
-          });
-        await client.send(this.getAWSCommand(bucketName, fileToGet, reports)).then((resp) => {
-          streamToString(_.get(resp, 'Body')).then((data) => {
-            res.end(data);
-          }).catch((err) => {
-            storageLogger.s500(res, 'AWS__StorageService : readStream error - Error 500', err, 'Failed to execute readStream');
-          });
-        }).catch((error) => {
-          if (_.get(error, '$metadata.httpStatusCode') == 404) {
-            storageLogger.s404(res, 'AWS__StorageService : readStream client send error - Error with status code 404', error, 'File not found');
-          } else {
-            storageLogger.s500(res, 'AWS__StorageService : readStream client send error - Error 500', error, 'Failed to display blob');
-          }
-        });
-      } else {
-        this.fileExists(bucketName, fileToGet, reports, async (error, resp) => {
-          if (_.get(error, '$metadata.httpStatusCode') == 404) {
-            storageLogger.s404(res, 'AWS__StorageService : fileExists error - Error with status code 404', error, 'File does not exists');
-          } else if (_.get(resp, '$metadata.httpStatusCode') == 200) {
-            const command = this.getAWSCommand(bucketName, fileToGet, reports);
-            // `expiresIn` - The number of seconds before the presigned URL expires
-            const presignedURL = await getSignedUrl(client, command, { expiresIn: 3600 });
-            const response = {
-              responseCode: "OK",
-              params: {
-                err: null,
-                status: "success",
-                errmsg: null
-              },
-              result: {
-                'signedUrl': presignedURL
-              }
-            }
-            res.status(200).send(this.apiResponse(response));
-          } else {
-            storageLogger.s500(res, 'AWS__StorageService : fileExists client send error - Error 500', '', 'Failed to check file exists');
-          }
-        });
-      }
-    }
-  }
-
-  getFileProperties() {
-    return (req, res, next) => {
-      const bucketName = envHelper.sunbird_aws_bucket_name;
-      const fileToGet = JSON.parse(req.query.fileNames);
-      logger.info({ msg: 'AWS__StorageService - getFileProperties called for bucketName ' + bucketName + ' for file ' + fileToGet });
-      const responseData = {};
-      if (Object.keys(fileToGet).length > 0) {
-        const getBlogRequest = [];
-        for (const [key, file] of Object.entries(fileToGet)) {
-          const req = {
-            bucketName: bucketName,
-            file: file,
-            reportname: key
-          }
-          getBlogRequest.push(
-            async.reflect((callback) => {
-              this.getBlobProperties(req, callback)
-            })
-          );
-        }
-        async.parallel(getBlogRequest, (err, results) => {
-          if (results) {
-            results.forEach(blob => {
-              if (blob.error) {
-                responseData[(_.get(blob, 'error.reportname'))] = blob.error
-              } else {
-                responseData[(_.get(blob, 'value.reportname'))] = {
-                  lastModified: _.get(blob, 'value.lastModified'),
-                  reportname: _.get(blob, 'value.reportname'),
-                  statusCode: _.get(blob, 'value.statusCode'),
-                  fileSize: _.get(blob, 'value.contentLength')
-                }
-              }
-            });
-            const finalResponse = {
-              responseCode: "OK",
-              params: {
-                err: null,
-                status: "success",
-                errmsg: null
-              },
-              result: responseData
-            }
-            res.status(200).send(this.apiResponse(finalResponse))
-          }
-        });
-      }
-    }
-  }
-
-  async getBlobProperties(request, callback) {
-    this.fileExists(request.bucketName, request.file, reports, (error, resp) => {
-      if (_.get(error, '$metadata.httpStatusCode') == 404) {
-        logger.error({ msg: 'AWS__StorageService : getBlobProperties_fileExists error - Error with status code 404. File does not exists - ' + request.file, error: error });
-        callback({ msg: _.get(error, 'name'), statusCode: _.get(error, '$metadata.httpStatusCode'), filename: request.file, reportname: request.reportname })
-      } else if (_.get(resp, '$metadata.httpStatusCode') == 200) {
-        resp.reportname = request.reportname;
-        resp.statusCode = 200;
-        logger.info({
-          msg: 'AWS__StorageService : getBlobProperties_fileExists success with status code 200. File does exists - ' +
-            request.file, statusCode: _.get(error, '$metadata.httpStatusCode')
-        });
-        callback(null, resp);
-      } else {
-        logger.error({msg: 'AWS__StorageService : getBlobProperties_fileExists client send error - Error 500 Failed to check file exists'});
-        callback(true);
-      }
-    });
-
-  }
-
-  async getFileAsText(container = undefined, fileToGet = undefined, callback) {
-    const bucketName = envHelper.sunbird_aws_bucket_name;
-    logger.info({ msg: 'AWS__StorageService : getFileAsText called for bucket ' + bucketName + ' container ' + container + ' for file ' + fileToGet });
-    const streamToString = (stream) =>
-      new Promise((resolve, reject) => {
-        const chunks = [];
-        stream.on("data", (chunk) => chunks.push(chunk));
-        stream.on("error", (err) => {
-          reject(err)
-        });
-        stream.on("end", () => {
-          resolve(Buffer.concat(chunks).toString("utf8"))
-        });
-      });
-    await client.send(this.getAWSCommand(bucketName, fileToGet, container)).then((resp) => {
-      streamToString(_.get(resp, 'Body')).then((data) => {
-        callback(null, data);
-      }).catch((err) => {
-        logger.error({ msg: 'AWS__StorageService : getFileAsText error - Error 500', err: 'Failed to execute getFileAsText' });
-        callback(err);
-      });
-    }).catch((error) => {
-      if (_.get(error, '$metadata.httpStatusCode') == 404) {
-        logger.error({ msg: 'AWS__StorageService : getFileAsText client send error - Error with status code 404. File not found', error: error });
-      } else {
-        logger.error({ msg: 'AWS__StorageService : getFileAsText client send error - Error 500. Failed to display blob', error: error });
-      }
-      callback(error);
-    });
-  }
-
-  apiResponse({ responseCode, result, params: { err, errmsg, status } }) {
-    return {
-      'id': 'api.report',
-      'ver': '1.0',
-      'ts': dateFormat(new Date(), 'yyyy-mm-dd HH:MM:ss:lo'),
-      'params': {
-        'resmsgid': uuidv1(),
-        'msgid': null,
-        'status': status,
-        'err': err,
-        'errmsg': errmsg
-      },
-      'responseCode': responseCode,
-      'result': result
-    }
-  }
-}
-
-module.exports = AWSStorageService;
\ No newline at end of file
diff --git a/src/app/helpers/cloudStorage/AzureStorageService.js b/src/app/helpers/cloudStorage/AzureStorageService.js
deleted file mode 100644
index aebc830011acb9ef60873fede0bc41a7ad55637b..0000000000000000000000000000000000000000
--- a/src/app/helpers/cloudStorage/AzureStorageService.js
+++ /dev/null
@@ -1,245 +0,0 @@
-/**
- * @file        - Azure Storage Service
- * @exports     - `AzureStorageService`
- * @since       - 5.0.1
- * @version     - 1.0.0
- * @implements  - BaseStorageService
- */
-
-const BaseStorageService  = require('./BaseStorageService');
-const envHelper           = require('./../../helpers/environmentVariablesHelper');
-const azure               = require('azure-storage');
-const blobService         = azure.createBlobService(envHelper.sunbird_azure_account_name, envHelper.sunbird_azure_account_key);
-const { logger }          = require('@project-sunbird/logger');
-const async               = require('async');
-const _                   = require('lodash');
-const dateFormat          = require('dateformat');
-const uuidv1              = require('uuid/v1');
-class AzureStorageService extends BaseStorageService {
-
-  fileExists(container, fileToGet, callback) {
-    if (!container || !fileToGet || !callback) throw new Error('Invalid arguments');
-    logger.info({ msg: 'Azure__StorageService - fileExists called for container ' + container + ' for file ' + fileToGet });
-    blobService.doesBlobExist(container, fileToGet, (err, response) => {
-      if (err) {
-        callback(err);
-      } else {
-        callback(null, response)
-      }
-    });
-  }
-  /**
-   * @description                                                     - Retrieves a shared access signature token
-   * @param  { string } container                                     - Container name
-   * @param  { string } blob                                          - Blob to be fetched
-   * @param  { azure.common.SharedAccessPolicy } sharedAccessPolicy   - Shared access policy
-   * @param  { azure.common.ContentSettingsHeaders } headers          - Optional header values to set for a blob returned wth this SAS
-   * @return { string }                                               - The shared access signature
-   */
-  generateSharedAccessSignature(container, blob, sharedAccessPolicy, headers) {
-    return blobService.generateSharedAccessSignature(container, blob, sharedAccessPolicy, headers);
-  }
-
-  /**
-   * @description                                                    - Retrieves a blob or container URL
-   * @param  { string } container                                    - Container name
-   * @param  { string } blob                                         - Blob to be fetched
-   * @param  { string } SASToken                                     - Shared Access Signature token
-   * @return { string }                                              - Formatted URL string
-   */
-  getUrl(container, blob, SASToken) {
-    return blobService.getUrl(container, blob, SASToken)
-  }
-
-  fileReadStream(container = undefined, fileToGet = undefined) {
-    return (req, res, next) => {
-      let container = envHelper.sunbird_azure_report_container_name;
-      let fileToGet = req.params.slug.replace('__', '\/') + '/' + req.params.filename;
-      logger.info({ msg: 'Azure__StorageService - fileReadStream called for container ' + container + ' for file ' + fileToGet });
-      if (fileToGet.includes('.json')) {
-        const readStream = blobService.createReadStream(container, fileToGet);
-        readStream.pipe(res);
-        readStream.on('end', () => {
-          res.end();
-        })
-        readStream.on('error', error => {
-          if (error && error.statusCode === 404) {
-            logger.error({ msg: 'Azure__StorageService : readStream error - Error with status code 404', error: error });
-            const response = {
-              responseCode: "CLIENT_ERROR",
-              params: {
-                err: "CLIENT_ERROR",
-                status: "failed",
-                errmsg: "Blob not found"
-              },
-              result: {}
-            }
-            res.status(404).send(this.apiResponse(response));
-          } else {
-            logger.error({ msg: 'Azure__StorageService : readStream error - Error 500', error: error });
-            const response = {
-              responseCode: "SERVER_ERROR",
-              params: {
-                err: "SERVER_ERROR",
-                status: "failed",
-                errmsg: "Failed to display blob"
-              },
-              result: {}
-            }
-            res.status(500).send(this.apiResponse(response));
-          }
-        })
-      } else {
-        let startDate = new Date();
-        let expiryDate = new Date(startDate);
-        expiryDate.setMinutes(startDate.getMinutes() + 3600);
-        startDate.setMinutes(startDate.getMinutes() - 3600);
-        let sharedAccessPolicy = {
-          AccessPolicy: {
-            Permissions: azure.BlobUtilities.SharedAccessPermissions.READ,
-            Start: startDate,
-            Expiry: expiryDate
-          }
-        };
-        this.fileExists(container, fileToGet, (err, resp) => {
-          if (err || !(_.get(resp, 'exists'))) {
-            logger.error({ msg: 'Azure__StorageService : doesBlobExist error - Error with status code 404', error: err });
-            const response = {
-              responseCode: "CLIENT_ERROR",
-              params: {
-                err: "CLIENT_ERROR",
-                status: "failed",
-                errmsg: "Blob not found"
-              },
-              result: {}
-            }
-            res.status(404).send(this.apiResponse(response));
-          } else {
-            let azureHeaders = {};
-            if (req.headers['content-disposition'] == 'attachment' && req.headers.filename) azureHeaders.contentDisposition = `attachment;filename=${req.headers.filename}`;
-            let token = this.generateSharedAccessSignature(container, fileToGet, sharedAccessPolicy, azureHeaders);
-            let sasUrl = this.getUrl(container, fileToGet, token);
-            const response = {
-              responseCode: "OK",
-              params: {
-                err: null,
-                status: "success",
-                errmsg: null
-              },
-              result: {
-                'signedUrl': sasUrl
-              }
-            }
-            res.status(200).send(this.apiResponse(response));
-          }
-        })
-
-      }
-    }
-  }
-
-  async getBlobProperties(request, callback) {
-    blobService.getBlobProperties(request.container, request.file, function (err, result, response) {
-      if (err) {
-        logger.error({ msg: 'Azure__StorageService : readStream error - Error with status code 404' });
-        callback({ msg: err.message, statusCode: err.statusCode, filename: request.file, reportname: request.reportname });
-      }
-      else if (!response.isSuccessful) {
-        console.error("Blob %s wasn't found container %s", file, containerName)
-        callback({ msg: err.message, statusCode: err.statusCode, filename: request.file, reportname: request.reportname });
-      }
-      else {
-        result.reportname = request.reportname;
-        result.statusCode = 200;
-        callback(null, result);
-      }
-    });
-  }
-
-  getFileProperties(container = undefined, fileToGet = undefined) {
-    return (req, res, next) => {
-      const container = envHelper.sunbird_azure_report_container_name;
-      const fileToGet = JSON.parse(req.query.fileNames);
-      logger.info({ msg: 'Azure__StorageService - getFileProperties called for container ' + container + ' for file ' + fileToGet });
-      const responseData = {};
-      if (Object.keys(fileToGet).length > 0) {
-        const getBlogRequest = [];
-        for (const [key, file] of Object.entries(fileToGet)) {
-          const req = {
-            container: container,
-            file: file,
-            reportname: key
-          }
-          getBlogRequest.push(
-            async.reflect((callback) => {
-              this.getBlobProperties(req, callback)
-            })
-          );
-        }
-        async.parallel(getBlogRequest, (err, results) => {
-          if (results) {
-            results.forEach(blob => {
-              if (blob.error) {
-                responseData[(_.get(blob, 'error.reportname'))] = blob.error
-              } else {
-                responseData[(_.get(blob, 'value.reportname'))] = {
-                  lastModified: _.get(blob, 'value.lastModified'),
-                  reportname: _.get(blob, 'value.reportname'),
-                  statusCode: _.get(blob, 'value.statusCode'),
-                  fileSize: _.get(blob, 'value.contentLength')
-                }
-              }
-            });
-            const finalResponse = {
-              responseCode: "OK",
-              params: {
-                err: null,
-                status: "success",
-                errmsg: null
-              },
-              result: responseData
-            }
-            res.status(200).send(this.apiResponse(finalResponse))
-          }
-        });
-      }
-    }
-  }
-
-  getFileAsText(container = undefined, fileToGet = undefined, callback) {
-    blobService.getBlobToText(container, fileToGet, (error, result, response) => {
-      if (error) {
-        logger.error({ msg: 'Azure__StorageService : getFileAsText error => ', error });
-        callback(error);
-      } else if (result) {
-        logger.info({ msg: 'Azure__StorageService : getFileAsText success for container ' + container + ' for file ' + fileToGet });
-        callback(null, result);
-      } else if (response) {
-        callback(null, null, response)
-        logger.info({
-          msg: 'Azure__StorageService : getFileAsText success response for container ' +
-            container + ' for file ' + fileToGet + ' response ' + response
-        });
-      }
-    });
-  }
-
-  apiResponse({ responseCode, result, params: { err, errmsg, status } }) {
-    return {
-      'id': 'api.report',
-      'ver': '1.0',
-      'ts': dateFormat(new Date(), 'yyyy-mm-dd HH:MM:ss:lo'),
-      'params': {
-        'resmsgid': uuidv1(),
-        'msgid': null,
-        'status': status,
-        'err': err,
-        'errmsg': errmsg
-      },
-      'responseCode': responseCode,
-      'result': result
-    }
-  }
-}
-
-module.exports = AzureStorageService;
\ No newline at end of file
diff --git a/src/app/helpers/cloudStorage/BaseStorageService.js b/src/app/helpers/cloudStorage/BaseStorageService.js
deleted file mode 100644
index 65d914fa47db29dc5db28f962260eaf55ce47dd5..0000000000000000000000000000000000000000
--- a/src/app/helpers/cloudStorage/BaseStorageService.js
+++ /dev/null
@@ -1,86 +0,0 @@
-/**
- * @file        - Base Cloud Storage Service
- * @description - Provides the interface and base implementation of StorageService
- * @module      - BaseStorageService
- * @exports     - `BaseStorageService`
- * @since       - 5.0.1
- * @version     - 1.0.0
- */
-
-class BaseStorageService {
-
-  /**
-   * @description                     - Download file from storage service
-   * @throws                          - Throws Exception if method is not invoked without declaration
-   * @param  {String} container       - Container name or folder name in storage service
-   * @param  {String} fileToDownload  - File path in storage service
-   * @param  {Boolean} isDirectory    - default `false`
-   */
-  downloadFile(container, fileToDownload, isDirectory = false) {
-    throw new Error('BaseStorageService :: downloadFile() must be implemented');
-  }
-
-  /**
-   * @description                     - Retrieves a blob or container URL
-   * @throws                          - Throws Exception if method is not invoked without declaration
-   * @param {string} container        - Container name or folder name in storage service
-   * @param {string} filePath         - File path in storage service
-   */
-  getURI(container, filePath) {
-    throw new Error('BaseStorageService :: getURI() must be implemented');
-  }
-
-  /**
-   * @description                     - Provides a stream to read from a storage
-   * @throws                          - Throws Exception if method is not invoked without declaration
-   * @param {string} container        - Container name or folder name in storage service
-   * @param {string} filePath         - File path in storage service
-   */
-  fileReadStream(container, filePath) {
-    throw new Error('BaseStorageService :: fileReadStream() must be implemented');
-  }
-
-  /**
-   * @description                     - Checks whether or not a blob exists on the storage service
-   * @throws                          - Throws Exception if method is not invoked without declaration
-   * @param {string} container        - Container name or folder name in storage service
-   * @param {string} filePath         - File path in storage service
-   */
-  fileExists(container, filePath) {
-    throw new Error('BaseStorageService :: fileExists() must be implemented');
-  }
-
-  /**
-   * @description                     - Retrieves a shared access signature token or signed URL
-   * @throws                          - Throws Exception if method is not invoked without declaration
-   * @param {string} container        - Container name or folder name in storage service
-   * @param {string} filePath         - File path in storage service
-   */
-  getSharedAccessSignature(container, filePath) {
-    throw new Error('BaseStorageService :: getSharedAccessSignature() must be implemented');
-  }
-
-  /**
-   * @description                     - Get all user-defined metadata, standard HTTP properties, and system properties for the blob
-   * @throws                          - Throws Exception if method is not invoked without declaration
-   * @param {string} container        - Container name or folder name in storage service
-   * @param {string} filePath         - File path in storage service
-   */
-  getFileProperties(container, filePath) {
-    throw new Error('BaseStorageService :: getFileProperties() must be implemented');
-  }
-
-  /**
-   * @description                     - Downloads a blob / file into a text string
-   * @throws                          - Throws Exception if method is not invoked without declaration
-   * @param {string} container        - Container name or folder name in storage service
-   * @param {string} filePath         - File path in storage service
-   * @param { function } callback     - Callback function
-   */
-  getFileAsText(container, filePath, callback) {
-    throw new Error('BaseStorageService :: getFileAsText() must be implemented');
-  }
-
-}
-
-module.exports = BaseStorageService;
\ No newline at end of file
diff --git a/src/app/helpers/cloudStorage/GCPStorageService.js b/src/app/helpers/cloudStorage/GCPStorageService.js
deleted file mode 100644
index 7577229b86b93f6590a091ea1de73a7451f22fed..0000000000000000000000000000000000000000
--- a/src/app/helpers/cloudStorage/GCPStorageService.js
+++ /dev/null
@@ -1,257 +0,0 @@
-/**
- * @file        - Google Cloud Provider (GCP) Storage Service
- * @exports     - `GCPStorageService`
- * @since       - 5.0.1
- * @version     - 1.0.0
- * @implements  - BaseStorageService
- */
-
-const BaseStorageService  = require('./BaseStorageService');
-const envHelper           = require('./../../helpers/environmentVariablesHelper');
-const storageLogger       = require('./storageLogger');
-const { Storage }         = require('@google-cloud/storage');
-const { logger }          = require('@project-sunbird/logger');
-const async               = require('async');
-const _                   = require('lodash');
-const dateFormat          = require('dateformat');
-const uuidv1              = require('uuid/v1');
-const reports             = envHelper.sunbird_gcloud_reports + '/';
-
-
-const _storage = new Storage({
-  credentials: {
-    client_email: envHelper.sunbird_gcloud_client_email,
-    private_key: envHelper.sunbird_gcloud_private_key?.toString()
-  },
-  projectId: envHelper.sunbird_gcloud_projectId
-});
-
-
-class GCPStorageService extends BaseStorageService {
-
-  fileExists(bucketName, fileToGet, prefix = '', cb) {
-    const file = _storage.bucket(bucketName).file(prefix + fileToGet);
-    logger.info({ msg: 'GCLOUD__StorageService - fileExists called for bucketName ' + bucketName + ' for file ' + prefix + fileToGet });
-    file.exists((err, exists) => {
-      if (err) cb(err);
-      if (exists) {
-        cb(null, exists);
-      } else {
-        cb(null, null);
-      }
-    });
-  }
-
-  /**
-   * @description                     - Provides a stream to read from a storage
-   * @param {string} bucketName       - Bucket name or folder name in storage service
-   * @param {string} fileToGet        - File path in storage service
-   */
-  fileReadStream(bucketName = undefined, fileToGet = undefined) {
-    return async (req, res, next) => {
-      let bucketName = envHelper.sunbird_gcloud_bucket_name;
-      let fileToGet = reports + req.params.slug.replace('__', '\/') + '/' + req.params.filename;
-      logger.info({ msg: 'GCLOUD__StorageService - fileReadStream called for bucketName ' + bucketName + ' for file ' + fileToGet });
-
-      if (fileToGet.includes('.json')) {
-        try {
-          const file = _storage.bucket(bucketName).file(fileToGet)
-          const fileStream = file.createReadStream();
-          const streamToString = (stream) =>
-            new Promise((resolve, reject) => {
-              const chunks = [];
-              stream.on("data", (chunk) => chunks.push(chunk));
-              stream.on("error", (err) => {
-                reject(err)
-              });
-              stream.on("end", () => {
-                resolve(Buffer.concat(chunks).toString("utf8"))
-              });
-            });
-          streamToString(fileStream).then((data) => {
-            res.end(data);
-          }).catch((err) => {
-            if (_.get(err, 'code') === 404) {
-              storageLogger.s404(res, 'GCLOUD__StorageService : readStream error - Error ' +
-                _.get(err, 'code') + ' ' + _.get(err, 'message'), '', _.get(err, 'message'));
-            } else {
-              storageLogger.s500(res, 'GCLOUD__StorageService : readStream client send error - Error 500', err, 'Failed to display blob');
-            }
-          });
-        } catch (error) {
-          storageLogger.s500(res, 'GCLOUD__StorageService : readStream client send error - Error 500', error, 'Failed to display blob');
-        }
-      } else {
-        this.fileExists(bucketName, fileToGet, '', (error, fileExists) => {
-          if (error) {
-            storageLogger.s404(res, 'GCLOUD__StorageService : readStream_fileExists error - Error 404', error, 'File does not exists');
-          } else if (fileExists) {
-            this.getSharedAccessSignature(bucketName, fileToGet, '', undefined, (err, presignedURL) => {
-              if (err) {
-                storageLogger.s500(res, 'GCLOUD__StorageService : readStream_getSharedAccessSignature - Error 500. Failed to get shared access signature',
-                  err, err);
-              } else {
-                const response = {
-                  responseCode: "OK",
-                  params: {
-                    err: null,
-                    status: "success",
-                    errmsg: null
-                  },
-                  result: {
-                    'signedUrl': presignedURL
-                  }
-                }
-                logger.info({ msg: 'GCLOUD__StorageService - readStream_getSharedAccessSignature called for bucketName ' + bucketName + ' for file ' + fileToGet });
-                res.status(200).send(this.apiResponse(response));
-              }
-            });
-          } else {
-            storageLogger.s500(res, 'GCLOUD__StorageService : readStream_fileExists error - Error 500. Failed to fetch or File does not exists',
-              error, 'Failed to fetch or File does not exists');
-          }
-        });
-      }
-    }
-  }
-
-  async getSharedAccessSignature(bucketName, fileToGet, prefix = '', expiresIn, cb) {
-    let expiryDate;
-    if (!expiresIn) {
-      let startDate = new Date();
-      expiryDate = new Date(startDate);
-      expiryDate.setMinutes(startDate.getMinutes() + 3600);
-      startDate.setMinutes(startDate.getMinutes() - 3600);
-    } else {
-      expiryDate = expiresIn;
-    }
-    const _config = { action: 'read', expires: expiryDate };
-    const file = _storage.bucket(bucketName).file(prefix + fileToGet);
-    await file.getSignedUrl(_config).then((signedUrl) => {
-      cb(null, signedUrl && signedUrl.length > 0 && signedUrl[0]);
-    }).catch((err) => cb(_.get(err, 'message')));
-  }
-
-  getFileProperties() {
-    return (req, res, next) => {
-      const bucketName = envHelper.sunbird_gcloud_bucket_name;
-      const fileToGet = JSON.parse(req.query.fileNames);
-      logger.info({ msg: 'GCLOUD__StorageService - getFileProperties called for bucketName ' + bucketName + ' for file ' + fileToGet });
-      const responseData = {};
-      if (Object.keys(fileToGet).length > 0) {
-        const getBlogRequest = [];
-        for (const [key, file] of Object.entries(fileToGet)) {
-          const req = {
-            bucketName: bucketName,
-            file: file,
-            reportname: key
-          };
-          getBlogRequest.push(
-            async.reflect((callback) => {
-              this.getBlobProperties(req, callback)
-            })
-          );
-        }
-        async.parallel(getBlogRequest, (err, results) => {
-          if (results) {
-            results.forEach(blob => {
-              if (blob.error) {
-                responseData[(_.get(blob, 'error.reportname'))] = blob.error
-              } else {
-                responseData[(_.get(blob, 'value.reportname'))] = {
-                  lastModified: _.get(blob, 'value.updated'),
-                  reportname: _.get(blob, 'value.reportname'),
-                  statusCode: _.get(blob, 'value.statusCode'),
-                  fileSize: _.get(blob, 'value.size')
-                }
-              }
-            });
-            const finalResponse = {
-              responseCode: "OK",
-              params: {
-                err: null,
-                status: "success",
-                errmsg: null
-              },
-              result: responseData
-            }
-            res.status(200).send(this.apiResponse(finalResponse))
-          }
-        });
-      }
-    }
-  }
-
-  async getBlobProperties(request, callback) {
-    const file = _storage.bucket(request.bucketName).file(reports + request.file);
-    file.getMetadata((err, metadata, resp) => {
-      if (err) {
-        logger.error({ msg: 'GCLOUD__StorageService : getBlobProperties_getMetadata client send error - Error 500 Failed to check file exists', err: err });
-        callback(err);
-      } else if (_.get(resp, 'statusCode') == 404) {
-        logger.error({ msg: 'GCLOUD__StorageService : getBlobProperties_getMetadata error - Error with status code 404. File does not exists - ' + request.file, error: resp });
-        callback({ msg: _.get(resp, 'statusMessage'), statusCode: _.get(resp, 'statusCode'), filename: request.file, reportname: request.reportname })
-      } else if (_.get(resp, 'statusCode') == 200) {
-        metadata.reportname = request.reportname;
-        metadata.statusCode = 200;
-        logger.info({
-          msg: 'GCLOUD__StorageService : getBlobProperties_getMetadata success with status code 200. File exists - ' +
-            request.file, statusCode: _.get(resp, 'statusCode')
-        });
-        callback(null, metadata);
-      } else {
-        logger.error({ msg: 'GCLOUD__StorageService : getBlobProperties_getMetadata client send error - Error 500 Failed to check file exists' });
-        callback(true);
-      }
-    });
-  }
-
-  async getFileAsText(container = undefined, fileToGet = undefined, callback) {
-    const bucketName = envHelper.sunbird_gcloud_bucket_name;
-    logger.info({ msg: 'GCLOUD__StorageService : getFileAsText called for bucket ' + bucketName + ' container ' + container + ' for file ' + fileToGet });
-    const file = _storage.bucket(bucketName).file(container + fileToGet);
-    const fileStream = file.createReadStream();
-    const streamToString = (stream) =>
-      new Promise((resolve, reject) => {
-        const chunks = [];
-        stream.on("data", (chunk) => chunks.push(chunk));
-        stream.on("error", (err) => {
-          reject(err)
-        });
-        stream.on("end", () => {
-          resolve(Buffer.concat(chunks).toString("utf8"))
-        });
-      });
-    streamToString(fileStream).then((data) => {
-      callback(null, data);
-    }).catch((err) => {
-      if (_.get(err, 'code') === 404) {
-        callback(err);
-        logger.error({ msg: 'GCLOUD__StorageService : getFileAsText error - Error ' + _.get(err, 'code') + ' ' + _.get(err, 'message') });
-      } else {
-        callback({ err: 'Failed to display blob', statusCode: 500 })
-        logger.error({ msg: 'GCLOUD__StorageService : getFileAsText client send error - Error 500. Failed to display blob' });
-      }
-    });
-  }
-
-  apiResponse({ responseCode, result, params: { err, errmsg, status } }) {
-    return {
-      'id': 'api.report',
-      'ver': '1.0',
-      'ts': dateFormat(new Date(), 'yyyy-mm-dd HH:MM:ss:lo'),
-      'params': {
-        'resmsgid': uuidv1(),
-        'msgid': null,
-        'status': status,
-        'err': err,
-        'errmsg': errmsg
-      },
-      'responseCode': responseCode,
-      'result': result
-    }
-  }
-
-}
-
-module.exports = GCPStorageService;
\ No newline at end of file
diff --git a/src/app/helpers/cloudStorage/index.js b/src/app/helpers/cloudStorage/index.js
index 6f11bd41d74b11fa4463d28084ce1d67a2ac7085..c651011026da153df80949658ff19724f093dff4 100644
--- a/src/app/helpers/cloudStorage/index.js
+++ b/src/app/helpers/cloudStorage/index.js
@@ -2,33 +2,61 @@
 /**
  * @file        - Entry file referencing Storage Service
  * @description - Entry file referencing Storage Service
- * @exports     - `AzureStorageService` and `AWSStorageService`
+ * @exports     - `AzureStorageService`, `AWSStorageService` and `GoogleStorageService`
+ * @author      - RAJESH KUMARAVEL
  * @since       - 5.0.1
+ * @updated     - 5.1.0
  * @version     - 1.0.0
  */
 
- const AzureStorageService = require('./AzureStorageService');
- const AWSStorageService   = require('./AWSStorageService');
- const GCPStorageService   = require('./GCPStorageService');
- const envHelper           = require('../../helpers/environmentVariablesHelper');
- 
- const cloudProvider       = envHelper.sunbird_cloud_storage_provider;
+const cloudService  = require('client-cloud-services');
+const envHelper     = require('../../helpers/environmentVariablesHelper');
+const cloudProvider = envHelper.sunbird_cloud_storage_provider;
 
 /**
  * Based on Environment Cloud Provider value
  * Export respective Storage Service
  */
-
+if (!cloudProvider) throw new Error("Cloud Storage Service - Provider is not initialized");
 switch (cloudProvider) {
   case 'azure':
-    exports.CLOUD_CLIENT = new AzureStorageService();
+    let azureConfig = {
+      identity: envHelper.sunbird_azure_account_name,
+      credential: envHelper.sunbird_azure_account_key,
+      reportsContainer: envHelper.sunbird_azure_report_container_name,
+      labelsContainer: envHelper.sunbird_azure_resourceBundle_container_name
+    };
+    let azureClient = cloudService.init('azure');
+    const azureStorage = new azureClient(azureConfig);
+    exports.CLOUD_CLIENT = azureStorage;
     break;
   case 'aws':
-    exports.CLOUD_CLIENT = new AWSStorageService();
+    let awsConfig = {
+      identity: envHelper.sunbird_aws_access_key,
+      credential: envHelper.sunbird_aws_secret_key,
+      region: envHelper.sunbird_aws_region,
+      containerName: envHelper.sunbird_aws_bucket_name,
+      reportsContainer: envHelper.sunbird_aws_reports,
+      labelsContainer: envHelper.sunbird_aws_labels
+    };
+    let awsClient = cloudService.init('aws');
+    const awsStorage = new awsClient(awsConfig);
+    exports.CLOUD_CLIENT = awsStorage;
     break;
   case 'gcloud':
-    exports.CLOUD_CLIENT = new GCPStorageService();
+    let gcpConfig = {
+      identity: envHelper.sunbird_gcloud_client_email,
+      credential: envHelper.sunbird_gcloud_private_key,
+      projectId: envHelper.sunbird_gcloud_projectId,
+      containerName: envHelper.sunbird_gcloud_bucket_name,
+      reportsContainer: envHelper.sunbird_gcloud_reports,
+      labelsContainer: envHelper.sunbird_gcloud_labels
+    };
+    let gcpClient = cloudService.init('gcloud');
+    const gcpStorage = new gcpClient(gcpConfig);
+    exports.CLOUD_CLIENT = gcpStorage;
     break;
   default:
+    throw new Error("Cloud Storage Service - Provider is not initialized or supported");
     break;
 }
diff --git a/src/app/helpers/environmentVariablesHelper.js b/src/app/helpers/environmentVariablesHelper.js
index 98dddcc533a4c75627de459def16625c6ebddc70..acaf69e033f564a8c277176a7f01c6d22bacbf43 100644
--- a/src/app/helpers/environmentVariablesHelper.js
+++ b/src/app/helpers/environmentVariablesHelper.js
@@ -2,6 +2,7 @@
 const env = process.env
 const fs = require('fs')
 const packageObj = JSON.parse(fs.readFileSync('package.json', 'utf8'))
+const SB_DOMAIN = 'https://staging.open-sunbird.org'
 
 let envVariables = {
 
@@ -11,7 +12,7 @@ let envVariables = {
   DEFAULT_CHANNEL: env.sunbird_default_channel,
   PORTAL_API_WHITELIST_CHECK: env.sunbird_enable_api_whitelist || 'true',
   PORTAL_SESSION_SECRET_KEY: (env.sunbird_portal_session_secret && env.sunbird_portal_session_secret !== '')
-  ? env.sunbird_portal_session_secret.split(',') : '',
+  ? env.sunbird_portal_session_secret.split(',') : 'sunbird,ed48b0ce-5a92-11ed-9b6a-0242ac120002'.split(','),
 
   // discussion forum
   discussions_middleware: env.discussions_middleware || 'http://discussionsmw-service:3002',
@@ -19,18 +20,18 @@ let envVariables = {
 
   // Application Start-up - Hosts and PORT Configuration
   PORTAL_PORT: env.sunbird_port || 3000,
-  LEARNER_URL: env.sunbird_learner_player_url || 'https://staging.open-sunbird.org/api/',
-  CONTENT_URL: env.sunbird_content_player_url || 'https://staging.open-sunbird.org/api/',
-  CONTENT_PROXY_URL: env.sunbird_content_proxy_url || 'https://staging.open-sunbird.org',
+  LEARNER_URL: env.sunbird_learner_player_url || SB_DOMAIN + '/api/',
+  CONTENT_URL: env.sunbird_content_player_url || SB_DOMAIN + '/api/',
+  CONTENT_PROXY_URL: env.sunbird_content_proxy_url || SB_DOMAIN,
   PORTAL_REALM: env.sunbird_portal_realm || 'sunbird',
-  PORTAL_AUTH_SERVER_URL: env.sunbird_portal_auth_server_url || 'https://staging.open-sunbird.org/auth',
+  PORTAL_AUTH_SERVER_URL: env.sunbird_portal_auth_server_url || SB_DOMAIN + '/auth',
   PORTAL_AUTH_SERVER_CLIENT: env.sunbird_portal_auth_server_client || 'portal',
   PORTAL_API_AUTH_TOKEN: env.sunbird_api_auth_token,
-  PORTAL_ECHO_API_URL: env.sunbird_echo_api_url || 'https://staging.open-sunbird.org/api/echo/',
-  CONFIG_URL: env.sunbird_config_service_url || 'https://staging.open-sunbird.org/api/config/',
+  PORTAL_ECHO_API_URL: env.sunbird_echo_api_url || SB_DOMAIN + '/api/echo/',
+  CONFIG_URL: env.sunbird_config_service_url || SB_DOMAIN + '/api/config/',
   EKSTEP_ENV: env.ekstep_env || 'qa',
   DEVICE_REGISTER_API: process.env.sunbird_device_register_api || 'https://api.open-sunbird.org/v3/device/register/',
-  DEVICE_PROFILE_API: process.env.sunbird_device_profile_api || 'https://staging.open-sunbird.org/api/v3/device/profile/',
+  DEVICE_PROFILE_API: process.env.sunbird_device_profile_api || SB_DOMAIN + '/api/v3/device/profile/',
   sunbird_theme: env.sunbird_theme || 'default',
   BUILD_NUMBER: packageObj.version + '.' + packageObj.buildHash,
   sunbird_portal_log_level: env.sunbird_portal_log_level || 'debug',
@@ -43,7 +44,7 @@ let envVariables = {
   CRYPTO_ENCRYPTION_KEY: env.crypto_encryption_key || '030702bc8696b8ee2aa71b9f13e4251e',
   CRYPTO_ENCRYPTION_KEY_EXTERNAL:env.crypto_encryption_key_external || '030702me8696b8ee2aa71x9n13l4251e',
   LOG_FINGERPRINT_DETAILS: env.sunbird_log_fingerprint_details || 'true',
-  REPORT_SERVICE_URL: env.sunbird_report_service_url || 'https://staging.open-sunbird.org/api/data/v1/report-service',
+  REPORT_SERVICE_URL: env.sunbird_report_service_url || SB_DOMAIN + '/api/data/v1/report-service',
   SUNBIRD_PORTAL_BASE_URL: env.sunbird_portal_base_url,
   sunbird_device_api: env.sunbird_device_api || 'https://staging.ntp.net.in/api/',
   sunbird_portal_slugForProminentFilter: env.sunbird_portal_slugForProminentFilter,
@@ -138,25 +139,41 @@ let envVariables = {
   SUNBIRD_PUBLIC_STORAGE_ACCOUNT_NAME: env.sunbird_azure_storage_account_name,
   PORTAL_CASSANDRA_CONSISTENCY_LEVEL: env.sunbird_cassandra_consistency_level || 'one',
   PORTAL_CASSANDRA_REPLICATION_STRATEGY: env.sunbird_cassandra_replication_strategy || '{"class":"SimpleStrategy","replication_factor":1}',
-  sunbird_azure_report_container_name: env.sunbird_azure_report_container_name || 'reports',
-  sunbird_azure_account_name: env.sunbird_azure_account_name,
-  sunbird_azure_account_key: env.sunbird_azure_account_key,
-  desktop_azure_crash_container_name: env.desktop_crash_container_name || 'desktopappcrashlogs',
+  
+  // ############# CSP Configuration #############
+  // Common key for Uploading Desktop Crash logs
+  desktop_azure_crash_container_name: env.cloud_storage_desktopCrash_bucketname || 'desktopappcrashlogs',
+
+  // Azure
+  sunbird_azure_account_name: env.cloud_private_storage_accountname,
+  sunbird_azure_account_key: env.cloud_private_storage_secret,
+  sunbird_azure_report_container_name: env.cloud_storage_privatereports_bucketname || 'reports',
+  sunbird_azure_resourceBundle_container_name: env.cloud_storage_resourceBundle_bucketname || 'label',
+
+  // AWS
+  sunbird_aws_access_key: env.cloud_private_storage_accountname || '',
+  sunbird_aws_secret_key: env.cloud_private_storage_secret || '',
+  sunbird_aws_region: env.cloud_private_storage_region || '',
+  sunbird_aws_reports: env.cloud_storage_privatereports_bucketname || 'reports',
+  sunbird_aws_labels: env.cloud_storage_resourceBundle_bucketname || 'label',
+
+  // deprecated - Folder structure changed
+  // sunbird_aws_bucket_name: env.sunbird_aws_bucket_name || 'sunbirded',
+
+  // GCP - gcloud
+  sunbird_gcloud_client_email: env.cloud_private_storage_accountname || '',
+  sunbird_gcloud_private_key: env.cloud_private_storage_secret || '',
+  sunbird_gcloud_projectId: env.cloud_private_storage_project || '',
+  sunbird_gcloud_reports: env.cloud_storage_privatereports_bucketname || 'reports',
+  sunbird_gcloud_labels: env.cloud_storage_resourceBundle_bucketname || 'label',
+
+  // deprecated - Folder structure changed
+  // sunbird_gcloud_bucket_name: env.sunbird_gcloud_bucket_name || 'sunbirded',
+
+  // ############# End of CSP Configuration #############
+
   sunbird_portal_cdn_blob_url: env.sunbird_portal_cdn_blob_url || '',
   sunbird_portal_video_max_size: env.sunbird_portal_video_max_size || '50',
-  sunbird_azure_resourceBundle_container_name: env.sunbird_azure_resourceBundle_container_name || 'label',
-  sunbird_aws_bucket_name: env.sunbird_aws_bucket_name || 'sunbirded',
-  sunbird_aws_reports: env.sunbird_aws_reports || 'reports',
-  sunbird_aws_labels: env.sunbird_aws_labels || 'labels',
-  sunbird_aws_access_key: env.sunbird_aws_access_key || '',
-  sunbird_aws_secret_key: env.sunbird_aws_secret_key || '',
-  sunbird_aws_region: env.sunbird_aws_region || '',
-  sunbird_gcloud_bucket_name: env.sunbird_gcloud_bucket_name || 'sunbirded',
-  sunbird_gcloud_reports: env.sunbird_gcloud_reports || 'reports',
-  sunbird_gcloud_labels: env.sunbird_gcloud_labels || 'labels',
-  sunbird_gcloud_client_email: env.sunbird_gcloud_client_email || '',
-  sunbird_gcloud_private_key: env.sunbird_gcloud_private_key || '',
-  sunbird_gcloud_projectId: env.sunbird_gcloud_projectId || '',
 
   // generic editor question set and coleections children contents limit
   SUNBIRD_QUESTIONSET_CHILDREN_LIMIT: env.sunbird_questionset_children_limit || 500,
@@ -172,7 +189,7 @@ let envVariables = {
   content_Service_Local_BaseUrl: env.sunbird_content_service_local_base_url || 'http://content-service:5000',
   CONTENT_SERVICE_UPSTREAM_URL: env.sunbird_content_service_upstream_url || 'http://localhost:5000/',
   LEARNER_SERVICE_UPSTREAM_URL: env.sunbird_learner_service_upstream_url || 'http://localhost:9000/',
-  DATASERVICE_URL: env.sunbird_dataservice_url || 'https://staging.open-sunbird.org/api/',
+  DATASERVICE_URL: env.sunbird_dataservice_url || SB_DOMAIN + '/api/',
   PORTAL_EXT_PLUGIN_URL: process.env.sunbird_ext_plugin_url || 'http://player_player:3000/plugin/',
   sunbird_data_product_service: env.sunbird_data_product_service || 'https://staging.ntp.net.in/',
 
diff --git a/src/app/helpers/resourceBundleHelper.js b/src/app/helpers/resourceBundleHelper.js
index 387149ba6df69106c3bebac705d4d5a79baab34f..f7e455f9bd4c91f1bc37731b1c38e40b81ed8faa 100644
--- a/src/app/helpers/resourceBundleHelper.js
+++ b/src/app/helpers/resourceBundleHelper.js
@@ -10,10 +10,10 @@ const getGeneralisedResourcesBundles = (req, res) => {
         container = envHelper.sunbird_azure_resourceBundle_container_name;
     }
     if (envHelper.sunbird_cloud_storage_provider === 'aws') {
-        container = envHelper.sunbird_aws_labels + '/';
+        container = envHelper.sunbird_aws_labels;
     }
     if (envHelper.sunbird_cloud_storage_provider === 'gcloud') {
-        container = envHelper.sunbird_gcloud_labels + '/';
+        container = envHelper.sunbird_gcloud_labels;
     }
     StorageService.CLOUD_CLIENT.getFileAsText(container, blobName, function (error, result, response) {
         if (error && error.statusCode === 404) {
diff --git a/src/app/helpers/resourceBundles/index.js b/src/app/helpers/resourceBundles/index.js
index 1aa5ed15290ce5fd75b065dcf3e48d9d08c0bb07..e4366960eb6f6c751c0e2685558f2afa13f68ce2 100644
--- a/src/app/helpers/resourceBundles/index.js
+++ b/src/app/helpers/resourceBundles/index.js
@@ -96,4 +96,4 @@ module.exports = function (express) {
     }
   })
   return router
-}
+}
\ No newline at end of file
diff --git a/src/app/package.json b/src/app/package.json
index 960c8bc891ae420ab9eb84d2e9388f55c8be63f9..32d8e75bbc5c2f0898708e4dca207dc08a31c18f 100644
--- a/src/app/package.json
+++ b/src/app/package.json
@@ -1,7 +1,7 @@
 {
   "name": "player",
   "author": "sunbird",
-  "version": "5.0.1",
+  "version": "5.1.0",
   "buildNumber": "1",
   "private": true,
   "description": "SUNBIRD Client Backend",
@@ -66,11 +66,12 @@
   },
   "dependencies": {
     "@aws-sdk/client-s3": "^3.163.0",
+    "@aws-sdk/lib-storage": "^3.182.0",
     "@aws-sdk/s3-request-presigner": "^3.173.0",
     "@google-cloud/storage": "^6.5.2",
     "@project-sunbird/discussion-service": "0.0.6",
     "@project-sunbird/ext-framework-server": "0.1.28",
-    "@project-sunbird/form-service": "0.0.14",
+    "@project-sunbird/form-service": "0.0.15",
     "@project-sunbird/logger": "^0.0.9",
     "@project-sunbird/review-comment": "0.0.8",
     "async": "2.5.0",
@@ -78,6 +79,7 @@
     "azure-storage": "2.10.2",
     "body-parser": "1.17.2",
     "cassandra-session-store": "1.0.6",
+    "client-cloud-services": "2.0.0",
     "compare-versions": "3.5.1",
     "compression": "1.7.2",
     "connect-redis": "4.0.4",
diff --git a/src/app/resourcebundles/data/consumption/en.properties b/src/app/resourcebundles/data/consumption/en.properties
index 65ac03eab3fd2342f1439104cd040c34b4ba6a17..76f900ae5bf8465e7f2c187cd16cbeb682be9232 100644
--- a/src/app/resourcebundles/data/consumption/en.properties
+++ b/src/app/resourcebundles/data/consumption/en.properties
@@ -1286,6 +1286,7 @@ frmelmnts.lbl.wrongEmailOTP=You have entered an incorrect OTP. Enter the OTP rec
 frmelmnts.lbl.wrongPhoneOTP=You have entered an incorrect OTP. Enter the OTP received on your mobile number. The OTP is valid only for 30 minutes.
 frmelmnts.lbl.year=Year
 frmelmnts.lbl.yearOfBirth= Select year of birth
+frmelmnts.lbl.validYearOfBirth=Please provide valid year of birth
 frmelmnts.lbl.yetToStart=Not started
 frmelmnts.lbl.yop=Year of Passing
 frmelmnts.lbl.you=You
diff --git a/src/app/resourcebundles/json/en.json b/src/app/resourcebundles/json/en.json
index 575b98d935b2cba4a372e82e7eace204c91ac48c..018a12565023a82b83e7c0ecd6f3b688c71c723c 100644
--- a/src/app/resourcebundles/json/en.json
+++ b/src/app/resourcebundles/json/en.json
@@ -1 +1 @@
-{"creation":{"frmelmnts":{"btn":{"yes":"Yes","no":"No","back":"Back","tryagain":"Try again","close":"Close","accept":"Accept","discard":"Discard","anncmntconfirmrecipients":"Confirm recipients","anncmntpreview":"Preview announcement","anncmntsendanncmnt":"Send announcement","anncmnteditrecipients":"Edit recipients","anncmntselectrecipients":"Select recipients","anncmntdtlsview":"View","anncmntgotit":"Got it","save":"Save","addMembers":"Add members","createbatch":"Create batch","cancel":"Cancel","update":"Update","updatebatch":"Update batch","checkListComment":"Comment","checklistCancel":"Cancel","checklistPublish":"Publish","checkListRequestChanges":"Request changes","publish":"Publish","requestChanges":"Request changes","startcreating":"Start creating","login":"Login"},"lbl":{"name":"Name","Name":"Name","email":"Email Address","contact":"Contact","delete":"Delete","pleaseSelect":"Please Select","anncmntttlresend":"Resend Announcement","createnewanncmnt":"Create New Announcement","createnewanncmntdesc":"Fill in all the required fields to create the announcement.","resendanncmntdesc":"You can make any edits required and resend the announcement.","selectrecipient":"Select Announcement Recipients","selectrecipientdesc":"Select locations who should receive the announcement.","editrecipientdesc":"Edit locations who should receive the announcement.","confirmrecipient":"Confirm Announcement Recipients","confirmrecipientdesc":"Review and confirm your announcement recipients.","previewanncmnt":"Preview Announcement","previewanncmntdesc":"This is how your announcement will look.","anncmntstep":"STEP","anncmnttitle":"TITLE","anncmntfrom":"FROM","anncmntfromDesc":"Please enter organisation/department that has sent the announcement","anncmnttype":"ANNOUNCEMENT TYPE","anncmntdesc":"DESCRIPTION (OPTIONAL)","anncmntlink":"URL / WEBLINK","anncmntaddlink":"Add URL/weblink","anncmntaddlinkdesc":"(For example, you can link a Google Form)","anncmntaddmorelink":"Add Another URL/weblink","anncmntuploadfile":"UPLOAD ATTACHMENT","anncmntsentsuccess":"Announcement Sent!","anncmntsentdesc":"Your announcement has been sent to all your recipients. View all your announcement from the Announcement Dashboard.","anncmntcancel":"Are you sure you want to stop creating this announcement","anncmntcanceldesc":"You will lose your work if you close this announcement","organisation":"Organization","organisationName":"Organisation Name","subOrganisation":"Sub-Organization","selectSubOrganisation":"Select Sub-Organization","unselectAll":"UnSelect All","orgName":"orgName","SelectMentors":"Select Mentors","SelectParticipants":"Select Participants","mentors":"Mentors","participants":"Participants","searchMembers":"Search members","createnewbatch":"Create New Batch","createbatch":"Create Batch","batchmentors":"MENTORS IN THE BATCH","batchselmentors":"SELECTED MENTORS","bacthmembers":"MEMBERS IN THE BATCH","batchparticipants":"SELECTED PARTICIPANTS","batchname":"NAME OF BATCH","aboutbatch":"ABOUT THIS BATCH","enableDiscussions":"Enable discussions","startdate":"START DATE","enrollmentenddate":"ENROLMENT END DATE","enddate":"END DATE","natureofbatch":"BATCH TYPE","inviteonly":"Invite-only","open":"Open","play":"Play","discardChange":"Discard Changes","textbook":"Book","textbookdescription":"Build books using resources for an interesting learning experience.","course":"Course","coursedescription":"Design courses using collections and resources. Courses are for a duration, to achieve an objective.","lesson":"Resource","lessondescription":"Create different resources like story, game, activity, audio, video, using the inbuilt authoring tools.","collection":"Collection","collectiondescription":"Compile resources of your choice.","lessonplandescription":"Frame lesson plans with structured sections for an efficient learning experience.","lessonplan":"Lesson Plan","contentupload":"Upload Content","contentuploadlarge":"Upload Large Videos (>50 MB)","contentuploaddescription":"You can upload content here.","assessment":"Course Assessment","courseassessment":"CourseAssessment","assessmentdescription":"Create assessments for courses using the in-built authoring tools","contentCaps":"CONTENT","lastupdate":"Last update","statusCaps":"STATUS","flagReview":"Flag Review","pendingSince":"Pending since","deletecontent":"Delete Content","deleteconfirm":"Are you sure to delete this content?","deletepublishedcontent":"Retire Content","deletepublishedconfirm":"Retire myself from the content?","checkListPublish":"Publish","checklistCancel":"Cancel","showFilters":"Show Filters","sortby":"Sort by","designcourse":"Design Course","createtextbook":"Create Book","createlessontext":"Create Resource","createcollection":"Create Collection","createlessonplan":"Create Lesson Plan","createassessment":"Create Assessment","viewCaps":"VIEW","editCaps":"EDIT","authorCaps":"AUTHOR","lastupdatedCaps":"Last Updated","content":"Content","contentLabel":"Content","status":"Status","edit":"Edit","author":"Author","courseName":"Course Name","publhwarng":"You have given some review comments or suggestions, they will be lost if content is published. Do you want to publish?","disablePopupText":"This content can not be deleted","contactStateAdminToAdd":"Please contact your state admin to add more participants to this batch","whatToCreate":"What type of course do you want to create ?","scanningLinkedContent":"Scanning for linked content","linkedContentErrorMessage":"This content cannot be deleted as it is used in the following","additionalCategory":"Additional Category","discussionForum":"Forum"},"prmpt":{"search":"Search","searchContent":"Search content"},"intxt":{"t0006":"Select batch members","t0005":"Select batch mentors","t0007":"Update Batch Details","t0015":"View Batch Details"},"instn":{"t0052":"Please enter description for this announcement (Max: 1200 chars)","t0053":"Enter web url (starting with http or https)","t0054":"Note: At least one of 'Description' or 'URL / weblink' or 'Attachment' must be provided.","t0057":"Please enter relevant title for this announcement (Max: 100 chars)","t0080":"Please wait...Loading comments"},"scttl":{"myworkspace":"My Workspace"},"snav":{"start":"Create","draft":"Drafts","inreview":"Review Submissions","submittedForReview":"Submitted for review","published":"Published","alluploads":"All Uploads","upForReview":"Up For Review","flagged":"Flagged","limitedPublishing":"Limited Publishing","shareViaLink":"Shared via link","allmycontents":"All My Content","flagReviewer":"Flag Review","Collaboratingon":"Collaborations","alltextbook":"All Textbooks"},"lnk":{"coursebacthes":"Course Batches","createdByMe":"Created by me","assignedToMe":"Assigned to me"}},"messages":{"stmsg":{"m0008":"no-results","m0009":"Unable to play, please try again or close.","m0011":"We are fetching draft content...","m0012":"You don't have any draft content...","m0019":"You don't have any content in review...","m0020":"You don't have any batches...","m0021":"We are fetching published content...","m0022":"Submit one of your drafts for review. Content is published only after a review","m0023":"We are fetching uploaded content...","m0024":"Upload a document, video, or any other supported format. You have not uploaded anything yet","m0025":"We are fetching content detail...","m0032":"We are fetching up for review content...","m0033":"Submit one of your drafts for review. You have not yet submitted any content for review","m0034":"We are deleting the content...","m0035":"There is no content to review","m0038":"We are fetching flagged content...","m0039":"You don't have any flagged content...","m0081":"No batches found","m0082":"We are fetching limited published content...","m0083":"You have not shared content with any one yet","m0101":"Please enter a valid url","m0105":"Title is required","m0106":"Title is too long","m0107":"From is required","m0108":"Your Progress","m0109":"Descripton is too long","m0110":"We are fetching all content...","m0111":"Looks like there is nothing to show here. Please go to “Create” to start creating content","m0112":"Content is coming soon","m0113":"Enter valid start date","m0135":"Enter a valid date","m0114":"Name is required","m0115":"We are fetching flagged review content...","m0117":"From is too long","m0123":"Ask a friend to add you as a collaborator. You will be notified of the same via email.","m0124":"We are fetching collaborating content...","m0119":"We are updating batch...","m0125":"Start creating Resource, Book, Course, Collection or Upload. You have no work-in-progress draft at the moment","m0126":"Start creating Resource, Book, Course, Collection or Upload","m0127":"We are fetching all textbooks..."},"emsg":{"m0004":"Cannot preview now. Try again later","m0005":"Something went wrong, please try in some time....","m0006":"Please select recipient(s)","m0011":"Fetching review comments failed","m0010":"Creating review comments failed","m0012":"Something went wrong while saving your preferences. Please go to your profile to save your preferences","m0013":"You don't have permission to edit this content","m0014":"Unable to get channel details","m0015":"Unable to get collection details"},"imsg":{"m0020":"location is removed sucessfully.","m0027":"Hi, this content is not available now. It is likely that the creator has made some changes to the content.","m0037":"To close this resource, save and click the X icon.","m0038":"To close this","m0039":"please save and click on X icon.","m0046":"You can only select 100 participants."},"fmsg":{"m0004":"Fetching data failed, please try again later...","m0006":"Fetching draft content failed, please try again later...","m0007":"Creating lesson failed. Please login again to create lesson.","m0008":"Creating book failed. Please login again to create book.","m0009":"Creating course failed. Please login again to create course.","m0010":"Creating collection failed. Please login again to create collection.","m0012":"Fetching review content failed, please try again later...","m0013":"Fetching published content failed, please try again later...","m0014":"Fetching uploaded content failed, please try again later...","m0015":"Fetching content detail failed, please try again later...","m0019":"Publishing content failed, please try again later...","m0020":"Rejecting content failed, please try again later...","m0021":"Fetching up for review content failed, please try again later...","m0022":"Deleting content failed, please try again later...","m0023":"Fetching flagged content failed, please try again later...","m0024":"Accepting flag failed, please try again later...","m0025":"Discarding flag failed, please try again later...","m0052":"Creating batch failed, please try again later...","m0053":"Adding users to batch is failed, please try again later...","m0054":"Fetching batch detail failed, please try again later...","m0056":"Fetching users list failed, please try again later...","m0064":"Fetching limited published content failed, please try again later...","m0078":"Creating content failed. Please login again to create content.","m0081":"Fetching all content failed, please try again later...","m0083":"Fetching flagged review content failed, please try again later...","m0084":"Fetching collaborating content failed, please try again later...","m0085":"Fetching CSV failed, please try again later...","m0101":"Please provide all the required details","m0102":"Creating QuestionSet failed. Please login again to create QuestionSet..."},"smsg":{"m0004":"Content published successfully...","m0005":"Content rejected successfully...","m0006":"Content deleted successfully...","m0007":"Flag accepted successfully...","m0008":"Flag discarded successfully...","m0033":"Batch created successfully...","m0034":"Batch updated successfully..."}}},"consumption":{"frmelmnts":{"btn":{"addnuserrole":"Add new role","adduserrole":"Add role","closedb":"Close dashboard","activategrp":"Activate","activityDashboard":"Activity Dashboard","add":"Add","addActivity":"Add activity","addEntity":"Add entity","addRemarks":"Add remarks","all":"All","apply":"Apply","back":"Back","botTitle":"Ask Tara","cancel":"Cancel","cancelCapitalize":"Cancel","changePreferences":"Change preference","chksts":"Check status","clear":"Clear","close":"Close","continueLearning":"Continue learning","copyLink":"Copy link","copytoclipboard":"Copy to clipboard","create":"Create","createCourse":"Create course","createNew":"Create new","deactivategrp":"Deactivate group","delete":"Delete","dismissAdmin":"Dismiss as admin","docs":"Docs","download":"Download","downloadAppForLinux":"Download for Ubuntu","downloadAppForWindows32":"Download for Windows (32-bit)","downloadAppForWindows64":"Download for Windows (64-bit)","downloadCertificate":"Download certificate","downloadDesktopApp":"Download Desktop App","downloadInstruction":"See download instructions","dscfrmstrtdscsn":"Start discussion","edit":"Edit","enableDebugMode":"Enable debug mode","enroll":"Join Course","home":"Home","interactive":"Interactive","loadContent":"Load content","login":"Login","makeAdmin":"Make admin","merge":"Merge","next":"Next","no":"No","observeAgain":"Observe again","ok":"OK","previous":"Previous","print":"Print","remove":"Remove","removeMember":"Remove member","reset":"Reset","resume":"Resume","resumecourse":"Resume Course","retry":"Retry","save":"Save","selectCsvFile":"Select .csv file","selectLanguage":"Select language","selrole":"Select role","signin":"Log In","start":"Start","submit":"Submit","submitbtn":"Submit","tryagain":"Try again","unenroll":"Leave course","update":"Update","updateGroup":"Update group","uploadAndUse":"Upload image","uploading":"Uploading","uploadorgscsv":"Upload organization's CSV file","uploadusrscsv":"Upload .csv file","verify":"Verify","video":"Video","viewCourseStatsDashboard":"View course dashboard","viewcoursestats":"View course stats","viewdetails":"View details","viewless":"View less","viewmore":"View more","yes":"Yes","yesiamsure":"Yes, I am sure","upload":"Upload","donotupload":"Do not Upload","smplcsv":"Download sample CSV","seeMore":"See more","seeLess":"See less","browse":"Browse Online","completed":"Completed","desktop":{"shareTelemetry":"Share Telemetry"},"myLibrary":"My Downloads","pause":"Pause","pausing":"Pausing","profile":{"edit":"Edit"},"resuming":"Resuming","loadMore":"Load More","autoCapture":"Auto Capture","exportAs":"Export As","goBack":"Go back","resetFilters":"Reset filters","confirmBtn":"Confirm","requestReport":"Request report","addNew":"Add new","search":"Search","addLogic":"Add logic","confirmAll":"Confirm All","copy":"Copy","copyUrl":"Copy URL","copyId":"Copy ID"},"lbl":{"addNewMember":"Add member","consentsharedetail":"Consent to share details","fromGroup":"from this group","groupDescription":"Enter a description to help members understand the purpose of the group","member":"Member","otpcontactinfo":"Enter OTP to edit your contact information","tryDifferentName":"* type a similar but, different name","ACTIVITY_COLLECTION_TITLE":"Collection","ACTIVITY_COURSE_TITLE":"Courses","ACTIVITY_EXPLANATION_CONTENT_TITLE":"Explanation content","ACTIVITY_PRACTICE_QUESTION_SET_TITLE":"Practice question set","ACTIVITY_PRACTICE_RESOURCE_TITLE":"Practice resource","ACTIVITY_RESOURCE_TITLE":"Resource","ACTIVITY_TEXTBOOK_TITLE":"Textbooks","ACTIVITY_TV_EPISODE_TITLE":"TV Episode","ActivityCourses":"Courses","ActivityLessonPlan":"Lesson Plan","ActivityTextbooks":"Textbooks","AddtoGroup":"Add to group","CCbyLicense":"All content here is licensed under a Creative Commons license (CC-BY 4.0) unless otherwise noted","EnterPassword":"Enter password","InstanceIdProfilename":"The {instance} ID is written just below the profile name.","LastUpdated":"Last updated","MembersInstanceId":"Use the following instructions to guide members to identify their unique {instance} ID:","Mobile":"Mobile","NoSerchGroupMemberResults":"Sorry! There are no results that match your search. To continue your search","OTPhasbeensent":"OTP has been sent","OTPhasbeensentToEmail":"OTP is sent to your email address","OTPhasbeensentToPhone":"OTP is sent to your mobile number","OTPmsgforuser":"You will receive an OTP to verify your mobile number or email address","OTPresendMaxretry":"You can request for an OTP only 4 times. You have to register again","OTPresendMaxretryreached":"Maximum retry limit exceeded","OTPvalid":"OTP is valid for 30 minutes","RecommndationsBasedOnProfile":"Recommendations based on your profile details","SearchIn":"Search in {searchContentType}","SeetheInstanceIDhere":"See the {instance} ID here","Select":"Select","SelectProfileMenu":"Select the profile menu","ShowingActivityResults":"Showing {resultCount} results for {searchString}","TypeToSearchForContent":"Type to search for content. e.g. 'Story'","aboutTheContent":"About the content","accessCourse":"Access course","accessToLogin":"To access the course you have to log in and join the course","accessibilityfntdflt":"Reset to default","accessibilityfont":"Decrease font size","accountRecoveryDescription":"A recovery account helps you to regain access to your account if you are locked out or forget your password. Choose the recovery account type and enter details","activategrp":"Activate group","activategrpques":"Activate group?","active":"Active","activities":"Activities","activityRecommendation":"Recommendations based on your profile details","addAnotherUser":"Add another user","addCertificateText":"Certificate will be issued to users who meet this criteria","addCertificategreaterThan":"Greater than or equal to","addCertificateprogressrule":"Progress rule","addCertificatescorerule":"Score rule","addContentType":"Add {contentType}","addCourse":"Add course","addDistrict":"Add District","addEmailID":"Add Email address","addMember":"Add member","addPhoneNo":"Add Mobile Number","addRecoveryAccount":"Add recovery account","addRecoveryId":"Add Recovery ID","addState":"Add State","addUser":"Add user","addingMembertoGroup":"Where can I see the {instance} ID?","addlInfo":"Additional Information","addnote":"TAKE NOTES","addnuserrole":"Add role","addorgtype":"Add Organization Type","address":"Address","admindshheader":{"blocks":"Block(s)","districts":"District(s)","index":"Serial No.","schools":"School(s)","teachers":"Regd. Teachers"},"administrator":"School head OR Officials","agreeCourseToc":"I accept {instance}'s","agreeGroupToc":"I agree to {instance}'s","agreeToShareDetails":"I consent to share my details with the administrators of this course. All course administrators are bound by the Privacy Policy and Course Terms in their use of my data.","allContent":"All content","allDownloads":"All downloads will automatically be added to","allImages":"All images","anncmnt":"Announcement","anncmntall":"All Announcements","anncmntcancelconfirm":"Are you sure you want to stop showing this announcement?","anncmntcancelconfirmdescrption":"Users will not be able to see this announcement after this action","anncmntcreate":"CREATE ANNOUNCEMENT","anncmntdtlsattachments":"Attachments","anncmntdtlssenton":"Sent on","anncmntdtlsweblinks":"Weblinks","anncmntinboxannmsg":"Announcements","anncmntinboxseeall":"See All","anncmntlastupdate":"Consumption data last updated on","anncmntmine":"My Announcements","anncmntnotfound":"No announcement found !","anncmntoutboxdelete":"Delete","anncmntoutboxresend":"Resend","anncmntreadmore":"... Read More","anncmntsent":"Showing all sent announcements","anncmnttblactions":"Actions","anncmnttblname":"Name","anncmnttblpublished":"Published","anncmnttblreceived":"Received","anncmnttblseen":"Seen","anncmnttblsent":"Sent","appUpdateAvailable":"New update available!","appUpdateDescription":"Click on the link to get the new version of the desktop app","appliedFilters":"Applied filters","assetCaption":"File name","attributions":"Attributions","enterOTPByParent":"Parent/guardian should enter the OTP","tncLabelForMinor":"As a parent/guardian I understand & ","tncLabelForMinorSub":"agree my child to register on {instance} with the given information.","tncAcceptLabel":"accept the {instance} Terms of Use","tncLabelForMajor":"I am 18+ years old and understand and ","welcomeToInstance":"Welcome to {instance}","haveaccount":"Already have an account?","audience":"Audience","author":"Author","authorofsourcecontent":"Author of Source Content","availableBatches":"Available batches","availableForContribution":"Available for contribution","avscore":"Average of best assessment scores: {score}","badgeassignconfirmation":"Are you sure you want to issue the badge to this content?","bannerTitle":"Featured","basedOnPref":"Filters matching  your profile details","batch":"Batch","batchReportUpdateNote":"Last updated on {date}","batch_name":"Batch name","batchdescription":"DESCRIPTION OF BATCH","batchdetails":"Batch Details","batchenddate":"End date","batches":"Batches","batchstartdate":"Start date","bestScoreattempt":"Best attempt score","bestscore":"Best score {score}","birthdate":"Birthdate (dd/mm/yyyy)","block":"Block","blocked":"Blocked","blockedUserError":"The user account is blocked. Contact administratorn","boardRequired":"You have to select a State","browse":"Online library","browserSuggestions":"For an improved experience, we suggest that you upgrade or install","canEditProfileDetails":"You can edit these details from your profile page","captchaValidationFailed":"Failed to validate your details","cert":"Reissue certificates","certcriteria":"Certificate criteria","certgivenby":"Certificate given by","certificateIssuedTo":"Certificate issued to","certificateNameUpdate":"Do not show this message again","certificates":"Certificates","certificatesIssued":"Certificates Issued","certificationAward":"Certifications & Awards","certissuedon":"Certificate issued date","change":"Change","channel":"Channel","chapter":"Chapter","charError":"Password must contain at least 8 alphanumeric characters.","characterleft":"Characters remaining","chartSummary":"Chart summary","checkSpelling":"* check your spelling","checkYourSpelling":"*check your spelling","chkuploadsts":"Check Upload Status","chooseAll":"Choose All","chooseImageNote":"Choose or drag and drop your image here *","chooseImageSize":"File size:  < or = 50KB","chooseImageType":"File type: *.png","chooseImagedimensions":"Dimensions:","class":"{frameworkCategory3}","classRequired":"You have to select a class","classes":"{frameworkCategory3}","clickHere":"Click here","clickOnProfileIcon":"Click on the profile icon on the header","cluster":"Cluster","collapseAll":"Collapse all","comingSoon":"Coming soon","communicationConsole":"Communication console","completeContentToUnlock":"Complete {count} more contents to unlock a new achievement","completeForCertificate":"Complete all the modules to get a certificate","completed":"Completed","completedCourse":"Courses completed","completingCourseSuccessfully":"For successfully completing the course,","confirmPassword":"Confirm Password","confirmblock":"Are you sure to Block","congratulations":"Congratulations!","contactStateAdmin":"Contact your state admin to add more participants to this batch","content":{"AUTHOR":"Author","BOARD":"Board","CLASS":"Class","CREATEDON":"Created on","ContentInformation":"Content information","CreatedOnBy":"Created on {instance} by","DESCRIPTION":"Description","KEYWORDS":"Keywords","LASTUPDATEDON":"Last updated on","LicenseTerms":"License terms","MEDIUM":"Medium","RESOURCETYPE":"Resource type","SUBJECT":"Subject","COPYRIGHT":"COPYRIGHT"},"contentCredits":"Content Credits","contentLabel":"Content","contentType":"Content type","contentcopiedtitle":"This content is derived from","contentinformation":"Content Information","contentname":"CONTENT NAME","contentsLabel":"Contents","contenttype":"Content","continue":"Continue","copy":"Copy","copyAsCourse":"Copy as course","copyRight":"Copyright","copycontent":"Copying content...","copyrights":"Copyrights and License:","country":"Country","countryCode":"Country code","course":"Course","courseContainCertificate":"This is a certificate course","courseCreatedBy":"Created by","courseCredits":"Credits","courseDetails":"Course details","courseDontContainCertificate":"Currently, this course does not have a certificate. The course creator may attach a certificate later.","courseGuidelines":"Course Terms","courseLastUpdatedOn":"Course last updated on","courseProgress":"Course progress","courseRelevantFor":"The course is relevant for:","courseSuccessMessage":"You have successfully completed the course","courseSuccessNotificationMessage":"You will be notified about the course certificate on your registered contact details within 7 days","courseToc":"You have to agree to course's guidelines before you proceed","courseWithoutCertificateNote":"Note: This course does not have a certificate","coursebatchenddate":"Batch end date","coursebatchstartdate":"Batch start date","batchStatus":"Batch status","coursecompletiondate":"Course completion date","coursecreatedon":"Created on","courses":"Courses","coursestructure":"Course modules","createGroup":"Create group","createGroupDes":"You are just a step away from creating a group","createUser":"Add user","createUserSuccessWithEmail":"Your email address is verified. Log in to continue","createUserSuccessWithPhone":"Verification successful. Login to continue","createdInstanceName":"Created on {instance} by","createdon":"Created On","creationdataset":"Creation","creator":"Creator","credits":"Credits","creditsLicenceInfo":"Credits & license info","current":"Current","currentlocation":"Current location","curriculum":"Curriculum","dashBoardTitle":"Dashboard","dashboard":{"action":"Action","description":"Description","download":"Download","downloadfile":"Download file","fileName":"File name","fileSize":"File size"},"dashboardcertificateStatus":"Certificate Status","dashboardfiveweeksfilter":"LAST 5 WEEKS","dashboardfourteendaysfilter":"LAST 14 DAYS","dashboardnobatchselected":"No batch selected","dashboardnobatchselecteddesc":"Select a batch to proceed","dashboardnocourseselected":"No course selected","dashboardnocourseselecteddesc":"Select a course from the list","dashboardnoorgselected":"No organization selected!","dashboardnoorgselecteddesc":"Select an organization to proceed","dashboardselectorg":"Select Organization","dashboardsevendaysfilter":"LAST 7 DAYS","dashboardsortbyenrolledon":"Enroled On","dashboardsortbystatus":"Status","dashboardsortbyusername":"User Name","dataDictionary":"Data Dictionary","dataSetting":"Profile data sharing","dataShareOffNote":"You have not agreed to share your profile details with the course administrator","dataShareOnNote":"You have agreed to share your profile details with the course administrator","dataSharingIs":"Profile data sharing is","datasetExamples":"Dataset Examples","deactivategrp":"Deactivated","deactivategrpques":"Deactivate group?","debugModeTitle":"Developer options","defaultstar":"Tap on stars to rate the content","delete":"Delete","deleteConfirm":"Are you sure you want to delete this entity?","deleteGroup":"Delete group","deleteUser":"Delete user","deletenote":"Delete Note","description":"Description","desktop":{"Suggestions":"Suggestions","SuggestionsText1":"Make sure that all words are spelt correctly","SuggestionsText2":"Try different keywords","SuggestionsText3":"Try more general keywords","about_us":"About {instance}","app":"{instance} Lite Desktop App","authorOfSourceContent":"Author of source content","board":"by {board}","content":"Content","creditsAndLicenceInfo":"Credits and Licence information","deleteBook":"Delete textbook","deleteCollection":"Deleting {name} textbook removes it from My Downloads. Click Delete to continue.","deleteContent":"Deleting {name} content removes it from My Downloads. Click Delete to continue.","downloadBook":"Download textbook","explore":"Explore more content","failedListLabel":"Could not download or import file(s). Remove unwanted files from your computer and try again","find_more":"Find more textbooks and content on {instance}","lastShared":"Last shared","lowMemory":"The app may be slow as your computer has low memory","notMatchContent":"did not match any content","storageSpaceRunningOutHeader":"Insufficient storage space","update":"Update {instance} desktop","updateAvailable":"New version update available","updateTextbook":"Update textbook","mylibrary":"My Downloads","Off":"Off","TotalSize":"Total size:","allDownloads":"All downloads","alwaysOn":"Always on","automaticSyncTelemetry":"Automatically sync telemetry","filesImported":"Files imported","importNewFile":"Import new file","lastSynced":"Last synced:","syncTelemetry":"Sync telemetry","telemetry":"Telemetry","termsOfUse":"Terms of Use","waitingForImport":"Waiting for import","yourSearch":"Your search for - \"{key}\"","deleteCourse":"Deleting {name} course removes it from My Downloads. Click Delete to continue."},"desktopAppDescription":"Install {instance} desktop app to explore downloaded content or to play content from external devices. {instance} Desktop App provides","desktopAppFeature001":"Free unlimited content","desktopAppFeature002":"Multilingual support","desktopAppFeature003":"Play content offline","detailedWiseReport":"Detailed report","dialCode":"QR code","dialCodeDescription":"QR code is the 6 digit alphanumeric code found beneath the  QR code image in your text book","dialCodeDescriptionGetPage":"QR code is the 6 digit alphanumeric code found beneath the  QR code image in your text book.","dikshaForMobile":"DIKSHA for Mobile","dismissWarning":"Dismissing {memberName} as group admin removes admin permissions from the member","district":"District","dob":"Date Of Birth","done":"Done","dontShare":"Do not share","downloadAppLite":"Download {instance} Lite Desktop App","downloadAppOtherversions":"Other versions","downloadAppRecommended":"Recommended for your PC","downloadAsCSV":"Download as CSV","downloadBooks":"Download books to access while offline","downloadCourseQRCode":"Download Course QR Code","downloadCsv":"Download data CSV","downloadDikshaForMobile":"Download DIKSHA for Mobile","downloadQRCode":{"tooltip":"Click to download QR codes and link them to the published course"},"downloadSectionNote":"Downloads section(Latest 10 reports)","drive":"Pendrive or External Drives","dropcomment":"Add a comment","dscfrmctgries":"Categories","dscfrmdiscssions":"Discussions","dscfrmforum":"Discuss","dscfrmmydisc":"My discussions","dscfrmpstqtn":"Ask a question or post an idea","dscfrmviews":"Views","dsfrmcnfrmemail":"This is my official email address","dsfrmdob":"Date of Birth (dd - mm - yyyy)","dsfrmemail":"Primary email address","dsfrmpincode":"Pin code","dsfrmpostaladd":"Postal address","duplicateEmailAddress":"This email address is the same as that linked to your profile","duplicatePhoneNumber":"This mobile number is the same as that linked to your profile","ecmlarchives":"Ecml Archives","edit":"Edit","editGroup":"Edit group details","editPersonalDetails":"Edit Personal Details","editProfileInfo":"You can edit this information from your profile","editSetting":"Update","editUserDetails":"Edit details of the User","education":"Education","email":"Email address","emailAddress":"Email address","emailId":"Email address","emailPhonenotRegistered":"Email address / Mobile number is not registered with {instance}","emailVerfied":"Email verified","emptycomments":"No comments","enddate":"END DATE","enjoyedContent":"Enjoyed this content?","enrollcourse":"Join Course","enrollmentenddate":"Enrolment end date","enterCertificateCode":"Enter the certificate code here","enterDialCode":"Enter QR code","enterEmail":"Enter email address","enterEmailID":"Enter email address","enterEmailPhoneAsRegisteredInAccount":"Enter email address/mobile number registered with {instance}","enterFollowingInfo":"Enter the following information","enterGroupName":"Enter group name","enterInstanceId":"Enter {instance} ID","enterName":"Enter name","enterNameNotMatch":"The entry does not match the name registered with {instance}","enterOTP":"Enter OTP","enterPhoneNumber":"Enter mobile number","enterQrCode":"Enter QR code","enterUUID":"UUID","enterValidCertificateCode":"Enter a valid certificate code","enterValidName":"Enter a valid name. Only alphabets are allowed.","enternameAsRegisteredInAccount":"and the name as on the {instance} account","epubarchives":"Epub Archives","errorConfirmPassword":"Passwords do not match","errorMessage":"Error message","errorMsg":"To copy the error to a text editor, click the copy to clipboard button","errorWhileGeneratingTicket":"There was a technical error, try again later","errorinupload":"Error while uploading users","expandAll":"Expand all","experience":"Experience","expiredBatchWarning":"Batch has ended on {EndDate}, therefore your progress will not be updated.","expiredbatch":"Expired batch","explore":"Explore","exploreContentOn":"Explore content on {instance}","explorecontentfrom":"Explore content from","exprdbtch":"Expired Batches","externalId":"External Id","failres":"Failure Results","fetchingContentFailed":"Failed to fetch content. Try again later.","fetchingSchools":"Please wait while we fetch schools","fieldsmarked":"Fields marked with an asterisk (","fileUploadSuccessMessage":"File uploaded successfully. Record status will be updated within 24 hours. To view the updated values, download the file using the <b>Download User Details</b> button","filterContentBy":"Filter content by","filterby":"Filter by","filters":"Filters","first":"First","firstName":"First name","flaggedby":"Flagged by","flaggeddescription":"Flagged Description","flaggedreason":"Flagged reason","for":"for","forDetails":"For details","forSearch":"for {searchString}","forceSync":"Sync progress now","forceSyncsuccess":"You can view your updated course progress within 24 hours","frequentlyAskedQuestions":"Frequently asked questions","fromTheTextBook":"from the textbook","fullName":"Full name","gender":"Gender","generateOtpFailed":"Failed to generate OTP. Try again later","getOTP":"Get OTP","getStarted":"Get started","getUnlimitedAccess":"Get unlimited access to textbooks, lessons and courses offline on your mobile phone","goBackToClassicTheme":"If you want to change the theme, go to your profile and switch theme","goToHelpCenter":"Go to Help Center","goToMyDownloads":"Go to My Downloads to find this content","goback":"To cancel","graphNotAvailable":"This report does not have graphs","graphStat":"Graph Statistics","graphs":"Graphs","group":{"viewActivity":"View activity"},"groupCreatedBy":"Created by : {name}","groupGuidelines":"Group guidelines","groupGuidelinesold":"Terms and conditions","groupName":"Group name","groupNameRequired":"You have to enter the group name","groupToc":"You have to agree to {instance}'s group guidelines before you proceed","groupWelcomeMsg":"Create a group or be a part of one to connect with people, share activities, review progress and explore other possibilities","groupWelcomeTitle":"Have you explored the potential of groups yet?","h5parchives":"H5p Archives","haventFoundAnyOtherissue":"Haven't found what are you looking for?","hi":"Hi","homeUrl":"Home Url","htmlarchives":"Html Archives","iAmStateTeacher":"Submit details","iam":"I am a","imageDrapAndDrop":"Upload the file before you enter asset details","imagecontents":"Image Contents","import":"Download books to access while offline","improveYourExperience":"Improve your experience","inAll":"in \"all\"","inProgress":"In progress","inUsers":"in users","inactive":"Inactive","incompatibleBrowser":"You seem to have an incompatible browser or browser version","indPhoneCode":91,"instacnceId":"{instance} ID","installApp":"Install app","installAppDesc":"Store lessons, textbooks and content offline on your device","installAppFree":"Free","installAppPlayStore":"Available on Play Store","installAppTitle":"{instance} - National Teachers Platform for India","instanceId":"{instance} ID","isRootOrg":"Is RootOrg","issueReportedSuccessfuly":"Issue reported successfully","issueReportedSuccessfulySubNote":"Note: Your issue will automatically be sent to {instance} when you are online","itis":"It is","join":"Join","joinTrainingToAcessContent":"You must join the course to get complete access to content","joyThemeText":"For joyful learning, we have redesigned our platform making it easier for you to find contentn","keywords":"Keywords","lang":"Language","language":"Language(s) known","last":"Last","lastName":"Last name","lastUpdatedOn":"Last updated on","lastupdate":"Last update","learnerPassbook":"Learner passbook","learners":"Learners","leaveGroup":"Leave group","leaveGroupWarning":"This action cannot be undone. Do you want to leave {groupName}","lessonPlan":"Lesson Plan","library":"Online library","licenseTerms":"License terms","linkCopied":"Link copied","linkedContents":"Linked contents","loadContentFrom":"Load content from","location":"Location","lockPopupTitle":"{collaborator} is currently working on {contentName}. Try again later.","loginToCreateGroup":"The first step towards creating your own group, study circle or classroom is to log in","makeAdmin":"This action will give {memberName} group admin permissions","manage":"Manage","manageLocation":"Manage location","manageuser":"Manage user","mandatory":") are mandatory","markas":"Mark as","meantFor":"Intended for","mediaType":"Media type","mediumRequired":"You have to select a medium","memberVerificationMsg":"You have to check that the member's name and {instance} ID match, before you proceed","members":"Members","mentors":"Mentors","mergeAccount":"Merge Account","mobileEmailInfoText":"Enter your mobile number or email address to log in on DIKSHA","mobileNumber":"Mobile Number","moduleFinish":"You have completed this module","moduleProgress":"Module progress","more":"more","myBadges":"My badges","myEnrolledCollections":"Continue Learning","myImages":"My images","myLearning":"My learning","mynotebook":"My Notebook","mynotes":"My Notes","mytrainings":"My courses","name":"Name","nameRequired":"You have to enter a username","nameUpdateConfirmation":"This name will be printed on your course certificate. Check if it is correct.","newCourse":"New courses","newLookAndFeel":"{instance} has got a new look and feel.","next":"Next","nextModule":"Next module","noBookfoundButtonText":"See more books and contents","noContentToPlay":"No content to play","noContentfoundButtonText":"Explore more content","noCreditsAvailable":"No credits available","noDataAvailable":"No data available","noDataFound":"No data found","noDataInTable":"You have not requested any reports yet","noMatchingMember":"Sorry! There are no results that match your search. To continue your search","noMatchingRecordFound":"There are no participants in this batch","noProgress":"Progress cannot be tracked for {type}","noThankYou":"No thank you","noofEnrolments":"No. of enrolments","notRecommended":"If you have completed the course previously, we do not recommend that you join the batch. If you do, your learning history and certificates will be reset.","notShareProfileDetails":"Do not share my profile details","note":"Note:","notifnumber":"{Number} new notification(s)","observation":"Observation","observationForm":"Observation form","off":"Off","on":"On","onDiksha":"on {instance} on","onboardingscreenheading":"Choose content preference","oneCourse":"Course","oneTimePassword":"One Time Password (OTP)","ongoing":"Ongoing","open":"Open","opndbtch":"Open Batches","or":"or","orgCode":"Org Code","orgId":"OrgId","orgName":"Org Name","orgType":"Org Type","orgname":"Organization Name","orgtypes":"Organization Type","originalAuthor":"Original Author","other":"Other","otpMandatory":"OTP is mandatory","otpSentTo":"OTP has been sent to","otpValidationFailed":"Failed to validate the OTP","parent":"Parent","parentOrGuardian":"of your parent or guardian","participants":"Participants","passwd":"Your password must contain a minimum of 8 characters. It must include numerals, lower and upper case alphabets and special characters, without any spaces.","passwderr":"Your password and username cannot be the same","password":"Password","pdfcontents":"Pdf contents","phone":"Mobile number","phoneNumber":"Mobile Number","phoneOrEmail":"Enter mobile number or email address","phoneRequired":"Mobile number is required","phoneVerfied":"Mobile number verified","phonenumber":"Mobile Number","pincode":"Pin Code","play":"PLAY","playContent":"Play Content","playVideo":"Play video","pleaseValidateYour":"You must validate your","plslgn":"This session has expired. Login again to continue using {instance}.","position":"Position","preferenceCanBeUpdated":"You can edit this user's details from the Profile page","preferredLanguage":"Preferred Language","prevModule":"Prev. module","previous":"Previousn","privacyPolicy":"Privacy Policy","processid":"Process ID","profile":{"selectDistrict":"Select district","Board":"Board","Classes":"Classes","District":"District","Medium":"Medium","State":"State","Subjects":"Subjects","selectBoard":"Select Board","selectClasses":"Select Classes","selectMedium":"Select Medium","selectState":"Select State","selectSubjects":"Select Subjects","updatePreferenceHeader":"To discover relevant content, update details","yourLocation":"Your Location","yourLocationHeader":"Your location details help us suggest content that is useful to you. Is the location given correct? if not, select your correct location and click Submit"},"profileDetails":"Profile details","profileNameConfirmations":"Confirm profile name","profilePopup":"To discover relevant content update the following details:","profileTab":"Click the Profile tab","profiledetails":"Content preference","provideDetails":"Provide details to register on {instance}","provideTeacherDetails":"Required details","provider":"OrgProvider","pswdRule":"Your password should be 8 characters, alphanumeric, and without special characters or spaces. Remember your password, as you will require the same password to view the generated report.","publishedBy":"Published by","publishedOnInstanceName":"Published on {instance} by","publishedUserType":"Published user type","publisher":"Publisher","questionBank":"Question bank","reEnterPassword":"Re-enter the password","re_issue":"Reissue certificate","readless":"Read Less ...","readmore":"... Read More","receiveOTP":"Where would you like to receive the OTP?","recentlyPublishedCourses":"Recently published courses","recoverAccount":"Recover Account","redirectMsg":"This content is hosted outside","redirectWaitMsg":"Wait while the content loads","refreshedDaily":"Refreshed daily","register":"Register","registerOn":"Register on {instance}","followingdetails":"Please re-enter the following details","reissue":{"criteriaMet":"Criteria met"},"releaseDateKey":"Release date","removeActivity":"Remove activity","removeAll":"Remove All","removeWarning":"Removing {memberName} permanently removes him/her from the group","repgenAdminNote":"It takes a minimum of 24 hours to generate the requested report. The administrators of this course are responsible for the privacy and security of the user's profile information. They have to ensure that the information is used only in accordance with {instance_course_terms}:","reportAnIssue":"Report an issue","reportOtherIssue":"Report another issue","reportStatus":"The request for this report is being processed. For details, check the downloads section","reportSummary":"Report summary","reportUpdatedOn":"This report was last updated on","reques":"Request","request":"Request","requestFailed":"Request for report failed","requestReport":"Request report","requiredField":"You have to enter {field}","resendOTP":"Resend OTP","resentOTP":"OTP has been resent. Enter OTP.","retired":"Retired","returnToCourses":"Return to Courses","role":"Role","roles":"Roles","rootOrg":"Root org","sameEmailId":"This email address is the same as that linked to your profile","samePhoneNo":"This Mobile Number is the same as what is linked with your profile","saveToPenDrive":"Save to pen drive","school":"School","schoolId":"School ID","schoolName":"School or Org name","schoolTeacherId":"Your State, Board, or Org ID","schoolUdiseId":"School UDISE ID/ Org ID","search":"Search","searchForContent":"Enter QR code","searchForGroupMembe":"Search for a group member","searchForGroupMember":"Search for group member","searchOrQr":"Search or enter QR code","searchUser":"Search user","searchUserName":"Search for participants","searchWithinGroup":"Search within group","section":"Section:","sectionTitle":"Courses","seeless":"See less","seemore":"See more","selectActivity":"Select activity","selectAll":"Select all","selectBatch":"Select batch","selectBlock":"Select Block","selectChapter":"Select Module","selectContentFromCourse":"Select contents for course","selectContentType":"Select content type","selectDistrict":"Select district","selectEntity":"Select entity","selectImage":"Select image","selectPublisher":"Select publisher","selectSchool":"Select School","selectState":"Select State","selected":"Selected","selectreason":"SELECT A REASON","selfDeclaredDetails":"Details of users who have given consent to share their information","selfDeclaredInfo":"My details","sesnexrd":"Session Expired","setRole":"Edit user","share":"Share","shareProfileDetails":"Share my profile details","sharelink":"Share using  the link -","showLess":"Show less","showingResults":"Showing results","showingResultsFor":"Showing results for {searchString}","showingResultsForWithCount":"Showing {resultCount} results for","showingrecord":"Showing {count} of","signUp":"Register","signinenrollTitle":"Log in to join this course","similarButDiffName":"*type a similar but, different name","skillTags":"Skill Tags","sltBtch":"Select a batch to proceed","sortby":"Sort by","startExploringContent":"Enter a QR code to start exploring content","startExploringContentBySearch":"Explore content using QR codes","startLearning":"Start learning","startdate":"START DATE","started":"Started","state":"State","stateRecord":"As per state records","stateVerified":"State verified user","stateWiseReport":"Summarised report","stateorg":"State/organisation","status":"Status","step1":"Step 1:","step2":"Step 2:","step3":"Step 3:","student":"Student","subRole":"Sub-role","subjectRequired":"You have to select a subject","submit":"Submit","submitIssueButton":"Submit Issue","submitOTP":"Submit OTP","successres":"Success Results","summary":"Summary","summaryReportNote":"Summarized reports contain data from Sept. 6, 2020, onwards. If you need prior data, you may place a request for a detailed report","summaryReportUpdateNote":"This report is updated once in 24 hours.","supportedLanguages":"Supported languages","switchLayout":"Switch layout","switchToJoyLayout":"Switch to joyful theme","switchToOldLayout":"Switch to classic theme","switchUser":"Change user","tableNotAvailable":"Table view is not available for this report","table":"Tables","takenote":"TAKE NOTES","tcfrom":"From","tcno":"No","tcto":"To","teacher":"Teacher","teacherDetailsTnc":"I agree to share these details with the Administrators of {instance} as per the","teachingResource":"Teaching resources","tellUsMoreAboutProblem":"Tell us more about the problem you faced","tenDigitPhone":"10 digit mobile number","termsAndCond":"Terms and Policies","termsAndCondAgree":"I agree to the updated terms and policies","termsOfService":"terms of services","textbooks":"Digital textbooks","thankyouForSubmittingDetails":"Thank you for submitting your details","theme":"Theme","title":"Title","tncLabel":"I understand and accept the","tncLabelLink":"{instance} Terms of Use","toTryAgain":"to try again","toYourEmailPhone":"to < email address/mobile number >","topics":"Topics","totalBatches":"Total batches till date","totalCompletions":"Total completed till date","totalCompletionsCourse":"Total completions","totalEnrollments":"Total enrollment till date","totalEnrolments":"Total enrolment as on date","totalrecords":"{total} records","trainingAttended":"Courses attended","tryNewTheme":"Try new theme","tvProgram":"TV classes","typeHere":"Type here","unableToUpdateEmail":"Unable to update email address?","unableToUpdateMobile":"Unable to update Mobile Number?","unableToVerifyEmail":"Unable to verify email address?","unableToVerifyPhone":"Unable to verify your mobile number?","unenrollMsg":"Do you want to unenrol from this batch?","unenrollTitle":"Batch Unenrolment","uniqueEmail":"Your email address is already registered","uniqueEmailId":"This email address is already registered. Enter another email address","uniqueMobile":"This mobile number is already registered. Enter another mobile number.","uniquePhone":"This mobile number is already registered","updateDetails":"Update details","updateEmailId":"Update Email address","updatePhoneNo":"Update Mobile Number","updateRecoveryId":"Update Recovery ID","updateSetting":"Update settings","updatedon":"Updated on","updateorgtype":"Update Organization Type","upldfile":"Uploaded File","uploadFileError":"You can only upload a <b>.csv</b> file","uploadValidationStatus":"Upload validation status","uploadcsvfile":"Upload CSV file","uploadingValidationStatusHeader":"Update validation status for self-declared user information","uploadlicense":"I understand and confirm that all resources and assets created through the content editor or uploaded on the platform shall be available for free and public use without limitations on the platform (web portal, applications and any other end-user interface that the platform would enable) as per platform policy guidelines. In doing so, I confirm that the copyright and license of the original author are not infringed.","uploadmsg":"Upload the CSV file in the required format","useInstanceAs":"Use {instance} as","userDistrict":"User district","userFilterForm":"Search for participants","userID":"UserId","userId":"User ID","userType":"User Type","userrole2":"Search and add user role","userrole4":"Details of users who have consented to share information. Use of downloaded data is governed by {instance}'s administrator guidelines","validDescription":"Enter valid description","validEmail":"Enter a valid email address","validFor":"valid for 30 min","validPhone":"Enter a valid 10 digit mobile number","validate":"Validate","verifying":"Verifying","verifyingCertificate":"Verifying your certificate","versionKey":"Version","videos":"Videos","view":"View","viewInBrowser":"View in browser","viewless":"View less","viewmore":"View more","whatInstanceId":"What is {instance} ID ?","whatsQRCode":"What is a QR code?","whatwentwrong":"What went wrong?","whatwentwrongdesc":"Let us know what went wrong. Mention the exact reasons so that we review this as soon as possible and address this issue. Thank you for your feedback!","willsendOTP":"You will receive an OTP. After you validate it, you can recover your account","with":"with","wrongEmailOTP":"You have entered an incorrect OTP. Enter the OTP received on your Email ID. The OTP is valid only for 30 minutes.","wrongPhoneOTP":"You have entered an incorrect OTP. Enter the OTP received on your mobile number. The OTP is valid only for 30 minutes.","year":"Year","yearOfBirth":"Select year of birth","yetToStart":"Not started","yop":"Year of Passing","you":"You","youAre":"Discover content as","leavePage":"Are you sure, you want to leave this page?","collectionRelevantFor":"The collection is relevant for","exploretitle":"Explore {searchString}","exploredescription":"Explore {searchString} from all the {frameworkCategory1}s and {frameworkCategory2}s on","selectAdditionalCategory":"Select Additional Categories type","yearOfBirthHeader":"Year of birth","updateChartSummary":"Update Chart Summary","disableDiscussionForum":"Disable discussions","discussionForum":"Forum","enableDiscussionForum":"Enable discussions","wishToShareDataWith":"I wish to share my data with","selectFilters":"Select Filters","selectFilterDescription":"(This will apply for all the chart sections)","stillCouldntFind":"Still couldn't find what you are looking for? Please visit","nameUpdateConfirmatio":"This will be your {instance} profile name in the course certificates please make sure your name is correct.","stateValidationDetails":"These details may be made available to your declared State to validate and follow progress.","fetchingBlocks":"Please wait while we are fetching blocks","okGotIt":"OK Got it","additionalCategory":"Additional Category","additionalCategories":"Additional Categories","errorTypeMsg":"Error Type Message","contentsUploaded":"Contents are being uploaded","anncmntplzcreate":"Please create announcement","downloadReqNote":"Note: Each download request would take about 24 hours to generate","ondemandReportNote":"Administrators are responsible for the security of the profile information of users and to ensure that it is used only in accordance with the {instance} Course Terms.","contactDetails":"Your contact details","nonCustodianTC":"I consent to providing my Profile Details and the additional details listed above with the administrators of my State / Institution. All administrators on {instance} are bound by the Privacy Policy and Administrator Guidelines in their use of my data.","userName":"User name","mobileNo":"Mobile No","uploadAndUse":"Upload and use","uploadSignature":"Upload Signature","editCertificateTitle":"Edit certificate template","saveAndPreview":"Save and Preview","createAndUseTemplate":"Create and Use template","certificateTitle":"Certificate title","certificateTitleNote":"This is what will be printed on the certificate as the main title that we see in blue","stateDetails":"State details","stateGovNote":"The name (e.g. Government of State State government etc.) that will be printed above the certificate title","stateLogo1":"State logo 1","stateLogo2":"State logo 2","browseImage":"Browse","imageFormat":"Format: *.png Dimenions: 88px * 88p Size: <= 10KB","signatory":"Authorized signatory","signature1":"Signature 1","signature2":"Signature 2","signImageFormat":"Format: *.png Dimenions: 112px * 46p Size: <= 10KB","signatureDesignation1":"Signature 1 designation","signatureDesignation2":"Signature 2 designation","signatureNote":"The designation of the authorised signatory is printed below the signature","uploadTermsAndCondition":"All the elements and attributes are throughly verified","certTemplatePreview":"Certificate template Preview","refresh":"Refresh","chooseLayout":"Choose layout","saveAsTemplate":"Save as template","notification":"Notification","newNotification":"New Notification (s)","noNotificationsToDisplay":"No notification(s) to display","selectMeantFor":"Select meant for","copyid":"Copy {instance} ID","selfAssessLastAttempt":"This is the last remaining attempt","selfAssessMaxAttempt":"You have exceeded the maximum number of attempts that can be submitted","accessibilitytskip":"Skip to Main Content","accessibility":"Accessibility Corner","accessibilitytext":"Site Map","accessibilitytextsize":"Increase font size","accessibilitytheme":"Dark mode/Normal mode","skiptomaincontent":"Skip to Main Content","screenreader":"Screen Reader Access","sitemap":"Site Map","aminus":"A-","a":"A","aplus":"A+","accessible":"Accessible","cancelDownload":"Cancel the download?","cancelUpload":"Cancel the upload?","chooseContentLocationDrive":"Select a location for the content :","contentManager":"Content Manager","currentLocation":"Current location","deviceId":"Device ID","downloadFailed":"Download failed. Try again","downloadPaused":"Download paused. Click resume to continue","downloading":"Downloading","downloadingContent":"Preparing to download {contentName}...","downloadingPaused":"Downloading paused","exportingContent":"Preparing to copy {contentName}...","faqheader":"Frequently asked questions (FAQs)","helpUsRatingContent":"Help us by rating this content","howToUseDiksha":"How to use {instance} desktop app","learn_more":"Learn more about how to use {instance}","maxCpuLoadWaring":"There may be some unused processes running in the background. Close them to improve application speed","noResultFoundFor":"No results found for \"{query}\" in","offline":"You are offline","online":"You are online","recommended":"Recommended","searchContent":"Type text to search for content. e.g. 'Story'","selectDrive":"Select drive","showingResultsForwithCount":"Showing {count} results for \"{searchString}\" from","uploadContent":"Upload content","uploadEcarFromPd":"Upload {instance} files (eg: MATHS_01.ecar) from your pen drive","uploadFailed":"Upload Failed. Try again","uploadPaused":"Upload paused. Click resume to continue","uploading":"Uploading","useThis":"Use this:","waitingForDownload":"Waiting to download","waitingForUpload":"Waiting to upload","watchVideo":"See video","BatchExpiringIn":"Batch expiring in","createObserveAgain":"Are you sure you want to create an observation instance ?","observationDetails":"Observation Details","deleteSubmission":"Are you sure you want to delete this observation instance?","instanceName":"Instance Name","notstarted":"Not started","updateprofilecontent":"Please update your profile","uploadevidencetitle":"Upload Evidence","uploadevidencecontent":"I have made sure that I do not violate others’ copyright, privacy or third party rights.","evidence_content_policy":"I confirm that the Content submitted by me comply with the terms and policies of {instance}, including","evidence_content_policy_label":"{instance} Content Policy","updateProfileTitle":"Update Profile","updateProfileContent":"Please update your profile","home":"Home","yourPreferences":"Your preferences","changePreferences":"CHANGE PREFERENCE","browseBy":"Browse by","suggested":"Suggested","successfullySaved":"Your Form has been saved successfully!","failedToSave":"Failed to save the form!","successfullySubmitted":"Your form has been submitted successfully!","submissionFailed":"Failed to submit the form!","saveConfirm":"Are you sure you want to save this form?","submitConfirm":"Are you sure you want to submit the form?","confirmBackClick":"Are you sure you want to refresh / leave the page?","uploadTermsRejected":"You cannot upload evidences, please agree the content policies and try again","evidenceUploaded":"Evidence uploaded","fileLimitCross20":"Can not upload file more than 20MB.","confirmEvidenceDelete":"Are you sure you want to delete the attachment?","sectionName":"Section name","enterResponse":"Enter your response","lastModifiedOn":"Last modified on","serialno":"Serial No","latestSubmission":"Latest Submission","enableDebugMode":"Enable Debug Mode","question":"Questions","criteria":"Criteria","selectquestionfilter":"Select Questions  to filter","selectcriteriafilter":"Select Criteria  to filter","evidences":"All Evidence","remarks":"Remarks","lastSubmittedOn":"Last Submitted On","targetCategory":"Categories","browseOther":"Browse Other","notApplicable":"Not Applicable","notApplicableRemark":"Please add your remarks here before making the Domain Not applicable.","allReadyNotApplicable":"This Domain has been already marked as Not applicable.","allReadyNotApplicableTitle":"Already marked as Not applicable.","arialabelShare":"course share link","altGoogleplay":"Get it from google play","arialabelCourserating":"course rating","arialabelContact":"contact label","ariaContentPlayer":"Content Player","datasetRequestSuccess":"Your report has been requested and will be available to download after 24 hours","program":"Select program","programLbl":"Program","solution":"Select resource","solutionLbl":"Resource","dashboarddistrict":"Select district","dashboarddistrictLbl":"District","dashboardOrg":"Select organisation","dashboardOrgLbl":"Organisation","selectReport":"Select report","reportType":"Report type","modalNote":"Note: Please select program and resource name.","resourceSelect":"Please select the resource name to get new data","csvDataSets":"CSV Datasets","programDatasets":"Program datasets","detailsReports":"Detailed report","confirmReportRequest":"Are you sure you want to request this report?","reportRequestFailed":"The report is already requested","hintModalNote":"Note: This is the hint for the following question","repgenProgramAdminNote":"It takes a minimum of 24 hours to generate the requested report. The administrators of this course are responsible for the privacy and security of the user's profile information. They have to ensure that the information is used only in accordance with {instance}.","files":"Files","exportCsv":"Export Filtered CSV","chooseFilter":"Choose filters to view reports","startingMessage":"Starting Message","botUrl":"Bot URL","botId":"Bot Id","action":"Action","disable":"Disable","conversations":"Conversations","conversationSetup":"Conversation setup","conversationFlow":"Conversation flow","aggreeTc":"I agree to the required terms and conditions","enable":"Enable","addConversation":"Add new conversation","conversationName":"Conversation name","conversationDescription":"Conversation description","conversationPurpose":"Purpose of the conversation","startMessage":"Start Message","startMessageError":"This starting message is not available","userCount":"User count","startDate":"Start Date","endDate":"End Date","noLogic":"No logic Added","addConversationLogic":"Add Conversation Logic","updateConversationLogic":"Update Conversation Logic","step":"Step","termsConditions":"Terms and Conditions","confirmWarning":"Please confirm that ALL the following items are verified (by ticking the check-boxes) before you can submit","botSuccess":"Congratulations! You have successfully created a new conversation","botUrlMessage":"Use the following URL to use DIKSHA bot","botIdMessage":"or share the following ID with DIKSHA team","enterDescription":"Enter description","enterPurpose":"Enter purpose","enterMessage":"Enter message","uploadOdkForm":"Upload ODK Form (.xml)","sampleOdkForm":"Sample ODK Form (.xlsx)","browseXmlFile":"Browse XML File","instructionManual":"Instruction Manual","appropriateness":"Appropriateness","appropriatenessHate":"No Hate speech, Abuse, Violence, Profanity","appropriatenessAbusive":"No Sexual content, Nudity or Vulgarity","appropriatenessDiscrimination":"No Discrimination or Defamation","appropriatenessChild":"Is suitable for children","contentDetails":"Content Details","contentDetailDescription":"Appropriate Title, Description","contentDetailCorrect":"Correct Board, Grade, Subject, Medium","contentDetailAppropriate":"Appropriate tags such as Resource Type, Concepts","contentDetailRelevant":"Relevant keywords","usability":"Usability","usabilityContent":"Content plays correctly","usabilityClear":"Can see the content clearly on Desktop and App","usabilityAudio":"Audio (if any) is clear and easy to understand","usabilityNoMistakes":"No spelling  in the text","usabilitySimple":"Language is simple to understand","itemsPerPageLabel":"Items per page","nextPageLabel":"Next Page","previousPageLabel":"Previous Page","firstPageLabel":"First Page","lastPageLabel":"Last Page","of":"of","questionSets":"Question Sets","DownloadTranscript":"Download Transcripts","otpSentMsg":"(An OTP will be sent to verify mobile number or email address)","board":"{frameworkCategory1}/University","boards":"{frameworkCategory1}","noBookfoundSubTitle":"Your {frameworkCategory1} is yet to add more books. Tap the button to see more books and content on {instance}","noBookfoundTitle":"{frameworkCategory1} is adding books","noContentfoundSubTitle":"Your {frameworkCategory1} is yet to add more content. Click the button below to explore other content on {instance}","noContentfoundTitle":"{frameworkCategory1} is adding content","selectBoard":"Select {frameworkCategory1}","preferencesheader":"Browse {instance} Library to find relevant content based on your preferences ({frameworkCategory1}, {frameworkCategory2} and {frameworkCategory3})","medium":"{frameworkCategory2}","selectMedium":"Select {frameworkCategory2}","grade":"{frameworkCategory3}","grades":"{frameworkCategory3}","selectClass":"Select {frameworkCategory3}","subject":"{frameworkCategory4}","subjects":"{frameworkCategory4}s","subjectstaught":"{frameworkCategory4}(s) taught","selectSubject":"Select {frameworkCategory4}"},"alert":{"debugModeEnabledFailed":"Unable to enable debug mode","debugModeEnabledSuccess":"Debug mode enabled successfully"},"bltpt":{"defaultinstruction1":"Check your Internet connection before you start the assessment","defaultinstruction2":"Read all questions carefully","defaultinstruction3":"Click the option to select your answer","defaultinstruction4":"Zoom to enlarge an image","defaultinstruction5":"Click > to go to the next question","defaultinstruction6":"Click < to go to the previous question","defaultinstruction7":"Check your progress on the right navigation bar","defaultinstruction8":"Check the status of each question before submitting your assessment","defaultinstruction9":"If applicable, click Ans to view the solution","earncert3":"To earn the certificate you can attempt the assessment {attempts} times only. You can, however, practise as many times","earnyourcert":"The completion certificate will be issued upon 100% completion"},"cert":{"btn":{"saveAsTemplate":"Save template","browse":"Browse","createtemp":"Create template","refresh":"Refresh"},"cmsg":{"certtemplate":"Certificate template added successfully"},"fmsg":{"certtemplate":"Could not add the certificate template"},"imsg":{"alertMessageForCert":"You have created the template successfully. The preview of the new template will be displayed in about 30 minutes. Click Refresh in case the template is not displayed","rcInvalid":"Scanned URL is invalid"},"inlntxt":{"confrmtion":"I confirm that all the elements for this certificate provided by me are correct and appropriate and the signatories and logo owners authorise me to provide the same","imgdimensions":"Format:*.png, Dimension:*88p x 88p, Size: < or = 50KB","signspec":"Format:*.png, Dimension:*112px * 46px, Size: < or = 50KB","certtitle":"This is what will be printed on the certificate as the main title that we see in blue","signdet":"The designation of the authorised signatory is printed below the signature","slecttemp":"Preview and select available certificate template or create another","statedet":"The name (e.g. Government of State State government etc. ) that will be printed above the certificate title"},"intxt":{"imgdimensions":"<b>Format:</b>*.png, <b>Dimension:</b>88p x 88p, <b>Size:</b> < or = 50KB","slecttemp":"Preview and select available certificate template or create another","confrmtion":"I confirm that all the elements for this certificate provided by me are correct and appropriate and I am authorised by the signatories and logo owners to provide the same"},"lbl":{"addCert":"Add certificate","addCertToBatch":"You have created/updated the batch successfully. Add certificate details now or later","batchUpdateSuccess":"Batch updated successfully","button":"button","certAddError":"Could not add the certificate. Try again later","certAddSuccess":"Certificate added successfully","certEditError":"Could not edit the certificate. Try again later","certNote":"Select from available templates","certPreview":"Certificate preview","certRules":"Certificate rules","certType":"Certificate type","certUpdateSuccess":"Certificate updated successfully","certificate":"Certificates","changeDetected":"Change template?","configure":"Configure certificates","currentcert":"Current template","editCert":"Edit certificate","imageErrorMsg":"The image exceeds the maximum supported file size","issueCertificate":"Issue Certificate","issueTo":"Issue certificate to","languageSupportNote":"Currently, we support entries only in English","noCertificate":"You do not have any certificates attached yet.To proceed, click the","noEditAction":"You cannot edit this certificate. Contact your administrator for support","preview":"Preview","selectTemplate":"Select template","templateChange":"Certificates with the new template will be issued to only those users who meet the defined criteria. There will be no change to users who have received their certificate","templates":"Templates","unselect":"Unselect","updateCert":"Update certificate","verified":"All the elements and attributes are thoroughly verified","addcert":"Add certificate","certprew":"Certificate template preview","certtitle":"Certificate title","confcert":"Configure certificate","createtemp":"Create certificate template","layout":"Select layout","sign":"Signature 1","sign2":"Signature 2","signatory":"Authorized signatory","signdesig":"Signatory 1 designation","signdesig2":"Signatory 2 designation","statedet":"State details","statelogo":"State logo 1","statelogo2":"State logo 2","batchCreateSuccess":"Batch created successfully.","confirmTemplateChange":"Would you really want to change the template?","designation":"Enter designation","alertHeader":"Info"},"prmpt":{"certtitle":"Enter certificate title","designation":"Enter designation","refreshtxt":"Select a layout and click Refresh to preview the certificate template","searchImage":"Search image"},"puhdr":{"alertHeader":"Hang on for a while!"},"prmttxt":{"certtitle":"Enter certificate title","refreshtxt":"Select a layout and click Refresh to preview the certificate template","statedet":"Enter the State organization or program name"}},"emsg":{"online":"Go online to download the transcript","desktop":{"importValidZipFile":"This is an invalid telemetry file"}},"imsg":{"lastattmptalrt":"This is your last attempt","lastattmptexcd":"You have exceeded the maximum number of attempts to submit the assessment","admintnc":"Downloaded data should be used in accordance with {instance}'s"},"inlntxt":{"dsfrmemail":"Enter your email address","dsfrmmobileno":91,"dsfrmpostaladd":"Type your residence address","dsfrmchoosedate":"Choose Date of Birth (dd - mm - yyyy)"},"instn":{"t0002":"You can add or upload details of up to 199 organizations at a time in one csv file","t0007":"The OrgName column is mandatory. Enter organization name in this column","t0011":"You can track progress with Process ID","t0012":"Save the Process ID for your future reference to track progress","t0013":"Download the csv file for reference","t0015":"Upload Organizations","t0016":"Upload Users","t0021":"Enter each organization's name in a separate row","t0022":"Entering details in all other columns is optional:","t0023":"isRootOrg: Valid values for this column True False","t0024":"channel: Unique ID provided during master organization creation","t0025":"externalId: Unique ID associated with each organization in the administrating  organization’s repository","t0026":"provider: Channel ID of the administrator organization","t0027":"description: Details describing  the organization","t0028":"homeUrl: Organization’s homepage url","t0029":"orgCode: Organization’s unique code, if any,","t0030":"orgType: Type of organization, such as, NGO, primary school, secondary school etc","t0031":"preferredLanguage: Language preferences for the organization, if any","t0032":"contactDetail: Organization’s mobile number and email address. Details should be entered within curly brackets in single quotes. For example: [{‘mobile number’: ‘1234567890’}]","t0049":"channel is mandatory if value for column isRootOrg is True","t0050":"externalId and provider are mutually mandatory","t0055":"Oops announcement details not found!","t0056":"Please try again...","t0058":"Download as:","t0059":"CSV","t0060":"Thank you!","t0061":"Oops...","t0062":"You haven't created a batch for this course yet. Create a new batch and check the dashboard again.","t0063":"You have not created any course as yet. Create a new course and check the dashboard again.","t0065":"Progress Report","t0066":"Score Report","t0076":"Note: All other columns in the CSV file are optional, for details on filling these, refer to","t0077":"Register Users.","t0078":"locationId: An ID which identifies an announcement topic for a particular organisation","t0079":"locationCode: Comma separated list of location codes","t0081":"Thank you for registering on DIKSHA. We have sent an sms OTP for verification. Verify your mobile number with the OTP to complete the registration process.","t0082":"Thank you for registering on DIKSHA. We have sent an OTP to your registered email address for verification. Verify your email address with the OTP to complete the registration process.","t0083":"You will receive an SMS with the OTP for Mobile Number verification","t0084":"You will receive an email with the OTP to verify your email address","t0085":"The report shows data for the first 10,000 participants. Click download to view the progress of all the participants in the batch.","t0098":"File format for user list upload:","t0099":"Name * (Name of the user as per state records)","t0100":"Identifier * (Mobile number OR email address - either one of the two is mandatory)","t0101":"State * (The State that the user belongs to)","t0102":"Ext Org ID * (School ID as provided in DIKSHA)","t0103":"Ext User ID * (State ID of the user)","t0104":"Input Status (Active, Inactive) * - Enter the record status as provided by the state administrator","t0105":"Roles (System roles to be assigned to the user)","t0106":"Save file as .csv before upload","t0107":"Use the **Download user details** button to download the self-declared teacher information from the portal. The data is updated every 24 hours","t0108":"Check that both, the phone number and State ID of each record in the downloaded file matches the corresponding State record. Update the STATUS column in the downloaded file. Valid Values for STATUS:n  a)VALIDATED: for records that match correctlyn b)REJECTED: for records that do not matchn c)ERROR: for records with missing information","t0109":"If the file has records that have STATUS = ERROR, add a new column ERROR TYPE","t0110":"For each record that has the STATUS = ERROR, you must add the appropriate error value in the ERROR TYPE column a)Valid values for ERROR TYPE:  a)ERROR-DISTRICT b)ERROR-PHONE c)ERROR-EMAIL d)ERROR-SCHOOL ORG NAME e)ERROR-SCHOOL ORG ID  f)ERROR-ID  g)ERROR-NAME","t0111":"Save as a .csv file","t0112":"Use the **Upload users csv** button to upload the file","t0067":"Provide the details below for suggesting content that is relevant for you","t0086":"Copy Content from Pen drive","t0087":"Offline Library","t0088":"Browse online for {instance} content","t0089":"How to use {instance} app","t0090":"Copy {instance} files (eg. Maths_01.ecar) from your pen drive to My Library to play them offline","t0091":"Click My Library to access all your offline content","t0092":"Download content when you are online from {instance} to My Library","t0093":"Watch detailed videos to understand how to use the {instance} desktop app","t0094":"How do I load content to the {instance} desktop app?","t0095":"How do I download content from {instance} Library?","t0096":"My Downloads: How do I play content?","t0097":"How do I copy content to my pen drive?"},"intxt":{"searchuser":"Search user {instance} ID","selrole":"Select role","ssousers":"Note: The certificate will be issued to users who access {instance} via your state portal only","t0001":"Search for notes or title","t0002":"ADD YOUR COMMENT","t0005":"Select batch mentors","t0006":"Select batch members","enterfulname":"Enter your full name","preferencesheader":"Browse {instance} Library to find relevant content based on your preference ({frameworkCategory1}, {frameworkCategory2} and {frameworkCategory3})"},"lnk":{"adminPolicy":"admin policy","announcement":"Announcement dashboard","assignedToMe":"Assigned to me","createdByMe":"Created by me","dashboard":"Admin dashboard","footerContact":"Contact for queries:","footerDIKSHAForMobile":"{instance} for Mobile","footerAppDownload":"Click here to download {instance} for mobile from playstore","footerDikshaVerticals":"DIKSHA Verticals","footerHelpCenter":"Help Center","footerPartners":"Partners","footerTnC":"Terms and Privacy","logout":"Logout","myactivity":"My Activity","profile":"Profile","viewall":"View all","report":"My Reports","programDashboard":"Program dashboard"},"msg":{"activategrpfailed":"Could not activate group, try again later","activategrpmsg":"Activating the group enables you to add members and activities. You can also track member progress","activategrppopup":"This group is temporarily deactivated. The group admin can re-activate the group","activategrpsuccess":"Group activated successfully","deactivategrpfailed":"Could not deactivate group, try again later","deactivategrpmsg":"Deactivating the group removes your access. You cannot add activities or members to the group. You also cannot track member progress.","deactivategrpsuccess":"Group deactivated successfully","guidelinesacceptfailed":"Could not update your acceptance of the group's terms and conditions","guidelinesacceptsuccess":"You have successfully accepted the group guidelines","noEntityFound":"Add entity to Observe .","noDataDisplayed":"There is no data displayed"},"pgttl":{"takeanote":"Notes"},"prmpt":{"certsearchImage":"Search image","deletenote":"Are you sure to delete this note?","dscfrmaskqtn":"Ask a question or post an idea","dsfrmchoosedate":"Select the date of birth","enteremailID":"Enter your email address","enterphoneno":"Enter 10 digit mobile number","search":"Search","searchOrQr":"Search or enter QR code"},"prpttext":{"assetCaption":"Enter file name"},"reissue":{"lbl":{"displayUser":"The {instance} ID is displayed below the user name","instructions":"Use the  instructions provided to guide users to identify the unique {instance} ID:"}},"scttl":{"Trendingcoursesfromstate":"Trending courses from your State","blkuser":"Block User","browseBy":"Browse by {section_name}","contributions":"Contribution(s)","error":"Error:","instructions":"Instructions :","notifheader":"Notifications","suggested":"Suggested","todo":"To Do","userrole1":"Add user role","userrole3":"Download user details","yourPreferences":"Your preferences"},"snav":{"shareViaLink":"Shared via linkn","submittedForReview":"Submitted for review"},"tab":{"all":"All","community":"Groups","contribute":"Contribute","courses":"Courses","help":"Help","mygroups":"My Groups","resources":"Library","workspace":"Workspace","observation":"Observation","home":"Home"},"desktop":{"lbl":{"completing":"Completing"}},"vidttl":{"SSologinnewtheme":"How do I login using my State ID joyful theme","copycontent":"How do I copy content to my pen drive joyful theme","downloadcontent":"How do I download content from desktop app library joyful theme","googlelogin":"How do I login using my Google ID","loadcontent":"How do I load content  to the desktop app joyful theme","login":"How do I login on {instance}","loginSSO":"How do I login using my State ID","loginnewtheme":"How do I login on {instance} joyful theme","manageuser":"How do I add users on {instance}","manageusernewtheme":"How do I add users on {instance} joyful theme","newthemegooglelogin":"How do I login using my Google ID joyful theme","playcontent":"How do I play content joyful theme","recovaccnt":"How do I recover my account","recovaccntnewtheme":"How do I recover my account joyful theme","register":"How do I register on {instance}","registernewtheme":"How do I register on {instance} joyful theme"},"message":{"unableToUpload":"Unable to upload the file. Please try again."}},"messages":{"emsg":{"m001":"Could not create the group. Try again later","m002":"Could not find the group. Try again later","m003":"Could not delete the group. Try again later","m004":"You have entered an invalid {instance} ID","m005":"Unable to update group. Try again later","activityAddedToGroup":"You have added this activity previously for the group","activityRemove":"Could not remove activity. Try again later","dissmissAsAdmin":"Could not dismiss {memberName} as group admin","leaveGroup":"Could not leave the group. Try again later","m0001":"Cannot enrol now. Try again later","m0002":"The course is not available now","m0003":"This course does not have any open batches","m0005":"Something went wrong, try again later","m0007":"size should be less than","m0008":"Could not copy content. Try again later","m0009":"Cannot un-enrol now. Try again later","m0014":"Could not update mobile number","m0015":"Could not update email addressnn","m0016":"Fetching states failed. Try again later","m0017":"Fetching districts failed. Try again later","m0018":"Updating profile failed","m0019":"Could not download the report, try again later","m0020":"Updating user failed. Try again later","m0050":"Failed to validate OTP. Try again later.","m0051":"Failed to submit teacher declaration","m0052":"Failed to update the teacher declaration","m006":"Could not add {name} to the group. Try again later","m007":"Member is part of the group","m0076":"No data available to download","m008":"Enrolments for this batch closed on {endDate}","m009":"The course's batch is available from {startDate}","noAdminRole":"You are not authorised to add activities","noAdminRoleActivity":"You do not have permissions to access this page","promoteAsAdmin":"Could not make {memberName} as the group admin","removeMember":"Could not remove member from the group. Try again later","m1414":"This is an adopted textbook from {instance}. Hence it cannot be edited","mutliParametersFound":"Multi parameters found for this report. Please visit reports list page and select a report.","m0024":"Unable to get category defination details please try again later...","m0025":"Unable to get framework details please try again later...","desktop":{"connectionError":"Connect to the Internet to sync telemetry","offlineStatus":"You are offline","telemetryExportEMsg":"Failed to export telemetry. Try again later","telemetryInfoEMsg":"Unable to get telemetry information. Try again later","telemetrySyncError":"Could not sync the telemetry, try again later","termsOfUse":"Connect to the Internet to view the Terms of Use"},"m0021":"Unable to update location. Try again later","m0022":"Unable to update your preference. Please try again after some time.","m0023":"Unable to raise a ticket because you're not connected to the internet"},"imsg":{"m0082":"Deleting {groupName} will permanently remove the group from the application","activityAddedSuccess":"Activity added successfully","confirmReportPublish":"Are you sure you want to publish the report?","m0001":"This course is flagged as inappropriate and is currently under review.","m001":"This group is temporarily inactive. The group admin can re-activate the group if required. Group members can continue their discussions on the discussion forum.","m0022":"Stats for last 7 days","m0023":"Stats for last 14 days","m0024":"Stats for last 5 weeks","m0025":"Stats from begining","m0026":"Hi, this course is not available now. It is likely that the creator has made some changes to the course.","m0027":"Hi, this content is not available now. It is likely that the creator has made some changes to the content.","m0034":"As the content is from an external source, it will be opened in a while.","m0035":"Unauthorized access","m0036":"The content is externally hosted, to view it, click  <b>Preview</b>","m0040":"Operation is in progress, try again later","m0041":"Your profile is","m0042":"% complete","m0043":"Your profile does not have a valid email ID. Update your email ID.","m0045":"The download has failed. Try again after some time","m0047":"You can only select 100 participants","m0060":"If you have two accounts with {instance}, click","m0061":"to","m0062":"Else, click","m0063":"combine usage details of both accounts, and","m0064":"delete the other account","m0065":"Account merge initiated successfully","m0066":"you will be notified once it is completed","m0067":"Could not initiate the account merge. Click the Merge Account option in the Profile menu and try again","m0070":"Account {identifierValue} already exists on {instance}. If this is your account, click Merge to","m0072":"Could not merge accounts because the password entered is incorrect.","m0073":"Click OK to create a new {instance} account.","m0074":"Your location details help us suggest content that is useful to you. Is your location correct? If not, select your correct location and click Submit","m0080":"Could not initiate Account Merge. Log in through your State portal and try again","m0081":"Merging of accounts is in progress. You will receive a notification on your registered email address/mobile number when it is complete","m0086":"Incorrect OTP. Number of attempts remaining : {remainingAttempt}","m0087":"Not permitted to merge account","m0095":"Hi <b>{userName}</b>. You can edit your {instance} profile details from the Profile setting","m0096":"\"{firstName}\" added successfully","m0141":"Create new to create a {instance} account.","removeActivityWarning":"Removing the activity takes it off from the group activity list and you can no longer check member's progress on it","reportPublished":"Report published successfully","reportRetired":"The report has been retired successfully","reportSummaryAdded":"Summary added successfully","confirmRetirePublish":"Are you sure you want to retire the report ?","desktop":{"m001":"All usage data is synced to the server","m002":"Data sync in progress"},"m0048":"You must be connected to the internet to view content","m0049":"Have a textbook downloaded on your system/pen drive? Click the button to upload it","m0050":"Load textbooks to access them offline","m0075":"Your Location","t0143":"This content is not supported yet"},"cmsg":{"m001":"Disabling the discussion forum clears all discussions held in the group to date. If you choose to enable discussions for the group again, there will be no history of past discussions. Discussions will begin afresh. Do you want to continue? nn"},"dashboard":{"emsg":{"m001":"Sorry! We are unable to get the certificate list. Try again later","m002":"The user is not enrolled in any batch of this course","m003":"Sorry! We could not reissue the certificate. Try again later","m004":"You have not created this batch as yet"},"imsg":{"m001":"Are you sure you want to reissue certificates to {userName}?"},"smsg":{"m001":"Your request to re-issue certificate has been accepted and will be processed in 7 working days"}},"etmsg":{"desktop":{"telemetryImportError":"Unable to import file, try again later","deleteContentErrorMessage":"Unable to delete content. Try again later","deleteTextbookErrorMessage":"Unable to delete the textbook. Try again","deleteCourseErrorMessage":"Unable to delete the course. Try again"}},"fmsg":{"dataSettingNotSubmitted":"Could not update profile share settings. Try again later","m0001":"Could not fetch enroled courses, try again later","m0002":"Could not fetch other courses, try again later...","m0003":"Unable to get batch schedule details","m0004":"Could not fetch data, try again later","m0005":"Could not fetch data, try again later","m00100":"Could not reject the content, try again later","m00101":"Could not publish content, try again later","m0030":"Could not create the note, try again later...","m0032":"Could not remove the note, try again later","m0033":"Could not fetch the note, try again later...","m0034":"Could not update the note, try again later...","m0049":"Unable to load data.","m0050":"Could not submit the request, try again later","m0051":"Something went wrong, try again later","m0054":"Fetching batch detail failed, try again later...","m0056":"Could not fetch user list, try again later...","m0076":"Enter mandatory fields","m0077":"Fetching search result failed..","m0079":"Failed to assign badge, try again later","m0080":"Failed to fetch the badge, try again later...","m0082":"This course is not open for enrolment","m0085":"There was a technical error. Try again.","m0086":"This course is retired by the author and hence is not available anymore","m0087":"Please wait","m0088":"We are fetching details.","m0089":"No Topics/SubTopics found","m0090":"Could not download, try again later","m0091":"Could not copy content. Try again later","m0095":"Failed to fetch the CSV file, try again later","m0096":"Could not update, try again later","m0097":"Action failed due to a technical error. Try again later","m0099":"Could not send content for review, try again later","m0100":"You have exceeded the user creation limit","m0101":"Please provide all the required details","m0098":"Updating content failed try again later"},"groups":{"emsg":{"m001":"You have exceeded the maximum number of groups that can be created","m002":"You have exceeded the maximum number of members that can be added to the group","m003":"You have exceeded the maximum number of activities that can be added for the group"}},"profile":{"smsg":{"m0041":"{instance} ID copied"}},"smsg":{"activityRemove":"Activity removed for the group successfully","certificateGettingDownloaded":"The certificate is getting downloaded","dataSettingSubmitted":"Profile share settings submitted successfully","debugMode":"Debug mode will automatically shut off in {time} minutes","dissmissAsAdmin":"{memberName} is no longer the group admin","grpcreatesuccess":"Group created successfully","grpdeletesuccess":"Group deleted successfully","leaveGroup":"You are no longer part of this group","m0009":"Note created successfully...","m001":"Discussion forum enabled successfully","m0013":"Note updated successfully...","m002":"Discussion forum disabled successfully","m0028":"Roles updated successfully","m0029":"User deleted successfully","m003":"Group updated successfully","m0030":"Users uploaded successfully","m0031":"Organizations uploaded successfully","m0032":"Status fetched successfully","m0035":"Org type added successfully","m0037":"updated successfully","m004":"{memberName} added successfully","m0042":"Content successfully copied","m0043":"Endorsement successfull","m0044":"Badge assigned successfully...","m0045":"User unenroled from the batch successfully","m0046":"Profile updated successfully...","m0047":"Your Mobile Number has been updated","m0048":"Your email address has been updated","m0049":"User updated successfully","m0050":"Thank you for rating this content!","m0059":"Content copied successfully","m0060":"Content updated successfully","m0061":"Content sent for review","m0062":"Content rejected","m0063":"Content published successfully","m0064":"Content removed successfully","moo41":"Announcement cancelled successfully...","promoteAsAdmin":"{memberName} is now the group admin","removeMember":"{memberName} is no longer part of the group","m0065":"Enabled discussion forum successfully","m0066":"Disabled discussion forum successfully","m0036":"Course enroled for this batch successfully","desktop":{"telemetryExportSMsg":"Telemetry exported successfully"},"m0053":"Downloading...","m0055":"Updating...","m0056":"You should be online to update the content","m0057":"Location updated successfully","m0058":"User preference updated successfully","selectquestions":"select atleast one question","selectcriteria":"select atleast one criteria"},"stmsg":{"activityAddFail":"Could not add the activity. Try again later","desktop":{"offlineNoMatch":"You need to come online to find matching results","deleteContentSuccessMessage":"Content deleted successfully","deleteMessage":"Only downloaded content can be played offline","deleteTextbookSuccessMessage":"Textbook deleted successfully","deleteCourseSuccessMessage":"Course deleted successfully","noContentMessage":"Content coming soon","onlineStatus":"You are online","contentCantDownload":"This item can’t be downloaded as of now"},"m0006":"No results found","m0007":"Refine your search","m0008":"no-results","m0009":"Unable to play, try again or close","m0022":"Submit one of your drafts for review. Content is published only after a review","m0024":"Upload a document, video, or any other supported format. You have not uploaded anything yet","m0033":"Submit one of your drafts for review. You have not yet submitted any content for review","m0035":"There is no content to review","m0077":"We are submitting your request...","m0080":"Upload files only in .csv format","m0081":"No batches found","m0083":"You have not shared content with any one yet","m0108":"Your Progress","m0113":"Enter a valid start date","m0116":"Deleting selected note...","m0120":"No content to play","m0121":"Content not added yet","m0122":"Your state will soon add content for this QR code. It will be available shortly.","m0123":"Ask a friend to add you as a collaborator. You will receive an email when your friend adds you.","m0125":"Start creating Resource, Book, Course, Collection or Upload. You have no work-in-progress draft at the moment","m0126":"Select board","m0127":"Select medium","m0128":"Select class","m0129":"Loading the terms and conditions.","m0130":"We are fetching districts","m0131":"Could not find any reports","m0134":"You cannot enrol into this batch, as it is closed","m0135":"Enter a valid date","m0136":"Last date for enrolment:","m0138":"Failed","m0139":"Downloaded","m0140":"Downloading","m0141":"Data unavailable to generate Score Report","m0142":"Paused","m0143":"Download","m0144":"You do not have appropriate rights to access this page","reportNotReady":"Your report is not ready, try again later","m0145":"Please update your role to School head or Officials","changeContentLocationWarning":"Could not download or import file(s). Try changing the default content import/download location.","contentLocationChanged":"Content location changed successfully, try downloading the content now","m0030":"You have not downloaded any content yet. Download content when you are online to access offline,  or you can import content from your pen drive","m0031":"This imports/ downloads content from {instance} Online Library when you are connected to the Internet","m0036":"This adds content from your pen drive or external device connected to {instance} app.","m0137":"Some of the content(s) can only be played when your computer is connected to the Internet. Click Yes to download"},"desktop":{"emsg":{"cannotAccessCertificate":"You need to be online to access the certificate","noConnectionTerms":"Connect to the Internet to view the Terms of Use","termsOfUse":"Unable to display Terms Of Use. Try again later"}}},"completedCourse":"Course completed","crs":{"nontrk":{"frmelmnts":{"lbl":{"ACTIVITY_TEXTBOOK_TITLE":"Courses","ActivityTextbooks":"Courses","chapter":"Course module","desktop":{"downloadBook":"Download course","find_more":"Find more courses and related content on {instance}","updateTextbook":"Update course"},"downloadBooks":"Download courses to access while offline","fromTheTextBook":"from the course","noBookfoundTitle":"Board is adding courses","textbooks":"Courses"}}},"trk":{"completedCourse":"Course completed","frmelmnts":{"btn":{"createCourse":"Create course","enroll":"Join Course","resumecourse":"Resume Course","unenroll":"Leave course","viewCourseStatsDashboard":"View course dashboard","viewcoursestats":"View course stats"},"instn":{"t0062":"You haven't created a batch for this course yet. Create a new batch and check the dashboard again.","t0063":"You have not created any course as yet. Create a new course and check the dashboard again."},"lbl":{"ACTIVITY_COURSE_TITLE":"Courses","ActivityCourses":"Courses","accessCourse":"Access course","accessToLogin":"To access the course you have to log in and join the course","addCourse":"Add course","completedCourse":"Courses completed","completingCourseSuccessfully":"For successfully completing the course,","copyAsCourse":"Copy as course","courseContainCertificate":"This is a certificate course","courseDetails":"Course details","courseDontContainCertificate":"Currently, this course does not have a certificate. The course creator may attach a certificate later.","courseLastUpdatedOn":"Course last updated on","courseProgress":"Course progress","courseRelevantFor":"The course is relevant for:","courseSuccessMessage":"You have successfully completed the course","courseSuccessNotificationMessage":"You will be notified about the course certificate on your registered contact details within 7 days","courseWithoutCertificateNote":"Note: This course does not have a certificate","courses":"Courses","coursestructure":"Course modules","dashboardnocourseselected":"No course selected","dashboardnocourseselecteddesc":"Select a course from the list","downloadCourseQRCode":"Download Course QR Code","downloadQRCode":{"tooltip":"Click to download QR codes and link them to the published course"},"enrollcourse":"Join Course","getUnlimitedAccess":"Get unlimited access to textbooks, lessons and courses offline on your mobile phone","joinTrainingToAcessContent":"You must join the course to get complete access to content","moduleFinish":"You have completed this module","moduleProgress":"Module progress","mytrainings":"My courses","nextModule":"Next module","oneCourse":"Course","prevModule":"Prev. module","returnToCourses":"Return to Courses","sectionTitle":"Courses","selectChapter":"Select module","selectContentFromCourse":"Select contents for course","signinenrollTitle":"Log in to join this course","trainingAttended":"Courses attended","userName":"User name"},"tab":{"courses":"Courses"}},"messages":{"dashboard":{"emsg":{"m002":"The user is not enrolled in any batch of this course"}},"emsg":{"m0002":"The course is not available now","m0003":"This course does not have any open batches"},"fmsg":{"m0001":"Could not fetch enroled courses, try again later","m0002":"Could not fetch other courses, try again later","m0082":"This course is not open for enrolment","m0086":"This course is retired by the author and hence is not available anymore"},"imsg":{"m0001":"This course is flagged as inappropriate and is currently under review.","m0026":"Hi, this course is not available now. It is likely that the creator has made some changes to the course."},"stmsg":{"m0125":"Start creating Resource, Book, Course, Collection or Upload. You have no work-in-progress draft at the moment"}}}},"dflt":{"nontrk":{"frmelmnts":{"btn":{"create":"Create"},"lbl":{"ACTIVITY_TEXTBOOK_TITLE":"Tasks","ActivityTextbooks":"Tasks","chapter":"Learning module","collection_task":"Tasks","desktop":{"download":"Download","downloadBook":"Download","find_more":"Find more content","find_more_tasks":"Find more content","update":"Update","updateTextbook":"Update"},"downloadBooks":"Download to access offline","download_to_access_offline":"Download to access offline","downloadoffline":"Download to access offline","fromTheLearningTask":"from the learning task","fromTheTextBook":"from the learning task","import":"Download to access offline","learningmodule":"Learning module","mynotebook":"My Notebook","noBookfoundButtonText":"See more","noBookfoundSubTitle":"Your board is yet to add content. Tap the button to see more content on {instance}","noBookfoundTitle":"Board is adding content","noTaskfoundSubTitle":"Your board is yet to add content. Tap the button to see more content on {instance}","noTaskfoundTitle":"Board is adding content","seemore":"See more","task":"Tasks","task_title":"Tasks","tasks":"Tasks","textbooks":"Tasks"}},"messages":{"stmsg":{"m0125":"Start creating or uploading content. You currently do not have any content saved as a draft","ms0001":"Start creating or uploading content. You currently do not have any content saved as a draft"}}},"trk":{"completed_learning":"Learning completed","essages":{"fmsg":{"m0082":"This learning task is not open, as yet. You cannot join it"}},"frmelmnts":{"btn":{"create":"Create","enroll":"Join","resumecourse":"Resume","unenroll":"Leave","viewCourseStatsDashboard":"View dashboard","viewcoursestats":"View stats"},"instn":{"t0062":"You have not created any batch for this task as yet. Create a task and check the dashboard","t0063":"You have not created any task as yet. Create a new task and check the dashboard again."},"lbl":{"ACTIVITY_COURSE_TITLE":"Tasks","ActivityCourses":"Tasks","accessCourse":"Access learning material","accessToLogin":"To access the content you have to log in and join the task","addCourse":"Add","completedCourse":"Completed Tasks","completingCourseSuccessfully":"For successfully completing learning on,","copyAsCourse":"Copy as learning material","courseContainCertificate":"This learning offers you a certificate","courseDetails":"Learning details","courseDontContainCertificate":"Currently, this learning task does not have a certificate. The task creator may attach a certificate later","courseProgress":"Progress","courseRelevantFor":"This learning is relevant for:","courseSuccessMessage":"You have successfully completed your learning","courseSuccessNotificationMessage":"You will be informed about your certificate on your registered contact details within 7 days","courseWithoutCertificateNote":"Note: This learning does not offer you a certificate","courses":"Tasks","coursestructure":"Learning module","dashboardnocourseselected":"No selection made","dashboardnocourseselecteddesc":"Select from the list","downloadCourseQRCode":"Download the QR code","downloadQRCode":{"tooltip":"Click to download QR codes and link them to your publication"},"getUnlimitedAccess":"Get unlimited access to textbooks, TV classes and courses offline on your mobile phone","joinTrainingToAcessContent":"To access the content, you have to log in and join the task","moduleFinish":"You have completed this task","moduleProgress":"Task progress","mytrainings":"My tasks","nextModule":"Next task","oneCourse":"Task","prevModule":"Prev. task","returnToCourses":"Back","sectionTitle":"Tasks","selectChapter":"Select task","selectContentFromCourse":"Select contents","trainingAttended":"Learning attended"},"tab":{"courses":"Tasks"}},"messages":{"dashboard":{"emsg":{"m002":"User has not joined any batch for this learning task"}},"emsg":{"m0002":"This learning task is no longer available","m0003":"This learning task does not have an open batch"},"fmsg":{"dataSettingNotSubmitted":"Could not update profile share settings. Try again later","m0001":"Sorry! We could not get information for the learning task that you have enrolled for. Try again later","m0002":"Sorry! We could not get other learning tasks for you. Try again later","m0086":"This content is no longer available"},"imsg":{"m0001":"This content has been flagged as inappropriate. It is currently under review","m0026":"Hi, this content is currently unavailable. It may be undergoing change"},"stmsg":{"m0125":"Start creating or uploading content. Currently you have not saved any draft content"}}}},"frmelemnts":{"bltpt":{"earncert":"Certificates are issued to {state} State users onlyn","earnmcert":"The certificate will be issued if you score greater than or equal to {percent}% in your assessment"},"btn":{"dscfrmdisablediscussion":"Disable discussions","dscfrmenablediscussion":"Enable discussions"},"cert":{"btn":{"browse":"Browse","createtemp":"Create template","refresh":"Refresh"},"inlntxt":{"certtitle":"This is what will be printed on the certificate as the main title that we see in blue","confrmtion":"I confirm that all the elements for this certificate provided by me are correct and appropriate and I am authorised by the signatories and logo owners to provide the same","signdet":"The designation of the authorised signatory is printed below the signature","slecttemp":"Preview and select available certificate template, or create another","statedet":"The name (e.g. Government of State, State government etc. ), that will be printed above the certificate title"},"lbl":{"addcert":"Add certificate","certprew":"Certificate template preview","certtitle":"Certificate title","confcert":"Configure certificate","createtemp":"Create certificate template","layout":"Select layout","sign":"Signature 1","sign2":"Signature 2","signatory":"Authorized signatory","signdesig":"Signatory 1 designation","signdesig2":"Signatory 2 designation","statedet":"State details","statelogo":"State logo 1","statelogo2":"State logo 2"},"prmttxt":{"certtitle":"Enter certificate title","refreshtxt":"Select a layout and click <b>Refresh</b> to preview the certificate template","statedet":"Enter the State, organization or program name"}},"imsg":{"admintnc":"Use downloaded data as per {instance}","dscfrmmndtry":"Question is mandatory","dscfrmmndtrydesc":"Description is mandatory. It should be minimum of 8 characters","desktop":{"m003":"Waiting to connect to the Internet to begin download"}},"lbl":{"accessibility":"Screen reader access","accessibilitymode":"Switch to dark mode","accessibilitynormalmode":"Switch to light mode","accessibilitytext":"Site map","accessibilitytextsize":"Increase font size","accessibilitytskip":"Skip to main contentn","dscfrmbstpst":"Best posts","dscfrmcommnets":"Comments","dscfrmdisablepopuphdr":"Disable discussion forum?","dscfrmdwnvte":"Downvote","dscfrmelbrt":"Elaborate your question or idea","dscfrmgendisc":"General discussions","dscfrmposts":"Posts","dscfrmrcntpsts":"Recent posts","dscfrmsvdpst":"Saved posts","dscfrmtags":"Tags","dscfrmupvte":"Upvote","dscfrmvotes":"Votes","newCourse":"New Courses","profiledetails":"Content preference"},"prmpt":{"dscfrmaddtag":"Add a tag and press Enter","dscfrmelbrt":"Type here..."},"puphdr":{"adminguideline":"Admin guidelines"},"scttl":{"certques":"Certificate criteria"}},"frmlemnts":{"intxt":{"selstatetenant":"Select state/organisation"}},"orgname":"orgname","participants":"Participants","resourceService":{"frmelmnts":{"lbl":{"userId":"User ID"}}},"rmelmnts":{"lbl":{"stillCouldntFind":"Couldn't find an answer to your query? Visit the","totalEnrolments":"Total enrolments"}},"t0065":"Download file","tbk":{"nontrk":{"frmelmnts":{"lbl":{"ACTIVITY_TEXTBOOK_TITLE":"Textbooks","ActivityTextbooks":"Textbooks","chapter":"Chapter","copyAsCourse":"Copy as course","desktop":{"deleteCollection":"Deleting {name} textbook removes it from My Downloads. Click Delete to continue.","downloadBook":"Download textbook","find_more":"Find more textbooks and content on {instance}","updateTextbook":"Update textbook"},"dialCodeDescription":"QR code is the 6 digit alphanumeric code found beneath the QR code image in your text book","dialCodeDescriptionGetPage":"QR code is the 6 digit alphanumeric code found beneath the QR code image in your text book.","downloadBooks":"Download books to access while offline","fromTheTextBook":"from the textbook","getUnlimitedAccess":"Get unlimited access to textbooks, lessons and courses offline on your mobile phone","import":"Download books to access while offline","installAppDesc":"Store lessons, textbooks and content offline on your device","mynotebook":"My Notebook","noBookfoundButtonText":"See more books and contents","noBookfoundSubTitle":"Your board is yet to add more books. Tap the button to see more books and content on {instance}","noBookfoundTitle":"Board is adding books","textbooks":"Textbooks"}},"messages":{"stmsg":{"m0125":"Start creating Resource, Book, Course, Collection or Upload. You have no work-in-progress draft at the moment"}}},"trk":{"frmelmnts":{"btn":{"enroll":"Read","resumecourse":"Resume reading","unenroll":"Close"},"instn":{"t0062":"You have not created any learning/reading batch for this textbook as yet. Create a batch and check the dashboard","t0063":"You have not created any textbook as yet. Create a textbook and check the dashboard"},"lbl":{"ACTIVITY_COURSE_TITLE":"Textbook","ActivityCourses":"Textbook","accessCourse":"Access textbook","accessToLogin":"To access the textbook you have to log in and join the learning/reading batch","addCourse":"Add textbook","completedCourse":"Completed textbooks","completingCourseSuccessfully":"For successfully completing learning,","copyAsCourse":"Copy as textbook","courseContainCertificate":"This learning offers you a certificate","courseDetails":"Textbook details","courseDontContainCertificate":"Currently, this learning task does not have a certificate. The task creator may attach a certificate later.","courses":"Textbooks","coursestructure":"Chapter","joinTrainingToAcessContent":"To access the content, you have to join the learning batch","moduleFinish":"You have completed this chapter","moduleProgress":"Chapter progress","mytrainings":"My digital textbooks","nextModule":"Next chapter","oneCourse":"Digital textbook","prevModule":"Prev. chapter","sectionTitle":"Digital textbooks","selectChapter":"Select chapter","trainingAttended":"Textbooks read"},"tab":{"courses":"Digital textbook"}},"messages":{"emsg":{"m0002":"This textbook is no longer available"},"fmsg":{"dataSettingNotSubmitted":"Could not update profile share settings. Try again later","m0001":"Sorry! We could not get the textbook you were looking for. Try again later","m0002":"Sorry! We could not get other textbooks for you. Try again later","m0086":"This textbook is not available anymore"}}}},"tvc":{"nontrk":{"frmelmnts":{"lbl":{"ACTIVITY_TEXTBOOK_TITLE":"TV classes","ACTIVITY_TV_CLASS_TITLE":"TV classes","ActivityTvClasses":"TV classes","TVclassesfoundTitle":"Board is adding TV class","chapter":"TV program","collection_tv_classes":"TV classes","desktop":{"downloadBook":"Download TV classes","downloadTVclasses":"Download TV classes","find_more":"Find more TV classes and related content on {instance}","find_more_TVclasses":"Find more TV classes and related content on {instance}","updateTVclasses":"Update TV classes","updateTextbook":"Update TV classes"},"downloadBooks":"Download TV classes to access while offline","downloadTVclasses":"Download TV classes to access while offline","fromTheTVclasses":"from the TV class","fromTheTextBook":"from the TV class","noBookfoundTitle":"Board is adding TV class","textbooks":"TV classes","tv_classes":"TV classes","tv_program":"TV program"}}},"trk":{"frmelmnts":{"btn":{"enroll":"Watch","resumecourse":"Resume watching"},"instn":{"t0062":"You have not created any learning batch for this TV class as yet. Create a batch and check the dashboard","t0063":"You have not created any TV class as yet. Create a TV class and check the dashboard"},"lbl":{"ACTIVITY_COURSE_TITLE":"TV classes","ActivityCourses":"TV classes","accessCourse":"Access TV classes","accessToLogin":"To access the TV class you have to log in and join the learning batch","addCourse":"Add TV class","completedCourse":"Completed TV classes","copyAsCourse":"Copy as TV class","courseContainCertificate":"This learning offers you a certificate","courseDetails":"TV class details","courseDontContainCertificate":"Currently, this learning task does not have a certificate. The task creator may attach a certificate later","courses":"TV classes","coursestructure":"TV program","moduleFinish":"You have completed this program","moduleProgress":"Program progress","mytrainings":"My TV classes","nextModule":"Next program","oneCourse":"TV class","prevModule":"Prev. program","sectionTitle":"TV classes","selectChapter":"Select program","trainingAttended":"TV classes watched"},"tab":{"courses":"TV classes"}},"messages":{"emsg":{"m0002":"This TV class task is no longer available"},"fmsg":{"m0001":"Sorry! We could not get the TV classes you were looking for. Try again later","m0002":"Sorry! We could not get other TV classes for you. Try again later","m0086":"This TV Class is not available anymore"}}}},"tvk":{"trk":{"frmelmnts":{"lbl":{"joinTrainingToAcessContent":"To access the content, you have to join the learning batch"}}}}}}
\ No newline at end of file
+{"consumption":{"frmelmnts":{"btn":{"addnuserrole":"Add new role","adduserrole":"Add role","closedb":"Close dashboard","activategrp":"Activate","activityDashboard":"Activity Dashboard","add":"Add","addActivity":"Add activity","addEntity":"Add entity","addRemarks":"Add remarks","all":"All","apply":"Apply","back":"Back","botTitle":"Ask Tara","cancel":"Cancel","cancelCapitalize":"Cancel","changePreferences":"Change preference","chksts":"Check status","clear":"Clear","close":"Close","continueLearning":"Continue learning","copyLink":"Copy link","copytoclipboard":"Copy to clipboard","create":"Create","createCourse":"Create course","createNew":"Create new","deactivategrp":"Deactivate group","delete":"Delete","dismissAdmin":"Dismiss as admin","docs":"Docs","download":"Download","downloadAppForLinux":"Download for Ubuntu","downloadAppForWindows32":"Download for Windows (32-bit)","downloadAppForWindows64":"Download for Windows (64-bit)","downloadCertificate":"Download certificate","downloadDesktopApp":"Download Desktop App","downloadInstruction":"See download instructions","dscfrmstrtdscsn":"Start discussion","edit":"Edit","enableDebugMode":"Enable debug mode","enroll":"Join Course","home":"Home","interactive":"Interactive","loadContent":"Load content","login":"Login","makeAdmin":"Make admin","merge":"Merge","next":"Next","no":"No","observeAgain":"Observe again","ok":"OK","previous":"Previous","print":"Print","remove":"Remove","removeMember":"Remove member","reset":"Reset","resume":"Resume","resumecourse":"Resume Course","retry":"Retry","save":"Save","selectCsvFile":"Select .csv file","selectLanguage":"Select language","selrole":"Select role","signin":"Log In","start":"Start","submit":"Submit","submitbtn":"Submit","tryagain":"Try again","unenroll":"Leave course","update":"Update","updateGroup":"Update group","uploadAndUse":"Upload image","uploading":"Uploading","uploadorgscsv":"Upload organization's CSV file","uploadusrscsv":"Upload .csv file","verify":"Verify","video":"Video","viewCourseStatsDashboard":"View course dashboard","viewcoursestats":"View course stats","viewdetails":"View details","viewless":"View less","viewmore":"View more","yes":"Yes","yesiamsure":"Yes, I am sure","upload":"Upload","donotupload":"Do not Upload","smplcsv":"Download sample CSV","seeMore":"See more","seeLess":"See less","browse":"Browse Online","completed":"Completed","desktop":{"shareTelemetry":"Share Telemetry"},"myLibrary":"My Downloads","pause":"Pause","pausing":"Pausing","profile":{"edit":"Edit"},"resuming":"Resuming","loadMore":"Load More","autoCapture":"Auto Capture","exportAs":"Export As","goBack":"Go back","resetFilters":"Reset filters","confirmBtn":"Confirm","requestReport":"Request report","addNew":"Add new","search":"Search","addLogic":"Add logic","confirmAll":"Confirm All","copy":"Copy","copyUrl":"Copy URL","copyId":"Copy ID"},"lbl":{"addNewMember":"Add member","consentsharedetail":"Consent to share details","fromGroup":"from this group","groupDescription":"Enter a description to help members understand the purpose of the group","member":"Member","otpcontactinfo":"Enter OTP to edit your contact information","tryDifferentName":"* type a similar but, different name","ACTIVITY_COLLECTION_TITLE":"Collection","ACTIVITY_COURSE_TITLE":"Courses","ACTIVITY_EXPLANATION_CONTENT_TITLE":"Explanation content","ACTIVITY_PRACTICE_QUESTION_SET_TITLE":"Practice question set","ACTIVITY_PRACTICE_RESOURCE_TITLE":"Practice resource","ACTIVITY_RESOURCE_TITLE":"Resource","ACTIVITY_TEXTBOOK_TITLE":"Textbooks","ACTIVITY_TV_EPISODE_TITLE":"TV Episode","ActivityCourses":"Courses","ActivityLessonPlan":"Lesson Plan","ActivityTextbooks":"Textbooks","AddtoGroup":"Add to group","CCbyLicense":"All content here is licensed under a Creative Commons license (CC-BY 4.0) unless otherwise noted","EnterPassword":"Enter password","InstanceIdProfilename":"The {instance} ID is written just below the profile name.","LastUpdated":"Last updated","MembersInstanceId":"Use the following instructions to guide members to identify their unique {instance} ID:","Mobile":"Mobile","NoSerchGroupMemberResults":"Sorry! There are no results that match your search. To continue your search","OTPhasbeensent":"OTP has been sent","OTPhasbeensentToEmail":"OTP is sent to your email address","OTPhasbeensentToPhone":"OTP is sent to your mobile number","OTPmsgforuser":"You will receive an OTP to verify your mobile number or email address","OTPresendMaxretry":"You can request for an OTP only 4 times. You have to register again","OTPresendMaxretryreached":"Maximum retry limit exceeded","OTPvalid":"OTP is valid for 30 minutes","RecommndationsBasedOnProfile":"Recommendations based on your profile details","SearchIn":"Search in {searchContentType}","SeetheInstanceIDhere":"See the {instance} ID here","Select":"Select","SelectProfileMenu":"Select the profile menu","ShowingActivityResults":"Showing {resultCount} results for {searchString}","TypeToSearchForContent":"Type to search for content. e.g. 'Story'","aboutTheContent":"About the content","accessCourse":"Access course","accessToLogin":"To access the course you have to log in and join the course","accessibilityfntdflt":"Reset to default","accessibilityfont":"Decrease font size","accountRecoveryDescription":"A recovery account helps you to regain access to your account if you are locked out or forget your password. Choose the recovery account type and enter details","activategrp":"Activate group","activategrpques":"Activate group?","active":"Active","activities":"Activities","activityRecommendation":"Recommendations based on your profile details","addAnotherUser":"Add another user","addCertificateText":"Certificate will be issued to users who meet this criteria","addCertificategreaterThan":"Greater than or equal to","addCertificateprogressrule":"Progress rule","addCertificatescorerule":"Score rule","addContentType":"Add {contentType}","addCourse":"Add course","addDistrict":"Add District","addEmailID":"Add Email address","addMember":"Add member","addPhoneNo":"Add Mobile Number","addRecoveryAccount":"Add recovery account","addRecoveryId":"Add Recovery ID","addState":"Add State","addUser":"Add user","addingMembertoGroup":"Where can I see the {instance} ID?","addlInfo":"Additional Information","addnote":"TAKE NOTES","addnuserrole":"Add role","addorgtype":"Add Organization Type","address":"Address","admindshheader":{"blocks":"Block(s)","districts":"District(s)","index":"Serial No.","schools":"School(s)","teachers":"Regd. Teachers"},"administrator":"School head OR Officials","agreeCourseToc":"I accept {instance}'s","agreeGroupToc":"I agree to {instance}'s","agreeToShareDetails":"I consent to share my details with the administrators of this course. All course administrators are bound by the Privacy Policy and Course Terms in their use of my data.","allContent":"All content","allDownloads":"All downloads will automatically be added to","allImages":"All images","anncmnt":"Announcement","anncmntall":"All Announcements","anncmntcancelconfirm":"Are you sure you want to stop showing this announcement?","anncmntcancelconfirmdescrption":"Users will not be able to see this announcement after this action","anncmntcreate":"CREATE ANNOUNCEMENT","anncmntdtlsattachments":"Attachments","anncmntdtlssenton":"Sent on","anncmntdtlsweblinks":"Weblinks","anncmntinboxannmsg":"Announcements","anncmntinboxseeall":"See All","anncmntlastupdate":"Consumption data last updated on","anncmntmine":"My Announcements","anncmntnotfound":"No announcement found !","anncmntoutboxdelete":"Delete","anncmntoutboxresend":"Resend","anncmntreadmore":"... Read More","anncmntsent":"Showing all sent announcements","anncmnttblactions":"Actions","anncmnttblname":"Name","anncmnttblpublished":"Published","anncmnttblreceived":"Received","anncmnttblseen":"Seen","anncmnttblsent":"Sent","appUpdateAvailable":"New update available!","appUpdateDescription":"Click on the link to get the new version of the desktop app","appliedFilters":"Applied filters","assetCaption":"File name","attributions":"Attributions","enterOTPByParent":"Parent/guardian should enter the OTP","tncLabelForMinor":"As a parent/guardian I understand & ","tncLabelForMinorSub":"agree my child to register on {instance} with the given information.","tncAcceptLabel":"accept the {instance} Terms of Use","tncLabelForMajor":"I am 18+ years old and understand and ","welcomeToInstance":"Welcome to {instance}","haveaccount":"Already have an account?","audience":"Audience","author":"Author","authorofsourcecontent":"Author of Source Content","availableBatches":"Available batches","availableForContribution":"Available for contribution","avscore":"Average of best assessment scores: {score}","badgeassignconfirmation":"Are you sure you want to issue the badge to this content?","bannerTitle":"Featured","basedOnPref":"Filters matching  your profile details","batch":"Batch","batchReportUpdateNote":"Last updated on {date}","batch_name":"Batch name","batchdescription":"DESCRIPTION OF BATCH","batchdetails":"Batch Details","batchenddate":"End date","batches":"Batches","batchstartdate":"Start date","bestScoreattempt":"Best attempt score","bestscore":"Best score {score}","birthdate":"Birthdate (dd/mm/yyyy)","block":"Block","blocked":"Blocked","blockedUserError":"The user account is blocked. Contact administratorn","boardRequired":"You have to select a State","browse":"Online library","browserSuggestions":"For an improved experience, we suggest that you upgrade or install","canEditProfileDetails":"You can edit these details from your profile page","captchaValidationFailed":"Failed to validate your details","cert":"Reissue certificates","certcriteria":"Certificate criteria","certgivenby":"Certificate given by","certificateIssuedTo":"Certificate issued to","certificateNameUpdate":"Do not show this message again","certificates":"Certificates","certificatesIssued":"Certificates Issued","certificationAward":"Certifications & Awards","certissuedon":"Certificate issued date","change":"Change","channel":"Channel","chapter":"Chapter","charError":"Password must contain at least 8 alphanumeric characters.","characterleft":"Characters remaining","chartSummary":"Chart summary","checkSpelling":"* check your spelling","checkYourSpelling":"*check your spelling","chkuploadsts":"Check Upload Status","chooseAll":"Choose All","chooseImageNote":"Choose or drag and drop your image here *","chooseImageSize":"File size:  < or = 50KB","chooseImageType":"File type: *.png","chooseImagedimensions":"Dimensions:","class":"{frameworkCategory3}","classRequired":"You have to select a class","classes":"{frameworkCategory3}","clickHere":"Click here","clickOnProfileIcon":"Click on the profile icon on the header","cluster":"Cluster","collapseAll":"Collapse all","comingSoon":"Coming soon","communicationConsole":"Communication console","completeContentToUnlock":"Complete {count} more contents to unlock a new achievement","completeForCertificate":"Complete all the modules to get a certificate","completed":"Completed","completedCourse":"Courses completed","completingCourseSuccessfully":"For successfully completing the course,","confirmPassword":"Confirm Password","confirmblock":"Are you sure to Block","congratulations":"Congratulations!","contactStateAdmin":"Contact your state admin to add more participants to this batch","content":{"AUTHOR":"Author","BOARD":"Board","CLASS":"Class","CREATEDON":"Created on","ContentInformation":"Content information","CreatedOnBy":"Created on {instance} by","DESCRIPTION":"Description","KEYWORDS":"Keywords","LASTUPDATEDON":"Last updated on","LicenseTerms":"License terms","MEDIUM":"Medium","RESOURCETYPE":"Resource type","SUBJECT":"Subject","COPYRIGHT":"COPYRIGHT"},"contentCredits":"Content Credits","contentLabel":"Content","contentType":"Content type","contentcopiedtitle":"This content is derived from","contentinformation":"Content Information","contentname":"CONTENT NAME","contentsLabel":"Contents","contenttype":"Content","continue":"Continue","copy":"Copy","copyAsCourse":"Copy as course","copyRight":"Copyright","copycontent":"Copying content...","copyrights":"Copyrights and License:","country":"Country","countryCode":"Country code","course":"Course","courseContainCertificate":"This is a certificate course","courseCreatedBy":"Created by","courseCredits":"Credits","courseDetails":"Course details","courseDontContainCertificate":"Currently, this course does not have a certificate. The course creator may attach a certificate later.","courseGuidelines":"Course Terms","courseLastUpdatedOn":"Course last updated on","courseProgress":"Course progress","courseRelevantFor":"The course is relevant for:","courseSuccessMessage":"You have successfully completed the course","courseSuccessNotificationMessage":"You will be notified about the course certificate on your registered contact details within 7 days","courseToc":"You have to agree to course's guidelines before you proceed","courseWithoutCertificateNote":"Note: This course does not have a certificate","coursebatchenddate":"Batch end date","coursebatchstartdate":"Batch start date","batchStatus":"Batch status","coursecompletiondate":"Course completion date","coursecreatedon":"Created on","courses":"Courses","coursestructure":"Course modules","createGroup":"Create group","createGroupDes":"You are just a step away from creating a group","createUser":"Add user","createUserSuccessWithEmail":"Your email address is verified. Log in to continue","createUserSuccessWithPhone":"Verification successful. Login to continue","createdInstanceName":"Created on {instance} by","createdon":"Created On","creationdataset":"Creation","creator":"Creator","credits":"Credits","creditsLicenceInfo":"Credits & license info","current":"Current","currentlocation":"Current location","curriculum":"Curriculum","dashBoardTitle":"Dashboard","dashboard":{"action":"Action","description":"Description","download":"Download","downloadfile":"Download file","fileName":"File name","fileSize":"File size"},"dashboardcertificateStatus":"Certificate Status","dashboardfiveweeksfilter":"LAST 5 WEEKS","dashboardfourteendaysfilter":"LAST 14 DAYS","dashboardnobatchselected":"No batch selected","dashboardnobatchselecteddesc":"Select a batch to proceed","dashboardnocourseselected":"No course selected","dashboardnocourseselecteddesc":"Select a course from the list","dashboardnoorgselected":"No organization selected!","dashboardnoorgselecteddesc":"Select an organization to proceed","dashboardselectorg":"Select Organization","dashboardsevendaysfilter":"LAST 7 DAYS","dashboardsortbyenrolledon":"Enroled On","dashboardsortbystatus":"Status","dashboardsortbyusername":"User Name","dataDictionary":"Data Dictionary","dataSetting":"Profile data sharing","dataShareOffNote":"You have not agreed to share your profile details with the course administrator","dataShareOnNote":"You have agreed to share your profile details with the course administrator","dataSharingIs":"Profile data sharing is","datasetExamples":"Dataset Examples","deactivategrp":"Deactivated","deactivategrpques":"Deactivate group?","debugModeTitle":"Developer options","defaultstar":"Tap on stars to rate the content","delete":"Delete","deleteConfirm":"Are you sure you want to delete this entity?","deleteGroup":"Delete group","deleteUser":"Delete user","deletenote":"Delete Note","description":"Description","desktop":{"Suggestions":"Suggestions","SuggestionsText1":"Make sure that all words are spelt correctly","SuggestionsText2":"Try different keywords","SuggestionsText3":"Try more general keywords","about_us":"About {instance}","app":"{instance} Lite Desktop App","authorOfSourceContent":"Author of source content","board":"by {board}","content":"Content","creditsAndLicenceInfo":"Credits and Licence information","deleteBook":"Delete textbook","deleteCollection":"Deleting {name} textbook removes it from My Downloads. Click Delete to continue.","deleteContent":"Deleting {name} content removes it from My Downloads. Click Delete to continue.","downloadBook":"Download textbook","explore":"Explore more content","failedListLabel":"Could not download or import file(s). Remove unwanted files from your computer and try again","find_more":"Find more textbooks and content on {instance}","lastShared":"Last shared","lowMemory":"The app may be slow as your computer has low memory","notMatchContent":"did not match any content","storageSpaceRunningOutHeader":"Insufficient storage space","update":"Update {instance} desktop","updateAvailable":"New version update available","updateTextbook":"Update textbook","mylibrary":"My Downloads","Off":"Off","TotalSize":"Total size:","allDownloads":"All downloads","alwaysOn":"Always on","automaticSyncTelemetry":"Automatically sync telemetry","filesImported":"Files imported","importNewFile":"Import new file","lastSynced":"Last synced:","syncTelemetry":"Sync telemetry","telemetry":"Telemetry","termsOfUse":"Terms of Use","waitingForImport":"Waiting for import","yourSearch":"Your search for - \"{key}\"","deleteCourse":"Deleting {name} course removes it from My Downloads. Click Delete to continue."},"desktopAppDescription":"Install {instance} desktop app to explore downloaded content or to play content from external devices. {instance} Desktop App provides","desktopAppFeature001":"Free unlimited content","desktopAppFeature002":"Multilingual support","desktopAppFeature003":"Play content offline","detailedWiseReport":"Detailed report","dialCode":"QR code","dialCodeDescription":"QR code is the 6 digit alphanumeric code found beneath the  QR code image in your text book","dialCodeDescriptionGetPage":"QR code is the 6 digit alphanumeric code found beneath the  QR code image in your text book.","dikshaForMobile":"DIKSHA for Mobile","dismissWarning":"Dismissing {memberName} as group admin removes admin permissions from the member","district":"District","dob":"Date Of Birth","done":"Done","dontShare":"Do not share","downloadAppLite":"Download {instance} Lite Desktop App","downloadAppOtherversions":"Other versions","downloadAppRecommended":"Recommended for your PC","downloadAsCSV":"Download as CSV","downloadBooks":"Download books to access while offline","downloadCourseQRCode":"Download Course QR Code","downloadCsv":"Download data CSV","downloadDikshaForMobile":"Download DIKSHA for Mobile","downloadQRCode":{"tooltip":"Click to download QR codes and link them to the published course"},"downloadSectionNote":"Downloads section(Latest 10 reports)","drive":"Pendrive or External Drives","dropcomment":"Add a comment","dscfrmctgries":"Categories","dscfrmdiscssions":"Discussions","dscfrmforum":"Discuss","dscfrmmydisc":"My discussions","dscfrmpstqtn":"Ask a question or post an idea","dscfrmviews":"Views","dsfrmcnfrmemail":"This is my official email address","dsfrmdob":"Date of Birth (dd - mm - yyyy)","dsfrmemail":"Primary email address","dsfrmpincode":"Pin code","dsfrmpostaladd":"Postal address","duplicateEmailAddress":"This email address is the same as that linked to your profile","duplicatePhoneNumber":"This mobile number is the same as that linked to your profile","ecmlarchives":"Ecml Archives","edit":"Edit","editGroup":"Edit group details","editPersonalDetails":"Edit Personal Details","editProfileInfo":"You can edit this information from your profile","editSetting":"Update","editUserDetails":"Edit details of the User","education":"Education","email":"Email address","emailAddress":"Email address","emailId":"Email address","emailPhonenotRegistered":"Email address / Mobile number is not registered with {instance}","emailVerfied":"Email verified","emptycomments":"No comments","enddate":"END DATE","enjoyedContent":"Enjoyed this content?","enrollcourse":"Join Course","enrollmentenddate":"Enrolment end date","enterCertificateCode":"Enter the certificate code here","enterDialCode":"Enter QR code","enterEmail":"Enter email address","enterEmailID":"Enter email address","enterEmailPhoneAsRegisteredInAccount":"Enter email address/mobile number registered with {instance}","enterFollowingInfo":"Enter the following information","enterGroupName":"Enter group name","enterInstanceId":"Enter {instance} ID","enterName":"Enter name","enterNameNotMatch":"The entry does not match the name registered with {instance}","enterOTP":"Enter OTP","enterPhoneNumber":"Enter mobile number","enterQrCode":"Enter QR code","enterUUID":"UUID","enterValidCertificateCode":"Enter a valid certificate code","enterValidName":"Enter a valid name. Only alphabets are allowed.","enternameAsRegisteredInAccount":"and the name as on the {instance} account","epubarchives":"Epub Archives","errorConfirmPassword":"Passwords do not match","errorMessage":"Error message","errorMsg":"To copy the error to a text editor, click the copy to clipboard button","errorWhileGeneratingTicket":"There was a technical error, try again later","errorinupload":"Error while uploading users","expandAll":"Expand all","experience":"Experience","expiredBatchWarning":"Batch has ended on {EndDate}, therefore your progress will not be updated.","expiredbatch":"Expired batch","explore":"Explore","exploreContentOn":"Explore content on {instance}","explorecontentfrom":"Explore content from","exprdbtch":"Expired Batches","externalId":"External Id","failres":"Failure Results","fetchingContentFailed":"Failed to fetch content. Try again later.","fetchingSchools":"Please wait while we fetch schools","fieldsmarked":"Fields marked with an asterisk (","fileUploadSuccessMessage":"File uploaded successfully. Record status will be updated within 24 hours. To view the updated values, download the file using the <b>Download User Details</b> button","filterContentBy":"Filter content by","filterby":"Filter by","filters":"Filters","first":"First","firstName":"First name","flaggedby":"Flagged by","flaggeddescription":"Flagged Description","flaggedreason":"Flagged reason","for":"for","forDetails":"For details","forSearch":"for {searchString}","forceSync":"Sync progress now","forceSyncsuccess":"You can view your updated course progress within 24 hours","frequentlyAskedQuestions":"Frequently asked questions","fromTheTextBook":"from the textbook","fullName":"Full name","gender":"Gender","generateOtpFailed":"Failed to generate OTP. Try again later","getOTP":"Get OTP","getStarted":"Get started","getUnlimitedAccess":"Get unlimited access to textbooks, lessons and courses offline on your mobile phone","goBackToClassicTheme":"If you want to change the theme, go to your profile and switch theme","goToHelpCenter":"Go to Help Center","goToMyDownloads":"Go to My Downloads to find this content","goback":"To cancel","graphNotAvailable":"This report does not have graphs","graphStat":"Graph Statistics","graphs":"Graphs","group":{"viewActivity":"View activity"},"groupCreatedBy":"Created by : {name}","groupGuidelines":"Group guidelines","groupGuidelinesold":"Terms and conditions","groupName":"Group name","groupNameRequired":"You have to enter the group name","groupToc":"You have to agree to {instance}'s group guidelines before you proceed","groupWelcomeMsg":"Create a group or be a part of one to connect with people, share activities, review progress and explore other possibilities","groupWelcomeTitle":"Have you explored the potential of groups yet?","h5parchives":"H5p Archives","haventFoundAnyOtherissue":"Haven't found what are you looking for?","hi":"Hi","homeUrl":"Home Url","htmlarchives":"Html Archives","iAmStateTeacher":"Submit details","iam":"I am a","imageDrapAndDrop":"Upload the file before you enter asset details","imagecontents":"Image Contents","import":"Download books to access while offline","improveYourExperience":"Improve your experience","inAll":"in \"all\"","inProgress":"In progress","inUsers":"in users","inactive":"Inactive","incompatibleBrowser":"You seem to have an incompatible browser or browser version","indPhoneCode":91,"instacnceId":"{instance} ID","installApp":"Install app","installAppDesc":"Store lessons, textbooks and content offline on your device","installAppFree":"Free","installAppPlayStore":"Available on Play Store","installAppTitle":"{instance} - National Teachers Platform for India","instanceId":"{instance} ID","isRootOrg":"Is RootOrg","issueReportedSuccessfuly":"Issue reported successfully","issueReportedSuccessfulySubNote":"Note: Your issue will automatically be sent to {instance} when you are online","itis":"It is","join":"Join","joinTrainingToAcessContent":"You must join the course to get complete access to content","joyThemeText":"For joyful learning, we have redesigned our platform making it easier for you to find contentn","keywords":"Keywords","lang":"Language","language":"Language(s) known","last":"Last","lastName":"Last name","lastUpdatedOn":"Last updated on","lastupdate":"Last update","learnerPassbook":"Learner passbook","learners":"Learners","leaveGroup":"Leave group","leaveGroupWarning":"This action cannot be undone. Do you want to leave {groupName}","lessonPlan":"Lesson Plan","library":"Online library","licenseTerms":"License terms","linkCopied":"Link copied","linkedContents":"Linked contents","loadContentFrom":"Load content from","location":"Location","lockPopupTitle":"{collaborator} is currently working on {contentName}. Try again later.","loginToCreateGroup":"The first step towards creating your own group, study circle or classroom is to log in","makeAdmin":"This action will give {memberName} group admin permissions","manage":"Manage","manageLocation":"Manage location","manageuser":"Manage user","mandatory":") are mandatory","markas":"Mark as","meantFor":"Intended for","mediaType":"Media type","mediumRequired":"You have to select a medium","memberVerificationMsg":"You have to check that the member's name and {instance} ID match, before you proceed","members":"Members","mentors":"Mentors","mergeAccount":"Merge Account","mobileEmailInfoText":"Enter your mobile number or email address to log in on DIKSHA","mobileNumber":"Mobile Number","moduleFinish":"You have completed this module","moduleProgress":"Module progress","more":"more","myBadges":"My badges","myEnrolledCollections":"Continue Learning","myImages":"My images","myLearning":"My learning","mynotebook":"My Notebook","mynotes":"My Notes","mytrainings":"My courses","name":"Name","nameRequired":"You have to enter a username","nameUpdateConfirmation":"This name will be printed on your course certificate. Check if it is correct.","newCourse":"New courses","newLookAndFeel":"{instance} has got a new look and feel.","next":"Next","nextModule":"Next module","noBookfoundButtonText":"See more books and contents","noContentToPlay":"No content to play","noContentfoundButtonText":"Explore more content","noCreditsAvailable":"No credits available","noDataAvailable":"No data available","noDataFound":"No data found","noDataInTable":"You have not requested any reports yet","noMatchingMember":"Sorry! There are no results that match your search. To continue your search","noMatchingRecordFound":"There are no participants in this batch","noProgress":"Progress cannot be tracked for {type}","noThankYou":"No thank you","noofEnrolments":"No. of enrolments","notRecommended":"If you have completed the course previously, we do not recommend that you join the batch. If you do, your learning history and certificates will be reset.","notShareProfileDetails":"Do not share my profile details","note":"Note:","notifnumber":"{Number} new notification(s)","observation":"Observation","observationForm":"Observation form","off":"Off","on":"On","onDiksha":"on {instance} on","onboardingscreenheading":"Choose content preference","oneCourse":"Course","oneTimePassword":"One Time Password (OTP)","ongoing":"Ongoing","open":"Open","opndbtch":"Open Batches","or":"or","orgCode":"Org Code","orgId":"OrgId","orgName":"Org Name","orgType":"Org Type","orgname":"Organization Name","orgtypes":"Organization Type","originalAuthor":"Original Author","other":"Other","otpMandatory":"OTP is mandatory","otpSentTo":"OTP has been sent to","otpValidationFailed":"Failed to validate the OTP","parent":"Parent","parentOrGuardian":"of your parent or guardian","participants":"Participants","passwd":"Your password must contain a minimum of 8 characters. It must include numerals, lower and upper case alphabets and special characters, without any spaces.","passwderr":"Your password and username cannot be the same","password":"Password","pdfcontents":"Pdf contents","phone":"Mobile number","phoneNumber":"Mobile Number","phoneOrEmail":"Enter mobile number or email address","phoneRequired":"Mobile number is required","phoneVerfied":"Mobile number verified","phonenumber":"Mobile Number","pincode":"Pin Code","play":"PLAY","playContent":"Play Content","playVideo":"Play video","pleaseValidateYour":"You must validate your","plslgn":"This session has expired. Login again to continue using {instance}.","position":"Position","preferenceCanBeUpdated":"You can edit this user's details from the Profile page","preferredLanguage":"Preferred Language","prevModule":"Prev. module","previous":"Previousn","privacyPolicy":"Privacy Policy","processid":"Process ID","profile":{"selectDistrict":"Select district","Board":"Board","Classes":"Classes","District":"District","Medium":"Medium","State":"State","Subjects":"Subjects","selectBoard":"Select Board","selectClasses":"Select Classes","selectMedium":"Select Medium","selectState":"Select State","selectSubjects":"Select Subjects","updatePreferenceHeader":"To discover relevant content, update details","yourLocation":"Your Location","yourLocationHeader":"Your location details help us suggest content that is useful to you. Is the location given correct? if not, select your correct location and click Submit"},"profileDetails":"Profile details","profileNameConfirmations":"Confirm profile name","profilePopup":"To discover relevant content update the following details:","profileTab":"Click the Profile tab","profiledetails":"Content preference","provideDetails":"Provide details to register on {instance}","provideTeacherDetails":"Required details","provider":"OrgProvider","pswdRule":"Your password should be 8 characters, alphanumeric, and without special characters or spaces. Remember your password, as you will require the same password to view the generated report.","publishedBy":"Published by","publishedOnInstanceName":"Published on {instance} by","publishedUserType":"Published user type","publisher":"Publisher","questionBank":"Question bank","reEnterPassword":"Re-enter the password","re_issue":"Reissue certificate","readless":"Read Less ...","readmore":"... Read More","receiveOTP":"Where would you like to receive the OTP?","recentlyPublishedCourses":"Recently published courses","recoverAccount":"Recover Account","redirectMsg":"This content is hosted outside","redirectWaitMsg":"Wait while the content loads","refreshedDaily":"Refreshed daily","register":"Register","registerOn":"Register on {instance}","followingdetails":"Please re-enter the following details","reissue":{"criteriaMet":"Criteria met"},"releaseDateKey":"Release date","removeActivity":"Remove activity","removeAll":"Remove All","removeWarning":"Removing {memberName} permanently removes him/her from the group","repgenAdminNote":"It takes a minimum of 24 hours to generate the requested report. The administrators of this course are responsible for the privacy and security of the user's profile information. They have to ensure that the information is used only in accordance with {instance_course_terms}:","reportAnIssue":"Report an issue","reportOtherIssue":"Report another issue","reportStatus":"The request for this report is being processed. For details, check the downloads section","reportSummary":"Report summary","reportUpdatedOn":"This report was last updated on","reques":"Request","request":"Request","requestFailed":"Request for report failed","requestReport":"Request report","requiredField":"You have to enter {field}","resendOTP":"Resend OTP","resentOTP":"OTP has been resent. Enter OTP.","retired":"Retired","returnToCourses":"Return to Courses","role":"Role","roles":"Roles","rootOrg":"Root org","sameEmailId":"This email address is the same as that linked to your profile","samePhoneNo":"This Mobile Number is the same as what is linked with your profile","saveToPenDrive":"Save to pen drive","school":"School","schoolId":"School ID","schoolName":"School or Org name","schoolTeacherId":"Your State, Board, or Org ID","schoolUdiseId":"School UDISE ID/ Org ID","search":"Search","searchForContent":"Enter QR code","searchForGroupMembe":"Search for a group member","searchForGroupMember":"Search for group member","searchOrQr":"Search or enter QR code","searchUser":"Search user","searchUserName":"Search for participants","searchWithinGroup":"Search within group","section":"Section:","sectionTitle":"Courses","seeless":"See less","seemore":"See more","selectActivity":"Select activity","selectAll":"Select all","selectBatch":"Select batch","selectBlock":"Select Block","selectChapter":"Select Module","selectContentFromCourse":"Select contents for course","selectContentType":"Select content type","selectDistrict":"Select district","selectEntity":"Select entity","selectImage":"Select image","selectPublisher":"Select publisher","selectSchool":"Select School","selectState":"Select State","selected":"Selected","selectreason":"SELECT A REASON","selfDeclaredDetails":"Details of users who have given consent to share their information","selfDeclaredInfo":"My details","sesnexrd":"Session Expired","setRole":"Edit user","share":"Share","shareProfileDetails":"Share my profile details","sharelink":"Share using  the link -","showLess":"Show less","showingResults":"Showing results","showingResultsFor":"Showing results for {searchString}","showingResultsForWithCount":"Showing {resultCount} results for","showingrecord":"Showing {count} of","signUp":"Register","signinenrollTitle":"Log in to join this course","similarButDiffName":"*type a similar but, different name","skillTags":"Skill Tags","sltBtch":"Select a batch to proceed","sortby":"Sort by","startExploringContent":"Enter a QR code to start exploring content","startExploringContentBySearch":"Explore content using QR codes","startLearning":"Start learning","startdate":"START DATE","started":"Started","state":"State","stateRecord":"As per state records","stateVerified":"State verified user","stateWiseReport":"Summarised report","stateorg":"State/organisation","status":"Status","step1":"Step 1:","step2":"Step 2:","step3":"Step 3:","student":"Student","subRole":"Sub-role","subjectRequired":"You have to select a subject","submit":"Submit","submitIssueButton":"Submit Issue","submitOTP":"Submit OTP","successres":"Success Results","summary":"Summary","summaryReportNote":"Summarized reports contain data from Sept. 6, 2020, onwards. If you need prior data, you may place a request for a detailed report","summaryReportUpdateNote":"This report is updated once in 24 hours.","supportedLanguages":"Supported languages","switchLayout":"Switch layout","switchToJoyLayout":"Switch to joyful theme","switchToOldLayout":"Switch to classic theme","switchUser":"Change user","tableNotAvailable":"Table view is not available for this report","table":"Tables","takenote":"TAKE NOTES","tcfrom":"From","tcno":"No","tcto":"To","teacher":"Teacher","teacherDetailsTnc":"I agree to share these details with the Administrators of {instance} as per the","teachingResource":"Teaching resources","tellUsMoreAboutProblem":"Tell us more about the problem you faced","tenDigitPhone":"10 digit mobile number","termsAndCond":"Terms and Policies","termsAndCondAgree":"I agree to the updated terms and policies","termsOfService":"terms of services","textbooks":"Digital textbooks","thankyouForSubmittingDetails":"Thank you for submitting your details","theme":"Theme","title":"Title","tncLabel":"I understand and accept the","tncLabelLink":"{instance} Terms of Use","toTryAgain":"to try again","toYourEmailPhone":"to < email address/mobile number >","topics":"Topics","totalBatches":"Total batches till date","totalCompletions":"Total completed till date","totalCompletionsCourse":"Total completions","totalEnrollments":"Total enrollment till date","totalEnrolments":"Total enrolment as on date","totalrecords":"{total} records","trainingAttended":"Courses attended","tryNewTheme":"Try new theme","tvProgram":"TV classes","typeHere":"Type here","unableToUpdateEmail":"Unable to update email address?","unableToUpdateMobile":"Unable to update Mobile Number?","unableToVerifyEmail":"Unable to verify email address?","unableToVerifyPhone":"Unable to verify your mobile number?","unenrollMsg":"Do you want to unenrol from this batch?","unenrollTitle":"Batch Unenrolment","uniqueEmail":"Your email address is already registered","uniqueEmailId":"This email address is already registered. Enter another email address","uniqueMobile":"This mobile number is already registered. Enter another mobile number.","uniquePhone":"This mobile number is already registered","updateDetails":"Update details","updateEmailId":"Update Email address","updatePhoneNo":"Update Mobile Number","updateRecoveryId":"Update Recovery ID","updateSetting":"Update settings","updatedon":"Updated on","updateorgtype":"Update Organization Type","upldfile":"Uploaded File","uploadFileError":"You can only upload a <b>.csv</b> file","uploadValidationStatus":"Upload validation status","uploadcsvfile":"Upload CSV file","uploadingValidationStatusHeader":"Update validation status for self-declared user information","uploadlicense":"I understand and confirm that all resources and assets created through the content editor or uploaded on the platform shall be available for free and public use without limitations on the platform (web portal, applications and any other end-user interface that the platform would enable) as per platform policy guidelines. In doing so, I confirm that the copyright and license of the original author are not infringed.","uploadmsg":"Upload the CSV file in the required format","useInstanceAs":"Use {instance} as","userDistrict":"User district","userFilterForm":"Search for participants","userID":"UserId","userId":"User ID","userType":"User Type","userrole2":"Search and add user role","userrole4":"Details of users who have consented to share information. Use of downloaded data is governed by {instance}'s administrator guidelines","validDescription":"Enter valid description","validEmail":"Enter a valid email address","validFor":"valid for 30 min","validPhone":"Enter a valid 10 digit mobile number","validate":"Validate","verifying":"Verifying","verifyingCertificate":"Verifying your certificate","versionKey":"Version","videos":"Videos","view":"View","viewInBrowser":"View in browser","viewless":"View less","viewmore":"View more","whatInstanceId":"What is {instance} ID ?","whatsQRCode":"What is a QR code?","whatwentwrong":"What went wrong?","whatwentwrongdesc":"Let us know what went wrong. Mention the exact reasons so that we review this as soon as possible and address this issue. Thank you for your feedback!","willsendOTP":"You will receive an OTP. After you validate it, you can recover your account","with":"with","wrongEmailOTP":"You have entered an incorrect OTP. Enter the OTP received on your Email ID. The OTP is valid only for 30 minutes.","wrongPhoneOTP":"You have entered an incorrect OTP. Enter the OTP received on your mobile number. The OTP is valid only for 30 minutes.","year":"Year","yearOfBirth":"Select year of birth","validYearOfBirth":"Please provide valid year of birth","yetToStart":"Not started","yop":"Year of Passing","you":"You","youAre":"Discover content as","leavePage":"Are you sure, you want to leave this page?","collectionRelevantFor":"The collection is relevant for","exploretitle":"Explore {searchString}","exploredescription":"Explore {searchString} from all the {frameworkCategory1}s and {frameworkCategory2}s on","selectAdditionalCategory":"Select Additional Categories type","yearOfBirthHeader":"Year of birth","updateChartSummary":"Update Chart Summary","disableDiscussionForum":"Disable discussions","discussionForum":"Forum","enableDiscussionForum":"Enable discussions","wishToShareDataWith":"I wish to share my data with","selectFilters":"Select Filters","selectFilterDescription":"(This will apply for all the chart sections)","stillCouldntFind":"Still couldn't find what you are looking for? Please visit","nameUpdateConfirmatio":"This will be your {instance} profile name in the course certificates please make sure your name is correct.","stateValidationDetails":"These details may be made available to your declared State to validate and follow progress.","fetchingBlocks":"Please wait while we are fetching blocks","okGotIt":"OK Got it","additionalCategory":"Additional Category","additionalCategories":"Additional Categories","errorTypeMsg":"Error Type Message","contentsUploaded":"Contents are being uploaded","anncmntplzcreate":"Please create announcement","downloadReqNote":"Note: Each download request would take about 24 hours to generate","ondemandReportNote":"Administrators are responsible for the security of the profile information of users and to ensure that it is used only in accordance with the {instance} Course Terms.","contactDetails":"Your contact details","nonCustodianTC":"I consent to providing my Profile Details and the additional details listed above with the administrators of my State / Institution. All administrators on {instance} are bound by the Privacy Policy and Administrator Guidelines in their use of my data.","userName":"User name","mobileNo":"Mobile No","uploadAndUse":"Upload and use","uploadSignature":"Upload Signature","editCertificateTitle":"Edit certificate template","saveAndPreview":"Save and Preview","createAndUseTemplate":"Create and Use template","certificateTitle":"Certificate title","certificateTitleNote":"This is what will be printed on the certificate as the main title that we see in blue","stateDetails":"State details","stateGovNote":"The name (e.g. Government of State State government etc.) that will be printed above the certificate title","stateLogo1":"State logo 1","stateLogo2":"State logo 2","browseImage":"Browse","imageFormat":"Format: *.png Dimenions: 88px * 88p Size: <= 10KB","signatory":"Authorized signatory","signature1":"Signature 1","signature2":"Signature 2","signImageFormat":"Format: *.png Dimenions: 112px * 46p Size: <= 10KB","signatureDesignation1":"Signature 1 designation","signatureDesignation2":"Signature 2 designation","signatureNote":"The designation of the authorised signatory is printed below the signature","uploadTermsAndCondition":"All the elements and attributes are throughly verified","certTemplatePreview":"Certificate template Preview","refresh":"Refresh","chooseLayout":"Choose layout","saveAsTemplate":"Save as template","notification":"Notification","newNotification":"New Notification (s)","noNotificationsToDisplay":"No notification(s) to display","selectMeantFor":"Select meant for","copyid":"Copy {instance} ID","selfAssessLastAttempt":"This is the last remaining attempt","selfAssessMaxAttempt":"You have exceeded the maximum number of attempts that can be submitted","accessibilitytskip":"Skip to Main Content","accessibility":"Accessibility Corner","accessibilitytext":"Site Map","accessibilitytextsize":"Increase font size","accessibilitytheme":"Dark mode/Normal mode","skiptomaincontent":"Skip to Main Content","screenreader":"Screen Reader Access","sitemap":"Site Map","aminus":"A-","a":"A","aplus":"A+","accessible":"Accessible","cancelDownload":"Cancel the download?","cancelUpload":"Cancel the upload?","chooseContentLocationDrive":"Select a location for the content :","contentManager":"Content Manager","currentLocation":"Current location","deviceId":"Device ID","downloadFailed":"Download failed. Try again","downloadPaused":"Download paused. Click resume to continue","downloading":"Downloading","downloadingContent":"Preparing to download {contentName}...","downloadingPaused":"Downloading paused","exportingContent":"Preparing to copy {contentName}...","faqheader":"Frequently asked questions (FAQs)","helpUsRatingContent":"Help us by rating this content","howToUseDiksha":"How to use {instance} desktop app","learn_more":"Learn more about how to use {instance}","maxCpuLoadWaring":"There may be some unused processes running in the background. Close them to improve application speed","noResultFoundFor":"No results found for \"{query}\" in","offline":"You are offline","online":"You are online","recommended":"Recommended","searchContent":"Type text to search for content. e.g. 'Story'","selectDrive":"Select drive","showingResultsForwithCount":"Showing {count} results for \"{searchString}\" from","uploadContent":"Upload content","uploadEcarFromPd":"Upload {instance} files (eg: MATHS_01.ecar) from your pen drive","uploadFailed":"Upload Failed. Try again","uploadPaused":"Upload paused. Click resume to continue","uploading":"Uploading","useThis":"Use this:","waitingForDownload":"Waiting to download","waitingForUpload":"Waiting to upload","watchVideo":"See video","BatchExpiringIn":"Batch expiring in","createObserveAgain":"Are you sure you want to create an observation instance ?","observationDetails":"Observation Details","deleteSubmission":"Are you sure you want to delete this observation instance?","instanceName":"Instance Name","notstarted":"Not started","updateprofilecontent":"Please update your profile","uploadevidencetitle":"Upload Evidence","uploadevidencecontent":"I have made sure that I do not violate others’ copyright, privacy or third party rights.","evidence_content_policy":"I confirm that the Content submitted by me comply with the terms and policies of {instance}, including","evidence_content_policy_label":"{instance} Content Policy","updateProfileTitle":"Update Profile","updateProfileContent":"Please update your profile","home":"Home","yourPreferences":"Your preferences","changePreferences":"CHANGE PREFERENCE","browseBy":"Browse by","suggested":"Suggested","successfullySaved":"Your Form has been saved successfully!","failedToSave":"Failed to save the form!","successfullySubmitted":"Your form has been submitted successfully!","submissionFailed":"Failed to submit the form!","saveConfirm":"Are you sure you want to save this form?","submitConfirm":"Are you sure you want to submit the form?","confirmBackClick":"Are you sure you want to refresh / leave the page?","uploadTermsRejected":"You cannot upload evidences, please agree the content policies and try again","evidenceUploaded":"Evidence uploaded","fileLimitCross20":"Can not upload file more than 20MB.","confirmEvidenceDelete":"Are you sure you want to delete the attachment?","sectionName":"Section name","enterResponse":"Enter your response","lastModifiedOn":"Last modified on","serialno":"Serial No","latestSubmission":"Latest Submission","enableDebugMode":"Enable Debug Mode","question":"Questions","criteria":"Criteria","selectquestionfilter":"Select Questions  to filter","selectcriteriafilter":"Select Criteria  to filter","evidences":"All Evidence","remarks":"Remarks","lastSubmittedOn":"Last Submitted On","targetCategory":"Categories","browseOther":"Browse Other","notApplicable":"Not Applicable","notApplicableRemark":"Please add your remarks here before making the Domain Not applicable.","allReadyNotApplicable":"This Domain has been already marked as Not applicable.","allReadyNotApplicableTitle":"Already marked as Not applicable.","arialabelShare":"course share link","altGoogleplay":"Get it from google play","arialabelCourserating":"course rating","arialabelContact":"contact label","ariaContentPlayer":"Content Player","datasetRequestSuccess":"Your report has been requested and will be available to download after 24 hours","program":"Select program","programLbl":"Program","solution":"Select resource","solutionLbl":"Resource","dashboarddistrict":"Select district","dashboarddistrictLbl":"District","dashboardOrg":"Select organisation","dashboardOrgLbl":"Organisation","selectReport":"Select report","reportType":"Report type","modalNote":"Note: Please select program and resource name.","resourceSelect":"Please select the resource name to get new data","csvDataSets":"CSV Datasets","programDatasets":"Program datasets","detailsReports":"Detailed report","confirmReportRequest":"Are you sure you want to request this report?","reportRequestFailed":"The report is already requested","hintModalNote":"Note: This is the hint for the following question","repgenProgramAdminNote":"It takes a minimum of 24 hours to generate the requested report. The administrators of this course are responsible for the privacy and security of the user's profile information. They have to ensure that the information is used only in accordance with {instance}.","files":"Files","exportCsv":"Export Filtered CSV","chooseFilter":"Choose filters to view reports","startingMessage":"Starting Message","botUrl":"Bot URL","botId":"Bot Id","action":"Action","disable":"Disable","conversations":"Conversations","conversationSetup":"Conversation setup","conversationFlow":"Conversation flow","aggreeTc":"I agree to the required terms and conditions","enable":"Enable","addConversation":"Add new conversation","conversationName":"Conversation name","conversationDescription":"Conversation description","conversationPurpose":"Purpose of the conversation","startMessage":"Start Message","startMessageError":"This starting message is not available","userCount":"User count","startDate":"Start Date","endDate":"End Date","noLogic":"No logic Added","addConversationLogic":"Add Conversation Logic","updateConversationLogic":"Update Conversation Logic","step":"Step","termsConditions":"Terms and Conditions","confirmWarning":"Please confirm that ALL the following items are verified (by ticking the check-boxes) before you can submit","botSuccess":"Congratulations! You have successfully created a new conversation","botUrlMessage":"Use the following URL to use DIKSHA bot","botIdMessage":"or share the following ID with DIKSHA team","enterDescription":"Enter description","enterPurpose":"Enter purpose","enterMessage":"Enter message","uploadOdkForm":"Upload ODK Form (.xml)","sampleOdkForm":"Sample ODK Form (.xlsx)","browseXmlFile":"Browse XML File","instructionManual":"Instruction Manual","appropriateness":"Appropriateness","appropriatenessHate":"No Hate speech, Abuse, Violence, Profanity","appropriatenessAbusive":"No Sexual content, Nudity or Vulgarity","appropriatenessDiscrimination":"No Discrimination or Defamation","appropriatenessChild":"Is suitable for children","contentDetails":"Content Details","contentDetailDescription":"Appropriate Title, Description","contentDetailCorrect":"Correct Board, Grade, Subject, Medium","contentDetailAppropriate":"Appropriate tags such as Resource Type, Concepts","contentDetailRelevant":"Relevant keywords","usability":"Usability","usabilityContent":"Content plays correctly","usabilityClear":"Can see the content clearly on Desktop and App","usabilityAudio":"Audio (if any) is clear and easy to understand","usabilityNoMistakes":"No spelling  in the text","usabilitySimple":"Language is simple to understand","itemsPerPageLabel":"Items per page","nextPageLabel":"Next Page","previousPageLabel":"Previous Page","firstPageLabel":"First Page","lastPageLabel":"Last Page","of":"of","questionSets":"Question Sets","DownloadTranscript":"Download Transcripts","otpSentMsg":"(An OTP will be sent to verify mobile number or email address)","board":"{frameworkCategory1}/University","boards":"{frameworkCategory1}","noBookfoundSubTitle":"Your {frameworkCategory1} is yet to add more books. Tap the button to see more books and content on {instance}","noBookfoundTitle":"{frameworkCategory1} is adding books","noContentfoundSubTitle":"Your {frameworkCategory1} is yet to add more content. Click the button below to explore other content on {instance}","noContentfoundTitle":"{frameworkCategory1} is adding content","selectBoard":"Select {frameworkCategory1}","preferencesheader":"Browse {instance} Library to find relevant content based on your preferences ({frameworkCategory1}, {frameworkCategory2} and {frameworkCategory3})","medium":"{frameworkCategory2}","selectMedium":"Select {frameworkCategory2}","grade":"{frameworkCategory3}","grades":"{frameworkCategory3}","selectClass":"Select {frameworkCategory3}","subject":"{frameworkCategory4}","subjects":"{frameworkCategory4}s","subjectstaught":"{frameworkCategory4}(s) taught","selectSubject":"Select {frameworkCategory4}"},"alert":{"debugModeEnabledFailed":"Unable to enable debug mode","debugModeEnabledSuccess":"Debug mode enabled successfully"},"bltpt":{"defaultinstruction1":"Check your Internet connection before you start the assessment","defaultinstruction2":"Read all questions carefully","defaultinstruction3":"Click the option to select your answer","defaultinstruction4":"Zoom to enlarge an image","defaultinstruction5":"Click > to go to the next question","defaultinstruction6":"Click < to go to the previous question","defaultinstruction7":"Check your progress on the right navigation bar","defaultinstruction8":"Check the status of each question before submitting your assessment","defaultinstruction9":"If applicable, click Ans to view the solution","earncert3":"To earn the certificate you can attempt the assessment {attempts} times only. You can, however, practise as many times","earnyourcert":"The completion certificate will be issued upon 100% completion"},"cert":{"btn":{"saveAsTemplate":"Save template","browse":"Browse","createtemp":"Create template","refresh":"Refresh"},"cmsg":{"certtemplate":"Certificate template added successfully"},"fmsg":{"certtemplate":"Could not add the certificate template"},"imsg":{"alertMessageForCert":"You have created the template successfully. The preview of the new template will be displayed in about 30 minutes. Click Refresh in case the template is not displayed","rcInvalid":"Scanned URL is invalid"},"inlntxt":{"confrmtion":"I confirm that all the elements for this certificate provided by me are correct and appropriate and the signatories and logo owners authorise me to provide the same","imgdimensions":"Format:*.png, Dimension:*88p x 88p, Size: < or = 50KB","signspec":"Format:*.png, Dimension:*112px * 46px, Size: < or = 50KB","certtitle":"This is what will be printed on the certificate as the main title that we see in blue","signdet":"The designation of the authorised signatory is printed below the signature","slecttemp":"Preview and select available certificate template or create another","statedet":"The name (e.g. Government of State State government etc. ) that will be printed above the certificate title"},"intxt":{"imgdimensions":"<b>Format:</b>*.png, <b>Dimension:</b>88p x 88p, <b>Size:</b> < or = 50KB","slecttemp":"Preview and select available certificate template or create another","confrmtion":"I confirm that all the elements for this certificate provided by me are correct and appropriate and I am authorised by the signatories and logo owners to provide the same"},"lbl":{"addCert":"Add certificate","addCertToBatch":"You have created/updated the batch successfully. Add certificate details now or later","batchUpdateSuccess":"Batch updated successfully","button":"button","certAddError":"Could not add the certificate. Try again later","certAddSuccess":"Certificate added successfully","certEditError":"Could not edit the certificate. Try again later","certNote":"Select from available templates","certPreview":"Certificate preview","certRules":"Certificate rules","certType":"Certificate type","certUpdateSuccess":"Certificate updated successfully","certificate":"Certificates","changeDetected":"Change template?","configure":"Configure certificates","currentcert":"Current template","editCert":"Edit certificate","imageErrorMsg":"The image exceeds the maximum supported file size","issueCertificate":"Issue Certificate","issueTo":"Issue certificate to","languageSupportNote":"Currently, we support entries only in English","noCertificate":"You do not have any certificates attached yet.To proceed, click the","noEditAction":"You cannot edit this certificate. Contact your administrator for support","preview":"Preview","selectTemplate":"Select template","templateChange":"Certificates with the new template will be issued to only those users who meet the defined criteria. There will be no change to users who have received their certificate","templates":"Templates","unselect":"Unselect","updateCert":"Update certificate","verified":"All the elements and attributes are thoroughly verified","addcert":"Add certificate","certprew":"Certificate template preview","certtitle":"Certificate title","confcert":"Configure certificate","createtemp":"Create certificate template","layout":"Select layout","sign":"Signature 1","sign2":"Signature 2","signatory":"Authorized signatory","signdesig":"Signatory 1 designation","signdesig2":"Signatory 2 designation","statedet":"State details","statelogo":"State logo 1","statelogo2":"State logo 2","batchCreateSuccess":"Batch created successfully.","confirmTemplateChange":"Would you really want to change the template?","designation":"Enter designation","alertHeader":"Info"},"prmpt":{"certtitle":"Enter certificate title","designation":"Enter designation","refreshtxt":"Select a layout and click Refresh to preview the certificate template","searchImage":"Search image"},"puhdr":{"alertHeader":"Hang on for a while!"},"prmttxt":{"certtitle":"Enter certificate title","refreshtxt":"Select a layout and click Refresh to preview the certificate template","statedet":"Enter the State organization or program name"}},"emsg":{"online":"Go online to download the transcript","desktop":{"importValidZipFile":"This is an invalid telemetry file"}},"imsg":{"lastattmptalrt":"This is your last attempt","lastattmptexcd":"You have exceeded the maximum number of attempts to submit the assessment","admintnc":"Downloaded data should be used in accordance with {instance}'s"},"inlntxt":{"dsfrmemail":"Enter your email address","dsfrmmobileno":91,"dsfrmpostaladd":"Type your residence address","dsfrmchoosedate":"Choose Date of Birth (dd - mm - yyyy)"},"instn":{"t0002":"You can add or upload details of up to 199 organizations at a time in one csv file","t0007":"The OrgName column is mandatory. Enter organization name in this column","t0011":"You can track progress with Process ID","t0012":"Save the Process ID for your future reference to track progress","t0013":"Download the csv file for reference","t0015":"Upload Organizations","t0016":"Upload Users","t0021":"Enter each organization's name in a separate row","t0022":"Entering details in all other columns is optional:","t0023":"isRootOrg: Valid values for this column True False","t0024":"channel: Unique ID provided during master organization creation","t0025":"externalId: Unique ID associated with each organization in the administrating  organization’s repository","t0026":"provider: Channel ID of the administrator organization","t0027":"description: Details describing  the organization","t0028":"homeUrl: Organization’s homepage url","t0029":"orgCode: Organization’s unique code, if any,","t0030":"orgType: Type of organization, such as, NGO, primary school, secondary school etc","t0031":"preferredLanguage: Language preferences for the organization, if any","t0032":"contactDetail: Organization’s mobile number and email address. Details should be entered within curly brackets in single quotes. For example: [{‘mobile number’: ‘1234567890’}]","t0049":"channel is mandatory if value for column isRootOrg is True","t0050":"externalId and provider are mutually mandatory","t0055":"Oops announcement details not found!","t0056":"Please try again...","t0058":"Download as:","t0059":"CSV","t0060":"Thank you!","t0061":"Oops...","t0062":"You haven't created a batch for this course yet. Create a new batch and check the dashboard again.","t0063":"You have not created any course as yet. Create a new course and check the dashboard again.","t0065":"Progress Report","t0066":"Score Report","t0076":"Note: All other columns in the CSV file are optional, for details on filling these, refer to","t0077":"Register Users.","t0078":"locationId: An ID which identifies an announcement topic for a particular organisation","t0079":"locationCode: Comma separated list of location codes","t0081":"Thank you for registering on DIKSHA. We have sent an sms OTP for verification. Verify your mobile number with the OTP to complete the registration process.","t0082":"Thank you for registering on DIKSHA. We have sent an OTP to your registered email address for verification. Verify your email address with the OTP to complete the registration process.","t0083":"You will receive an SMS with the OTP for Mobile Number verification","t0084":"You will receive an email with the OTP to verify your email address","t0085":"The report shows data for the first 10,000 participants. Click download to view the progress of all the participants in the batch.","t0098":"File format for user list upload:","t0099":"Name * (Name of the user as per state records)","t0100":"Identifier * (Mobile number OR email address - either one of the two is mandatory)","t0101":"State * (The State that the user belongs to)","t0102":"Ext Org ID * (School ID as provided in DIKSHA)","t0103":"Ext User ID * (State ID of the user)","t0104":"Input Status (Active, Inactive) * - Enter the record status as provided by the state administrator","t0105":"Roles (System roles to be assigned to the user)","t0106":"Save file as .csv before upload","t0107":"Use the **Download user details** button to download the self-declared teacher information from the portal. The data is updated every 24 hours","t0108":"Check that both, the phone number and State ID of each record in the downloaded file matches the corresponding State record. Update the STATUS column in the downloaded file. Valid Values for STATUS:n  a)VALIDATED: for records that match correctlyn b)REJECTED: for records that do not matchn c)ERROR: for records with missing information","t0109":"If the file has records that have STATUS = ERROR, add a new column ERROR TYPE","t0110":"For each record that has the STATUS = ERROR, you must add the appropriate error value in the ERROR TYPE column a)Valid values for ERROR TYPE:  a)ERROR-DISTRICT b)ERROR-PHONE c)ERROR-EMAIL d)ERROR-SCHOOL ORG NAME e)ERROR-SCHOOL ORG ID  f)ERROR-ID  g)ERROR-NAME","t0111":"Save as a .csv file","t0112":"Use the **Upload users csv** button to upload the file","t0067":"Provide the details below for suggesting content that is relevant for you","t0086":"Copy Content from Pen drive","t0087":"Offline Library","t0088":"Browse online for {instance} content","t0089":"How to use {instance} app","t0090":"Copy {instance} files (eg. Maths_01.ecar) from your pen drive to My Library to play them offline","t0091":"Click My Library to access all your offline content","t0092":"Download content when you are online from {instance} to My Library","t0093":"Watch detailed videos to understand how to use the {instance} desktop app","t0094":"How do I load content to the {instance} desktop app?","t0095":"How do I download content from {instance} Library?","t0096":"My Downloads: How do I play content?","t0097":"How do I copy content to my pen drive?"},"intxt":{"searchuser":"Search user {instance} ID","selrole":"Select role","ssousers":"Note: The certificate will be issued to users who access {instance} via your state portal only","t0001":"Search for notes or title","t0002":"ADD YOUR COMMENT","t0005":"Select batch mentors","t0006":"Select batch members","enterfulname":"Enter your full name","preferencesheader":"Browse {instance} Library to find relevant content based on your preference ({frameworkCategory1}, {frameworkCategory2} and {frameworkCategory3})"},"lnk":{"adminPolicy":"admin policy","announcement":"Announcement dashboard","assignedToMe":"Assigned to me","createdByMe":"Created by me","dashboard":"Admin dashboard","footerContact":"Contact for queries:","footerDIKSHAForMobile":"{instance} for Mobile","footerAppDownload":"Click here to download {instance} for mobile from playstore","footerDikshaVerticals":"DIKSHA Verticals","footerHelpCenter":"Help Center","footerPartners":"Partners","footerTnC":"Terms and Privacy","logout":"Logout","myactivity":"My Activity","profile":"Profile","viewall":"View all","report":"My Reports","programDashboard":"Program dashboard"},"msg":{"activategrpfailed":"Could not activate group, try again later","activategrpmsg":"Activating the group enables you to add members and activities. You can also track member progress","activategrppopup":"This group is temporarily deactivated. The group admin can re-activate the group","activategrpsuccess":"Group activated successfully","deactivategrpfailed":"Could not deactivate group, try again later","deactivategrpmsg":"Deactivating the group removes your access. You cannot add activities or members to the group. You also cannot track member progress.","deactivategrpsuccess":"Group deactivated successfully","guidelinesacceptfailed":"Could not update your acceptance of the group's terms and conditions","guidelinesacceptsuccess":"You have successfully accepted the group guidelines","noEntityFound":"Add entity to Observe .","noDataDisplayed":"There is no data displayed"},"pgttl":{"takeanote":"Notes"},"prmpt":{"certsearchImage":"Search image","deletenote":"Are you sure to delete this note?","dscfrmaskqtn":"Ask a question or post an idea","dsfrmchoosedate":"Select the date of birth","enteremailID":"Enter your email address","enterphoneno":"Enter 10 digit mobile number","search":"Search","searchOrQr":"Search or enter QR code"},"prpttext":{"assetCaption":"Enter file name"},"reissue":{"lbl":{"displayUser":"The {instance} ID is displayed below the user name","instructions":"Use the  instructions provided to guide users to identify the unique {instance} ID:"}},"scttl":{"Trendingcoursesfromstate":"Trending courses from your State","blkuser":"Block User","browseBy":"Browse by {section_name}","contributions":"Contribution(s)","error":"Error:","instructions":"Instructions :","notifheader":"Notifications","suggested":"Suggested","todo":"To Do","userrole1":"Add user role","userrole3":"Download user details","yourPreferences":"Your preferences"},"snav":{"shareViaLink":"Shared via linkn","submittedForReview":"Submitted for review"},"tab":{"all":"All","community":"Groups","contribute":"Contribute","courses":"Courses","help":"Help","mygroups":"My Groups","resources":"Library","workspace":"Workspace","observation":"Observation","home":"Home"},"desktop":{"lbl":{"completing":"Completing"}},"vidttl":{"SSologinnewtheme":"How do I login using my State ID joyful theme","copycontent":"How do I copy content to my pen drive joyful theme","downloadcontent":"How do I download content from desktop app library joyful theme","googlelogin":"How do I login using my Google ID","loadcontent":"How do I load content  to the desktop app joyful theme","login":"How do I login on {instance}","loginSSO":"How do I login using my State ID","loginnewtheme":"How do I login on {instance} joyful theme","manageuser":"How do I add users on {instance}","manageusernewtheme":"How do I add users on {instance} joyful theme","newthemegooglelogin":"How do I login using my Google ID joyful theme","playcontent":"How do I play content joyful theme","recovaccnt":"How do I recover my account","recovaccntnewtheme":"How do I recover my account joyful theme","register":"How do I register on {instance}","registernewtheme":"How do I register on {instance} joyful theme"},"message":{"unableToUpload":"Unable to upload the file. Please try again."}},"messages":{"emsg":{"m001":"Could not create the group. Try again later","m002":"Could not find the group. Try again later","m003":"Could not delete the group. Try again later","m004":"You have entered an invalid {instance} ID","m005":"Unable to update group. Try again later","activityAddedToGroup":"You have added this activity previously for the group","activityRemove":"Could not remove activity. Try again later","dissmissAsAdmin":"Could not dismiss {memberName} as group admin","leaveGroup":"Could not leave the group. Try again later","m0001":"Cannot enrol now. Try again later","m0002":"The course is not available now","m0003":"This course does not have any open batches","m0005":"Something went wrong, try again later","m0007":"size should be less than","m0008":"Could not copy content. Try again later","m0009":"Cannot un-enrol now. Try again later","m0014":"Could not update mobile number","m0015":"Could not update email addressnn","m0016":"Fetching states failed. Try again later","m0017":"Fetching districts failed. Try again later","m0018":"Updating profile failed","m0019":"Could not download the report, try again later","m0020":"Updating user failed. Try again later","m0050":"Failed to validate OTP. Try again later.","m0051":"Failed to submit teacher declaration","m0052":"Failed to update the teacher declaration","m006":"Could not add {name} to the group. Try again later","m007":"Member is part of the group","m0076":"No data available to download","m008":"Enrolments for this batch closed on {endDate}","m009":"The course's batch is available from {startDate}","noAdminRole":"You are not authorised to add activities","noAdminRoleActivity":"You do not have permissions to access this page","promoteAsAdmin":"Could not make {memberName} as the group admin","removeMember":"Could not remove member from the group. Try again later","m1414":"This is an adopted textbook from {instance}. Hence it cannot be edited","mutliParametersFound":"Multi parameters found for this report. Please visit reports list page and select a report.","m0024":"Unable to get category defination details please try again later...","m0025":"Unable to get framework details please try again later...","desktop":{"connectionError":"Connect to the Internet to sync telemetry","offlineStatus":"You are offline","telemetryExportEMsg":"Failed to export telemetry. Try again later","telemetryInfoEMsg":"Unable to get telemetry information. Try again later","telemetrySyncError":"Could not sync the telemetry, try again later","termsOfUse":"Connect to the Internet to view the Terms of Use"},"m0021":"Unable to update location. Try again later","m0022":"Unable to update your preference. Please try again after some time.","m0023":"Unable to raise a ticket because you're not connected to the internet"},"imsg":{"m0082":"Deleting {groupName} will permanently remove the group from the application","activityAddedSuccess":"Activity added successfully","confirmReportPublish":"Are you sure you want to publish the report?","m0001":"This course is flagged as inappropriate and is currently under review.","m001":"This group is temporarily inactive. The group admin can re-activate the group if required. Group members can continue their discussions on the discussion forum.","m0022":"Stats for last 7 days","m0023":"Stats for last 14 days","m0024":"Stats for last 5 weeks","m0025":"Stats from begining","m0026":"Hi, this course is not available now. It is likely that the creator has made some changes to the course.","m0027":"Hi, this content is not available now. It is likely that the creator has made some changes to the content.","m0034":"As the content is from an external source, it will be opened in a while.","m0035":"Unauthorized access","m0036":"The content is externally hosted, to view it, click  <b>Preview</b>","m0040":"Operation is in progress, try again later","m0041":"Your profile is","m0042":"% complete","m0043":"Your profile does not have a valid email ID. Update your email ID.","m0045":"The download has failed. Try again after some time","m0047":"You can only select 100 participants","m0060":"If you have two accounts with {instance}, click","m0061":"to","m0062":"Else, click","m0063":"combine usage details of both accounts, and","m0064":"delete the other account","m0065":"Account merge initiated successfully","m0066":"you will be notified once it is completed","m0067":"Could not initiate the account merge. Click the Merge Account option in the Profile menu and try again","m0070":"Account {identifierValue} already exists on {instance}. If this is your account, click Merge to","m0072":"Could not merge accounts because the password entered is incorrect.","m0073":"Click OK to create a new {instance} account.","m0074":"Your location details help us suggest content that is useful to you. Is your location correct? If not, select your correct location and click Submit","m0080":"Could not initiate Account Merge. Log in through your State portal and try again","m0081":"Merging of accounts is in progress. You will receive a notification on your registered email address/mobile number when it is complete","m0086":"Incorrect OTP. Number of attempts remaining : {remainingAttempt}","m0087":"Not permitted to merge account","m0095":"Hi <b>{userName}</b>. You can edit your {instance} profile details from the Profile setting","m0096":"\"{firstName}\" added successfully","m0141":"Create new to create a {instance} account.","removeActivityWarning":"Removing the activity takes it off from the group activity list and you can no longer check member's progress on it","reportPublished":"Report published successfully","reportRetired":"The report has been retired successfully","reportSummaryAdded":"Summary added successfully","confirmRetirePublish":"Are you sure you want to retire the report ?","desktop":{"m001":"All usage data is synced to the server","m002":"Data sync in progress"},"m0048":"You must be connected to the internet to view content","m0049":"Have a textbook downloaded on your system/pen drive? Click the button to upload it","m0050":"Load textbooks to access them offline","m0075":"Your Location","t0143":"This content is not supported yet"},"cmsg":{"m001":"Disabling the discussion forum clears all discussions held in the group to date. If you choose to enable discussions for the group again, there will be no history of past discussions. Discussions will begin afresh. Do you want to continue? nn"},"dashboard":{"emsg":{"m001":"Sorry! We are unable to get the certificate list. Try again later","m002":"The user is not enrolled in any batch of this course","m003":"Sorry! We could not reissue the certificate. Try again later","m004":"You have not created this batch as yet"},"imsg":{"m001":"Are you sure you want to reissue certificates to {userName}?"},"smsg":{"m001":"Your request to re-issue certificate has been accepted and will be processed in 7 working days"}},"etmsg":{"desktop":{"telemetryImportError":"Unable to import file, try again later","deleteContentErrorMessage":"Unable to delete content. Try again later","deleteTextbookErrorMessage":"Unable to delete the textbook. Try again","deleteCourseErrorMessage":"Unable to delete the course. Try again"}},"fmsg":{"dataSettingNotSubmitted":"Could not update profile share settings. Try again later","m0001":"Could not fetch enroled courses, try again later","m0002":"Could not fetch other courses, try again later...","m0003":"Unable to get batch schedule details","m0004":"Could not fetch data, try again later","m0005":"Could not fetch data, try again later","m00100":"Could not reject the content, try again later","m00101":"Could not publish content, try again later","m0030":"Could not create the note, try again later...","m0032":"Could not remove the note, try again later","m0033":"Could not fetch the note, try again later...","m0034":"Could not update the note, try again later...","m0049":"Unable to load data.","m0050":"Could not submit the request, try again later","m0051":"Something went wrong, try again later","m0054":"Fetching batch detail failed, try again later...","m0056":"Could not fetch user list, try again later...","m0076":"Enter mandatory fields","m0077":"Fetching search result failed..","m0079":"Failed to assign badge, try again later","m0080":"Failed to fetch the badge, try again later...","m0082":"This course is not open for enrolment","m0085":"There was a technical error. Try again.","m0086":"This course is retired by the author and hence is not available anymore","m0087":"Please wait","m0088":"We are fetching details.","m0089":"No Topics/SubTopics found","m0090":"Could not download, try again later","m0091":"Could not copy content. Try again later","m0095":"Failed to fetch the CSV file, try again later","m0096":"Could not update, try again later","m0097":"Action failed due to a technical error. Try again later","m0099":"Could not send content for review, try again later","m0100":"You have exceeded the user creation limit","m0101":"Please provide all the required details","m0098":"Updating content failed try again later"},"groups":{"emsg":{"m001":"You have exceeded the maximum number of groups that can be created","m002":"You have exceeded the maximum number of members that can be added to the group","m003":"You have exceeded the maximum number of activities that can be added for the group"}},"profile":{"smsg":{"m0041":"{instance} ID copied"}},"smsg":{"activityRemove":"Activity removed for the group successfully","certificateGettingDownloaded":"The certificate is getting downloaded","dataSettingSubmitted":"Profile share settings submitted successfully","debugMode":"Debug mode will automatically shut off in {time} minutes","dissmissAsAdmin":"{memberName} is no longer the group admin","grpcreatesuccess":"Group created successfully","grpdeletesuccess":"Group deleted successfully","leaveGroup":"You are no longer part of this group","m0009":"Note created successfully...","m001":"Discussion forum enabled successfully","m0013":"Note updated successfully...","m002":"Discussion forum disabled successfully","m0028":"Roles updated successfully","m0029":"User deleted successfully","m003":"Group updated successfully","m0030":"Users uploaded successfully","m0031":"Organizations uploaded successfully","m0032":"Status fetched successfully","m0035":"Org type added successfully","m0037":"updated successfully","m004":"{memberName} added successfully","m0042":"Content successfully copied","m0043":"Endorsement successfull","m0044":"Badge assigned successfully...","m0045":"User unenroled from the batch successfully","m0046":"Profile updated successfully...","m0047":"Your Mobile Number has been updated","m0048":"Your email address has been updated","m0049":"User updated successfully","m0050":"Thank you for rating this content!","m0059":"Content copied successfully","m0060":"Content updated successfully","m0061":"Content sent for review","m0062":"Content rejected","m0063":"Content published successfully","m0064":"Content removed successfully","moo41":"Announcement cancelled successfully...","promoteAsAdmin":"{memberName} is now the group admin","removeMember":"{memberName} is no longer part of the group","m0065":"Enabled discussion forum successfully","m0066":"Disabled discussion forum successfully","m0036":"Course enroled for this batch successfully","desktop":{"telemetryExportSMsg":"Telemetry exported successfully"},"m0053":"Downloading...","m0055":"Updating...","m0056":"You should be online to update the content","m0057":"Location updated successfully","m0058":"User preference updated successfully","selectquestions":"select atleast one question","selectcriteria":"select atleast one criteria"},"stmsg":{"activityAddFail":"Could not add the activity. Try again later","desktop":{"offlineNoMatch":"You need to come online to find matching results","deleteContentSuccessMessage":"Content deleted successfully","deleteMessage":"Only downloaded content can be played offline","deleteTextbookSuccessMessage":"Textbook deleted successfully","deleteCourseSuccessMessage":"Course deleted successfully","noContentMessage":"Content coming soon","onlineStatus":"You are online","contentCantDownload":"This item can’t be downloaded as of now"},"m0006":"No results found","m0007":"Refine your search","m0008":"no-results","m0009":"Unable to play, try again or close","m0022":"Submit one of your drafts for review. Content is published only after a review","m0024":"Upload a document, video, or any other supported format. You have not uploaded anything yet","m0033":"Submit one of your drafts for review. You have not yet submitted any content for review","m0035":"There is no content to review","m0077":"We are submitting your request...","m0080":"Upload files only in .csv format","m0081":"No batches found","m0083":"You have not shared content with any one yet","m0108":"Your Progress","m0113":"Enter a valid start date","m0116":"Deleting selected note...","m0120":"No content to play","m0121":"Content not added yet","m0122":"Your state will soon add content for this QR code. It will be available shortly.","m0123":"Ask a friend to add you as a collaborator. You will receive an email when your friend adds you.","m0125":"Start creating Resource, Book, Course, Collection or Upload. You have no work-in-progress draft at the moment","m0126":"Select board","m0127":"Select medium","m0128":"Select class","m0129":"Loading the terms and conditions.","m0130":"We are fetching districts","m0131":"Could not find any reports","m0134":"You cannot enrol into this batch, as it is closed","m0135":"Enter a valid date","m0136":"Last date for enrolment:","m0138":"Failed","m0139":"Downloaded","m0140":"Downloading","m0141":"Data unavailable to generate Score Report","m0142":"Paused","m0143":"Download","m0144":"You do not have appropriate rights to access this page","reportNotReady":"Your report is not ready, try again later","m0145":"Please update your role to School head or Officials","changeContentLocationWarning":"Could not download or import file(s). Try changing the default content import/download location.","contentLocationChanged":"Content location changed successfully, try downloading the content now","m0030":"You have not downloaded any content yet. Download content when you are online to access offline,  or you can import content from your pen drive","m0031":"This imports/ downloads content from {instance} Online Library when you are connected to the Internet","m0036":"This adds content from your pen drive or external device connected to {instance} app.","m0137":"Some of the content(s) can only be played when your computer is connected to the Internet. Click Yes to download"},"desktop":{"emsg":{"cannotAccessCertificate":"You need to be online to access the certificate","noConnectionTerms":"Connect to the Internet to view the Terms of Use","termsOfUse":"Unable to display Terms Of Use. Try again later"}}},"completedCourse":"Course completed","crs":{"nontrk":{"frmelmnts":{"lbl":{"ACTIVITY_TEXTBOOK_TITLE":"Courses","ActivityTextbooks":"Courses","chapter":"Course module","desktop":{"downloadBook":"Download course","find_more":"Find more courses and related content on {instance}","updateTextbook":"Update course"},"downloadBooks":"Download courses to access while offline","fromTheTextBook":"from the course","noBookfoundTitle":"Board is adding courses","textbooks":"Courses"}}},"trk":{"completedCourse":"Course completed","frmelmnts":{"btn":{"createCourse":"Create course","enroll":"Join Course","resumecourse":"Resume Course","unenroll":"Leave course","viewCourseStatsDashboard":"View course dashboard","viewcoursestats":"View course stats"},"instn":{"t0062":"You haven't created a batch for this course yet. Create a new batch and check the dashboard again.","t0063":"You have not created any course as yet. Create a new course and check the dashboard again."},"lbl":{"ACTIVITY_COURSE_TITLE":"Courses","ActivityCourses":"Courses","accessCourse":"Access course","accessToLogin":"To access the course you have to log in and join the course","addCourse":"Add course","completedCourse":"Courses completed","completingCourseSuccessfully":"For successfully completing the course,","copyAsCourse":"Copy as course","courseContainCertificate":"This is a certificate course","courseDetails":"Course details","courseDontContainCertificate":"Currently, this course does not have a certificate. The course creator may attach a certificate later.","courseLastUpdatedOn":"Course last updated on","courseProgress":"Course progress","courseRelevantFor":"The course is relevant for:","courseSuccessMessage":"You have successfully completed the course","courseSuccessNotificationMessage":"You will be notified about the course certificate on your registered contact details within 7 days","courseWithoutCertificateNote":"Note: This course does not have a certificate","courses":"Courses","coursestructure":"Course modules","dashboardnocourseselected":"No course selected","dashboardnocourseselecteddesc":"Select a course from the list","downloadCourseQRCode":"Download Course QR Code","downloadQRCode":{"tooltip":"Click to download QR codes and link them to the published course"},"enrollcourse":"Join Course","getUnlimitedAccess":"Get unlimited access to textbooks, lessons and courses offline on your mobile phone","joinTrainingToAcessContent":"You must join the course to get complete access to content","moduleFinish":"You have completed this module","moduleProgress":"Module progress","mytrainings":"My courses","nextModule":"Next module","oneCourse":"Course","prevModule":"Prev. module","returnToCourses":"Return to Courses","sectionTitle":"Courses","selectChapter":"Select module","selectContentFromCourse":"Select contents for course","signinenrollTitle":"Log in to join this course","trainingAttended":"Courses attended","userName":"User name"},"tab":{"courses":"Courses"}},"messages":{"dashboard":{"emsg":{"m002":"The user is not enrolled in any batch of this course"}},"emsg":{"m0002":"The course is not available now","m0003":"This course does not have any open batches"},"fmsg":{"m0001":"Could not fetch enroled courses, try again later","m0002":"Could not fetch other courses, try again later","m0082":"This course is not open for enrolment","m0086":"This course is retired by the author and hence is not available anymore"},"imsg":{"m0001":"This course is flagged as inappropriate and is currently under review.","m0026":"Hi, this course is not available now. It is likely that the creator has made some changes to the course."},"stmsg":{"m0125":"Start creating Resource, Book, Course, Collection or Upload. You have no work-in-progress draft at the moment"}}}},"dflt":{"nontrk":{"frmelmnts":{"btn":{"create":"Create"},"lbl":{"ACTIVITY_TEXTBOOK_TITLE":"Tasks","ActivityTextbooks":"Tasks","chapter":"Learning module","collection_task":"Tasks","desktop":{"download":"Download","downloadBook":"Download","find_more":"Find more content","find_more_tasks":"Find more content","update":"Update","updateTextbook":"Update"},"downloadBooks":"Download to access offline","download_to_access_offline":"Download to access offline","downloadoffline":"Download to access offline","fromTheLearningTask":"from the learning task","fromTheTextBook":"from the learning task","import":"Download to access offline","learningmodule":"Learning module","mynotebook":"My Notebook","noBookfoundButtonText":"See more","noBookfoundSubTitle":"Your board is yet to add content. Tap the button to see more content on {instance}","noBookfoundTitle":"Board is adding content","noTaskfoundSubTitle":"Your board is yet to add content. Tap the button to see more content on {instance}","noTaskfoundTitle":"Board is adding content","seemore":"See more","task":"Tasks","task_title":"Tasks","tasks":"Tasks","textbooks":"Tasks"}},"messages":{"stmsg":{"m0125":"Start creating or uploading content. You currently do not have any content saved as a draft","ms0001":"Start creating or uploading content. You currently do not have any content saved as a draft"}}},"trk":{"completed_learning":"Learning completed","essages":{"fmsg":{"m0082":"This learning task is not open, as yet. You cannot join it"}},"frmelmnts":{"btn":{"create":"Create","enroll":"Join","resumecourse":"Resume","unenroll":"Leave","viewCourseStatsDashboard":"View dashboard","viewcoursestats":"View stats"},"instn":{"t0062":"You have not created any batch for this task as yet. Create a task and check the dashboard","t0063":"You have not created any task as yet. Create a new task and check the dashboard again."},"lbl":{"ACTIVITY_COURSE_TITLE":"Tasks","ActivityCourses":"Tasks","accessCourse":"Access learning material","accessToLogin":"To access the content you have to log in and join the task","addCourse":"Add","completedCourse":"Completed Tasks","completingCourseSuccessfully":"For successfully completing learning on,","copyAsCourse":"Copy as learning material","courseContainCertificate":"This learning offers you a certificate","courseDetails":"Learning details","courseDontContainCertificate":"Currently, this learning task does not have a certificate. The task creator may attach a certificate later","courseProgress":"Progress","courseRelevantFor":"This learning is relevant for:","courseSuccessMessage":"You have successfully completed your learning","courseSuccessNotificationMessage":"You will be informed about your certificate on your registered contact details within 7 days","courseWithoutCertificateNote":"Note: This learning does not offer you a certificate","courses":"Tasks","coursestructure":"Learning module","dashboardnocourseselected":"No selection made","dashboardnocourseselecteddesc":"Select from the list","downloadCourseQRCode":"Download the QR code","downloadQRCode":{"tooltip":"Click to download QR codes and link them to your publication"},"getUnlimitedAccess":"Get unlimited access to textbooks, TV classes and courses offline on your mobile phone","joinTrainingToAcessContent":"To access the content, you have to log in and join the task","moduleFinish":"You have completed this task","moduleProgress":"Task progress","mytrainings":"My tasks","nextModule":"Next task","oneCourse":"Task","prevModule":"Prev. task","returnToCourses":"Back","sectionTitle":"Tasks","selectChapter":"Select task","selectContentFromCourse":"Select contents","trainingAttended":"Learning attended"},"tab":{"courses":"Tasks"}},"messages":{"dashboard":{"emsg":{"m002":"User has not joined any batch for this learning task"}},"emsg":{"m0002":"This learning task is no longer available","m0003":"This learning task does not have an open batch"},"fmsg":{"dataSettingNotSubmitted":"Could not update profile share settings. Try again later","m0001":"Sorry! We could not get information for the learning task that you have enrolled for. Try again later","m0002":"Sorry! We could not get other learning tasks for you. Try again later","m0086":"This content is no longer available"},"imsg":{"m0001":"This content has been flagged as inappropriate. It is currently under review","m0026":"Hi, this content is currently unavailable. It may be undergoing change"},"stmsg":{"m0125":"Start creating or uploading content. Currently you have not saved any draft content"}}}},"frmelemnts":{"bltpt":{"earncert":"Certificates are issued to {state} State users onlyn","earnmcert":"The certificate will be issued if you score greater than or equal to {percent}% in your assessment"},"btn":{"dscfrmdisablediscussion":"Disable discussions","dscfrmenablediscussion":"Enable discussions"},"cert":{"btn":{"browse":"Browse","createtemp":"Create template","refresh":"Refresh"},"inlntxt":{"certtitle":"This is what will be printed on the certificate as the main title that we see in blue","confrmtion":"I confirm that all the elements for this certificate provided by me are correct and appropriate and I am authorised by the signatories and logo owners to provide the same","signdet":"The designation of the authorised signatory is printed below the signature","slecttemp":"Preview and select available certificate template, or create another","statedet":"The name (e.g. Government of State, State government etc. ), that will be printed above the certificate title"},"lbl":{"addcert":"Add certificate","certprew":"Certificate template preview","certtitle":"Certificate title","confcert":"Configure certificate","createtemp":"Create certificate template","layout":"Select layout","sign":"Signature 1","sign2":"Signature 2","signatory":"Authorized signatory","signdesig":"Signatory 1 designation","signdesig2":"Signatory 2 designation","statedet":"State details","statelogo":"State logo 1","statelogo2":"State logo 2"},"prmttxt":{"certtitle":"Enter certificate title","refreshtxt":"Select a layout and click <b>Refresh</b> to preview the certificate template","statedet":"Enter the State, organization or program name"}},"imsg":{"admintnc":"Use downloaded data as per {instance}","dscfrmmndtry":"Question is mandatory","dscfrmmndtrydesc":"Description is mandatory. It should be minimum of 8 characters","desktop":{"m003":"Waiting to connect to the Internet to begin download"}},"lbl":{"accessibility":"Screen reader access","accessibilitymode":"Switch to dark mode","accessibilitynormalmode":"Switch to light mode","accessibilitytext":"Site map","accessibilitytextsize":"Increase font size","accessibilitytskip":"Skip to main contentn","dscfrmbstpst":"Best posts","dscfrmcommnets":"Comments","dscfrmdisablepopuphdr":"Disable discussion forum?","dscfrmdwnvte":"Downvote","dscfrmelbrt":"Elaborate your question or idea","dscfrmgendisc":"General discussions","dscfrmposts":"Posts","dscfrmrcntpsts":"Recent posts","dscfrmsvdpst":"Saved posts","dscfrmtags":"Tags","dscfrmupvte":"Upvote","dscfrmvotes":"Votes","newCourse":"New Courses","profiledetails":"Content preference"},"prmpt":{"dscfrmaddtag":"Add a tag and press Enter","dscfrmelbrt":"Type here..."},"puphdr":{"adminguideline":"Admin guidelines"},"scttl":{"certques":"Certificate criteria"}},"frmlemnts":{"intxt":{"selstatetenant":"Select state/organisation"}},"orgname":"orgname","participants":"Participants","resourceService":{"frmelmnts":{"lbl":{"userId":"User ID"}}},"rmelmnts":{"lbl":{"stillCouldntFind":"Couldn't find an answer to your query? Visit the","totalEnrolments":"Total enrolments"}},"t0065":"Download file","tbk":{"nontrk":{"frmelmnts":{"lbl":{"ACTIVITY_TEXTBOOK_TITLE":"Textbooks","ActivityTextbooks":"Textbooks","chapter":"Chapter","copyAsCourse":"Copy as course","desktop":{"deleteCollection":"Deleting {name} textbook removes it from My Downloads. Click Delete to continue.","downloadBook":"Download textbook","find_more":"Find more textbooks and content on {instance}","updateTextbook":"Update textbook"},"dialCodeDescription":"QR code is the 6 digit alphanumeric code found beneath the QR code image in your text book","dialCodeDescriptionGetPage":"QR code is the 6 digit alphanumeric code found beneath the QR code image in your text book.","downloadBooks":"Download books to access while offline","fromTheTextBook":"from the textbook","getUnlimitedAccess":"Get unlimited access to textbooks, lessons and courses offline on your mobile phone","import":"Download books to access while offline","installAppDesc":"Store lessons, textbooks and content offline on your device","mynotebook":"My Notebook","noBookfoundButtonText":"See more books and contents","noBookfoundSubTitle":"Your board is yet to add more books. Tap the button to see more books and content on {instance}","noBookfoundTitle":"Board is adding books","textbooks":"Textbooks"}},"messages":{"stmsg":{"m0125":"Start creating Resource, Book, Course, Collection or Upload. You have no work-in-progress draft at the moment"}}},"trk":{"frmelmnts":{"btn":{"enroll":"Read","resumecourse":"Resume reading","unenroll":"Close"},"instn":{"t0062":"You have not created any learning/reading batch for this textbook as yet. Create a batch and check the dashboard","t0063":"You have not created any textbook as yet. Create a textbook and check the dashboard"},"lbl":{"ACTIVITY_COURSE_TITLE":"Textbook","ActivityCourses":"Textbook","accessCourse":"Access textbook","accessToLogin":"To access the textbook you have to log in and join the learning/reading batch","addCourse":"Add textbook","completedCourse":"Completed textbooks","completingCourseSuccessfully":"For successfully completing learning,","copyAsCourse":"Copy as textbook","courseContainCertificate":"This learning offers you a certificate","courseDetails":"Textbook details","courseDontContainCertificate":"Currently, this learning task does not have a certificate. The task creator may attach a certificate later.","courses":"Textbooks","coursestructure":"Chapter","joinTrainingToAcessContent":"To access the content, you have to join the learning batch","moduleFinish":"You have completed this chapter","moduleProgress":"Chapter progress","mytrainings":"My digital textbooks","nextModule":"Next chapter","oneCourse":"Digital textbook","prevModule":"Prev. chapter","sectionTitle":"Digital textbooks","selectChapter":"Select chapter","trainingAttended":"Textbooks read"},"tab":{"courses":"Digital textbook"}},"messages":{"emsg":{"m0002":"This textbook is no longer available"},"fmsg":{"dataSettingNotSubmitted":"Could not update profile share settings. Try again later","m0001":"Sorry! We could not get the textbook you were looking for. Try again later","m0002":"Sorry! We could not get other textbooks for you. Try again later","m0086":"This textbook is not available anymore"}}}},"tvc":{"nontrk":{"frmelmnts":{"lbl":{"ACTIVITY_TEXTBOOK_TITLE":"TV classes","ACTIVITY_TV_CLASS_TITLE":"TV classes","ActivityTvClasses":"TV classes","TVclassesfoundTitle":"Board is adding TV class","chapter":"TV program","collection_tv_classes":"TV classes","desktop":{"downloadBook":"Download TV classes","downloadTVclasses":"Download TV classes","find_more":"Find more TV classes and related content on {instance}","find_more_TVclasses":"Find more TV classes and related content on {instance}","updateTVclasses":"Update TV classes","updateTextbook":"Update TV classes"},"downloadBooks":"Download TV classes to access while offline","downloadTVclasses":"Download TV classes to access while offline","fromTheTVclasses":"from the TV class","fromTheTextBook":"from the TV class","noBookfoundTitle":"Board is adding TV class","textbooks":"TV classes","tv_classes":"TV classes","tv_program":"TV program"}}},"trk":{"frmelmnts":{"btn":{"enroll":"Watch","resumecourse":"Resume watching"},"instn":{"t0062":"You have not created any learning batch for this TV class as yet. Create a batch and check the dashboard","t0063":"You have not created any TV class as yet. Create a TV class and check the dashboard"},"lbl":{"ACTIVITY_COURSE_TITLE":"TV classes","ActivityCourses":"TV classes","accessCourse":"Access TV classes","accessToLogin":"To access the TV class you have to log in and join the learning batch","addCourse":"Add TV class","completedCourse":"Completed TV classes","copyAsCourse":"Copy as TV class","courseContainCertificate":"This learning offers you a certificate","courseDetails":"TV class details","courseDontContainCertificate":"Currently, this learning task does not have a certificate. The task creator may attach a certificate later","courses":"TV classes","coursestructure":"TV program","moduleFinish":"You have completed this program","moduleProgress":"Program progress","mytrainings":"My TV classes","nextModule":"Next program","oneCourse":"TV class","prevModule":"Prev. program","sectionTitle":"TV classes","selectChapter":"Select program","trainingAttended":"TV classes watched"},"tab":{"courses":"TV classes"}},"messages":{"emsg":{"m0002":"This TV class task is no longer available"},"fmsg":{"m0001":"Sorry! We could not get the TV classes you were looking for. Try again later","m0002":"Sorry! We could not get other TV classes for you. Try again later","m0086":"This TV Class is not available anymore"}}}},"tvk":{"trk":{"frmelmnts":{"lbl":{"joinTrainingToAcessContent":"To access the content, you have to join the learning batch"}}}}},"creation":{"frmelmnts":{"btn":{"yes":"Yes","no":"No","back":"Back","tryagain":"Try again","close":"Close","accept":"Accept","discard":"Discard","anncmntconfirmrecipients":"Confirm recipients","anncmntpreview":"Preview announcement","anncmntsendanncmnt":"Send announcement","anncmnteditrecipients":"Edit recipients","anncmntselectrecipients":"Select recipients","anncmntdtlsview":"View","anncmntgotit":"Got it","save":"Save","addMembers":"Add members","createbatch":"Create batch","cancel":"Cancel","update":"Update","updatebatch":"Update batch","checkListComment":"Comment","checklistCancel":"Cancel","checklistPublish":"Publish","checkListRequestChanges":"Request changes","publish":"Publish","requestChanges":"Request changes","startcreating":"Start creating","login":"Login"},"lbl":{"name":"Name","Name":"Name","email":"Email Address","contact":"Contact","delete":"Delete","pleaseSelect":"Please Select","anncmntttlresend":"Resend Announcement","createnewanncmnt":"Create New Announcement","createnewanncmntdesc":"Fill in all the required fields to create the announcement.","resendanncmntdesc":"You can make any edits required and resend the announcement.","selectrecipient":"Select Announcement Recipients","selectrecipientdesc":"Select locations who should receive the announcement.","editrecipientdesc":"Edit locations who should receive the announcement.","confirmrecipient":"Confirm Announcement Recipients","confirmrecipientdesc":"Review and confirm your announcement recipients.","previewanncmnt":"Preview Announcement","previewanncmntdesc":"This is how your announcement will look.","anncmntstep":"STEP","anncmnttitle":"TITLE","anncmntfrom":"FROM","anncmntfromDesc":"Please enter organisation/department that has sent the announcement","anncmnttype":"ANNOUNCEMENT TYPE","anncmntdesc":"DESCRIPTION (OPTIONAL)","anncmntlink":"URL / WEBLINK","anncmntaddlink":"Add URL/weblink","anncmntaddlinkdesc":"(For example, you can link a Google Form)","anncmntaddmorelink":"Add Another URL/weblink","anncmntuploadfile":"UPLOAD ATTACHMENT","anncmntsentsuccess":"Announcement Sent!","anncmntsentdesc":"Your announcement has been sent to all your recipients. View all your announcement from the Announcement Dashboard.","anncmntcancel":"Are you sure you want to stop creating this announcement","anncmntcanceldesc":"You will lose your work if you close this announcement","organisation":"Organization","organisationName":"Organisation Name","subOrganisation":"Sub-Organization","selectSubOrganisation":"Select Sub-Organization","unselectAll":"UnSelect All","orgName":"orgName","SelectMentors":"Select Mentors","SelectParticipants":"Select Participants","mentors":"Mentors","participants":"Participants","searchMembers":"Search members","createnewbatch":"Create New Batch","createbatch":"Create Batch","batchmentors":"MENTORS IN THE BATCH","batchselmentors":"SELECTED MENTORS","bacthmembers":"MEMBERS IN THE BATCH","batchparticipants":"SELECTED PARTICIPANTS","batchname":"NAME OF BATCH","aboutbatch":"ABOUT THIS BATCH","enableDiscussions":"Enable discussions","startdate":"START DATE","enrollmentenddate":"ENROLMENT END DATE","enddate":"END DATE","natureofbatch":"BATCH TYPE","inviteonly":"Invite-only","open":"Open","play":"Play","discardChange":"Discard Changes","textbook":"Book","textbookdescription":"Build books using resources for an interesting learning experience.","course":"Course","coursedescription":"Design courses using collections and resources. Courses are for a duration, to achieve an objective.","lesson":"Resource","lessondescription":"Create different resources like story, game, activity, audio, video, using the inbuilt authoring tools.","collection":"Collection","collectiondescription":"Compile resources of your choice.","lessonplandescription":"Frame lesson plans with structured sections for an efficient learning experience.","lessonplan":"Lesson Plan","contentupload":"Upload Content","contentuploadlarge":"Upload Large Videos (>50 MB)","contentuploaddescription":"You can upload content here.","assessment":"Course Assessment","courseassessment":"CourseAssessment","assessmentdescription":"Create assessments for courses using the in-built authoring tools","contentCaps":"CONTENT","lastupdate":"Last update","statusCaps":"STATUS","flagReview":"Flag Review","pendingSince":"Pending since","deletecontent":"Delete Content","deleteconfirm":"Are you sure to delete this content?","deletepublishedcontent":"Retire Content","deletepublishedconfirm":"Retire myself from the content?","checkListPublish":"Publish","checklistCancel":"Cancel","showFilters":"Show Filters","sortby":"Sort by","designcourse":"Design Course","createtextbook":"Create Book","createlessontext":"Create Resource","createcollection":"Create Collection","createlessonplan":"Create Lesson Plan","createassessment":"Create Assessment","viewCaps":"VIEW","editCaps":"EDIT","authorCaps":"AUTHOR","lastupdatedCaps":"Last Updated","content":"Content","contentLabel":"Content","status":"Status","edit":"Edit","author":"Author","courseName":"Course Name","publhwarng":"You have given some review comments or suggestions, they will be lost if content is published. Do you want to publish?","disablePopupText":"This content can not be deleted","contactStateAdminToAdd":"Please contact your state admin to add more participants to this batch","whatToCreate":"What type of course do you want to create ?","scanningLinkedContent":"Scanning for linked content","linkedContentErrorMessage":"This content cannot be deleted as it is used in the following","additionalCategory":"Additional Category","discussionForum":"Forum"},"prmpt":{"search":"Search","searchContent":"Search content"},"intxt":{"t0006":"Select batch members","t0005":"Select batch mentors","t0007":"Update Batch Details","t0015":"View Batch Details"},"instn":{"t0052":"Please enter description for this announcement (Max: 1200 chars)","t0053":"Enter web url (starting with http or https)","t0054":"Note: At least one of 'Description' or 'URL / weblink' or 'Attachment' must be provided.","t0057":"Please enter relevant title for this announcement (Max: 100 chars)","t0080":"Please wait...Loading comments"},"scttl":{"myworkspace":"My Workspace"},"snav":{"start":"Create","draft":"Drafts","inreview":"Review Submissions","submittedForReview":"Submitted for review","published":"Published","alluploads":"All Uploads","upForReview":"Up For Review","flagged":"Flagged","limitedPublishing":"Limited Publishing","shareViaLink":"Shared via link","allmycontents":"All My Content","flagReviewer":"Flag Review","Collaboratingon":"Collaborations","alltextbook":"All Textbooks"},"lnk":{"coursebacthes":"Course Batches","createdByMe":"Created by me","assignedToMe":"Assigned to me"}},"messages":{"stmsg":{"m0008":"no-results","m0009":"Unable to play, please try again or close.","m0011":"We are fetching draft content...","m0012":"You don't have any draft content...","m0019":"You don't have any content in review...","m0020":"You don't have any batches...","m0021":"We are fetching published content...","m0022":"Submit one of your drafts for review. Content is published only after a review","m0023":"We are fetching uploaded content...","m0024":"Upload a document, video, or any other supported format. You have not uploaded anything yet","m0025":"We are fetching content detail...","m0032":"We are fetching up for review content...","m0033":"Submit one of your drafts for review. You have not yet submitted any content for review","m0034":"We are deleting the content...","m0035":"There is no content to review","m0038":"We are fetching flagged content...","m0039":"You don't have any flagged content...","m0081":"No batches found","m0082":"We are fetching limited published content...","m0083":"You have not shared content with any one yet","m0101":"Please enter a valid url","m0105":"Title is required","m0106":"Title is too long","m0107":"From is required","m0108":"Your Progress","m0109":"Descripton is too long","m0110":"We are fetching all content...","m0111":"Looks like there is nothing to show here. Please go to “Create” to start creating content","m0112":"Content is coming soon","m0113":"Enter valid start date","m0135":"Enter a valid date","m0114":"Name is required","m0115":"We are fetching flagged review content...","m0117":"From is too long","m0123":"Ask a friend to add you as a collaborator. You will be notified of the same via email.","m0124":"We are fetching collaborating content...","m0119":"We are updating batch...","m0125":"Start creating Resource, Book, Course, Collection or Upload. You have no work-in-progress draft at the moment","m0126":"Start creating Resource, Book, Course, Collection or Upload","m0127":"We are fetching all textbooks..."},"emsg":{"m0004":"Cannot preview now. Try again later","m0005":"Something went wrong, please try in some time....","m0006":"Please select recipient(s)","m0011":"Fetching review comments failed","m0010":"Creating review comments failed","m0012":"Something went wrong while saving your preferences. Please go to your profile to save your preferences","m0013":"You don't have permission to edit this content","m0014":"Unable to get channel details","m0015":"Unable to get collection details"},"imsg":{"m0020":"location is removed sucessfully.","m0027":"Hi, this content is not available now. It is likely that the creator has made some changes to the content.","m0037":"To close this resource, save and click the X icon.","m0038":"To close this","m0039":"please save and click on X icon.","m0046":"You can only select 100 participants."},"fmsg":{"m0004":"Fetching data failed, please try again later...","m0006":"Fetching draft content failed, please try again later...","m0007":"Creating lesson failed. Please login again to create lesson.","m0008":"Creating book failed. Please login again to create book.","m0009":"Creating course failed. Please login again to create course.","m0010":"Creating collection failed. Please login again to create collection.","m0012":"Fetching review content failed, please try again later...","m0013":"Fetching published content failed, please try again later...","m0014":"Fetching uploaded content failed, please try again later...","m0015":"Fetching content detail failed, please try again later...","m0019":"Publishing content failed, please try again later...","m0020":"Rejecting content failed, please try again later...","m0021":"Fetching up for review content failed, please try again later...","m0022":"Deleting content failed, please try again later...","m0023":"Fetching flagged content failed, please try again later...","m0024":"Accepting flag failed, please try again later...","m0025":"Discarding flag failed, please try again later...","m0052":"Creating batch failed, please try again later...","m0053":"Adding users to batch is failed, please try again later...","m0054":"Fetching batch detail failed, please try again later...","m0056":"Fetching users list failed, please try again later...","m0064":"Fetching limited published content failed, please try again later...","m0078":"Creating content failed. Please login again to create content.","m0081":"Fetching all content failed, please try again later...","m0083":"Fetching flagged review content failed, please try again later...","m0084":"Fetching collaborating content failed, please try again later...","m0085":"Fetching CSV failed, please try again later...","m0101":"Please provide all the required details","m0102":"Creating QuestionSet failed. Please login again to create QuestionSet..."},"smsg":{"m0004":"Content published successfully...","m0005":"Content rejected successfully...","m0006":"Content deleted successfully...","m0007":"Flag accepted successfully...","m0008":"Flag discarded successfully...","m0033":"Batch created successfully...","m0034":"Batch updated successfully..."}}}}
\ No newline at end of file
diff --git a/src/app/routes/desktopAppRoutes.js b/src/app/routes/desktopAppRoutes.js
index fd3639af91e71609857efa1359d6e4f6c2345dbc..da23c2fcff46179162905ad76a10c2ea3e4178cc 100644
--- a/src/app/routes/desktopAppRoutes.js
+++ b/src/app/routes/desktopAppRoutes.js
@@ -4,6 +4,8 @@ const crashReporter = require('../helpers/desktopCrashReporter.js');
 const bodyParser = require('body-parser');
 const { logger } = require('@project-sunbird/logger');
 const path = require('path');
+const StorageService = require('../helpers/cloudStorage/index');
+
 module.exports = function (app) {
     app.post('/v1/desktop/update', bodyParser.urlencoded({ extended: true }),
         bodyParser.json(),
@@ -11,7 +13,14 @@ module.exports = function (app) {
             logger.info({msg: '/v1/desktop/update called'});
         })
 
-    app.post('/v1/desktop/upload-crash-logs', crashReporter.storeCrashLogsToAzure());
+    app.post('/v1/desktop/upload-crash-logs',
+        (req, res, next) => {
+            logger.info({ msg: 'desktop crash upload API ' + req.url + 'called' });
+            next();
+        },
+        // crashReporter.storeCrashLogsToAzure()
+        StorageService.CLOUD_CLIENT.blockStreamUpload(envHelper.desktop_azure_crash_container_name)
+    );
 
     /**
      * @param  {Object} req - Request Object
diff --git a/src/app/routes/reportRoutes.js b/src/app/routes/reportRoutes.js
index d3ef80aff201dcd4dacde4a791c870c98e58b7d5..c9c91aa7e07196dd96d3c4850de57843c6dbf46a 100644
--- a/src/app/routes/reportRoutes.js
+++ b/src/app/routes/reportRoutes.js
@@ -6,6 +6,7 @@ const {REPORT_SERVICE_URL, sunbird_api_request_timeout, DATASERVICE_URL,CONTENT_
 const reqDataLimitOfContentUpload = '50mb';
 const _ = require('lodash');
 const {getUserDetailsV2} = require('../helpers/userHelper');
+const envHelper = require('../helpers/environmentVariablesHelper');
 const StorageService = require('../helpers/cloudStorage/index');
 
 module.exports = function (app) {
@@ -133,31 +134,31 @@ module.exports = function (app) {
     app.get('/courseReports/:slug/:filename',
         proxyUtils.verifyToken(),
         reportHelper.validateRoles(['CONTENT_CREATOR']),
-        StorageService.CLOUD_CLIENT.fileReadStream());
+        StorageService.CLOUD_CLIENT.fileReadStream(envHelper.sunbird_aws_reports));
 
     app.get('/course-reports/metadata',
         proxyUtils.verifyToken(),
         reportHelper.validateRoles(['CONTENT_CREATOR', 'REPORT_VIEWER', 'REPORT_ADMIN', 'ORG_ADMIN']),
-        StorageService.CLOUD_CLIENT.getFileProperties()
+        StorageService.CLOUD_CLIENT.getFileProperties(envHelper.sunbird_aws_reports)
         );
 
     app.get(`/reports/fetch/:slug/:filename`,
         proxyUtils.verifyToken(),
         reportHelper.validateRoles(['REPORT_VIEWER', 'REPORT_ADMIN','PROGRAM_DESIGNER','PROGRAM_MANAGER']),
-        StorageService.CLOUD_CLIENT.fileReadStream());
+        StorageService.CLOUD_CLIENT.fileReadStream(envHelper.sunbird_aws_reports));
 
     app.get('/reports/:slug/:filename',
         proxyUtils.verifyToken(),
         reportHelper.validateSlug(['public']),
         reportHelper.validateRoles(['ORG_ADMIN', 'REPORT_VIEWER', 'REPORT_ADMIN','PROGRAM_DESIGNER','PROGRAM_MANAGER']),
-        StorageService.CLOUD_CLIENT.fileReadStream());
+        StorageService.CLOUD_CLIENT.fileReadStream(envHelper.sunbird_aws_reports));
 
     app.get('/admin-reports/:slug/:filename',
         proxyUtils.verifyToken(),
         reportHelper.validateSlug(['geo-summary', 'geo-detail', 'geo-summary-district', 'user-summary', 'user-detail',
             'validated-user-summary', 'validated-user-summary-district', 'validated-user-detail', 'declared_user_detail']),
         reportHelper.validateRoles(['ORG_ADMIN']),
-        StorageService.CLOUD_CLIENT.fileReadStream());
+        StorageService.CLOUD_CLIENT.fileReadStream(envHelper.sunbird_aws_reports));
 
     app.get(`${BASE_REPORT_URL}/dataset/get/:datasetId`,
         proxyUtils.verifyToken(),
diff --git a/src/app/yarn.lock b/src/app/yarn.lock
index 30fdb56eaaa9c9fcb7d511e1325b83bf7f83100a..f70f87cf9d336bb2e0dfe958901b1b827f9db5b0 100644
--- a/src/app/yarn.lock
+++ b/src/app/yarn.lock
@@ -21,9 +21,9 @@
     tslib "^1.11.1"
 
 "@aws-crypto/ie11-detection@^2.0.0":
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/@aws-crypto/ie11-detection/-/ie11-detection-2.0.0.tgz#bb6c2facf8f03457e949dcf0921477397ffa4c6e"
-  integrity sha512-pkVXf/dq6PITJ0jzYZ69VhL8VFOFoPZLZqtU/12SGnzYuJOOGNfF41q9GxdI1yqC8R13Rq3jOLKDFpUJFT5eTA==
+  version "2.0.2"
+  resolved "https://registry.yarnpkg.com/@aws-crypto/ie11-detection/-/ie11-detection-2.0.2.tgz#9c39f4a5558196636031a933ec1b4792de959d6a"
+  integrity sha512-5XDMQY98gMAf/WRTic5G++jfmS/VLM0rwpiOpaainKi4L0nqWMSB1SzsrEG5rjFZGYN6ZAefO+/Yta2dFM0kMw==
   dependencies:
     tslib "^1.11.1"
 
@@ -63,27 +63,27 @@
     tslib "^1.11.1"
 
 "@aws-crypto/sha256-js@^2.0.0":
-  version "2.0.1"
-  resolved "https://registry.yarnpkg.com/@aws-crypto/sha256-js/-/sha256-js-2.0.1.tgz#79e1e6cf61f652ef2089c08d471c722ecf1626a9"
-  integrity sha512-mbHTBSPBvg6o/mN/c18Z/zifM05eJrapj5ggoOIeHIWckvkv5VgGi7r/wYpt+QAO2ySKXLNvH2d8L7bne4xrMQ==
+  version "2.0.2"
+  resolved "https://registry.yarnpkg.com/@aws-crypto/sha256-js/-/sha256-js-2.0.2.tgz#c81e5d378b8a74ff1671b58632779986e50f4c99"
+  integrity sha512-iXLdKH19qPmIC73fVCrHWCSYjN/sxaAvZ3jNNyw6FclmHyjLKg0f69WlC9KTnyElxCR5MO9SKaG00VwlJwyAkQ==
   dependencies:
-    "@aws-crypto/util" "^2.0.1"
-    "@aws-sdk/types" "^3.1.0"
+    "@aws-crypto/util" "^2.0.2"
+    "@aws-sdk/types" "^3.110.0"
     tslib "^1.11.1"
 
 "@aws-crypto/supports-web-crypto@^2.0.0":
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/@aws-crypto/supports-web-crypto/-/supports-web-crypto-2.0.0.tgz#fd6cde30b88f77d5a4f57b2c37c560d918014f9e"
-  integrity sha512-Ge7WQ3E0OC7FHYprsZV3h0QIcpdyJLvIeg+uTuHqRYm8D6qCFJoiC+edSzSyFiHtZf+NOQDJ1q46qxjtzIY2nA==
+  version "2.0.2"
+  resolved "https://registry.yarnpkg.com/@aws-crypto/supports-web-crypto/-/supports-web-crypto-2.0.2.tgz#9f02aafad8789cac9c0ab5faaebb1ab8aa841338"
+  integrity sha512-6mbSsLHwZ99CTOOswvCRP3C+VCWnzBf+1SnbWxzzJ9lR0mA0JnY2JEAhp8rqmTE0GPFy88rrM27ffgp62oErMQ==
   dependencies:
     tslib "^1.11.1"
 
-"@aws-crypto/util@^2.0.0", "@aws-crypto/util@^2.0.1":
-  version "2.0.1"
-  resolved "https://registry.yarnpkg.com/@aws-crypto/util/-/util-2.0.1.tgz#976cf619cf85084ca85ec5eb947a6ac6b8b5c98c"
-  integrity sha512-JJmFFwvbm08lULw4Nm5QOLg8+lAQeC8aCXK5xrtxntYzYXCGfHwUJ4Is3770Q7HmICsXthGQ+ZsDL7C2uH3yBQ==
+"@aws-crypto/util@^2.0.0", "@aws-crypto/util@^2.0.2":
+  version "2.0.2"
+  resolved "https://registry.yarnpkg.com/@aws-crypto/util/-/util-2.0.2.tgz#adf5ff5dfbc7713082f897f1d01e551ce0edb9c0"
+  integrity sha512-Lgu5v/0e/BcrZ5m/IWqzPUf3UYFTy/PpeED+uc9SWUR1iZQL8XXbGQg10UfllwwBryO3hFF5dizK+78aoXC1eA==
   dependencies:
-    "@aws-sdk/types" "^3.1.0"
+    "@aws-sdk/types" "^3.110.0"
     "@aws-sdk/util-utf8-browser" "^3.0.0"
     tslib "^1.11.1"
 
@@ -95,6 +95,14 @@
     "@aws-sdk/types" "3.162.0"
     tslib "^2.3.1"
 
+"@aws-sdk/abort-controller@3.215.0":
+  version "3.215.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/abort-controller/-/abort-controller-3.215.0.tgz#f40d994a07d20f10f8065d6b46e751a5f261867c"
+  integrity sha512-HTvL542nawhVqe0oC1AJchdcomEOmPivJEzYUT1LqiG3e8ikxMNa2KWSqqLPeKi2t0A/cfQy7wDUyg9+BZhDSQ==
+  dependencies:
+    "@aws-sdk/types" "3.215.0"
+    tslib "^2.3.1"
+
 "@aws-sdk/chunked-blob-reader-native@3.109.0":
   version "3.109.0"
   resolved "https://registry.yarnpkg.com/@aws-sdk/chunked-blob-reader-native/-/chunked-blob-reader-native-3.109.0.tgz#4db2ec81faf38fe33cf9dd6f75641afe0826dcfd"
@@ -103,6 +111,21 @@
     "@aws-sdk/util-base64-browser" "3.109.0"
     tslib "^2.3.1"
 
+"@aws-sdk/chunked-blob-reader-native@3.208.0":
+  version "3.208.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/chunked-blob-reader-native/-/chunked-blob-reader-native-3.208.0.tgz#cdbd12c89a4f3ddd91bf707da8bb4af311487cc5"
+  integrity sha512-JeOZ95PW+fJ6bbuqPySYqLqHk1n4+4ueEEraJsiUrPBV0S1ZtyvOGHcnGztKUjr2PYNaiexmpWuvUve9K12HRA==
+  dependencies:
+    "@aws-sdk/util-base64" "3.208.0"
+    tslib "^2.3.1"
+
+"@aws-sdk/chunked-blob-reader@3.188.0":
+  version "3.188.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/chunked-blob-reader/-/chunked-blob-reader-3.188.0.tgz#18181b27511ab512e56b9f2cef30d2abbef639dc"
+  integrity sha512-zkPRFZZPL3eH+kH86LDYYXImiClA1/sW60zYOjse9Pgka+eDJlvBN6hcYxwDEKjcwATYiSRR1aVQHcfCinlGXg==
+  dependencies:
+    tslib "^2.3.1"
+
 "@aws-sdk/chunked-blob-reader@3.55.0":
   version "3.55.0"
   resolved "https://registry.yarnpkg.com/@aws-sdk/chunked-blob-reader/-/chunked-blob-reader-3.55.0.tgz#db240c78e7c4c826e707f0ca32a4d221c41cf6a0"
@@ -110,7 +133,7 @@
   dependencies:
     tslib "^2.3.1"
 
-"@aws-sdk/client-s3@^3.163.0":
+"@aws-sdk/client-s3@3.163.0":
   version "3.163.0"
   resolved "https://registry.yarnpkg.com/@aws-sdk/client-s3/-/client-s3-3.163.0.tgz#744d69e74237993e84912870c1c581e7ec1214ca"
   integrity sha512-pWjsVnD9kjXeS8yan8pMj6p+3yIvzR8gEpV6MDWDbJnlhD432M8WZUsFo+lkDK+2sfvGvdIg+gKd+Cb2cO8KvQ==
@@ -170,6 +193,104 @@
     fast-xml-parser "3.19.0"
     tslib "^2.3.1"
 
+"@aws-sdk/client-s3@^3.163.0":
+  version "3.218.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/client-s3/-/client-s3-3.218.0.tgz#b3dc1ea63ebc08c94cc8e2e3cf867e7dd294af46"
+  integrity sha512-SvDQzjsW+MvmYb59y0xHRWTDRmHxBjXFqYrJ5DCXwL1LvTpqhN6bYReW8KAesMBkxf4t2H33o0hjYmD4giTqzg==
+  dependencies:
+    "@aws-crypto/sha1-browser" "2.0.0"
+    "@aws-crypto/sha256-browser" "2.0.0"
+    "@aws-crypto/sha256-js" "2.0.0"
+    "@aws-sdk/client-sts" "3.218.0"
+    "@aws-sdk/config-resolver" "3.215.0"
+    "@aws-sdk/credential-provider-node" "3.218.0"
+    "@aws-sdk/eventstream-serde-browser" "3.215.0"
+    "@aws-sdk/eventstream-serde-config-resolver" "3.215.0"
+    "@aws-sdk/eventstream-serde-node" "3.215.0"
+    "@aws-sdk/fetch-http-handler" "3.215.0"
+    "@aws-sdk/hash-blob-browser" "3.215.0"
+    "@aws-sdk/hash-node" "3.215.0"
+    "@aws-sdk/hash-stream-node" "3.215.0"
+    "@aws-sdk/invalid-dependency" "3.215.0"
+    "@aws-sdk/md5-js" "3.215.0"
+    "@aws-sdk/middleware-bucket-endpoint" "3.215.0"
+    "@aws-sdk/middleware-content-length" "3.215.0"
+    "@aws-sdk/middleware-endpoint" "3.215.0"
+    "@aws-sdk/middleware-expect-continue" "3.215.0"
+    "@aws-sdk/middleware-flexible-checksums" "3.215.0"
+    "@aws-sdk/middleware-host-header" "3.215.0"
+    "@aws-sdk/middleware-location-constraint" "3.215.0"
+    "@aws-sdk/middleware-logger" "3.215.0"
+    "@aws-sdk/middleware-recursion-detection" "3.215.0"
+    "@aws-sdk/middleware-retry" "3.215.0"
+    "@aws-sdk/middleware-sdk-s3" "3.215.0"
+    "@aws-sdk/middleware-serde" "3.215.0"
+    "@aws-sdk/middleware-signing" "3.215.0"
+    "@aws-sdk/middleware-ssec" "3.215.0"
+    "@aws-sdk/middleware-stack" "3.215.0"
+    "@aws-sdk/middleware-user-agent" "3.215.0"
+    "@aws-sdk/node-config-provider" "3.215.0"
+    "@aws-sdk/node-http-handler" "3.215.0"
+    "@aws-sdk/protocol-http" "3.215.0"
+    "@aws-sdk/signature-v4-multi-region" "3.215.0"
+    "@aws-sdk/smithy-client" "3.215.0"
+    "@aws-sdk/types" "3.215.0"
+    "@aws-sdk/url-parser" "3.215.0"
+    "@aws-sdk/util-base64" "3.208.0"
+    "@aws-sdk/util-body-length-browser" "3.188.0"
+    "@aws-sdk/util-body-length-node" "3.208.0"
+    "@aws-sdk/util-defaults-mode-browser" "3.215.0"
+    "@aws-sdk/util-defaults-mode-node" "3.215.0"
+    "@aws-sdk/util-endpoints" "3.216.0"
+    "@aws-sdk/util-stream-browser" "3.215.0"
+    "@aws-sdk/util-stream-node" "3.215.0"
+    "@aws-sdk/util-user-agent-browser" "3.215.0"
+    "@aws-sdk/util-user-agent-node" "3.215.0"
+    "@aws-sdk/util-utf8-browser" "3.188.0"
+    "@aws-sdk/util-utf8-node" "3.208.0"
+    "@aws-sdk/util-waiter" "3.215.0"
+    "@aws-sdk/xml-builder" "3.201.0"
+    fast-xml-parser "4.0.11"
+    tslib "^2.3.1"
+
+"@aws-sdk/client-sso-oidc@3.216.0":
+  version "3.216.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.216.0.tgz#ffd350bd4dd3e83a7fc620fd46464f97c455eb75"
+  integrity sha512-O8kmM86BHwiSwyNoIe+iHXuSpUE9PBWl3re8u+/igt/w5W5VmMVz+zQr7gRUDQ1FDgLWNEdAJa0r+JFx3pZdzA==
+  dependencies:
+    "@aws-crypto/sha256-browser" "2.0.0"
+    "@aws-crypto/sha256-js" "2.0.0"
+    "@aws-sdk/config-resolver" "3.215.0"
+    "@aws-sdk/fetch-http-handler" "3.215.0"
+    "@aws-sdk/hash-node" "3.215.0"
+    "@aws-sdk/invalid-dependency" "3.215.0"
+    "@aws-sdk/middleware-content-length" "3.215.0"
+    "@aws-sdk/middleware-endpoint" "3.215.0"
+    "@aws-sdk/middleware-host-header" "3.215.0"
+    "@aws-sdk/middleware-logger" "3.215.0"
+    "@aws-sdk/middleware-recursion-detection" "3.215.0"
+    "@aws-sdk/middleware-retry" "3.215.0"
+    "@aws-sdk/middleware-serde" "3.215.0"
+    "@aws-sdk/middleware-stack" "3.215.0"
+    "@aws-sdk/middleware-user-agent" "3.215.0"
+    "@aws-sdk/node-config-provider" "3.215.0"
+    "@aws-sdk/node-http-handler" "3.215.0"
+    "@aws-sdk/protocol-http" "3.215.0"
+    "@aws-sdk/smithy-client" "3.215.0"
+    "@aws-sdk/types" "3.215.0"
+    "@aws-sdk/url-parser" "3.215.0"
+    "@aws-sdk/util-base64" "3.208.0"
+    "@aws-sdk/util-body-length-browser" "3.188.0"
+    "@aws-sdk/util-body-length-node" "3.208.0"
+    "@aws-sdk/util-defaults-mode-browser" "3.215.0"
+    "@aws-sdk/util-defaults-mode-node" "3.215.0"
+    "@aws-sdk/util-endpoints" "3.216.0"
+    "@aws-sdk/util-user-agent-browser" "3.215.0"
+    "@aws-sdk/util-user-agent-node" "3.215.0"
+    "@aws-sdk/util-utf8-browser" "3.188.0"
+    "@aws-sdk/util-utf8-node" "3.208.0"
+    tslib "^2.3.1"
+
 "@aws-sdk/client-sso@3.163.0":
   version "3.163.0"
   resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.163.0.tgz#fa99acadf4f049c0482ac92373b64ad409f26570"
@@ -207,6 +328,44 @@
     "@aws-sdk/util-utf8-node" "3.109.0"
     tslib "^2.3.1"
 
+"@aws-sdk/client-sso@3.218.0":
+  version "3.218.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.218.0.tgz#dc44d98220b57a19bbf1cdb5ee41518d5ccd04fd"
+  integrity sha512-kVMlpjaVblxgb1G8q3wD65mKxO3RzKwnjUjIBmOHpmseXzlSkAdAvYcikaDoJP+CRmys4uXk5DN8c7ZdL0OmgA==
+  dependencies:
+    "@aws-crypto/sha256-browser" "2.0.0"
+    "@aws-crypto/sha256-js" "2.0.0"
+    "@aws-sdk/config-resolver" "3.215.0"
+    "@aws-sdk/fetch-http-handler" "3.215.0"
+    "@aws-sdk/hash-node" "3.215.0"
+    "@aws-sdk/invalid-dependency" "3.215.0"
+    "@aws-sdk/middleware-content-length" "3.215.0"
+    "@aws-sdk/middleware-endpoint" "3.215.0"
+    "@aws-sdk/middleware-host-header" "3.215.0"
+    "@aws-sdk/middleware-logger" "3.215.0"
+    "@aws-sdk/middleware-recursion-detection" "3.215.0"
+    "@aws-sdk/middleware-retry" "3.215.0"
+    "@aws-sdk/middleware-serde" "3.215.0"
+    "@aws-sdk/middleware-stack" "3.215.0"
+    "@aws-sdk/middleware-user-agent" "3.215.0"
+    "@aws-sdk/node-config-provider" "3.215.0"
+    "@aws-sdk/node-http-handler" "3.215.0"
+    "@aws-sdk/protocol-http" "3.215.0"
+    "@aws-sdk/smithy-client" "3.215.0"
+    "@aws-sdk/types" "3.215.0"
+    "@aws-sdk/url-parser" "3.215.0"
+    "@aws-sdk/util-base64" "3.208.0"
+    "@aws-sdk/util-body-length-browser" "3.188.0"
+    "@aws-sdk/util-body-length-node" "3.208.0"
+    "@aws-sdk/util-defaults-mode-browser" "3.215.0"
+    "@aws-sdk/util-defaults-mode-node" "3.215.0"
+    "@aws-sdk/util-endpoints" "3.216.0"
+    "@aws-sdk/util-user-agent-browser" "3.215.0"
+    "@aws-sdk/util-user-agent-node" "3.215.0"
+    "@aws-sdk/util-utf8-browser" "3.188.0"
+    "@aws-sdk/util-utf8-node" "3.208.0"
+    tslib "^2.3.1"
+
 "@aws-sdk/client-sts@3.163.0":
   version "3.163.0"
   resolved "https://registry.yarnpkg.com/@aws-sdk/client-sts/-/client-sts-3.163.0.tgz#8af28c722c9a45adf4eca324395f33490bf4a141"
@@ -249,6 +408,48 @@
     fast-xml-parser "3.19.0"
     tslib "^2.3.1"
 
+"@aws-sdk/client-sts@3.218.0":
+  version "3.218.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/client-sts/-/client-sts-3.218.0.tgz#7034e21a786e62150c27385f8b9b0239ce9e538b"
+  integrity sha512-0A81eHvryKFEPq7IeY34Opzh5b9bVhhLlf2fDy5VuZjCFf4R9vD2ceOANvFSJeMsmdlqVDq8U1mHYl0E6FRUug==
+  dependencies:
+    "@aws-crypto/sha256-browser" "2.0.0"
+    "@aws-crypto/sha256-js" "2.0.0"
+    "@aws-sdk/config-resolver" "3.215.0"
+    "@aws-sdk/credential-provider-node" "3.218.0"
+    "@aws-sdk/fetch-http-handler" "3.215.0"
+    "@aws-sdk/hash-node" "3.215.0"
+    "@aws-sdk/invalid-dependency" "3.215.0"
+    "@aws-sdk/middleware-content-length" "3.215.0"
+    "@aws-sdk/middleware-endpoint" "3.215.0"
+    "@aws-sdk/middleware-host-header" "3.215.0"
+    "@aws-sdk/middleware-logger" "3.215.0"
+    "@aws-sdk/middleware-recursion-detection" "3.215.0"
+    "@aws-sdk/middleware-retry" "3.215.0"
+    "@aws-sdk/middleware-sdk-sts" "3.215.0"
+    "@aws-sdk/middleware-serde" "3.215.0"
+    "@aws-sdk/middleware-signing" "3.215.0"
+    "@aws-sdk/middleware-stack" "3.215.0"
+    "@aws-sdk/middleware-user-agent" "3.215.0"
+    "@aws-sdk/node-config-provider" "3.215.0"
+    "@aws-sdk/node-http-handler" "3.215.0"
+    "@aws-sdk/protocol-http" "3.215.0"
+    "@aws-sdk/smithy-client" "3.215.0"
+    "@aws-sdk/types" "3.215.0"
+    "@aws-sdk/url-parser" "3.215.0"
+    "@aws-sdk/util-base64" "3.208.0"
+    "@aws-sdk/util-body-length-browser" "3.188.0"
+    "@aws-sdk/util-body-length-node" "3.208.0"
+    "@aws-sdk/util-defaults-mode-browser" "3.215.0"
+    "@aws-sdk/util-defaults-mode-node" "3.215.0"
+    "@aws-sdk/util-endpoints" "3.216.0"
+    "@aws-sdk/util-user-agent-browser" "3.215.0"
+    "@aws-sdk/util-user-agent-node" "3.215.0"
+    "@aws-sdk/util-utf8-browser" "3.188.0"
+    "@aws-sdk/util-utf8-node" "3.208.0"
+    fast-xml-parser "4.0.11"
+    tslib "^2.3.1"
+
 "@aws-sdk/config-resolver@3.163.0":
   version "3.163.0"
   resolved "https://registry.yarnpkg.com/@aws-sdk/config-resolver/-/config-resolver-3.163.0.tgz#65ae429a02d65a8a9d2fe321cc88fa9117c6ecae"
@@ -260,6 +461,17 @@
     "@aws-sdk/util-middleware" "3.162.0"
     tslib "^2.3.1"
 
+"@aws-sdk/config-resolver@3.215.0":
+  version "3.215.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/config-resolver/-/config-resolver-3.215.0.tgz#88f4979a32931b08527046be67924464a34ca8d8"
+  integrity sha512-DxX4R+YYLQOtg0qfceKBrjVD4t1mQBG1eb7IVr2QSlckFCX8ztUNymFMuaSEo3938Jyy/NpgfUDpFqPDaSKnng==
+  dependencies:
+    "@aws-sdk/signature-v4" "3.215.0"
+    "@aws-sdk/types" "3.215.0"
+    "@aws-sdk/util-config-provider" "3.208.0"
+    "@aws-sdk/util-middleware" "3.215.0"
+    tslib "^2.3.1"
+
 "@aws-sdk/credential-provider-env@3.162.0":
   version "3.162.0"
   resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.162.0.tgz#be2bf9587d9e7b2a10b1c2530c5984b60efc11bd"
@@ -269,6 +481,15 @@
     "@aws-sdk/types" "3.162.0"
     tslib "^2.3.1"
 
+"@aws-sdk/credential-provider-env@3.215.0":
+  version "3.215.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.215.0.tgz#e0db666bac6ae13022dc26226a7a54ee0b20b782"
+  integrity sha512-n5G7I7Pxfsn81+tNsSOzspKp9SYai78oRfImsfFY4JLTcWutv7szMgFUbtEzBfUUINHpOxLiO2Lk5yu5K1C7IQ==
+  dependencies:
+    "@aws-sdk/property-provider" "3.215.0"
+    "@aws-sdk/types" "3.215.0"
+    tslib "^2.3.1"
+
 "@aws-sdk/credential-provider-imds@3.162.0":
   version "3.162.0"
   resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.162.0.tgz#bb8002a37c42e6f2f42fcafff3a8e4262b6aac4a"
@@ -280,6 +501,17 @@
     "@aws-sdk/url-parser" "3.162.0"
     tslib "^2.3.1"
 
+"@aws-sdk/credential-provider-imds@3.215.0":
+  version "3.215.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.215.0.tgz#f73b0ff1b71dd5a1d433070cc10129a3fd8a917c"
+  integrity sha512-/4FUUR6u9gkNfxB6mEwBr0kk0myIkrDcXbAocWN3fPd/t7otzxpx/JqPZXgM6kcVP7M4T/QT75l1E1RRHLWCCQ==
+  dependencies:
+    "@aws-sdk/node-config-provider" "3.215.0"
+    "@aws-sdk/property-provider" "3.215.0"
+    "@aws-sdk/types" "3.215.0"
+    "@aws-sdk/url-parser" "3.215.0"
+    tslib "^2.3.1"
+
 "@aws-sdk/credential-provider-ini@3.163.0":
   version "3.163.0"
   resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.163.0.tgz#5c82fafbf051843f7739aacca4bf34d0a19780c1"
@@ -294,6 +526,20 @@
     "@aws-sdk/types" "3.162.0"
     tslib "^2.3.1"
 
+"@aws-sdk/credential-provider-ini@3.218.0":
+  version "3.218.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.218.0.tgz#da7e0f3c86d5d651dee23ba78d41c25a8a421611"
+  integrity sha512-tDDrGW+4A+PQThVJ+l9ee03CsDoD0XLpOB5dcf+dr/dCHjcQ7x/CeVFZ8eM+XUtGQnZVvuzXZGwzS8bUWEdJIg==
+  dependencies:
+    "@aws-sdk/credential-provider-env" "3.215.0"
+    "@aws-sdk/credential-provider-imds" "3.215.0"
+    "@aws-sdk/credential-provider-sso" "3.218.0"
+    "@aws-sdk/credential-provider-web-identity" "3.215.0"
+    "@aws-sdk/property-provider" "3.215.0"
+    "@aws-sdk/shared-ini-file-loader" "3.215.0"
+    "@aws-sdk/types" "3.215.0"
+    tslib "^2.3.1"
+
 "@aws-sdk/credential-provider-node@3.163.0":
   version "3.163.0"
   resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.163.0.tgz#d5ac87da6a8d0d1535b4099670ca178be2dc78d1"
@@ -310,6 +556,22 @@
     "@aws-sdk/types" "3.162.0"
     tslib "^2.3.1"
 
+"@aws-sdk/credential-provider-node@3.218.0":
+  version "3.218.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.218.0.tgz#7a18b7bdcb20b76ea9bdbcb3dcad676e2784df84"
+  integrity sha512-J9PB6XFA+V0mgxleuY5W6Jjh5WejV8HjMViTJQpp2JN+NWZP3bGvquUSQHRqWGRGg2fSJy6Z/J4zQ8fpPbGsdQ==
+  dependencies:
+    "@aws-sdk/credential-provider-env" "3.215.0"
+    "@aws-sdk/credential-provider-imds" "3.215.0"
+    "@aws-sdk/credential-provider-ini" "3.218.0"
+    "@aws-sdk/credential-provider-process" "3.215.0"
+    "@aws-sdk/credential-provider-sso" "3.218.0"
+    "@aws-sdk/credential-provider-web-identity" "3.215.0"
+    "@aws-sdk/property-provider" "3.215.0"
+    "@aws-sdk/shared-ini-file-loader" "3.215.0"
+    "@aws-sdk/types" "3.215.0"
+    tslib "^2.3.1"
+
 "@aws-sdk/credential-provider-process@3.162.0":
   version "3.162.0"
   resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.162.0.tgz#e54db5f3ac5a5200a6f04803b05278c028a54447"
@@ -320,6 +582,16 @@
     "@aws-sdk/types" "3.162.0"
     tslib "^2.3.1"
 
+"@aws-sdk/credential-provider-process@3.215.0":
+  version "3.215.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.215.0.tgz#9906bdfde39f8f60e248567c11e93337b159eb5e"
+  integrity sha512-JNvj4L5B7W8byoFdfn/8Y4scoPiwCi+Ha/fRsFCrdSC7C+snDuxM/oQj33HI8DpKY1cjuigzEnpnxiNWaA09EA==
+  dependencies:
+    "@aws-sdk/property-provider" "3.215.0"
+    "@aws-sdk/shared-ini-file-loader" "3.215.0"
+    "@aws-sdk/types" "3.215.0"
+    tslib "^2.3.1"
+
 "@aws-sdk/credential-provider-sso@3.163.0":
   version "3.163.0"
   resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.163.0.tgz#b8a241aeeacc17773600cfb41a2faf1f703f80b1"
@@ -331,6 +603,18 @@
     "@aws-sdk/types" "3.162.0"
     tslib "^2.3.1"
 
+"@aws-sdk/credential-provider-sso@3.218.0":
+  version "3.218.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.218.0.tgz#4c1dcfc53b7f566f7a3197bfd99943cf378d63e4"
+  integrity sha512-HecWvmxD+xffmY8G4SfLRfCOgSoLFki45wOOU8ESgRM9fQp2+3CfRSyiThKZI5PTmE+xhPTRvmR61HUmQjEv8w==
+  dependencies:
+    "@aws-sdk/client-sso" "3.218.0"
+    "@aws-sdk/property-provider" "3.215.0"
+    "@aws-sdk/shared-ini-file-loader" "3.215.0"
+    "@aws-sdk/token-providers" "3.216.0"
+    "@aws-sdk/types" "3.215.0"
+    tslib "^2.3.1"
+
 "@aws-sdk/credential-provider-web-identity@3.162.0":
   version "3.162.0"
   resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.162.0.tgz#0b06aee91777b16c362ad565e9f1fdf77de7e8f6"
@@ -340,6 +624,15 @@
     "@aws-sdk/types" "3.162.0"
     tslib "^2.3.1"
 
+"@aws-sdk/credential-provider-web-identity@3.215.0":
+  version "3.215.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.215.0.tgz#4ba859c40eaaaab111e4047323cbec29db88d714"
+  integrity sha512-AWaDDEE3VU1HeLrXvyUrkQ6Wb3PQij5bvvrMil9L0da3b1yrcpoDanQQy7wBFBXcZIVmcmSFe5MMA/nyh2Le4g==
+  dependencies:
+    "@aws-sdk/property-provider" "3.215.0"
+    "@aws-sdk/types" "3.215.0"
+    tslib "^2.3.1"
+
 "@aws-sdk/eventstream-codec@3.162.0":
   version "3.162.0"
   resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-codec/-/eventstream-codec-3.162.0.tgz#c105a2d3081b0b74a3d1be6c49bd489a677102ad"
@@ -350,6 +643,16 @@
     "@aws-sdk/util-hex-encoding" "3.109.0"
     tslib "^2.3.1"
 
+"@aws-sdk/eventstream-codec@3.215.0":
+  version "3.215.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-codec/-/eventstream-codec-3.215.0.tgz#5c635852926f5dc4f4ada2faf20bd3ce2db7e2cf"
+  integrity sha512-Uwgkq6ViQnfd1l+qhWPGdzxh+YhD1N6RYL0kEcp1ovsR+rC/0qUsM9VZrSckZn4jB+0ATqIoOXtcUYP4+xrNmg==
+  dependencies:
+    "@aws-crypto/crc32" "2.0.0"
+    "@aws-sdk/types" "3.215.0"
+    "@aws-sdk/util-hex-encoding" "3.201.0"
+    tslib "^2.3.1"
+
 "@aws-sdk/eventstream-serde-browser@3.162.0":
   version "3.162.0"
   resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-browser/-/eventstream-serde-browser-3.162.0.tgz#d84952d5c65b247b3e01c4ee59c42a716338ce38"
@@ -359,6 +662,15 @@
     "@aws-sdk/types" "3.162.0"
     tslib "^2.3.1"
 
+"@aws-sdk/eventstream-serde-browser@3.215.0":
+  version "3.215.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-browser/-/eventstream-serde-browser-3.215.0.tgz#dfdcb780dfc5f351a5eac68fd3203359549870b2"
+  integrity sha512-VfTl69/C/cOjm47blgvdBz2pw8//6qkLPvQetfDOgf40JvsjBp9afUDNiKV08ulzoUeVZBosgHs09oZ2VDj09Q==
+  dependencies:
+    "@aws-sdk/eventstream-serde-universal" "3.215.0"
+    "@aws-sdk/types" "3.215.0"
+    tslib "^2.3.1"
+
 "@aws-sdk/eventstream-serde-config-resolver@3.162.0":
   version "3.162.0"
   resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-3.162.0.tgz#2c5f749262575d44b8ebebff96e243d9c0bbcf38"
@@ -367,6 +679,14 @@
     "@aws-sdk/types" "3.162.0"
     tslib "^2.3.1"
 
+"@aws-sdk/eventstream-serde-config-resolver@3.215.0":
+  version "3.215.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-3.215.0.tgz#1423d023bc99b5c601508a8555274c649ad8554b"
+  integrity sha512-NrVb8HA0tUsruAj8yVWTaRIfcAB9lsajzksCqS7W917x/esoIRwoeF2zua63Ivro7hLeCjzS2Mws5IhvSl+/tQ==
+  dependencies:
+    "@aws-sdk/types" "3.215.0"
+    tslib "^2.3.1"
+
 "@aws-sdk/eventstream-serde-node@3.162.0":
   version "3.162.0"
   resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-node/-/eventstream-serde-node-3.162.0.tgz#06676c14b9cea5f179586d47bdbac9c60966efb4"
@@ -376,6 +696,15 @@
     "@aws-sdk/types" "3.162.0"
     tslib "^2.3.1"
 
+"@aws-sdk/eventstream-serde-node@3.215.0":
+  version "3.215.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-node/-/eventstream-serde-node-3.215.0.tgz#92778bc1ed4c0c21c5f934c9f3bc9e2633f3ab0a"
+  integrity sha512-DxABFUIpmFV1NOfwF8FtX+l7kzmMTTJf2BfXvGoYemmBtv9Cc31Qg83ouD8xuNSx9qlbFOgpWaNpzEZ400porA==
+  dependencies:
+    "@aws-sdk/eventstream-serde-universal" "3.215.0"
+    "@aws-sdk/types" "3.215.0"
+    tslib "^2.3.1"
+
 "@aws-sdk/eventstream-serde-universal@3.162.0":
   version "3.162.0"
   resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-universal/-/eventstream-serde-universal-3.162.0.tgz#cf515746715baed3efc9bdac9e28ed29e8546142"
@@ -385,6 +714,15 @@
     "@aws-sdk/types" "3.162.0"
     tslib "^2.3.1"
 
+"@aws-sdk/eventstream-serde-universal@3.215.0":
+  version "3.215.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-universal/-/eventstream-serde-universal-3.215.0.tgz#e0cfee0dccd88ebe882a93453940f88c5492ab05"
+  integrity sha512-8DmY3vVZtXAKzW0wOSC0bN+WF8qNZKaCqe5JCM3WwS1Wu6F6qI7b064VSe5b3d9BbJzeMccOcJeCg3ZU/3nYUQ==
+  dependencies:
+    "@aws-sdk/eventstream-codec" "3.215.0"
+    "@aws-sdk/types" "3.215.0"
+    tslib "^2.3.1"
+
 "@aws-sdk/fetch-http-handler@3.162.0":
   version "3.162.0"
   resolved "https://registry.yarnpkg.com/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.162.0.tgz#d90d3f179ff11bedf69b971d22a7c00abba650d9"
@@ -396,6 +734,17 @@
     "@aws-sdk/util-base64-browser" "3.109.0"
     tslib "^2.3.1"
 
+"@aws-sdk/fetch-http-handler@3.215.0":
+  version "3.215.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.215.0.tgz#193a8dad5ce1fe1ef4d4a5bb0e06a263f4038fbb"
+  integrity sha512-JfZyrJOE+0ik1PumsIUZd0NfgEx4sZ43VSdPCD9GRhssRWudNsSF1B5fz3xA5v+1y5oQPjXZyaWCzKtnYruiWw==
+  dependencies:
+    "@aws-sdk/protocol-http" "3.215.0"
+    "@aws-sdk/querystring-builder" "3.215.0"
+    "@aws-sdk/types" "3.215.0"
+    "@aws-sdk/util-base64" "3.208.0"
+    tslib "^2.3.1"
+
 "@aws-sdk/hash-blob-browser@3.162.0":
   version "3.162.0"
   resolved "https://registry.yarnpkg.com/@aws-sdk/hash-blob-browser/-/hash-blob-browser-3.162.0.tgz#75d1ff18dc3181231b35a131adadfe85cc227e63"
@@ -406,6 +755,16 @@
     "@aws-sdk/types" "3.162.0"
     tslib "^2.3.1"
 
+"@aws-sdk/hash-blob-browser@3.215.0":
+  version "3.215.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/hash-blob-browser/-/hash-blob-browser-3.215.0.tgz#e67db32f12980f4e7251bf31965e806a0284571c"
+  integrity sha512-plHPFOSEHig0g/ou1H4QW31AyPGzwR0qgUKIEUFf3lWIfBI3BnvA4t24cJ87I204oqENj/+ZSNAj5qeAZfMFXw==
+  dependencies:
+    "@aws-sdk/chunked-blob-reader" "3.188.0"
+    "@aws-sdk/chunked-blob-reader-native" "3.208.0"
+    "@aws-sdk/types" "3.215.0"
+    tslib "^2.3.1"
+
 "@aws-sdk/hash-node@3.162.0":
   version "3.162.0"
   resolved "https://registry.yarnpkg.com/@aws-sdk/hash-node/-/hash-node-3.162.0.tgz#72eeba4fe923fc96103740600bcb5a217dc8d338"
@@ -415,6 +774,15 @@
     "@aws-sdk/util-buffer-from" "3.55.0"
     tslib "^2.3.1"
 
+"@aws-sdk/hash-node@3.215.0":
+  version "3.215.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/hash-node/-/hash-node-3.215.0.tgz#be8127948b26aba2f0e213a64baad9ce3051ca21"
+  integrity sha512-MkSRuZvo1RCRmI0VNEmRYCGGD/DkMd9lqnLtOyglMPnSX1mhyD4/DyXmcc3rYa7PsjDRAfykGWJRiMqpoMLjiQ==
+  dependencies:
+    "@aws-sdk/types" "3.215.0"
+    "@aws-sdk/util-buffer-from" "3.208.0"
+    tslib "^2.3.1"
+
 "@aws-sdk/hash-stream-node@3.162.0":
   version "3.162.0"
   resolved "https://registry.yarnpkg.com/@aws-sdk/hash-stream-node/-/hash-stream-node-3.162.0.tgz#cfb1e8cc36df4772a339416a5c4c5138064a8648"
@@ -423,6 +791,14 @@
     "@aws-sdk/types" "3.162.0"
     tslib "^2.3.1"
 
+"@aws-sdk/hash-stream-node@3.215.0":
+  version "3.215.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/hash-stream-node/-/hash-stream-node-3.215.0.tgz#bf4b7ae2c965327a427c61bc164a87a88c0c3d8e"
+  integrity sha512-1VEpiXu0jH7bSRYfEeSrznYq41zpUV4TtStoBXdcEVaOqT4LNQ5k1g1602544UWKUJ7D+E9NCNXpjM6TSMmG4A==
+  dependencies:
+    "@aws-sdk/types" "3.215.0"
+    tslib "^2.3.1"
+
 "@aws-sdk/invalid-dependency@3.162.0":
   version "3.162.0"
   resolved "https://registry.yarnpkg.com/@aws-sdk/invalid-dependency/-/invalid-dependency-3.162.0.tgz#a75b29aae362854041ebc4d282746041231109e4"
@@ -431,6 +807,14 @@
     "@aws-sdk/types" "3.162.0"
     tslib "^2.3.1"
 
+"@aws-sdk/invalid-dependency@3.215.0":
+  version "3.215.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/invalid-dependency/-/invalid-dependency-3.215.0.tgz#e87b1927262c8f9c1c80f382a56621286db08103"
+  integrity sha512-++bK4BUQe8/CL/YcLZcQB8qPOhiXxhbuhYzfFS7PNVvW1QOLqKRZL/lKs24gzjcOmw7IhAbCybDZwvu2TM4DAg==
+  dependencies:
+    "@aws-sdk/types" "3.215.0"
+    tslib "^2.3.1"
+
 "@aws-sdk/is-array-buffer@3.170.0":
   version "3.170.0"
   resolved "https://registry.yarnpkg.com/@aws-sdk/is-array-buffer/-/is-array-buffer-3.170.0.tgz#a34b82b0d7c534544db001837785ed086d99344c"
@@ -438,6 +822,13 @@
   dependencies:
     tslib "^2.3.1"
 
+"@aws-sdk/is-array-buffer@3.201.0":
+  version "3.201.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/is-array-buffer/-/is-array-buffer-3.201.0.tgz#06e557adc284fac2f26071c2944ae01f61b95854"
+  integrity sha512-UPez5qLh3dNgt0DYnPD/q0mVJY84rA17QE26hVNOW3fAji8W2wrwrxdacWOxyXvlxWsVRcKmr+lay1MDqpAMfg==
+  dependencies:
+    tslib "^2.3.1"
+
 "@aws-sdk/is-array-buffer@3.55.0":
   version "3.55.0"
   resolved "https://registry.yarnpkg.com/@aws-sdk/is-array-buffer/-/is-array-buffer-3.55.0.tgz#c46122c5636f01d5895e5256a587768c3425ea7a"
@@ -445,6 +836,30 @@
   dependencies:
     tslib "^2.3.1"
 
+"@aws-sdk/lib-storage@3.182.0":
+  version "3.182.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/lib-storage/-/lib-storage-3.182.0.tgz#cdca16445ac65afbb4d9acbc1b149761d6293113"
+  integrity sha512-12MleBxo9f74R1x4rvVYEkyJyUtp+YNbpCSR+8v7VuBJm0LVugCbKRasle+xmWsWI/Pd20OXalzManWZIWMQDA==
+  dependencies:
+    "@aws-sdk/middleware-endpoint" "3.182.0"
+    "@aws-sdk/smithy-client" "3.180.0"
+    buffer "5.6.0"
+    events "3.3.0"
+    stream-browserify "3.0.0"
+    tslib "^2.3.1"
+
+"@aws-sdk/lib-storage@^3.182.0":
+  version "3.218.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/lib-storage/-/lib-storage-3.218.0.tgz#f9002f3f33a769959bccd3e8536b457e1ea3178c"
+  integrity sha512-bXOuQu1At6sL4tKaCGPRShNLXU5BVKC8K4cp+Jvs+YJJlmVgX3Q/7gb7rdJnuUO8Uy79t+R/V6O1aMeD8RSnkA==
+  dependencies:
+    "@aws-sdk/middleware-endpoint" "3.215.0"
+    "@aws-sdk/smithy-client" "3.215.0"
+    buffer "5.6.0"
+    events "3.3.0"
+    stream-browserify "3.0.0"
+    tslib "^2.3.1"
+
 "@aws-sdk/md5-js@3.162.0":
   version "3.162.0"
   resolved "https://registry.yarnpkg.com/@aws-sdk/md5-js/-/md5-js-3.162.0.tgz#f469e9dca0eea77ce9d87cf157dc034b834f1144"
@@ -455,6 +870,16 @@
     "@aws-sdk/util-utf8-node" "3.109.0"
     tslib "^2.3.1"
 
+"@aws-sdk/md5-js@3.215.0":
+  version "3.215.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/md5-js/-/md5-js-3.215.0.tgz#54c3874c61066a90706c523a056418c4ca68340a"
+  integrity sha512-2f5r2raNDG9USKHKRgAW2r1MzCrkemLASlDXASgAuAD3gYGURVi4ZDhI3I1GECY5dPEgGC+3B2rkEb9MfQAaEg==
+  dependencies:
+    "@aws-sdk/types" "3.215.0"
+    "@aws-sdk/util-utf8-browser" "3.188.0"
+    "@aws-sdk/util-utf8-node" "3.208.0"
+    tslib "^2.3.1"
+
 "@aws-sdk/middleware-bucket-endpoint@3.162.0":
   version "3.162.0"
   resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.162.0.tgz#7930aa6ecc2248c578996e43b00b4cddd77b8904"
@@ -477,6 +902,17 @@
     "@aws-sdk/util-config-provider" "3.170.0"
     tslib "^2.3.1"
 
+"@aws-sdk/middleware-bucket-endpoint@3.215.0":
+  version "3.215.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.215.0.tgz#b7d035e319629b3bb50a5962740d22fe61a694d1"
+  integrity sha512-zMeYrnHX8S9VFDPH3fryXdPXW1DWeX9URKAkU1oxZLGpBX91CsWzUDjaMhbkDgvwO2oeKgjnZ2vCwcNNKP266w==
+  dependencies:
+    "@aws-sdk/protocol-http" "3.215.0"
+    "@aws-sdk/types" "3.215.0"
+    "@aws-sdk/util-arn-parser" "3.208.0"
+    "@aws-sdk/util-config-provider" "3.208.0"
+    tslib "^2.3.1"
+
 "@aws-sdk/middleware-content-length@3.162.0":
   version "3.162.0"
   resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-content-length/-/middleware-content-length-3.162.0.tgz#987d77a843598aa52d1045745dbae7e79e763464"
@@ -486,6 +922,43 @@
     "@aws-sdk/types" "3.162.0"
     tslib "^2.3.1"
 
+"@aws-sdk/middleware-content-length@3.215.0":
+  version "3.215.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-content-length/-/middleware-content-length-3.215.0.tgz#06d7692eb58dec4f07a235d51cc4be430c142067"
+  integrity sha512-zKJRb6jDLFl9nl/muSFbiQHA4uK3skinuDRcyLbpMvvzhuK/PVodv9QI1+wIUsFdXkaSxAlva1oG4bL8ZFi+sQ==
+  dependencies:
+    "@aws-sdk/protocol-http" "3.215.0"
+    "@aws-sdk/types" "3.215.0"
+    tslib "^2.3.1"
+
+"@aws-sdk/middleware-endpoint@3.182.0":
+  version "3.182.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-endpoint/-/middleware-endpoint-3.182.0.tgz#dd36357977437fc336e564ef0ef5508030b12853"
+  integrity sha512-F51nTuxdZ0oTuqU2+Ca+l/Ysvn6ukLyujvHhyJfolquKX+ra/CBEC/Unhksl7ORolehm+iwbryyO7MHq7BWGkA==
+  dependencies:
+    "@aws-sdk/middleware-serde" "3.178.0"
+    "@aws-sdk/protocol-http" "3.178.0"
+    "@aws-sdk/signature-v4" "3.178.0"
+    "@aws-sdk/types" "3.178.0"
+    "@aws-sdk/url-parser" "3.178.0"
+    "@aws-sdk/util-config-provider" "3.170.0"
+    "@aws-sdk/util-middleware" "3.178.0"
+    tslib "^2.3.1"
+
+"@aws-sdk/middleware-endpoint@3.215.0":
+  version "3.215.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-endpoint/-/middleware-endpoint-3.215.0.tgz#ea408341e2c7996f3b66aa2b550c529d92ec29e1"
+  integrity sha512-W0QXL5emcN9IXtMbnWT/abLxBFH2tGIfnre2jPNmZ9M7uVFxUwwv5OTUXxNLGNehJHKhiJPwhfQvMy20IDzVcw==
+  dependencies:
+    "@aws-sdk/middleware-serde" "3.215.0"
+    "@aws-sdk/protocol-http" "3.215.0"
+    "@aws-sdk/signature-v4" "3.215.0"
+    "@aws-sdk/types" "3.215.0"
+    "@aws-sdk/url-parser" "3.215.0"
+    "@aws-sdk/util-config-provider" "3.208.0"
+    "@aws-sdk/util-middleware" "3.215.0"
+    tslib "^2.3.1"
+
 "@aws-sdk/middleware-expect-continue@3.162.0":
   version "3.162.0"
   resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.162.0.tgz#4d3695f82cf950c6b47d227d8382a145e6992053"
@@ -495,6 +968,15 @@
     "@aws-sdk/types" "3.162.0"
     tslib "^2.3.1"
 
+"@aws-sdk/middleware-expect-continue@3.215.0":
+  version "3.215.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.215.0.tgz#189af8a5eb9c80f5d1a1014f4e6f8c1503b1cdbe"
+  integrity sha512-X2G7MnBSYPPmLqqd9xDGl2ik9dUsGYcYzulf2Z1HVEGJO6btZJtPfC+IIwuJjsiCWCgbypM1X/oOSxdrmRkUNQ==
+  dependencies:
+    "@aws-sdk/protocol-http" "3.215.0"
+    "@aws-sdk/types" "3.215.0"
+    tslib "^2.3.1"
+
 "@aws-sdk/middleware-flexible-checksums@3.162.0":
   version "3.162.0"
   resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.162.0.tgz#f218775cf65c4b28705a72a6f4968df7a48ca171"
@@ -507,6 +989,18 @@
     "@aws-sdk/types" "3.162.0"
     tslib "^2.3.1"
 
+"@aws-sdk/middleware-flexible-checksums@3.215.0":
+  version "3.215.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.215.0.tgz#79c7e3fd31635571aae29d64507778b0b377f7d7"
+  integrity sha512-fAFcR+QsrGPCgYssdTYmayoCXDKYzlv0a14jaJtZsacXQNGefXly9D856lri+yG2jxqQ6Sa0FzU4Pm7s3j4mvg==
+  dependencies:
+    "@aws-crypto/crc32" "2.0.0"
+    "@aws-crypto/crc32c" "2.0.0"
+    "@aws-sdk/is-array-buffer" "3.201.0"
+    "@aws-sdk/protocol-http" "3.215.0"
+    "@aws-sdk/types" "3.215.0"
+    tslib "^2.3.1"
+
 "@aws-sdk/middleware-host-header@3.162.0":
   version "3.162.0"
   resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-host-header/-/middleware-host-header-3.162.0.tgz#c59015c83f6c574bde72534919022b3a90c3cd2a"
@@ -516,6 +1010,15 @@
     "@aws-sdk/types" "3.162.0"
     tslib "^2.3.1"
 
+"@aws-sdk/middleware-host-header@3.215.0":
+  version "3.215.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-host-header/-/middleware-host-header-3.215.0.tgz#cebb1f95429a7c4ae16dfcc4ff64f07ca16a6a2b"
+  integrity sha512-GOqI7VwoENZwn+6tIMrrJ4SipIqL2JCh+BNvORVcy7CQxn1ViKkna7iaCx+QMjpg/kn9cR6kfY0n1FmgZR1w9A==
+  dependencies:
+    "@aws-sdk/protocol-http" "3.215.0"
+    "@aws-sdk/types" "3.215.0"
+    tslib "^2.3.1"
+
 "@aws-sdk/middleware-location-constraint@3.162.0":
   version "3.162.0"
   resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.162.0.tgz#201f3f97099e6d771f7456cec526c235b608c7d3"
@@ -524,6 +1027,14 @@
     "@aws-sdk/types" "3.162.0"
     tslib "^2.3.1"
 
+"@aws-sdk/middleware-location-constraint@3.215.0":
+  version "3.215.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.215.0.tgz#e9c500b006c1fd707677c4afbf0c1a8f5d463dfc"
+  integrity sha512-taDOIGv2rsAyDEJxSm/nhKS4nsBPUKKCvIpK26E7uGshQZFLtTLTJMp8zGb1IBfUSxRngdWljRmOS5AJUexNbQ==
+  dependencies:
+    "@aws-sdk/types" "3.215.0"
+    tslib "^2.3.1"
+
 "@aws-sdk/middleware-logger@3.162.0":
   version "3.162.0"
   resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-logger/-/middleware-logger-3.162.0.tgz#10b2d552d7aa2c48b91061a418224cc47984272c"
@@ -532,6 +1043,14 @@
     "@aws-sdk/types" "3.162.0"
     tslib "^2.3.1"
 
+"@aws-sdk/middleware-logger@3.215.0":
+  version "3.215.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-logger/-/middleware-logger-3.215.0.tgz#462283672aa7da1014b91827b17474a6b6f1b6a0"
+  integrity sha512-0h4GGF0rV3jnY3jxmcAWsOdqHCYf25s0biSjmgTei+l/5S+geOGrovRPCNep0LLg0i9D8bkZsXISojilETbf+g==
+  dependencies:
+    "@aws-sdk/types" "3.215.0"
+    tslib "^2.3.1"
+
 "@aws-sdk/middleware-recursion-detection@3.162.0":
   version "3.162.0"
   resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.162.0.tgz#6c13e90ec9cc7b7adcb98bcb3d02eb37cef37b5c"
@@ -541,6 +1060,15 @@
     "@aws-sdk/types" "3.162.0"
     tslib "^2.3.1"
 
+"@aws-sdk/middleware-recursion-detection@3.215.0":
+  version "3.215.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.215.0.tgz#3d5a6d55148b1ddccc238d11e67a5cf6cdbf4a12"
+  integrity sha512-KQ+kiEsaluM4i6opjusUukxY78+UhfR7vzXHDkzZK/GplQ1hY0B+rwVO1eaULmlnmf3FK+Wd6lwrPV7xS2W+EA==
+  dependencies:
+    "@aws-sdk/protocol-http" "3.215.0"
+    "@aws-sdk/types" "3.215.0"
+    tslib "^2.3.1"
+
 "@aws-sdk/middleware-retry@3.162.0":
   version "3.162.0"
   resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-retry/-/middleware-retry-3.162.0.tgz#0601882f9105fc440b902a937f630da65914bd99"
@@ -553,6 +1081,18 @@
     tslib "^2.3.1"
     uuid "^8.3.2"
 
+"@aws-sdk/middleware-retry@3.215.0":
+  version "3.215.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-retry/-/middleware-retry-3.215.0.tgz#867cb8a65491c550dc750917042444668085720b"
+  integrity sha512-I/dnUPVg2Kp3lW+MywBoPp06EOng8IfuaS9ph4bcJpQKrhNU5ekRgCHH2C4k1A6GcP8uyHxQ5TVV6j+l0QPIsA==
+  dependencies:
+    "@aws-sdk/protocol-http" "3.215.0"
+    "@aws-sdk/service-error-classification" "3.215.0"
+    "@aws-sdk/types" "3.215.0"
+    "@aws-sdk/util-middleware" "3.215.0"
+    tslib "^2.3.1"
+    uuid "^8.3.2"
+
 "@aws-sdk/middleware-sdk-s3@3.162.0":
   version "3.162.0"
   resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.162.0.tgz#ea08a1711a56338baeecda5f34188bb4b460c60c"
@@ -575,6 +1115,17 @@
     "@aws-sdk/util-arn-parser" "3.170.0"
     tslib "^2.3.1"
 
+"@aws-sdk/middleware-sdk-s3@3.215.0":
+  version "3.215.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.215.0.tgz#d2325c17cd0bd267b2c1c114c2f3fa4cce067af2"
+  integrity sha512-+SM+xCIFNSFIKM9KyvgIu4Ah5Z/SbHS8mDkinHkY8X/iUryrsKKBs7xnpMAaJCTFkK/8gO6Lhdda1nbvGozhdA==
+  dependencies:
+    "@aws-sdk/middleware-bucket-endpoint" "3.215.0"
+    "@aws-sdk/protocol-http" "3.215.0"
+    "@aws-sdk/types" "3.215.0"
+    "@aws-sdk/util-arn-parser" "3.208.0"
+    tslib "^2.3.1"
+
 "@aws-sdk/middleware-sdk-sts@3.163.0":
   version "3.163.0"
   resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.163.0.tgz#362eedb0739c3b4e98aa1154cc5c6f38d7e18f68"
@@ -587,6 +1138,18 @@
     "@aws-sdk/types" "3.162.0"
     tslib "^2.3.1"
 
+"@aws-sdk/middleware-sdk-sts@3.215.0":
+  version "3.215.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.215.0.tgz#33a385161d63fa7e1aa5219f8d2b223bd28fa96d"
+  integrity sha512-wJRxoDf+2egbRgochaQL8+zzADx8FM/2W0spKNj8x+t/3iqw70QwxCfuEKW/uFQ3ph6eaIrv7gYc8RRjwhD8rg==
+  dependencies:
+    "@aws-sdk/middleware-signing" "3.215.0"
+    "@aws-sdk/property-provider" "3.215.0"
+    "@aws-sdk/protocol-http" "3.215.0"
+    "@aws-sdk/signature-v4" "3.215.0"
+    "@aws-sdk/types" "3.215.0"
+    tslib "^2.3.1"
+
 "@aws-sdk/middleware-serde@3.162.0":
   version "3.162.0"
   resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-serde/-/middleware-serde-3.162.0.tgz#e83201bffd46500ed4ea71bb3ceda63505f31f96"
@@ -595,6 +1158,22 @@
     "@aws-sdk/types" "3.162.0"
     tslib "^2.3.1"
 
+"@aws-sdk/middleware-serde@3.178.0":
+  version "3.178.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-serde/-/middleware-serde-3.178.0.tgz#09bfdcf83782381078523db549734be837a087bc"
+  integrity sha512-TERiu/B4hYi5Jd4iQN9ECTWbt2IZweAgFB010MboM4CAPm6EcszEc/uCB4faLZNdJaksk1BhAR7koURcda8Sew==
+  dependencies:
+    "@aws-sdk/types" "3.178.0"
+    tslib "^2.3.1"
+
+"@aws-sdk/middleware-serde@3.215.0":
+  version "3.215.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-serde/-/middleware-serde-3.215.0.tgz#2891c568e3cbfb2e3117c356e99efc695a7b63b9"
+  integrity sha512-+uhLXdKvvQZcRRFc3UmemSr/YUHA4Jc+1YMjHxc3v8vvfztFJBb0wgBx999myOi8PmkYThlRBQDzXy9UCIhIJw==
+  dependencies:
+    "@aws-sdk/types" "3.215.0"
+    tslib "^2.3.1"
+
 "@aws-sdk/middleware-signing@3.163.0":
   version "3.163.0"
   resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-signing/-/middleware-signing-3.163.0.tgz#9ecc4bdeb1e2b67ab777808818f86ebde9e64578"
@@ -606,6 +1185,18 @@
     "@aws-sdk/types" "3.162.0"
     tslib "^2.3.1"
 
+"@aws-sdk/middleware-signing@3.215.0":
+  version "3.215.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-signing/-/middleware-signing-3.215.0.tgz#f86febdae93066749f0715997121135eea2f6867"
+  integrity sha512-3BqzYqkmdPeOxjI8DVQE7Bm7J5QIvDy30abglXqrDg6npw6KonKI2Q3FIPFf+oLpZTMStwkoQOnwXHTPrSZ6Tg==
+  dependencies:
+    "@aws-sdk/property-provider" "3.215.0"
+    "@aws-sdk/protocol-http" "3.215.0"
+    "@aws-sdk/signature-v4" "3.215.0"
+    "@aws-sdk/types" "3.215.0"
+    "@aws-sdk/util-middleware" "3.215.0"
+    tslib "^2.3.1"
+
 "@aws-sdk/middleware-ssec@3.162.0":
   version "3.162.0"
   resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-ssec/-/middleware-ssec-3.162.0.tgz#2fcda524b9582a3fcec4124037b3cc3e2d81c453"
@@ -614,6 +1205,14 @@
     "@aws-sdk/types" "3.162.0"
     tslib "^2.3.1"
 
+"@aws-sdk/middleware-ssec@3.215.0":
+  version "3.215.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-ssec/-/middleware-ssec-3.215.0.tgz#887b53727f6c1f2c61b2a4a3e781e173e7c424c1"
+  integrity sha512-iIiB2fGneR8iZN2tgQoACq1jQlG50zU49cus/jAAKjy6B7QeKXy5Ld8/+eNnzcjLuBzzeLtER2YWwFLWqUOZpw==
+  dependencies:
+    "@aws-sdk/types" "3.215.0"
+    tslib "^2.3.1"
+
 "@aws-sdk/middleware-stack@3.162.0":
   version "3.162.0"
   resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-stack/-/middleware-stack-3.162.0.tgz#26b37e6241ca5c1a5e50bb2b1367a39eabd2b5ad"
@@ -628,6 +1227,20 @@
   dependencies:
     tslib "^2.3.1"
 
+"@aws-sdk/middleware-stack@3.178.0":
+  version "3.178.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-stack/-/middleware-stack-3.178.0.tgz#42e92ef9aaa3c1fdaca159ac6c24c37629dd4aee"
+  integrity sha512-ELYM5Imhlcz2zT1Z4OjVZwO564KvI4L9dMBxuUgO0fwommzjWqxR03yaRGhpGwpCP64d0Op5Koc/RKq5V92Wbw==
+  dependencies:
+    tslib "^2.3.1"
+
+"@aws-sdk/middleware-stack@3.215.0":
+  version "3.215.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-stack/-/middleware-stack-3.215.0.tgz#8fe53fcdb92590ae871a914d5efc4ec1f00e05b9"
+  integrity sha512-rdSVL7LxRgjlvoluqwODD4ypBy2k/YVl6FrDplyCMSi8m2WHZG99FzdmR9bpnWK+0DGzYZSMRYx6ynJ9N9PsSw==
+  dependencies:
+    tslib "^2.3.1"
+
 "@aws-sdk/middleware-user-agent@3.162.0":
   version "3.162.0"
   resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.162.0.tgz#da374bd9c66efc563ee9a2f6d1fff29c5ebea965"
@@ -637,6 +1250,15 @@
     "@aws-sdk/types" "3.162.0"
     tslib "^2.3.1"
 
+"@aws-sdk/middleware-user-agent@3.215.0":
+  version "3.215.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.215.0.tgz#24c87d5e8e4c31a5a274403d503e72cb99ac85ed"
+  integrity sha512-X6GfoMNoEITTw7rGL/gWs8UZ0cmmmezvKcl+KtHsA642R05OR4mY5G7LdbWAw0bcrwKsuKOGmwUrC9lzGqbWUw==
+  dependencies:
+    "@aws-sdk/protocol-http" "3.215.0"
+    "@aws-sdk/types" "3.215.0"
+    tslib "^2.3.1"
+
 "@aws-sdk/node-config-provider@3.162.0":
   version "3.162.0"
   resolved "https://registry.yarnpkg.com/@aws-sdk/node-config-provider/-/node-config-provider-3.162.0.tgz#9637996fd5ef18ce4619b927744727d2aff0d508"
@@ -647,6 +1269,16 @@
     "@aws-sdk/types" "3.162.0"
     tslib "^2.3.1"
 
+"@aws-sdk/node-config-provider@3.215.0":
+  version "3.215.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/node-config-provider/-/node-config-provider-3.215.0.tgz#f7b6a72dddd49e59e70955a866ca40f40154d063"
+  integrity sha512-notckD94QwwxC0GsfpTxB7VH8SREIIlMsUSddqGtpModa0cq/wRb9rqnydZSoznbYpK1ND6h0C9hr/2PNz89zw==
+  dependencies:
+    "@aws-sdk/property-provider" "3.215.0"
+    "@aws-sdk/shared-ini-file-loader" "3.215.0"
+    "@aws-sdk/types" "3.215.0"
+    tslib "^2.3.1"
+
 "@aws-sdk/node-http-handler@3.162.0":
   version "3.162.0"
   resolved "https://registry.yarnpkg.com/@aws-sdk/node-http-handler/-/node-http-handler-3.162.0.tgz#771370fe09cc3b030666a6654cf1e461e6fe3cf1"
@@ -658,6 +1290,17 @@
     "@aws-sdk/types" "3.162.0"
     tslib "^2.3.1"
 
+"@aws-sdk/node-http-handler@3.215.0":
+  version "3.215.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/node-http-handler/-/node-http-handler-3.215.0.tgz#ba016b94691c825e4220dcf0588fe904df1f319c"
+  integrity sha512-btKWSR7m0UuWIN3p5MfSIvhqeYik7xri7U6nWuVI5GVzIYjzxEZOMvPAinDLDxL5wipodi0ZvTUNdDJdm7BcGQ==
+  dependencies:
+    "@aws-sdk/abort-controller" "3.215.0"
+    "@aws-sdk/protocol-http" "3.215.0"
+    "@aws-sdk/querystring-builder" "3.215.0"
+    "@aws-sdk/types" "3.215.0"
+    tslib "^2.3.1"
+
 "@aws-sdk/property-provider@3.162.0":
   version "3.162.0"
   resolved "https://registry.yarnpkg.com/@aws-sdk/property-provider/-/property-provider-3.162.0.tgz#45cdaadfba54bb1c275972f12f33f72c8eb22333"
@@ -666,6 +1309,14 @@
     "@aws-sdk/types" "3.162.0"
     tslib "^2.3.1"
 
+"@aws-sdk/property-provider@3.215.0":
+  version "3.215.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/property-provider/-/property-provider-3.215.0.tgz#387d96e0389b947c807f20a1a6845cd01912000f"
+  integrity sha512-dDPjMCCopkRURAmOJCMSlpIQ5BGWCpYj0+FIfZ5qWQs24fn1PAkQHecOiBhJO0ZSVuQy3xcIyWsAp1NE5e+7ug==
+  dependencies:
+    "@aws-sdk/types" "3.215.0"
+    tslib "^2.3.1"
+
 "@aws-sdk/protocol-http@3.162.0":
   version "3.162.0"
   resolved "https://registry.yarnpkg.com/@aws-sdk/protocol-http/-/protocol-http-3.162.0.tgz#3657cb6627576180d8c5a9a37d6c3f2984d70f92"
@@ -682,6 +1333,22 @@
     "@aws-sdk/types" "3.171.0"
     tslib "^2.3.1"
 
+"@aws-sdk/protocol-http@3.178.0":
+  version "3.178.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/protocol-http/-/protocol-http-3.178.0.tgz#e6582feaab8cfbd6a278eb628e9d01f25ba2c631"
+  integrity sha512-GsnANW60mVYMlE16UGNSOwYZ6TbkoODvmDQi95SEPjM7asf4vihEyDvhxiGS/JvC18UyxRVWT89l/V3hR/SF7w==
+  dependencies:
+    "@aws-sdk/types" "3.178.0"
+    tslib "^2.3.1"
+
+"@aws-sdk/protocol-http@3.215.0":
+  version "3.215.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/protocol-http/-/protocol-http-3.215.0.tgz#e7cd73b811ced799acb8bf7dfcd8b49bb52e1d6a"
+  integrity sha512-qp6Y6v4S534LAjadiVl9p7ErK7ImphOKq6yhFyQwxko6iITLcz8ib3yU27fs4QJcnNj5ZooqW/YlL/0EikDxCQ==
+  dependencies:
+    "@aws-sdk/types" "3.215.0"
+    tslib "^2.3.1"
+
 "@aws-sdk/querystring-builder@3.162.0":
   version "3.162.0"
   resolved "https://registry.yarnpkg.com/@aws-sdk/querystring-builder/-/querystring-builder-3.162.0.tgz#c1667eebeb0e15ac6cae2523afa5ea3a8ca8aa00"
@@ -700,6 +1367,15 @@
     "@aws-sdk/util-uri-escape" "3.170.0"
     tslib "^2.3.1"
 
+"@aws-sdk/querystring-builder@3.215.0":
+  version "3.215.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/querystring-builder/-/querystring-builder-3.215.0.tgz#2a8b21560bdf24e6b24ef31c4287da4e0c459ed4"
+  integrity sha512-eilk8CqG37BVhQklLif00K2dOJgDzacUi8h3KVQ72ry1V3h345i4HsmaFIxvnz8XtNyDvV8qFAzeYg9n2P9RQA==
+  dependencies:
+    "@aws-sdk/types" "3.215.0"
+    "@aws-sdk/util-uri-escape" "3.201.0"
+    tslib "^2.3.1"
+
 "@aws-sdk/querystring-parser@3.162.0":
   version "3.162.0"
   resolved "https://registry.yarnpkg.com/@aws-sdk/querystring-parser/-/querystring-parser-3.162.0.tgz#d4f0522cfe2a44d2f242a2e5c9c9cf928930938e"
@@ -708,7 +1384,23 @@
     "@aws-sdk/types" "3.162.0"
     tslib "^2.3.1"
 
-"@aws-sdk/s3-request-presigner@^3.173.0":
+"@aws-sdk/querystring-parser@3.178.0":
+  version "3.178.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/querystring-parser/-/querystring-parser-3.178.0.tgz#8a608fbb65b31ffd14d4d25b0851b0d5368d12a6"
+  integrity sha512-dp3pLnsOvAcIF7Yn2PY5CIVWX7GvC33nSlWDYeLeCMapccwTbe6zBqreWbScmIGJra4QJTdjccpwo2Yxwhr5QQ==
+  dependencies:
+    "@aws-sdk/types" "3.178.0"
+    tslib "^2.3.1"
+
+"@aws-sdk/querystring-parser@3.215.0":
+  version "3.215.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/querystring-parser/-/querystring-parser-3.215.0.tgz#fea024bfe572863d6b89d209f1a523243ba1a624"
+  integrity sha512-8h/9H8dWM4fZO27UGzo8W5JXln4yJMugPyUl4qFA437gzPgNFN95+oLJWXtHMlfCHC5T/PDKetY9TarMDgBD0Q==
+  dependencies:
+    "@aws-sdk/types" "3.215.0"
+    tslib "^2.3.1"
+
+"@aws-sdk/s3-request-presigner@3.173.0":
   version "3.173.0"
   resolved "https://registry.yarnpkg.com/@aws-sdk/s3-request-presigner/-/s3-request-presigner-3.173.0.tgz#57470f032221a49b31f256910f9acc46c264dcbb"
   integrity sha512-s2SttAY4dViBMPcXcLb/jgIM+4nPA0ZUvoWxOB/cNZTSPA070QJB/0yuzMbbhjOv5J5pXbMM4KOgfNDQbiWZtQ==
@@ -722,11 +1414,31 @@
     "@aws-sdk/util-format-url" "3.171.0"
     tslib "^2.3.1"
 
+"@aws-sdk/s3-request-presigner@^3.173.0":
+  version "3.218.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/s3-request-presigner/-/s3-request-presigner-3.218.0.tgz#6c8c2fc2ec233bcb0b7c24fed6cd2ea037203c16"
+  integrity sha512-Tj4HerRThPK9nXTKZXauOWAoaSCx6apCCng5E2iExKxYitvRYnmuAlGLplQrRIzqwl6505JsEkwAC5CXI+UzEQ==
+  dependencies:
+    "@aws-sdk/middleware-endpoint" "3.215.0"
+    "@aws-sdk/middleware-sdk-s3" "3.215.0"
+    "@aws-sdk/protocol-http" "3.215.0"
+    "@aws-sdk/signature-v4-multi-region" "3.215.0"
+    "@aws-sdk/smithy-client" "3.215.0"
+    "@aws-sdk/types" "3.215.0"
+    "@aws-sdk/util-create-request" "3.215.0"
+    "@aws-sdk/util-format-url" "3.215.0"
+    tslib "^2.3.1"
+
 "@aws-sdk/service-error-classification@3.162.0":
   version "3.162.0"
   resolved "https://registry.yarnpkg.com/@aws-sdk/service-error-classification/-/service-error-classification-3.162.0.tgz#b07ed4ef541ec4d3d3cfe93efae054e3d39b5a1b"
   integrity sha512-AD9XL3CHFzwVWNEzdTo9aRnJl1ImqrRLlJ5zR/5ihTIJ68ZTYEiYP4vNKSCV6UfQ+vaaRNgLwiAx7JXzY54awg==
 
+"@aws-sdk/service-error-classification@3.215.0":
+  version "3.215.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/service-error-classification/-/service-error-classification-3.215.0.tgz#f60f10c2843df38922f401e30368d507a33e191d"
+  integrity sha512-SKBvClGFGzMPsjBBKjneaUazLCNr6bSxe9eFvOr3gCwuwE2jPQwW3VE1mb62howuvm6cLthEDwLQp/FsT1gMsw==
+
 "@aws-sdk/shared-ini-file-loader@3.162.0":
   version "3.162.0"
   resolved "https://registry.yarnpkg.com/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.162.0.tgz#53bc40d774f4411200104e415cbe27a3dea110f7"
@@ -734,6 +1446,14 @@
   dependencies:
     tslib "^2.3.1"
 
+"@aws-sdk/shared-ini-file-loader@3.215.0":
+  version "3.215.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.215.0.tgz#0a454ce25288f548dd9800297a5061c3121a203e"
+  integrity sha512-unzQeLOyUiYHr8WxxandHo0OaCj31gx0wpt8dn2cZcHm/MdCqHcHcsQqOVnQsWQrrxY/XZ27cPyMVQeicNKYwQ==
+  dependencies:
+    "@aws-sdk/types" "3.215.0"
+    tslib "^2.3.1"
+
 "@aws-sdk/signature-v4-multi-region@3.163.0":
   version "3.163.0"
   resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.163.0.tgz#e1d58d6dd40c4530d6ae83f8ebc0ad33a64f5d7c"
@@ -756,6 +1476,17 @@
     "@aws-sdk/util-arn-parser" "3.170.0"
     tslib "^2.3.1"
 
+"@aws-sdk/signature-v4-multi-region@3.215.0":
+  version "3.215.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.215.0.tgz#20349ce6f1fe3a8f4597db230c76afe82ab079b2"
+  integrity sha512-XOUUNWs6I4vAa+Byj6qL/+DCWA5CjcRyA9sitYy8sNqhLcet8WoYf7vJL2LW1nvdzRb/pGBNWLiQOZ+9sadYeg==
+  dependencies:
+    "@aws-sdk/protocol-http" "3.215.0"
+    "@aws-sdk/signature-v4" "3.215.0"
+    "@aws-sdk/types" "3.215.0"
+    "@aws-sdk/util-arn-parser" "3.208.0"
+    tslib "^2.3.1"
+
 "@aws-sdk/signature-v4@3.163.0":
   version "3.163.0"
   resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4/-/signature-v4-3.163.0.tgz#6a083fd0fe285b07ca71fc88990c7a9440b7c0b2"
@@ -780,6 +1511,30 @@
     "@aws-sdk/util-uri-escape" "3.170.0"
     tslib "^2.3.1"
 
+"@aws-sdk/signature-v4@3.178.0":
+  version "3.178.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4/-/signature-v4-3.178.0.tgz#02f874021725c328a7b044cd71af118fba7d6b11"
+  integrity sha512-8oOx6o0uOqlCDPM0dszfR1WHqd0E1VuFqez8iNItp0DhmhaCuanEwKYYA6HOkVu/MA6CsG6zDIJaFr5ODU2NvQ==
+  dependencies:
+    "@aws-sdk/is-array-buffer" "3.170.0"
+    "@aws-sdk/types" "3.178.0"
+    "@aws-sdk/util-hex-encoding" "3.170.0"
+    "@aws-sdk/util-middleware" "3.178.0"
+    "@aws-sdk/util-uri-escape" "3.170.0"
+    tslib "^2.3.1"
+
+"@aws-sdk/signature-v4@3.215.0":
+  version "3.215.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4/-/signature-v4-3.215.0.tgz#37bdb85324042fc3fb06399d89c2730d94efb26d"
+  integrity sha512-Rc73uUCi3eJneO25DydLTfJYamXeuKS9YIhNMTKlpvcN1UQAmAnUbAmCuEmqvkYOiGD1i4/kd8kBga708iIikQ==
+  dependencies:
+    "@aws-sdk/is-array-buffer" "3.201.0"
+    "@aws-sdk/types" "3.215.0"
+    "@aws-sdk/util-hex-encoding" "3.201.0"
+    "@aws-sdk/util-middleware" "3.215.0"
+    "@aws-sdk/util-uri-escape" "3.201.0"
+    tslib "^2.3.1"
+
 "@aws-sdk/smithy-client@3.162.0":
   version "3.162.0"
   resolved "https://registry.yarnpkg.com/@aws-sdk/smithy-client/-/smithy-client-3.162.0.tgz#2646b05c287a609a1abb7d28a7009f3314c26803"
@@ -798,7 +1553,36 @@
     "@aws-sdk/types" "3.171.0"
     tslib "^2.3.1"
 
-"@aws-sdk/types@3.162.0", "@aws-sdk/types@^3.1.0":
+"@aws-sdk/smithy-client@3.180.0":
+  version "3.180.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/smithy-client/-/smithy-client-3.180.0.tgz#03953e5d4f0dc3607d422021550126f5a32c2423"
+  integrity sha512-1vWafiUdn6RvOsD4CyNjMeDtDujuPi4Iq4Db6HrFmVPpJAutOLlCg52Dt7k96KCcIKgxVAs6Br0Waef+pcoGNA==
+  dependencies:
+    "@aws-sdk/middleware-stack" "3.178.0"
+    "@aws-sdk/types" "3.178.0"
+    tslib "^2.3.1"
+
+"@aws-sdk/smithy-client@3.215.0":
+  version "3.215.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/smithy-client/-/smithy-client-3.215.0.tgz#cda96b076f7df19157340623872a8914f2a3bb8c"
+  integrity sha512-PiZfCdZkPohzMPrRmJ46TPOf2Tr/dhKYdwQArRnOOIsJABUGXjlzCUE8vysDN35XZYRx5f9hd+/U7kayhniq2w==
+  dependencies:
+    "@aws-sdk/middleware-stack" "3.215.0"
+    "@aws-sdk/types" "3.215.0"
+    tslib "^2.3.1"
+
+"@aws-sdk/token-providers@3.216.0":
+  version "3.216.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/token-providers/-/token-providers-3.216.0.tgz#b158ef490ed002d5956d8d855627297a551963d6"
+  integrity sha512-cEmOfG7njWl0OA5lR65Sp2SW1i8ZLjf7C95TZ1e6t2Oo5aUFeN3aKBxMOV//1yc+BNzcFBnoHP/f29GhWxUOxA==
+  dependencies:
+    "@aws-sdk/client-sso-oidc" "3.216.0"
+    "@aws-sdk/property-provider" "3.215.0"
+    "@aws-sdk/shared-ini-file-loader" "3.215.0"
+    "@aws-sdk/types" "3.215.0"
+    tslib "^2.3.1"
+
+"@aws-sdk/types@3.162.0":
   version "3.162.0"
   resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.162.0.tgz#e908ff1a5de6bd06d7d6b88a648b384592acf7e2"
   integrity sha512-NBmuwVujH8fURDMvBHkHrYu/JAfG6Js/Bu0mC4o2Kdo5mRa3fD/N9kK0dEAxU1Rxp4wY2E++V9j2ZCw1KBGrSg==
@@ -808,6 +1592,16 @@
   resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.171.0.tgz#2463d655636cbcf9cf5bb01d02d8217a5975948a"
   integrity sha512-Yv5Wn/pbjMBST2jPHWPczmVbOLq8yFQVRyy1zGfsg1ETn25nGPvGBwqOkWcuz229KAcdUvFdRV9xaQCN3Lbo+Q==
 
+"@aws-sdk/types@3.178.0":
+  version "3.178.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.178.0.tgz#2b79d705be218f8c9b5829ec71284549c37733be"
+  integrity sha512-CrHxHzXSEr/Z3NLFvJgSGHGcD9tYUZ0Rhp8tFCSpD3TpBo3/Y7RIvqaEPvECsL52UEloeBhQf65AO8590YkVmQ==
+
+"@aws-sdk/types@3.215.0", "@aws-sdk/types@^3.1.0", "@aws-sdk/types@^3.110.0":
+  version "3.215.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.215.0.tgz#72a595e2c1a5c8c3f0291bccf71d481412b1843b"
+  integrity sha512-eRbCVjwzTYd9C5e2mceScJ6D2kYDDEC3PLkYfJa+1wH9iiF2JlbiYozAokyeYBHQ+AjmD93MK58RBoM8iZfH0Q==
+
 "@aws-sdk/url-parser@3.162.0":
   version "3.162.0"
   resolved "https://registry.yarnpkg.com/@aws-sdk/url-parser/-/url-parser-3.162.0.tgz#ce341d3b6dbcaf52f00b80aff56b24b5ab8c1e82"
@@ -817,6 +1611,24 @@
     "@aws-sdk/types" "3.162.0"
     tslib "^2.3.1"
 
+"@aws-sdk/url-parser@3.178.0":
+  version "3.178.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/url-parser/-/url-parser-3.178.0.tgz#aee06f73313154d9d0e34e16a974a6d35bbf7d93"
+  integrity sha512-+Ch29d+IZG6zD1gNDVgFC00huY8ytrPdijAuNJ4DtPBTGP4zbrImw3js0GfvfBjLrQYBnclcAvSx4J1Q/8tqBQ==
+  dependencies:
+    "@aws-sdk/querystring-parser" "3.178.0"
+    "@aws-sdk/types" "3.178.0"
+    tslib "^2.3.1"
+
+"@aws-sdk/url-parser@3.215.0":
+  version "3.215.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/url-parser/-/url-parser-3.215.0.tgz#4accbedd5fb81dc2f18e28f0f50dbd781b0b63a1"
+  integrity sha512-r/qIk3TUlV36JvoRjTErFm0LzzgNKLB1YUG8zVZCGAc2TEATi8OVEmsZvi+KfTmsbszulITJVcjZKbHLbGoUzg==
+  dependencies:
+    "@aws-sdk/querystring-parser" "3.215.0"
+    "@aws-sdk/types" "3.215.0"
+    tslib "^2.3.1"
+
 "@aws-sdk/util-arn-parser@3.170.0":
   version "3.170.0"
   resolved "https://registry.yarnpkg.com/@aws-sdk/util-arn-parser/-/util-arn-parser-3.170.0.tgz#42587a958fd892ae51a447606e34ab5614bcb616"
@@ -824,6 +1636,13 @@
   dependencies:
     tslib "^2.3.1"
 
+"@aws-sdk/util-arn-parser@3.208.0":
+  version "3.208.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/util-arn-parser/-/util-arn-parser-3.208.0.tgz#56b6ae4699c3140bb27dcede5146876fef04e823"
+  integrity sha512-QV4af+kscova9dv4VuHOgH8wEr/IIYHDGcnyVtkUEqahCejWr1Kuk+SBK0xMwnZY5LSycOtQ8aeqHOn9qOjZtA==
+  dependencies:
+    tslib "^2.3.1"
+
 "@aws-sdk/util-arn-parser@3.55.0":
   version "3.55.0"
   resolved "https://registry.yarnpkg.com/@aws-sdk/util-arn-parser/-/util-arn-parser-3.55.0.tgz#6672eb2975e798a460bedfaf6b5618d4e4b262e1"
@@ -846,6 +1665,14 @@
     "@aws-sdk/util-buffer-from" "3.55.0"
     tslib "^2.3.1"
 
+"@aws-sdk/util-base64@3.208.0":
+  version "3.208.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/util-base64/-/util-base64-3.208.0.tgz#36b430e5396251f761590f7c2f0c5c12193f353c"
+  integrity sha512-PQniZph5A6N7uuEOQi+1hnMz/FSOK/8kMFyFO+4DgA1dZ5pcKcn5wiFwHkcTb/BsgVqQa3Jx0VHNnvhlS8JyTg==
+  dependencies:
+    "@aws-sdk/util-buffer-from" "3.208.0"
+    tslib "^2.3.1"
+
 "@aws-sdk/util-body-length-browser@3.154.0":
   version "3.154.0"
   resolved "https://registry.yarnpkg.com/@aws-sdk/util-body-length-browser/-/util-body-length-browser-3.154.0.tgz#8c4c5d08c1923deeedf46006dc4db820ca606f56"
@@ -853,6 +1680,20 @@
   dependencies:
     tslib "^2.3.1"
 
+"@aws-sdk/util-body-length-browser@3.188.0":
+  version "3.188.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/util-body-length-browser/-/util-body-length-browser-3.188.0.tgz#e1d949318c10a621b38575a9ef01e39f9857ddb0"
+  integrity sha512-8VpnwFWXhnZ/iRSl9mTf+VKOX9wDE8QtN4bj9pBfxwf90H1X7E8T6NkiZD3k+HubYf2J94e7DbeHs7fuCPW5Qg==
+  dependencies:
+    tslib "^2.3.1"
+
+"@aws-sdk/util-body-length-node@3.208.0":
+  version "3.208.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/util-body-length-node/-/util-body-length-node-3.208.0.tgz#baabd1fa1206ff2bd4ce3785122d86eb3258dd20"
+  integrity sha512-3zj50e5g7t/MQf53SsuuSf0hEELzMtD8RX8C76f12OSRo2Bca4FLLYHe0TZbxcfQHom8/hOaeZEyTyMogMglqg==
+  dependencies:
+    tslib "^2.3.1"
+
 "@aws-sdk/util-body-length-node@3.55.0":
   version "3.55.0"
   resolved "https://registry.yarnpkg.com/@aws-sdk/util-body-length-node/-/util-body-length-node-3.55.0.tgz#67049bbb6c62d794a1bb5a13b9a678988c925489"
@@ -860,6 +1701,14 @@
   dependencies:
     tslib "^2.3.1"
 
+"@aws-sdk/util-buffer-from@3.208.0":
+  version "3.208.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/util-buffer-from/-/util-buffer-from-3.208.0.tgz#285e86f6dc9030148a4147d65239e75cb254a1b0"
+  integrity sha512-7L0XUixNEFcLUGPeBF35enCvB9Xl+K6SQsmbrPk1P3mlV9mguWSDQqbOBwY1Ir0OVbD6H/ZOQU7hI/9RtRI0Zw==
+  dependencies:
+    "@aws-sdk/is-array-buffer" "3.201.0"
+    tslib "^2.3.1"
+
 "@aws-sdk/util-buffer-from@3.55.0":
   version "3.55.0"
   resolved "https://registry.yarnpkg.com/@aws-sdk/util-buffer-from/-/util-buffer-from-3.55.0.tgz#e7c927974b07a29502aa1ad58509b91d0d7cf0f7"
@@ -882,6 +1731,13 @@
   dependencies:
     tslib "^2.3.1"
 
+"@aws-sdk/util-config-provider@3.208.0":
+  version "3.208.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/util-config-provider/-/util-config-provider-3.208.0.tgz#c485fd83fbac051337e5f6be60ea3f9fa61c0139"
+  integrity sha512-DSRqwrERUsT34ug+anlMBIFooBEGwM8GejC7q00Y/9IPrQy50KnG5PW2NiTjuLKNi7pdEOlwTSEocJE15eDZIg==
+  dependencies:
+    tslib "^2.3.1"
+
 "@aws-sdk/util-create-request@3.171.0":
   version "3.171.0"
   resolved "https://registry.yarnpkg.com/@aws-sdk/util-create-request/-/util-create-request-3.171.0.tgz#5078b6915624d68766e7bde1595c9de3aa79cc8d"
@@ -892,6 +1748,16 @@
     "@aws-sdk/types" "3.171.0"
     tslib "^2.3.1"
 
+"@aws-sdk/util-create-request@3.215.0":
+  version "3.215.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/util-create-request/-/util-create-request-3.215.0.tgz#15eadb2a7f3486909c8ef8902f3eeb5c83a9804a"
+  integrity sha512-V+f6YYSUHGNWVLQpdTgpbCPgnkXmHtC9uEk/rQjzJAvzAZmqYuPc2hheBSAt7gN6yzLoMeDBmjhZMh79fFZ3UQ==
+  dependencies:
+    "@aws-sdk/middleware-stack" "3.215.0"
+    "@aws-sdk/smithy-client" "3.215.0"
+    "@aws-sdk/types" "3.215.0"
+    tslib "^2.3.1"
+
 "@aws-sdk/util-defaults-mode-browser@3.162.0":
   version "3.162.0"
   resolved "https://registry.yarnpkg.com/@aws-sdk/util-defaults-mode-browser/-/util-defaults-mode-browser-3.162.0.tgz#41625d5ea4d3d347df00cc5647a0808fcb059c94"
@@ -902,6 +1768,16 @@
     bowser "^2.11.0"
     tslib "^2.3.1"
 
+"@aws-sdk/util-defaults-mode-browser@3.215.0":
+  version "3.215.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/util-defaults-mode-browser/-/util-defaults-mode-browser-3.215.0.tgz#2929ba9e5b891c9fe3f5b05453b7f44a6c6c25ee"
+  integrity sha512-MiNfZgB0I4dR8CBxH163W7c9KvE38sgCHNPWopMqSX5ezz7cuCPohCU0XsWd4I7K31PvzuqmKgOiKBAZraQJMA==
+  dependencies:
+    "@aws-sdk/property-provider" "3.215.0"
+    "@aws-sdk/types" "3.215.0"
+    bowser "^2.11.0"
+    tslib "^2.3.1"
+
 "@aws-sdk/util-defaults-mode-node@3.163.0":
   version "3.163.0"
   resolved "https://registry.yarnpkg.com/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.163.0.tgz#9cb4d5b0b1beb9573b11289eee46c762d3a9c0bd"
@@ -914,6 +1790,26 @@
     "@aws-sdk/types" "3.162.0"
     tslib "^2.3.1"
 
+"@aws-sdk/util-defaults-mode-node@3.215.0":
+  version "3.215.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.215.0.tgz#125fc56f311ffbc70b2852796b8a2f5b602b6a99"
+  integrity sha512-mSp3R8GljQ+4UT3QMOksQk9L0cWbFLvR7bBmAlt4+GobgTjpRfzFjBP3uwrCqFa3BKDUR3FeJq3qwo+xeY1Krg==
+  dependencies:
+    "@aws-sdk/config-resolver" "3.215.0"
+    "@aws-sdk/credential-provider-imds" "3.215.0"
+    "@aws-sdk/node-config-provider" "3.215.0"
+    "@aws-sdk/property-provider" "3.215.0"
+    "@aws-sdk/types" "3.215.0"
+    tslib "^2.3.1"
+
+"@aws-sdk/util-endpoints@3.216.0":
+  version "3.216.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/util-endpoints/-/util-endpoints-3.216.0.tgz#d960523cd12d1a2422624592a2516abdd92897cc"
+  integrity sha512-uHje4H6Qj/z/op8UZoSuvGpEZhz/r+AGY0rCihFo7XjhT4RYVxb2Eb9uHRK/IAeHU4kjHAdpQiWGMSmnT/UacA==
+  dependencies:
+    "@aws-sdk/types" "3.215.0"
+    tslib "^2.3.1"
+
 "@aws-sdk/util-format-url@3.171.0":
   version "3.171.0"
   resolved "https://registry.yarnpkg.com/@aws-sdk/util-format-url/-/util-format-url-3.171.0.tgz#d0219d6464d316e06745d9590935fd780685b503"
@@ -923,6 +1819,15 @@
     "@aws-sdk/types" "3.171.0"
     tslib "^2.3.1"
 
+"@aws-sdk/util-format-url@3.215.0":
+  version "3.215.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/util-format-url/-/util-format-url-3.215.0.tgz#dcdccccbc810911a65b871f0341dbcefc8474272"
+  integrity sha512-j8X2pIwpSxtS23Za6t36pQjeVe5ouunoMuOj4wdj2uB3Cbf2vvd84J5lF8bUHQA35f5PRqdYtU1KyolQudCXsA==
+  dependencies:
+    "@aws-sdk/querystring-builder" "3.215.0"
+    "@aws-sdk/types" "3.215.0"
+    tslib "^2.3.1"
+
 "@aws-sdk/util-hex-encoding@3.109.0":
   version "3.109.0"
   resolved "https://registry.yarnpkg.com/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.109.0.tgz#93b20acc27c0a1d7d80f653bf19d3dd01c2ccc65"
@@ -937,10 +1842,17 @@
   dependencies:
     tslib "^2.3.1"
 
+"@aws-sdk/util-hex-encoding@3.201.0":
+  version "3.201.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.201.0.tgz#21d7ec319240ee68c33d938e71cb79830bea315d"
+  integrity sha512-7t1vR1pVxKx0motd3X9rI3m/xNp78p3sHtP5yo4NP4ARpxyJ0fokBomY8ScaH2D/B+U5o9ARxldJUdMqyBlJcA==
+  dependencies:
+    tslib "^2.3.1"
+
 "@aws-sdk/util-locate-window@^3.0.0":
-  version "3.55.0"
-  resolved "https://registry.yarnpkg.com/@aws-sdk/util-locate-window/-/util-locate-window-3.55.0.tgz#a4136a20ee1bfcb73967a6614caf769ef79db070"
-  integrity sha512-0sPmK2JaJE2BbTcnvybzob/VrFKCXKfN4CUKcvn0yGg/me7Bz+vtzQRB3Xp+YSx+7OtWxzv63wsvHoAnXvgxgg==
+  version "3.208.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/util-locate-window/-/util-locate-window-3.208.0.tgz#0f598fc238a1256e4bcb64d01459f03a922dd4c3"
+  integrity sha512-iua1A2+P7JJEDHVgvXrRJSvsnzG7stYSGQnBVphIUlemwl6nN5D+QrgbjECtrbxRz8asYFHSzhdhECqN+tFiBg==
   dependencies:
     tslib "^2.3.1"
 
@@ -958,6 +1870,20 @@
   dependencies:
     tslib "^2.3.1"
 
+"@aws-sdk/util-middleware@3.178.0":
+  version "3.178.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/util-middleware/-/util-middleware-3.178.0.tgz#c628d6df8f5f1bc9391c07621d899213e41c8207"
+  integrity sha512-93WgrJKuwtv3f2r1Q04emzjMiwpYR5hysOHKMkrGOvAVZdDqe1UTjmtuxQadVi3DBr1KOT/d5uP9MjV8LqaUUA==
+  dependencies:
+    tslib "^2.3.1"
+
+"@aws-sdk/util-middleware@3.215.0":
+  version "3.215.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/util-middleware/-/util-middleware-3.215.0.tgz#83f8956991392250df32f6e1d93a4247e9ed5fce"
+  integrity sha512-DfHGlFlQCr+T/xhjS36HH8JEThDVB5lg5NZ6x4Cibhyeps9YX/4ovLAIx3B19H34sdWhZi7q6LfslCHLRu2+7Q==
+  dependencies:
+    tslib "^2.3.1"
+
 "@aws-sdk/util-stream-browser@3.162.0":
   version "3.162.0"
   resolved "https://registry.yarnpkg.com/@aws-sdk/util-stream-browser/-/util-stream-browser-3.162.0.tgz#9fbde6fee82bdef40b36f2529f99378f3899ec4e"
@@ -970,6 +1896,18 @@
     "@aws-sdk/util-utf8-browser" "3.109.0"
     tslib "^2.3.1"
 
+"@aws-sdk/util-stream-browser@3.215.0":
+  version "3.215.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/util-stream-browser/-/util-stream-browser-3.215.0.tgz#6439e76dcc90cb535ab5fb882c6d669aa74f7c79"
+  integrity sha512-UVyCJJ5sCYLVHCW4Lpm8+ae+ISHPHZ/OqAoLbUpehk2RLGP6QhpQOrpJADLXPuB8YuWFMkoLLIVL8VE7mmTPWA==
+  dependencies:
+    "@aws-sdk/fetch-http-handler" "3.215.0"
+    "@aws-sdk/types" "3.215.0"
+    "@aws-sdk/util-base64" "3.208.0"
+    "@aws-sdk/util-hex-encoding" "3.201.0"
+    "@aws-sdk/util-utf8-browser" "3.188.0"
+    tslib "^2.3.1"
+
 "@aws-sdk/util-stream-node@3.162.0":
   version "3.162.0"
   resolved "https://registry.yarnpkg.com/@aws-sdk/util-stream-node/-/util-stream-node-3.162.0.tgz#fcc6e8db77c1785033f3f120a2700affee304b7b"
@@ -980,6 +1918,16 @@
     "@aws-sdk/util-buffer-from" "3.55.0"
     tslib "^2.3.1"
 
+"@aws-sdk/util-stream-node@3.215.0":
+  version "3.215.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/util-stream-node/-/util-stream-node-3.215.0.tgz#a50a261c2ac9cdb58bb9417d7900d28e1a59fc1d"
+  integrity sha512-7Vyp61P/2dGA9Fzn6uN/KdRd+Z7n8gCGmXBd/dQSrHx3UFIm1TuEmMwROzbWWxPOS6qDWY/dwQgMZH/tq78Llg==
+  dependencies:
+    "@aws-sdk/node-http-handler" "3.215.0"
+    "@aws-sdk/types" "3.215.0"
+    "@aws-sdk/util-buffer-from" "3.208.0"
+    tslib "^2.3.1"
+
 "@aws-sdk/util-uri-escape@3.170.0":
   version "3.170.0"
   resolved "https://registry.yarnpkg.com/@aws-sdk/util-uri-escape/-/util-uri-escape-3.170.0.tgz#1121fb47a59dab0f732b881742e9871c3690367c"
@@ -987,6 +1935,13 @@
   dependencies:
     tslib "^2.3.1"
 
+"@aws-sdk/util-uri-escape@3.201.0":
+  version "3.201.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/util-uri-escape/-/util-uri-escape-3.201.0.tgz#5e708d4cde001a4558ee616f889ceacfadd2ab03"
+  integrity sha512-TeTWbGx4LU2c5rx0obHeDFeO9HvwYwQtMh1yniBz00pQb6Qt6YVOETVQikRZ+XRQwEyCg/dA375UplIpiy54mA==
+  dependencies:
+    tslib "^2.3.1"
+
 "@aws-sdk/util-uri-escape@3.55.0":
   version "3.55.0"
   resolved "https://registry.yarnpkg.com/@aws-sdk/util-uri-escape/-/util-uri-escape-3.55.0.tgz#ee57743c628a1c9f942dfe73205ce890ec011916"
@@ -1003,6 +1958,15 @@
     bowser "^2.11.0"
     tslib "^2.3.1"
 
+"@aws-sdk/util-user-agent-browser@3.215.0":
+  version "3.215.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.215.0.tgz#4b44b9929629b3024d14a46edd1bf57efe8d60f6"
+  integrity sha512-uZz6BJWr8sJcA+onveS1lFqnbIXBHwvkyHLgCuuGhAxd5yY6YNLhpJBnhy9Fb8/aSbk6yao3qxlokqw9gthmAw==
+  dependencies:
+    "@aws-sdk/types" "3.215.0"
+    bowser "^2.11.0"
+    tslib "^2.3.1"
+
 "@aws-sdk/util-user-agent-node@3.162.0":
   version "3.162.0"
   resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.162.0.tgz#3c589c1ad1ce2821c9568dd12bb5632b8eb776be"
@@ -1012,13 +1976,29 @@
     "@aws-sdk/types" "3.162.0"
     tslib "^2.3.1"
 
-"@aws-sdk/util-utf8-browser@3.109.0", "@aws-sdk/util-utf8-browser@^3.0.0":
+"@aws-sdk/util-user-agent-node@3.215.0":
+  version "3.215.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.215.0.tgz#620beb9ba2b2775cdf51e39789ea919b10b4d903"
+  integrity sha512-4lrdd1oGRwJEwfvgvg1jcJ2O0bwElsvtiqZfTRHN6MNTFUqsKl0xHlgFChQsz3Hfrc1niWtZCmbqQKGdO5ARpw==
+  dependencies:
+    "@aws-sdk/node-config-provider" "3.215.0"
+    "@aws-sdk/types" "3.215.0"
+    tslib "^2.3.1"
+
+"@aws-sdk/util-utf8-browser@3.109.0":
   version "3.109.0"
   resolved "https://registry.yarnpkg.com/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.109.0.tgz#d013272e1981b23a4c84ac06f154db686c0cf84e"
   integrity sha512-FmcGSz0v7Bqpl1SE8G1Gc0CtDpug+rvqNCG/szn86JApD/f5x8oByjbEiAyTU2ZH2VevUntx6EW68ulHyH+x+w==
   dependencies:
     tslib "^2.3.1"
 
+"@aws-sdk/util-utf8-browser@3.188.0", "@aws-sdk/util-utf8-browser@^3.0.0":
+  version "3.188.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.188.0.tgz#484762bd600401350e148277731d6744a4a92225"
+  integrity sha512-jt627x0+jE+Ydr9NwkFstg3cUvgWh56qdaqAMDsqgRlKD21md/6G226z/Qxl7lb1VEW2LlmCx43ai/37Qwcj2Q==
+  dependencies:
+    tslib "^2.3.1"
+
 "@aws-sdk/util-utf8-node@3.109.0":
   version "3.109.0"
   resolved "https://registry.yarnpkg.com/@aws-sdk/util-utf8-node/-/util-utf8-node-3.109.0.tgz#89e06d916f5b246c7265f59bac742973ac0767ac"
@@ -1027,6 +2007,14 @@
     "@aws-sdk/util-buffer-from" "3.55.0"
     tslib "^2.3.1"
 
+"@aws-sdk/util-utf8-node@3.208.0":
+  version "3.208.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/util-utf8-node/-/util-utf8-node-3.208.0.tgz#eba17de0f92f87b98481c2e2d0ceaa05c7994d67"
+  integrity sha512-jKY87Acv0yWBdFxx6bveagy5FYjz+dtV8IPT7ay1E2WPWH1czoIdMAkc8tSInK31T6CRnHWkLZ1qYwCbgRfERQ==
+  dependencies:
+    "@aws-sdk/util-buffer-from" "3.208.0"
+    tslib "^2.3.1"
+
 "@aws-sdk/util-waiter@3.162.0":
   version "3.162.0"
   resolved "https://registry.yarnpkg.com/@aws-sdk/util-waiter/-/util-waiter-3.162.0.tgz#369499ec934a47aa8f0340876a9228e6d8989736"
@@ -1036,6 +2024,15 @@
     "@aws-sdk/types" "3.162.0"
     tslib "^2.3.1"
 
+"@aws-sdk/util-waiter@3.215.0":
+  version "3.215.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/util-waiter/-/util-waiter-3.215.0.tgz#299f816d173d8c990834e9d39538c10502584a3d"
+  integrity sha512-RX/EkRcuDjWKP/5K6XOnbq5cPaO9KSJ5Etotn+z5sPGUJ0xmGWEyFyfXKSL51az32tHcNoGAqboBTFDISB0LyA==
+  dependencies:
+    "@aws-sdk/abort-controller" "3.215.0"
+    "@aws-sdk/types" "3.215.0"
+    tslib "^2.3.1"
+
 "@aws-sdk/xml-builder@3.142.0":
   version "3.142.0"
   resolved "https://registry.yarnpkg.com/@aws-sdk/xml-builder/-/xml-builder-3.142.0.tgz#55d03f1a1d1b3b02f07e26ec05d6855151f94c4e"
@@ -1043,6 +2040,13 @@
   dependencies:
     tslib "^2.3.1"
 
+"@aws-sdk/xml-builder@3.201.0":
+  version "3.201.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/xml-builder/-/xml-builder-3.201.0.tgz#acf0869855460528114bec17f290b224fe19a3e2"
+  integrity sha512-brRdB1wwMgjWEnOQsv7zSUhIQuh7DEicrfslAqHop4S4FtSI3GQAShpQqgOpMTNFYcpaWKmE/Y1MJmNY7xLCnw==
+  dependencies:
+    tslib "^2.3.1"
+
 "@babel/code-frame@^7.18.6":
   version "7.18.6"
   resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a"
@@ -1050,27 +2054,27 @@
   dependencies:
     "@babel/highlight" "^7.18.6"
 
-"@babel/generator@^7.18.6", "@babel/generator@^7.4.0":
-  version "7.18.7"
-  resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.7.tgz#2aa78da3c05aadfc82dbac16c99552fc802284bd"
-  integrity sha512-shck+7VLlY72a2w9c3zYWuE1pwOKEiQHV7GTUbSnhyl5eu3i04t30tBY82ZRWrDfo3gkakCFtevExnxbkf2a3A==
+"@babel/generator@^7.20.5", "@babel/generator@^7.4.0":
+  version "7.20.5"
+  resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.20.5.tgz#cb25abee3178adf58d6814b68517c62bdbfdda95"
+  integrity sha512-jl7JY2Ykn9S0yj4DQP82sYvPU+T3g0HFcWTqDLqiuA9tGRNIj9VfbtXGAYTTkyNEnQk1jkMGOdYka8aG/lulCA==
   dependencies:
-    "@babel/types" "^7.18.7"
+    "@babel/types" "^7.20.5"
     "@jridgewell/gen-mapping" "^0.3.2"
     jsesc "^2.5.1"
 
-"@babel/helper-environment-visitor@^7.18.6":
-  version "7.18.6"
-  resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.6.tgz#b7eee2b5b9d70602e59d1a6cad7dd24de7ca6cd7"
-  integrity sha512-8n6gSfn2baOY+qlp+VSzsosjCVGFqWKmDF0cCWOybh52Dw3SEyoWR1KrhMJASjLwIEkkAufZ0xvr+SxLHSpy2Q==
+"@babel/helper-environment-visitor@^7.18.9":
+  version "7.18.9"
+  resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be"
+  integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==
 
-"@babel/helper-function-name@^7.18.6":
-  version "7.18.6"
-  resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.18.6.tgz#8334fecb0afba66e6d87a7e8c6bb7fed79926b83"
-  integrity sha512-0mWMxV1aC97dhjCah5U5Ua7668r5ZmSC2DLfH2EZnf9c3/dHZKiFa5pRLMH5tjSl471tY6496ZWk/kjNONBxhw==
+"@babel/helper-function-name@^7.19.0":
+  version "7.19.0"
+  resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz#941574ed5390682e872e52d3f38ce9d1bef4648c"
+  integrity sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==
   dependencies:
-    "@babel/template" "^7.18.6"
-    "@babel/types" "^7.18.6"
+    "@babel/template" "^7.18.10"
+    "@babel/types" "^7.19.0"
 
 "@babel/helper-hoist-variables@^7.18.6":
   version "7.18.6"
@@ -1086,10 +2090,15 @@
   dependencies:
     "@babel/types" "^7.18.6"
 
-"@babel/helper-validator-identifier@^7.18.6":
-  version "7.18.6"
-  resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz#9c97e30d31b2b8c72a1d08984f2ca9b574d7a076"
-  integrity sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==
+"@babel/helper-string-parser@^7.19.4":
+  version "7.19.4"
+  resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz#38d3acb654b4701a9b77fb0615a96f775c3a9e63"
+  integrity sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==
+
+"@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1":
+  version "7.19.1"
+  resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2"
+  integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==
 
 "@babel/highlight@^7.18.6":
   version "7.18.6"
@@ -1100,42 +2109,43 @@
     chalk "^2.0.0"
     js-tokens "^4.0.0"
 
-"@babel/parser@^7.18.6", "@babel/parser@^7.4.3":
-  version "7.18.6"
-  resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.6.tgz#845338edecad65ebffef058d3be851f1d28a63bc"
-  integrity sha512-uQVSa9jJUe/G/304lXspfWVpKpK4euFLgGiMQFOCpM/bgcAdeoHwi/OQz23O9GK2osz26ZiXRRV9aV+Yl1O8tw==
+"@babel/parser@^7.18.10", "@babel/parser@^7.20.5", "@babel/parser@^7.4.3":
+  version "7.20.5"
+  resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.5.tgz#7f3c7335fe417665d929f34ae5dceae4c04015e8"
+  integrity sha512-r27t/cy/m9uKLXQNWWebeCUHgnAZq0CpG1OwKRxzJMP1vpSU4bSIK2hq+/cp0bQxetkXx38n09rNu8jVkcK/zA==
 
-"@babel/template@^7.18.6", "@babel/template@^7.4.0":
-  version "7.18.6"
-  resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.6.tgz#1283f4993e00b929d6e2d3c72fdc9168a2977a31"
-  integrity sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==
+"@babel/template@^7.18.10", "@babel/template@^7.4.0":
+  version "7.18.10"
+  resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.10.tgz#6f9134835970d1dbf0835c0d100c9f38de0c5e71"
+  integrity sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==
   dependencies:
     "@babel/code-frame" "^7.18.6"
-    "@babel/parser" "^7.18.6"
-    "@babel/types" "^7.18.6"
+    "@babel/parser" "^7.18.10"
+    "@babel/types" "^7.18.10"
 
 "@babel/traverse@^7.4.3":
-  version "7.18.6"
-  resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.6.tgz#a228562d2f46e89258efa4ddd0416942e2fd671d"
-  integrity sha512-zS/OKyqmD7lslOtFqbscH6gMLFYOfG1YPqCKfAW5KrTeolKqvB8UelR49Fpr6y93kYkW2Ik00mT1LOGiAGvizw==
+  version "7.20.5"
+  resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.20.5.tgz#78eb244bea8270fdda1ef9af22a5d5e5b7e57133"
+  integrity sha512-WM5ZNN3JITQIq9tFZaw1ojLU3WgWdtkxnhM1AegMS+PvHjkM5IXjmYEGY7yukz5XS4sJyEf2VzWjI8uAavhxBQ==
   dependencies:
     "@babel/code-frame" "^7.18.6"
-    "@babel/generator" "^7.18.6"
-    "@babel/helper-environment-visitor" "^7.18.6"
-    "@babel/helper-function-name" "^7.18.6"
+    "@babel/generator" "^7.20.5"
+    "@babel/helper-environment-visitor" "^7.18.9"
+    "@babel/helper-function-name" "^7.19.0"
     "@babel/helper-hoist-variables" "^7.18.6"
     "@babel/helper-split-export-declaration" "^7.18.6"
-    "@babel/parser" "^7.18.6"
-    "@babel/types" "^7.18.6"
+    "@babel/parser" "^7.20.5"
+    "@babel/types" "^7.20.5"
     debug "^4.1.0"
     globals "^11.1.0"
 
-"@babel/types@^7.18.6", "@babel/types@^7.18.7", "@babel/types@^7.4.0":
-  version "7.18.7"
-  resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.7.tgz#a4a2c910c15040ea52cdd1ddb1614a65c8041726"
-  integrity sha512-QG3yxTcTIBoAcQmkCs+wAPYZhu7Dk9rXKacINfNbdJDNERTbLQbHGyVG8q/YGMPeCJRIhSY0+fTc5+xuh6WPSQ==
+"@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.19.0", "@babel/types@^7.20.5", "@babel/types@^7.4.0":
+  version "7.20.5"
+  resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.20.5.tgz#e206ae370b5393d94dfd1d04cd687cace53efa84"
+  integrity sha512-c9fst/h2/dcF7H+MJKZ2T0KjEQ8hY/BNnDk/H3XY8C4Aw/eWQXWn/lWntHF9ooUBnGmEvbfGrTgLWc+um0YDUg==
   dependencies:
-    "@babel/helper-validator-identifier" "^7.18.6"
+    "@babel/helper-string-parser" "^7.19.4"
+    "@babel/helper-validator-identifier" "^7.19.1"
     to-fast-properties "^2.0.0"
 
 "@colors/colors@1.5.0":
@@ -1170,7 +2180,7 @@
   resolved "https://registry.yarnpkg.com/@google-cloud/promisify/-/promisify-3.0.1.tgz#8d724fb280f47d1ff99953aee0c1669b25238c2e"
   integrity sha512-z1CjRjtQyBOYL+5Qr9DdYIfrdLBe746jRTYfaYU6MeXkqp7UfYs/jX16lFFVzZ7PGEJvqZNqYUEtb1mvDww4pA==
 
-"@google-cloud/storage@^6.5.2":
+"@google-cloud/storage@6.5.2":
   version "6.5.2"
   resolved "https://registry.yarnpkg.com/@google-cloud/storage/-/storage-6.5.2.tgz#0db4eebb947256925db06365cfdab412062b504b"
   integrity sha512-n4HVE5bGGFdXlPUN2tP+wEnVH2XbYnv9PVrHirbAJPHk8EM7bm1G86+IhLha8KH4PpHLhjCPML173Sr6PWCXIQ==
@@ -1194,6 +2204,29 @@
     teeny-request "^8.0.0"
     uuid "^8.0.0"
 
+"@google-cloud/storage@^6.5.2":
+  version "6.7.0"
+  resolved "https://registry.yarnpkg.com/@google-cloud/storage/-/storage-6.7.0.tgz#c164d70e2b485b9db52e91fcf34609e047c1eeda"
+  integrity sha512-iEit3dvUhGQV3pPC8aci/Y+F6K2QJ/UvcXhymj8gnO8IYQfZSZvFf361yX4BWNUlbHzanUQVQdF9RvgEM8fwpw==
+  dependencies:
+    "@google-cloud/paginator" "^3.0.7"
+    "@google-cloud/projectify" "^3.0.0"
+    "@google-cloud/promisify" "^3.0.0"
+    abort-controller "^3.0.0"
+    async-retry "^1.3.3"
+    compressible "^2.0.12"
+    duplexify "^4.0.0"
+    ent "^2.2.0"
+    extend "^3.0.2"
+    gaxios "^5.0.0"
+    google-auth-library "^8.0.1"
+    mime "^3.0.0"
+    mime-types "^2.0.8"
+    p-limit "^3.0.1"
+    retry-request "^5.0.0"
+    teeny-request "^8.0.0"
+    uuid "^8.0.0"
+
 "@jridgewell/gen-mapping@^0.3.2":
   version "0.3.2"
   resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9"
@@ -1203,7 +2236,7 @@
     "@jridgewell/sourcemap-codec" "^1.4.10"
     "@jridgewell/trace-mapping" "^0.3.9"
 
-"@jridgewell/resolve-uri@^3.0.3":
+"@jridgewell/resolve-uri@3.1.0":
   version "3.1.0"
   resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78"
   integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==
@@ -1213,23 +2246,23 @@
   resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72"
   integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==
 
-"@jridgewell/sourcemap-codec@^1.4.10":
+"@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10":
   version "1.4.14"
   resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24"
   integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==
 
 "@jridgewell/trace-mapping@^0.3.9":
-  version "0.3.14"
-  resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz#b231a081d8f66796e475ad588a1ef473112701ed"
-  integrity sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==
+  version "0.3.17"
+  resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz#793041277af9073b0951a7fe0f0d8c4c98c36985"
+  integrity sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==
   dependencies:
-    "@jridgewell/resolve-uri" "^3.0.3"
-    "@jridgewell/sourcemap-codec" "^1.4.10"
+    "@jridgewell/resolve-uri" "3.1.0"
+    "@jridgewell/sourcemap-codec" "1.4.14"
 
 "@mapbox/node-pre-gyp@^1.0.0":
-  version "1.0.9"
-  resolved "https://registry.yarnpkg.com/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.9.tgz#09a8781a3a036151cdebbe8719d6f8b25d4058bc"
-  integrity sha512-aDF3S3rK9Q2gey/WAttUlISduDItz5BU3306M9Eyv6/oS40aMprnopshtlKTykxRNIBEZuRMaZAnbrQ4QtKGyw==
+  version "1.0.10"
+  resolved "https://registry.yarnpkg.com/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.10.tgz#8e6735ccebbb1581e5a7e652244cadc8a844d03c"
+  integrity sha512-4ySo4CjzStuprMwk35H5pPbkymjv1SF3jGLj6rAHp/xT/RF7TL7bd9CTm1xDY49K2qF7jmR/g7k+SkLETP6opA==
   dependencies:
     detect-libc "^2.0.0"
     https-proxy-agent "^5.0.0"
@@ -1279,10 +2312,10 @@
     typescript-ioc "^1.2.4"
     uuid "^3.2.1"
 
-"@project-sunbird/form-service@0.0.14":
-  version "0.0.14"
-  resolved "https://registry.yarnpkg.com/@project-sunbird/form-service/-/form-service-0.0.14.tgz#80bef402bc8634fec411530da7b4c7484fe59a4c"
-  integrity sha512-+y76F/076xUeNxGAJIvyAVCxF9vGgQ64gBVhTZhsTrwKmovX2jw0Af7Adc0kHgJ20vzV4TD/U/2InmY8zYPa/g==
+"@project-sunbird/form-service@0.0.15":
+  version "0.0.15"
+  resolved "https://registry.yarnpkg.com/@project-sunbird/form-service/-/form-service-0.0.15.tgz#4dd5cb1612da463d413d8b3db83460e211afddeb"
+  integrity sha512-nkC0CFqY06BpCJmgCrjDFMUpZeUMWkCJ7q3/7G3dP61HB9xIKYECl2c68f0IqPwIy/4a+Iajmx2MB/uzMPTogw==
   dependencies:
     joi "^13.4.0"
     lodash "^4.17.10"
@@ -1324,9 +2357,9 @@
     ajv "6.5.3"
 
 "@sinonjs/commons@^1", "@sinonjs/commons@^1.3.0", "@sinonjs/commons@^1.7.0":
-  version "1.8.3"
-  resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.3.tgz#3802ddd21a50a949b6721ddd72da36e67e7f1b2d"
-  integrity sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==
+  version "1.8.5"
+  resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.5.tgz#e280c94c95f206dcfd5aca00a43f2156b758c764"
+  integrity sha512-rTpCA0wG1wUxglBSFdMMY0oTrKYvgf4fNgv/sXbfCVAdf+FnPBdKJR/7XbpTCwbCrvCbdPYnlWaUUYz4V2fPDA==
   dependencies:
     type-detect "4.0.8"
 
@@ -1355,9 +2388,9 @@
     lodash "^4.17.15"
 
 "@sinonjs/text-encoding@^0.7.1":
-  version "0.7.1"
-  resolved "https://registry.yarnpkg.com/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz#8da5c6530915653f3a1f38fd5f101d8c3f8079c5"
-  integrity sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ==
+  version "0.7.2"
+  resolved "https://registry.yarnpkg.com/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz#5981a8db18b56ba38ef0efb7d995b12aa7b51918"
+  integrity sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==
 
 "@tootallnate/once@2":
   version "2.0.0"
@@ -1378,9 +2411,9 @@
   integrity sha512-6ckxMjBBD8URvjB6J3NcnuAn5Pkl7t3TizAg+xdlzzQGSPSmBcXf8KoIH0ua/i+tio+ZRUHEXp0HEmvaR4kt0w==
 
 "@types/chai@4":
-  version "4.3.1"
-  resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.1.tgz#e2c6e73e0bdeb2521d00756d099218e9f5d90a04"
-  integrity sha512-/zPMqDkzSZ8t3VtxOa4KPq7uzzW978M9Tvh+j7GHKuo6k6GTLxPJ4J5gE5cjfJ26pnXst0N5Hax8Sr0T2Mi9zQ==
+  version "4.3.4"
+  resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.4.tgz#e913e8175db8307d78b4e8fa690408ba6b65dee4"
+  integrity sha512-KnRanxnpfpjUTqTCXslZSEdLfXExwgNxYPdiO2WGUj8+HDjFi8R3k5RVKPeSCzLjCcshCAtVO2QBbVuAV4kTnw==
 
 "@types/connect@*":
   version "3.4.35"
@@ -1395,45 +2428,45 @@
   integrity sha512-t73xJJrvdTjXrn4jLS9VSGRbz0nUY3cl2DMGDU48lKl+HR9dbbjW2A9r3g40VA++mQpy6uuHg33gy7du2BKpog==
 
 "@types/express-serve-static-core@^4.17.18":
-  version "4.17.29"
-  resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.29.tgz#2a1795ea8e9e9c91b4a4bbe475034b20c1ec711c"
-  integrity sha512-uMd++6dMKS32EOuw1Uli3e3BPgdLIXmezcfHv7N4c1s3gkhikBplORPpMq3fuWkxncZN1reb16d5n8yhQ80x7Q==
+  version "4.17.31"
+  resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.31.tgz#a1139efeab4e7323834bb0226e62ac019f474b2f"
+  integrity sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q==
   dependencies:
     "@types/node" "*"
     "@types/qs" "*"
     "@types/range-parser" "*"
 
-"@types/express@^4.17.13":
-  version "4.17.13"
-  resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.13.tgz#a76e2995728999bab51a33fabce1d705a3709034"
-  integrity sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==
+"@types/express@^4.17.14":
+  version "4.17.14"
+  resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.14.tgz#143ea0557249bc1b3b54f15db4c81c3d4eb3569c"
+  integrity sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg==
   dependencies:
     "@types/body-parser" "*"
     "@types/express-serve-static-core" "^4.17.18"
     "@types/qs" "*"
     "@types/serve-static" "*"
 
-"@types/jsonwebtoken@^8.5.8":
-  version "8.5.8"
-  resolved "https://registry.yarnpkg.com/@types/jsonwebtoken/-/jsonwebtoken-8.5.8.tgz#01b39711eb844777b7af1d1f2b4cf22fda1c0c44"
-  integrity sha512-zm6xBQpFDIDM6o9r6HSgDeIcLy82TKWctCXEPbJJcXb5AKmi5BNNdLXneixK4lplX3PqIVcwLBCGE/kAGnlD4A==
+"@types/jsonwebtoken@^8.5.9":
+  version "8.5.9"
+  resolved "https://registry.yarnpkg.com/@types/jsonwebtoken/-/jsonwebtoken-8.5.9.tgz#2c064ecb0b3128d837d2764aa0b117b0ff6e4586"
+  integrity sha512-272FMnFGzAVMGtu9tkr29hRL6bZj4Zs1KZNeHLnKqAvp06tAIcarTMwOh8/8bz4FmKRcMxZhZNeUAQsNLoiPhg==
   dependencies:
     "@types/node" "*"
 
 "@types/lodash@^4.14.149":
-  version "4.14.182"
-  resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.182.tgz#05301a4d5e62963227eaafe0ce04dd77c54ea5c2"
-  integrity sha512-/THyiqyQAP9AfARo4pF+aCGcyiQ94tX/Is2I7HofNRqoYLgN1PBoOWu2/zTA5zMxzP5EFutMtWtGAFRKUe961Q==
+  version "4.14.190"
+  resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.190.tgz#d8e99647af141c63902d0ca53cf2b34d2df33545"
+  integrity sha512-5iJ3FBJBvQHQ8sFhEhJfjUP+G+LalhavTkYyrAYqz5MEJG+erSv0k9KJLb6q7++17Lafk1scaTIFXcMJlwK8Mw==
 
-"@types/mime@^1":
-  version "1.3.2"
-  resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a"
-  integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==
+"@types/mime@*":
+  version "3.0.1"
+  resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.1.tgz#5f8f2bca0a5863cb69bc0b0acd88c96cb1d4ae10"
+  integrity sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==
 
 "@types/node@*":
-  version "18.0.3"
-  resolved "https://registry.yarnpkg.com/@types/node/-/node-18.0.3.tgz#463fc47f13ec0688a33aec75d078a0541a447199"
-  integrity sha512-HzNRZtp4eepNitP+BD6k2L6DROIDG4Q0fm4x+dwfsr6LGmROENnok75VGw40628xf+iR24WeMFcHuuBDUAzzsQ==
+  version "18.11.9"
+  resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.9.tgz#02d013de7058cea16d36168ef2fc653464cfbad4"
+  integrity sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==
 
 "@types/node@^13.9.0":
   version "13.13.52"
@@ -1461,11 +2494,11 @@
     form-data "^2.5.0"
 
 "@types/serve-static@*":
-  version "1.13.10"
-  resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.10.tgz#f5e0ce8797d2d7cc5ebeda48a52c96c4fa47a8d9"
-  integrity sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==
+  version "1.15.0"
+  resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.0.tgz#c7930ff61afb334e121a9da780aac0d9b8f34155"
+  integrity sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==
   dependencies:
-    "@types/mime" "^1"
+    "@types/mime" "*"
     "@types/node" "*"
 
 "@types/superagent@^3.8.3":
@@ -2067,7 +3100,7 @@ base64-arraybuffer@0.1.5:
   resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8"
   integrity sha512-437oANT9tP582zZMwSvZGy2nmSeAb8DW2me3y+Uv1Wp2Rulr8Mqlyrv3E7MLxmsiaPSMMDmiDVzgE+e8zlMx9g==
 
-base64-js@^1.3.0, base64-js@^1.3.1:
+base64-js@^1.0.2, base64-js@^1.3.0, base64-js@^1.3.1:
   version "1.5.1"
   resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
   integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
@@ -2122,9 +3155,9 @@ bfj@^6.1.1:
     tryer "^1.0.1"
 
 bignumber.js@^9.0.0:
-  version "9.0.2"
-  resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.0.2.tgz#71c6c6bed38de64e24a65ebe16cfcf23ae693673"
-  integrity sha512-GAcQvbpsM0pUb0zw1EI0KhQEZ+lRwR5fYaAp3vPOYuP7aDvGy6cVN6XHLauvF8SOga2y0dcLcjt3iQDTSEliyw==
+  version "9.1.0"
+  resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.0.tgz#8d340146107fe3a6cb8d40699643c302e8773b62"
+  integrity sha512-4LwHK4nfDOraBCtst+wOWIHbu1vhvAPJK8g8nROd4iuc3PSEjWif/qwbkh8jwCJz6yDBvtU4KPynETgrfh7y3A==
 
 binary-extensions@^1.0.0:
   version "1.13.1"
@@ -2185,10 +3218,10 @@ body-parser@1.17.2:
     raw-body "~2.2.0"
     type-is "~1.6.15"
 
-body-parser@1.20.0, body-parser@^1.16.1:
-  version "1.20.0"
-  resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.0.tgz#3de69bd89011c11573d7bfee6a64f11b6bd27cc5"
-  integrity sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==
+body-parser@1.20.1, body-parser@^1.16.1:
+  version "1.20.1"
+  resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668"
+  integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==
   dependencies:
     bytes "3.1.2"
     content-type "~1.0.4"
@@ -2198,7 +3231,7 @@ body-parser@1.20.0, body-parser@^1.16.1:
     http-errors "2.0.0"
     iconv-lite "0.4.24"
     on-finished "2.4.1"
-    qs "6.10.3"
+    qs "6.11.0"
     raw-body "2.5.1"
     type-is "~1.6.18"
     unpipe "1.0.0"
@@ -2295,9 +3328,9 @@ buffer-equal-constant-time@1.0.1:
   integrity sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==
 
 buffer-equal@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-1.0.0.tgz#59616b498304d556abd466966b22eeda3eca5fbe"
-  integrity sha512-tcBWO2Dl4e7Asr9hTGcpVrCe+F7DubpmqWCTbj4FHLmjqO2hIaC383acQubWtRJhdceqs5uBHs6Es+Sk//RKiQ==
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-1.0.1.tgz#2f7651be5b1b3f057fcd6e7ee16cf34767077d90"
+  integrity sha512-QoV3ptgEaQpvVwbXdSO39iqPQTCxSF7A5U99AxbHYqUdCizL/lH2Z0A2y6nbZucxMEOtNyZfG2s6gsVugGpKkg==
 
 buffer-fill@^1.0.0:
   version "1.0.0"
@@ -2309,6 +3342,14 @@ buffer-from@1.1.2, buffer-from@^1.0.0:
   resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5"
   integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==
 
+buffer@5.6.0:
+  version "5.6.0"
+  resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.6.0.tgz#a31749dc7d81d84db08abf937b6b8c4033f62786"
+  integrity sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==
+  dependencies:
+    base64-js "^1.0.2"
+    ieee754 "^1.1.4"
+
 buffer@^5.5.0, buffer@^5.6.0:
   version "5.7.1"
   resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0"
@@ -2378,7 +3419,7 @@ caching-transform@^3.0.2:
     package-hash "^3.0.0"
     write-file-atomic "^2.4.2"
 
-call-bind@^1.0.0:
+call-bind@^1.0.0, call-bind@^1.0.2:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c"
   integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==
@@ -2412,12 +3453,12 @@ camelize@1.0.0:
   integrity sha512-W2lPwkBkMZwFlPCXhIlYgxu+7gC/NUlCtdK652DAJ1JdgV0sTrvuPFshNPrFa1TY2JOkLhgdeEBplB4ezEa+xg==
 
 canvas@^2.0.0-alpha.13:
-  version "2.9.3"
-  resolved "https://registry.yarnpkg.com/canvas/-/canvas-2.9.3.tgz#8723c4f970442d4cdcedba5221579f9660a58bdb"
-  integrity sha512-WOUM7ghii5TV2rbhaZkh1youv/vW1/Canev6Yx6BG2W+1S07w8jKZqKkPnbiPpQEDsnJdN8ouDd7OvQEGXDcUw==
+  version "2.10.2"
+  resolved "https://registry.yarnpkg.com/canvas/-/canvas-2.10.2.tgz#66d827e24acd6c34667453728e13d337417d4b20"
+  integrity sha512-FSmlsip0nZ0U4Zcfht0qBJqDhlfGuevTZKE8h+dBOYrJjGvY3iqMGSzzbvkaFhvMXiVxfcMaPHS/kge++T5SKg==
   dependencies:
     "@mapbox/node-pre-gyp" "^1.0.0"
-    nan "^2.15.0"
+    nan "^2.17.0"
     simple-get "^3.0.3"
 
 canvg@^1.5.3:
@@ -2481,13 +3522,13 @@ chai@4.3.0:
     type-detect "^4.0.5"
 
 chai@^4.1.2:
-  version "4.3.6"
-  resolved "https://registry.yarnpkg.com/chai/-/chai-4.3.6.tgz#ffe4ba2d9fa9d6680cc0b370adae709ec9011e9c"
-  integrity sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==
+  version "4.3.7"
+  resolved "https://registry.yarnpkg.com/chai/-/chai-4.3.7.tgz#ec63f6df01829088e8bf55fca839bcd464a8ec51"
+  integrity sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==
   dependencies:
     assertion-error "^1.1.0"
     check-error "^1.0.2"
-    deep-eql "^3.0.1"
+    deep-eql "^4.1.2"
     get-func-name "^2.0.0"
     loupe "^2.3.1"
     pathval "^1.1.1"
@@ -2584,6 +3625,23 @@ class-utils@^0.3.5:
     isobject "^3.0.0"
     static-extend "^0.1.1"
 
+client-cloud-services@2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/client-cloud-services/-/client-cloud-services-2.0.0.tgz#3c34c97669d99c9b1a63690c5b28f5b2ee510ad7"
+  integrity sha512-WoMzxpuYC6gzJt/SCuVLamyFn56nMAlna9yhgWeK9qNjpNNXHgJ02uqLI6x9R7BV6NlV3D5goiD0iTYkwTJsZA==
+  dependencies:
+    "@aws-sdk/client-s3" "3.163.0"
+    "@aws-sdk/lib-storage" "3.182.0"
+    "@aws-sdk/s3-request-presigner" "3.173.0"
+    "@google-cloud/storage" "6.5.2"
+    "@project-sunbird/logger" "^0.0.9"
+    async "2.5.0"
+    azure-storage "2.10.2"
+    dateformat "2.0.0"
+    lodash "4.17.15"
+    multiparty "^4.2.1"
+    uuid "3.1.0"
+
 cliui@^3.2.0:
   version "3.2.0"
   resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d"
@@ -2636,9 +3694,9 @@ cloudant-follow@^0.18.2:
     request "^2.88.0"
 
 cluster-key-slot@^1.1.0:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/cluster-key-slot/-/cluster-key-slot-1.1.0.tgz#30474b2a981fb12172695833052bc0d01336d10d"
-  integrity sha512-2Nii8p3RwAPiFwsnZvukotvow2rIHM+yQ6ZcBXGHdniadkYGZYiGmkHJIbZPIV9nfv7m/U1IPMVVcAhoWFeklw==
+  version "1.1.2"
+  resolved "https://registry.yarnpkg.com/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz#88ddaa46906e303b5de30d3153b7d9fe0a0c19ac"
+  integrity sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==
 
 co@^4.6.0:
   version "4.6.0"
@@ -2752,9 +3810,9 @@ commander@2.11.0:
   integrity sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==
 
 commander@>=7.0.0:
-  version "9.3.0"
-  resolved "https://registry.yarnpkg.com/commander/-/commander-9.3.0.tgz#f619114a5a2d2054e0d9ff1b31d5ccf89255e26b"
-  integrity sha512-hv95iU5uXPbK83mjrJKuZyFM/LBAoCV/XhVGkS5Je6tl7sxr6A0ITMw5WoRV46/UaJ46Nllm3Xt7IaJhXTIkzw==
+  version "9.4.1"
+  resolved "https://registry.yarnpkg.com/commander/-/commander-9.4.1.tgz#d1dd8f2ce6faf93147295c0df13c7c21141cfbdd"
+  integrity sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==
 
 commander@^2.18.0, commander@^2.x:
   version "2.20.3"
@@ -2877,11 +3935,9 @@ continuation-local-storage@^3.2.1:
     emitter-listener "^1.1.1"
 
 convert-source-map@^1.5.0, convert-source-map@^1.6.0:
-  version "1.8.0"
-  resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369"
-  integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==
-  dependencies:
-    safe-buffer "~5.1.1"
+  version "1.9.0"
+  resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f"
+  integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==
 
 cookie-parser@1.4.4:
   version "1.4.4"
@@ -3111,6 +4167,13 @@ deep-eql@^3.0.1:
   dependencies:
     type-detect "^4.0.0"
 
+deep-eql@^4.1.2:
+  version "4.1.2"
+  resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-4.1.2.tgz#270ceb902f87724077e6f6449aed81463f42fc1c"
+  integrity sha512-gT18+YW4CcW/DBNTwAmqTtkJh7f9qqScu2qFVlx7kCoeY9tlBu9cUcr7+I+Z/noG8INehS3xQgLpTtd/QUTn4w==
+  dependencies:
+    type-detect "^4.0.0"
+
 deep-extend@^0.6.0:
   version "0.6.0"
   resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
@@ -3148,7 +4211,7 @@ deferred-leveldown@~5.3.0:
     abstract-leveldown "~6.2.1"
     inherits "^2.0.3"
 
-define-properties@^1.1.3:
+define-properties@^1.1.4:
   version "1.1.4"
   resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1"
   integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==
@@ -3484,9 +4547,9 @@ errs@^0.3.2:
   integrity sha512-r+/tydov04FSwTi+PrGd0IdY195Y1jZW2g27TJ+cErU8vvr9V4hHYxtRF8bMjv4zYEhap7wK7zBQ2i99LRo6kA==
 
 es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50:
-  version "0.10.61"
-  resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.61.tgz#311de37949ef86b6b0dcea894d1ffedb909d3269"
-  integrity sha512-yFhIqQAzu2Ca2I4SE2Au3rxVfmohU9Y7wqGR+s7+H7krk26NXhIRAZDgqd6xqjCEFUomDEA3/Bo/7fKmIkW1kA==
+  version "0.10.62"
+  resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.62.tgz#5e6adc19a6da524bf3d1e02bbc8960e5eb49a9a5"
+  integrity sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==
   dependencies:
     es6-iterator "^2.0.3"
     es6-symbol "^3.1.3"
@@ -3586,6 +4649,11 @@ eventemitter3@^4.0.0:
   resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f"
   integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==
 
+events@3.3.0:
+  version "3.3.0"
+  resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400"
+  integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==
+
 expand-braces@^0.1.1:
   version "0.1.2"
   resolved "https://registry.yarnpkg.com/expand-braces/-/expand-braces-0.1.2.tgz#488b1d1d2451cb3d3a6b192cfc030f44c5855fea"
@@ -3746,13 +4814,13 @@ express@4.15.3:
     vary "~1.1.1"
 
 express@^4.16.2, express@^4.16.3:
-  version "4.18.1"
-  resolved "https://registry.yarnpkg.com/express/-/express-4.18.1.tgz#7797de8b9c72c857b9cd0e14a5eea80666267caf"
-  integrity sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==
+  version "4.18.2"
+  resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59"
+  integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==
   dependencies:
     accepts "~1.3.8"
     array-flatten "1.1.1"
-    body-parser "1.20.0"
+    body-parser "1.20.1"
     content-disposition "0.5.4"
     content-type "~1.0.4"
     cookie "0.5.0"
@@ -3771,7 +4839,7 @@ express@^4.16.2, express@^4.16.3:
     parseurl "~1.3.3"
     path-to-regexp "0.1.7"
     proxy-addr "~2.0.7"
-    qs "6.10.3"
+    qs "6.11.0"
     range-parser "~1.2.1"
     safe-buffer "5.2.1"
     send "0.18.0"
@@ -3783,11 +4851,11 @@ express@^4.16.2, express@^4.16.3:
     vary "~1.1.2"
 
 ext@^1.1.2:
-  version "1.6.0"
-  resolved "https://registry.yarnpkg.com/ext/-/ext-1.6.0.tgz#3871d50641e874cc172e2b53f919842d19db4c52"
-  integrity sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg==
+  version "1.7.0"
+  resolved "https://registry.yarnpkg.com/ext/-/ext-1.7.0.tgz#0ea4383c0103d60e70be99e9a7f11027a33c4f5f"
+  integrity sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==
   dependencies:
-    type "^2.5.0"
+    type "^2.7.2"
 
 extend-shallow@^2.0.1:
   version "2.0.1"
@@ -3869,15 +4937,22 @@ fast-levenshtein@~2.0.6:
   integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==
 
 fast-text-encoding@^1.0.0:
-  version "1.0.4"
-  resolved "https://registry.yarnpkg.com/fast-text-encoding/-/fast-text-encoding-1.0.4.tgz#bf1898ad800282a4e53c0ea9690704dd26e4298e"
-  integrity sha512-x6lDDm/tBAzX9kmsPcZsNbvDs3Zey3+scsxaZElS8xWLgUMAg/oFLeewfUz0mu1CblHhhsu15jGkraldkFh8KQ==
+  version "1.0.6"
+  resolved "https://registry.yarnpkg.com/fast-text-encoding/-/fast-text-encoding-1.0.6.tgz#0aa25f7f638222e3396d72bf936afcf1d42d6867"
+  integrity sha512-VhXlQgj9ioXCqGstD37E/HBeqEGV/qOD/kmbVG8h5xKBYvM1L3lR1Zn4555cQ8GkYbJa8aJSipLPndE1k6zK2w==
 
 fast-xml-parser@3.19.0:
   version "3.19.0"
   resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-3.19.0.tgz#cb637ec3f3999f51406dd8ff0e6fc4d83e520d01"
   integrity sha512-4pXwmBplsCPv8FOY1WRakF970TjNGnGnfbOnLqjlYvMiF1SR3yOHyxMR/YCXpPTOspNF5gwudqktIP4VsWkvBg==
 
+fast-xml-parser@4.0.11:
+  version "4.0.11"
+  resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.0.11.tgz#42332a9aca544520631c8919e6ea871c0185a985"
+  integrity sha512-4aUg3aNRR/WjQAcpceODG1C3x3lFANXRo8+1biqfieHmg9pyMt7qB4lQV/Ta6sJCTbA5vfD8fnA8S54JATiFUA==
+  dependencies:
+    strnum "^1.0.5"
+
 fbjs@^0.8.9:
   version "0.8.18"
   resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.18.tgz#9835e0addb9aca2eff53295cd79ca1cfc7c9662a"
@@ -4065,9 +5140,9 @@ follow-redirects@1.5.10:
     debug "=3.1.0"
 
 follow-redirects@^1.0.0, follow-redirects@^1.10.0:
-  version "1.15.1"
-  resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.1.tgz#0ca6a452306c9b276e4d3127483e29575e207ad5"
-  integrity sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==
+  version "1.15.2"
+  resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13"
+  integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==
 
 for-in@^1.0.1, for-in@^1.0.2:
   version "1.0.2"
@@ -4267,9 +5342,9 @@ gaxios@^4.0.0:
     node-fetch "^2.6.7"
 
 gaxios@^5.0.0, gaxios@^5.0.1:
-  version "5.0.1"
-  resolved "https://registry.yarnpkg.com/gaxios/-/gaxios-5.0.1.tgz#50fc76a2d04bc1700ed8c3ff1561e52255dfc6e0"
-  integrity sha512-keK47BGKHyyOVQxgcUaSaFvr3ehZYAlvhvpHXy0YB2itzZef+GqZR8TBsfVRWghdwlKrYsn+8L8i3eblF7Oviw==
+  version "5.0.2"
+  resolved "https://registry.yarnpkg.com/gaxios/-/gaxios-5.0.2.tgz#ca3a40e851c728d31d7001c2357062d46bf966d1"
+  integrity sha512-TjtV2AJOZoMQqRYoy5eM8cCQogYwazWNYLQ72QB0kwa6vHHruYkGmhhyrlzbmgNHK1dNnuP2WSH81urfzyN2Og==
   dependencies:
     extend "^3.0.2"
     https-proxy-agent "^5.0.0"
@@ -4293,9 +5368,9 @@ gcp-metadata@^4.2.0:
     json-bigint "^1.0.0"
 
 gcp-metadata@^5.0.0:
-  version "5.0.0"
-  resolved "https://registry.yarnpkg.com/gcp-metadata/-/gcp-metadata-5.0.0.tgz#a00f999f60a4461401e7c515f8a3267cfb401ee7"
-  integrity sha512-gfwuX3yA3nNsHSWUL4KG90UulNiq922Ukj3wLTrcnX33BB7PwB1o0ubR8KVvXu9nJH+P5w1j2SQSNNqto+H0DA==
+  version "5.0.1"
+  resolved "https://registry.yarnpkg.com/gcp-metadata/-/gcp-metadata-5.0.1.tgz#8d1e785ee7fad554bc2a80c1f930c9a9518d2b00"
+  integrity sha512-jiRJ+Fk7e8FH68Z6TLaqwea307OktJpDjmYnU7/li6ziwvVvU2RlrCyQo5vkdeP94chm0kcSCOOszvmuaioq3g==
   dependencies:
     gaxios "^5.0.0"
     json-bigint "^1.0.0"
@@ -4316,9 +5391,9 @@ get-func-name@^2.0.0:
   integrity sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==
 
 get-intrinsic@^1.0.2, get-intrinsic@^1.1.1:
-  version "1.1.2"
-  resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.2.tgz#336975123e05ad0b7ba41f152ee4aadbea6cf598"
-  integrity sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==
+  version "1.1.3"
+  resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.3.tgz#063c84329ad93e83893c7f4f243ef63ffa351385"
+  integrity sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==
   dependencies:
     function-bind "^1.1.1"
     has "^1.0.3"
@@ -4476,9 +5551,9 @@ google-auth-library@^7.1.0:
     lru-cache "^6.0.0"
 
 google-auth-library@^8.0.1:
-  version "8.5.2"
-  resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-8.5.2.tgz#bcdced8f7b475b80bf0e9c109c7c7e930866947b"
-  integrity sha512-FPfOSaI8n2TVXFHTP8/vAVFCXhyALj7w9/Rgefux3oeKZ/nQDNmfNTJ+lIKcoYT1cKkvMllp1Eood7Y5L+TP+A==
+  version "8.7.0"
+  resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-8.7.0.tgz#e36e255baba4755ce38dded4c50f896cf8515e51"
+  integrity sha512-1M0NG5VDIvJZEnstHbRdckLZESoJwguinwN8Dhae0j2ZKIQFIV63zxm6Fo6nM4xkgqUr2bbMtV5Dgo+Hy6oo0Q==
   dependencies:
     arrify "^2.0.0"
     base64-js "^1.3.0"
@@ -4692,7 +5767,7 @@ has-property-descriptors@^1.0.0:
   dependencies:
     get-intrinsic "^1.1.1"
 
-has-symbols@^1.0.1, has-symbols@^1.0.3:
+has-symbols@^1.0.3:
   version "1.0.3"
   resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8"
   integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==
@@ -4997,7 +6072,7 @@ iconv-lite@^0.6.2:
   dependencies:
     safer-buffer ">= 2.1.2 < 3.0.0"
 
-ieee754@^1.1.13:
+ieee754@^1.1.13, ieee754@^1.1.4:
   version "1.2.1"
   resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
   integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
@@ -5030,7 +6105,7 @@ inflight@^1.0.4:
     once "^1.3.0"
     wrappy "1"
 
-inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3:
+inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3, inherits@~2.0.4:
   version "2.0.4"
   resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
   integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
@@ -5136,9 +6211,9 @@ is-buffer@^2.0.2:
   integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==
 
 is-core-module@^2.9.0:
-  version "2.9.0"
-  resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.9.0.tgz#e1c34429cd51c6dd9e09e0799e396e27b19a9c69"
-  integrity sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==
+  version "2.11.0"
+  resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144"
+  integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==
   dependencies:
     has "^1.0.3"
 
@@ -5442,10 +6517,10 @@ joi@^6.10.1:
     moment "2.x.x"
     topo "1.x.x"
 
-jose@^2.0.5:
-  version "2.0.5"
-  resolved "https://registry.yarnpkg.com/jose/-/jose-2.0.5.tgz#29746a18d9fff7dcf9d5d2a6f62cb0c7cd27abd3"
-  integrity sha512-BAiDNeDKTMgk4tvD0BbxJ8xHEHBZgpeRZ1zGPPsitSyMgjoMWiLGYAE7H7NpP5h0lPppQajQs871E8NHUrzVPA==
+jose@^2.0.6:
+  version "2.0.6"
+  resolved "https://registry.yarnpkg.com/jose/-/jose-2.0.6.tgz#894ba19169af339d3911be933f913dd02fc57c7c"
+  integrity sha512-FVoPY7SflDodE4lknJmbAHSUjLCzE2H1F6MS0RYKMQ8SR+lNccpMf8R4eqkNYyyUjR5qZReOzZo5C5YiHOCjjg==
   dependencies:
     "@panva/asn1.js" "^1.0.0"
 
@@ -5537,11 +6612,11 @@ json-stable-stringify-without-jsonify@^1.0.1:
   integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==
 
 json-stable-stringify@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af"
-  integrity sha512-i/J297TW6xyj7sDFa7AmBPkQvLIxWr2kKPWI26tXydnZrzVAocNqn5DMNT1Mzk0vit1V5UkRM7C1KdVNp7Lmcg==
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.2.tgz#e06f23128e0bbe342dc996ed5a19e28b57b580e0"
+  integrity sha512-eunSSaEnxV12z+Z73y/j5N37/In40GK4GmsSy+tEHJMxknvqnA7/djeYtAgW0GsWHUfg+847WJjKaEylk2y09g==
   dependencies:
-    jsonify "~0.0.0"
+    jsonify "^0.0.1"
 
 json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1:
   version "5.0.1"
@@ -5555,10 +6630,10 @@ jsonfile@^3.0.0:
   optionalDependencies:
     graceful-fs "^4.1.6"
 
-jsonify@~0.0.0:
-  version "0.0.0"
-  resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73"
-  integrity sha512-trvBk1ki43VZptdBI5rIlG4YOzyeH/WefQt5rj1grasPn4iiZWKet8nkgc4GlsAylaztn0qZfUYOiTsASJFdNA==
+jsonify@^0.0.1:
+  version "0.0.1"
+  resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.1.tgz#2aa3111dae3d34a0f151c63f3a45d995d9420978"
+  integrity sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==
 
 jsonparse@^1.2.0:
   version "1.3.1"
@@ -5638,14 +6713,14 @@ jwk-to-pem@^2.0.0:
     safe-buffer "^5.0.1"
 
 jwks-rsa@^2.0.4:
-  version "2.1.4"
-  resolved "https://registry.yarnpkg.com/jwks-rsa/-/jwks-rsa-2.1.4.tgz#38ebfbe9cb4cdce3be070e6575796304917bae97"
-  integrity sha512-mpArfgPkUpX11lNtGxsF/szkasUcbWHGplZl/uFvFO2NuMHmt0dQXIihh0rkPU2yQd5niQtuUHbXnG/WKiXF6Q==
+  version "2.1.5"
+  resolved "https://registry.yarnpkg.com/jwks-rsa/-/jwks-rsa-2.1.5.tgz#bb7bf8c5767836bc273bf5b27870066aca39c1bb"
+  integrity sha512-IODtn1SwEm7n6GQZnQLY0oxKDrMh7n/jRH1MzE8mlxWMrh2NnMyOsXTebu8vJ1qCpmuTJcL4DdiE0E4h8jnwsA==
   dependencies:
-    "@types/express" "^4.17.13"
-    "@types/jsonwebtoken" "^8.5.8"
+    "@types/express" "^4.17.14"
+    "@types/jsonwebtoken" "^8.5.9"
     debug "^4.3.4"
-    jose "^2.0.5"
+    jose "^2.0.6"
     limiter "^1.1.5"
     lru-memoizer "^2.1.4"
 
@@ -6076,9 +7151,9 @@ loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.3.1, loose-envify@^1.4
     js-tokens "^3.0.0 || ^4.0.0"
 
 loupe@^2.3.1:
-  version "2.3.4"
-  resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.4.tgz#7e0b9bffc76f148f9be769cb1321d3dcf3cb25f3"
-  integrity sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==
+  version "2.3.6"
+  resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.6.tgz#76e4af498103c532d1ecc9be102036a21f787b53"
+  integrity sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==
   dependencies:
     get-func-name "^2.0.0"
 
@@ -6308,9 +7383,9 @@ minimist@0.0.8:
   integrity sha512-miQKw5Hv4NS1Psg2517mV4e4dYNaO3++hjAvLOAzKqZ61rH8NS1SK+vbfBWZ5PY/Me/bEWhUwqMghEW5Fb9T7Q==
 
 minimist@^1.2.0, minimist@^1.2.6:
-  version "1.2.6"
-  resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44"
-  integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==
+  version "1.2.7"
+  resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18"
+  integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==
 
 minimist@~0.0.1:
   version "0.0.10"
@@ -6318,9 +7393,9 @@ minimist@~0.0.1:
   integrity sha512-iotkTvxc+TwOm5Ieim8VnSNvCDjCK9S8G3scJ50ZthspSxa7jx50jkhYduuAtAjvfDUwSgOwf8+If99AlOEhyw==
 
 minipass@^3.0.0:
-  version "3.3.4"
-  resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.4.tgz#ca99f95dd77c43c7a76bf51e6d200025eee0ffae"
-  integrity sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==
+  version "3.3.6"
+  resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a"
+  integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==
   dependencies:
     yallist "^4.0.0"
 
@@ -6432,9 +7507,9 @@ mock-require@3.0.3:
     normalize-path "^2.1.1"
 
 moment@2.x.x, moment@^2.29.1:
-  version "2.29.3"
-  resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.3.tgz#edd47411c322413999f7a5940d526de183c031f3"
-  integrity sha512-c6YRvhEo//6T2Jz/vVtYzqBzwvPT95JBQ+smCytzf7c50oMZRsR/a4w88aD34I+/QVSfnoAnSBFPJHItlOMJVw==
+  version "2.29.4"
+  resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.4.tgz#3dbe052889fe7c1b2ed966fcb3a77328964ef108"
+  integrity sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==
 
 morgan@^1.10.0:
   version "1.10.0"
@@ -6476,10 +7551,10 @@ mute-stdout@^1.0.0:
   resolved "https://registry.yarnpkg.com/mute-stdout/-/mute-stdout-1.0.1.tgz#acb0300eb4de23a7ddeec014e3e96044b3472331"
   integrity sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==
 
-nan@^2.12.1, nan@^2.14.1, nan@^2.15.0:
-  version "2.16.0"
-  resolved "https://registry.yarnpkg.com/nan/-/nan-2.16.0.tgz#664f43e45460fb98faf00edca0bb0d7b8dce7916"
-  integrity sha512-UdAqHyFngu7TfQKsCBgAA6pWDkT8MAO7d0jyOecVhN5354xbLqdn8mV9Tat9gepAupm0bt2DbeaSC8vS52MuFA==
+nan@^2.12.1, nan@^2.14.1, nan@^2.17.0:
+  version "2.17.0"
+  resolved "https://registry.yarnpkg.com/nan/-/nan-2.17.0.tgz#c0150a2368a182f033e9aa5195ec76ea41a199cb"
+  integrity sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==
 
 nano@^8.0.0:
   version "8.2.3"
@@ -6776,13 +7851,13 @@ object-visit@^1.0.0:
     isobject "^3.0.0"
 
 object.assign@^4.0.4, object.assign@^4.1.0:
-  version "4.1.2"
-  resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940"
-  integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==
+  version "4.1.4"
+  resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f"
+  integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==
   dependencies:
-    call-bind "^1.0.0"
-    define-properties "^1.1.3"
-    has-symbols "^1.0.1"
+    call-bind "^1.0.2"
+    define-properties "^1.1.4"
+    has-symbols "^1.0.3"
     object-keys "^1.1.1"
 
 object.defaults@^1.0.0, object.defaults@^1.1.0:
@@ -7150,110 +8225,110 @@ posix-character-classes@^0.1.0:
   resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
   integrity sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==
 
-pouchdb-abstract-mapreduce@7.3.0:
-  version "7.3.0"
-  resolved "https://registry.yarnpkg.com/pouchdb-abstract-mapreduce/-/pouchdb-abstract-mapreduce-7.3.0.tgz#cc178cb5d07f73b7c3f0f47a7f963defd4872b1c"
-  integrity sha512-+2fVt3SDh7D776lIGbYZOsKX5js1aUyUw7iJaTGitxSdQ2ObWSTrr3SUrj5Qo1CkgPXwRM3Tdoq/53JYAa2qCA==
-  dependencies:
-    pouchdb-binary-utils "7.3.0"
-    pouchdb-collate "7.3.0"
-    pouchdb-collections "7.3.0"
-    pouchdb-errors "7.3.0"
-    pouchdb-fetch "7.3.0"
-    pouchdb-mapreduce-utils "7.3.0"
-    pouchdb-md5 "7.3.0"
-    pouchdb-utils "7.3.0"
-
-pouchdb-binary-utils@7.3.0:
-  version "7.3.0"
-  resolved "https://registry.yarnpkg.com/pouchdb-binary-utils/-/pouchdb-binary-utils-7.3.0.tgz#ecc235d28e7f226c168affcf53959675f78d5aaf"
-  integrity sha512-xvBH/XGHGcou2vkEzszJxkCc7YElfRUrkLUg51Jbdmh1mogLDUO0bU3Tj6TOIIJfRkQrU/HV+dDkMAhsil0amQ==
+pouchdb-abstract-mapreduce@7.3.1:
+  version "7.3.1"
+  resolved "https://registry.yarnpkg.com/pouchdb-abstract-mapreduce/-/pouchdb-abstract-mapreduce-7.3.1.tgz#96ff4a0f41cbe273f3f52fde003b719005a2093c"
+  integrity sha512-0zKXVFBvrfc1KnN0ggrB762JDmZnUpePHywo9Bq3Jy+L1FnoG7fXM5luFfvv5/T0gEw+ZTIwoocZECMnESBI9w==
+  dependencies:
+    pouchdb-binary-utils "7.3.1"
+    pouchdb-collate "7.3.1"
+    pouchdb-collections "7.3.1"
+    pouchdb-errors "7.3.1"
+    pouchdb-fetch "7.3.1"
+    pouchdb-mapreduce-utils "7.3.1"
+    pouchdb-md5 "7.3.1"
+    pouchdb-utils "7.3.1"
+
+pouchdb-binary-utils@7.3.1:
+  version "7.3.1"
+  resolved "https://registry.yarnpkg.com/pouchdb-binary-utils/-/pouchdb-binary-utils-7.3.1.tgz#eea22d9a5f880fcd95062476f4f5484cdf61496f"
+  integrity sha512-crZJNfAEOnUoRk977Qtmk4cxEv6sNKllQ6vDDKgQrQLFjMUXma35EHzNyIJr1s76J77Q4sqKQAmxz9Y40yHGtw==
   dependencies:
     buffer-from "1.1.2"
 
-pouchdb-collate@7.3.0:
-  version "7.3.0"
-  resolved "https://registry.yarnpkg.com/pouchdb-collate/-/pouchdb-collate-7.3.0.tgz#9276de7459a21a6aded71e3090d9b5d5488be19f"
-  integrity sha512-ys7rXKtEr6cfghgUjknwFJiOkITebV6JmeTybJKCzMV0r2luXu0OoPQsKVpE/wbM/3F5LxfpbFKGFpPcfGMvTA==
+pouchdb-collate@7.3.1:
+  version "7.3.1"
+  resolved "https://registry.yarnpkg.com/pouchdb-collate/-/pouchdb-collate-7.3.1.tgz#19d7b87dd173d1c765da8cc9987c5aa9eb24f11f"
+  integrity sha512-o4gyGqDMLMSNzf6EDTr3eHaH/JRMoqRhdc+eV+oA8u00nTBtr9wD+jypVe2LbgKLJ4NWqx2qVkXiTiQdUFtsLQ==
 
-pouchdb-collections@7.3.0:
-  version "7.3.0"
-  resolved "https://registry.yarnpkg.com/pouchdb-collections/-/pouchdb-collections-7.3.0.tgz#3197dfbee8d69c3760229705fc5a73d0c8a896f1"
-  integrity sha512-Xr54m2+fErShXn+qAT4xwqJ+8NwddNPeTMJT4z4k1sZsrwfHmZsWbsKAyGPMF04eQaaU+7DDRMciu2VzaBUXyg==
+pouchdb-collections@7.3.1:
+  version "7.3.1"
+  resolved "https://registry.yarnpkg.com/pouchdb-collections/-/pouchdb-collections-7.3.1.tgz#4f1819cf4dd6936a422c29f7fa26a9b5dca428f5"
+  integrity sha512-yUyDqR+OJmtwgExOSJegpBJXDLAEC84TWnbAYycyh+DZoA51Yw0+XVQF5Vh8Ii90/Ut2xo88fmrmp0t6kqom8w==
 
-pouchdb-errors@7.3.0:
-  version "7.3.0"
-  resolved "https://registry.yarnpkg.com/pouchdb-errors/-/pouchdb-errors-7.3.0.tgz#23bc328108778be0bfe22d69c0df67eab94aeca5"
-  integrity sha512-dTBbIC1BbCy6J9W/Csg5xROgb3wJN3HpbgAJHHSEtAkb8oA45KZmU3ZwEpNhf0AfPuQm4XgW1936PvlDlGgJiw==
+pouchdb-errors@7.3.1:
+  version "7.3.1"
+  resolved "https://registry.yarnpkg.com/pouchdb-errors/-/pouchdb-errors-7.3.1.tgz#78be36721e2edc446fac158a236a9218c7bcdb14"
+  integrity sha512-Zktz4gnXEUcZcty8FmyvtYUYsHskoST05m6H5/E2gg/0mCfEXq/XeyyLkZHaZmqD0ZPS9yNmASB1VaFWEKEaDw==
   dependencies:
     inherits "2.0.4"
 
-pouchdb-fetch@7.3.0:
-  version "7.3.0"
-  resolved "https://registry.yarnpkg.com/pouchdb-fetch/-/pouchdb-fetch-7.3.0.tgz#92b5d3b067d79ecbb9a61cbd52dce36e94dbbf28"
-  integrity sha512-8/lcg8iMDG+GVs1dHNXA4ktJSEpH71dHU3xesMJ25tNQOqfAaaWrkfz9j71ZYDDkveLYE6UjUzl/sDacu2hSjw==
+pouchdb-fetch@7.3.1:
+  version "7.3.1"
+  resolved "https://registry.yarnpkg.com/pouchdb-fetch/-/pouchdb-fetch-7.3.1.tgz#d54b1807be0f0a5d4b6d06e416c7d54952bbc348"
+  integrity sha512-205xAtvdHRPQ4fp1h9+RmT9oQabo9gafuPmWsS9aEl3ER54WbY8Vaj1JHZGbU4KtMTYvW7H5088zLS7Nrusuag==
   dependencies:
     abort-controller "3.0.0"
     fetch-cookie "0.11.0"
     node-fetch "2.6.7"
 
 pouchdb-find@^7.1.1:
-  version "7.3.0"
-  resolved "https://registry.yarnpkg.com/pouchdb-find/-/pouchdb-find-7.3.0.tgz#27291c3d069f4f1a1a4913f63b1a148dac1b345b"
-  integrity sha512-EwhnfyxCAkKf8PG4tfndTTygEmtuz+o1LiZkxfPrflfXA3m1jo1ithib0hwBYtEwEYWuZxH6B8pRZutbLoQCGA==
-  dependencies:
-    pouchdb-abstract-mapreduce "7.3.0"
-    pouchdb-collate "7.3.0"
-    pouchdb-errors "7.3.0"
-    pouchdb-fetch "7.3.0"
-    pouchdb-md5 "7.3.0"
-    pouchdb-selector-core "7.3.0"
-    pouchdb-utils "7.3.0"
-
-pouchdb-mapreduce-utils@7.3.0:
-  version "7.3.0"
-  resolved "https://registry.yarnpkg.com/pouchdb-mapreduce-utils/-/pouchdb-mapreduce-utils-7.3.0.tgz#21d42ea9a376b0fa2e61c8c1ac53f886ffdf3409"
-  integrity sha512-KDVSd+H2r+XWTrQfKWV71SknDDYRjYXoeWs0ZQl3xITHCcTl+fIgqyagg/XN+Zy/U9LeLPGMe2JdgPx9H8lJgw==
+  version "7.3.1"
+  resolved "https://registry.yarnpkg.com/pouchdb-find/-/pouchdb-find-7.3.1.tgz#07a633d5ee2bd731dae9f991281cd25212088d29"
+  integrity sha512-AeqUfAVY1c7IFaY36BRT0vIz9r4VTKq/YOWTmiqndOZUQ/pDGxyO2fNFal6NN3PyYww0JijlD377cPvhnrhJVA==
+  dependencies:
+    pouchdb-abstract-mapreduce "7.3.1"
+    pouchdb-collate "7.3.1"
+    pouchdb-errors "7.3.1"
+    pouchdb-fetch "7.3.1"
+    pouchdb-md5 "7.3.1"
+    pouchdb-selector-core "7.3.1"
+    pouchdb-utils "7.3.1"
+
+pouchdb-mapreduce-utils@7.3.1:
+  version "7.3.1"
+  resolved "https://registry.yarnpkg.com/pouchdb-mapreduce-utils/-/pouchdb-mapreduce-utils-7.3.1.tgz#f0ac2c8400fbedb705e9226082453ac7d3f2a066"
+  integrity sha512-oUMcq82+4pTGQ6dtrhgORHOVHZSr6w/5tFIUGlv7RABIDvJarL4snMawADjlpiEwPdiQ/ESG8Fqt8cxqvqsIgg==
   dependencies:
     argsarray "0.0.1"
     inherits "2.0.4"
-    pouchdb-collections "7.3.0"
-    pouchdb-utils "7.3.0"
+    pouchdb-collections "7.3.1"
+    pouchdb-utils "7.3.1"
 
-pouchdb-md5@7.3.0:
-  version "7.3.0"
-  resolved "https://registry.yarnpkg.com/pouchdb-md5/-/pouchdb-md5-7.3.0.tgz#3a094e45ccce87271530ad3f37d7e82c53562bb0"
-  integrity sha512-wL04QgoKyd/L/TV5gxgcvlEyCJiZoXCOEFJklTzkdza/kBQNJGPH7i0ZhKa7Sb+AvZYoWZHddf1Zgv7rBScHkA==
+pouchdb-md5@7.3.1:
+  version "7.3.1"
+  resolved "https://registry.yarnpkg.com/pouchdb-md5/-/pouchdb-md5-7.3.1.tgz#70fae44f9d27eb4c6a8e7106156b4593d31c1762"
+  integrity sha512-aDV8ui/mprnL3xmt0gT/81DFtTtJiKyn+OxIAbwKPMfz/rDFdPYvF0BmDC9QxMMzGfkV+JJUjU6at0PPs2mRLg==
   dependencies:
-    pouchdb-binary-utils "7.3.0"
+    pouchdb-binary-utils "7.3.1"
     spark-md5 "3.0.2"
 
-pouchdb-selector-core@7.3.0:
-  version "7.3.0"
-  resolved "https://registry.yarnpkg.com/pouchdb-selector-core/-/pouchdb-selector-core-7.3.0.tgz#1860afeec069ba4d5b79583b4b520dd2b643e3a3"
-  integrity sha512-sK/cCrIGeL9ImcMhKGcwa54+bzX7Wv4hhVV+oUW3T1Nasaoxh+Muem1GuA+x1+SbTCE8y37rUg8i6DIOhX51ew==
+pouchdb-selector-core@7.3.1:
+  version "7.3.1"
+  resolved "https://registry.yarnpkg.com/pouchdb-selector-core/-/pouchdb-selector-core-7.3.1.tgz#08245662de3d61f16ab8dae2b56ef622935b3fb3"
+  integrity sha512-HBX+nNGXcaL9z0uNpwSMRq2GNZd3EZXW+fe9rJHS0hvJohjZL7aRJLoaXfEdHPRTNW+CpjM3Rny60eGekQdI/w==
   dependencies:
-    pouchdb-collate "7.3.0"
-    pouchdb-utils "7.3.0"
+    pouchdb-collate "7.3.1"
+    pouchdb-utils "7.3.1"
 
-pouchdb-utils@7.3.0:
-  version "7.3.0"
-  resolved "https://registry.yarnpkg.com/pouchdb-utils/-/pouchdb-utils-7.3.0.tgz#782df5ab3309edd5dc8c0f8ae4663bf0e67962e2"
-  integrity sha512-HH+5IXXWn/ZgVCSnrlydBMYn6MabT7RS7SNoo9w8qVH9efpZSp3eLchw6yMQNLw8LQefWmbbskiHV9VgJmSVWQ==
+pouchdb-utils@7.3.1:
+  version "7.3.1"
+  resolved "https://registry.yarnpkg.com/pouchdb-utils/-/pouchdb-utils-7.3.1.tgz#d25f0a034427f388ba5ae37d9ae3fbed210e8720"
+  integrity sha512-R3hHBo1zTdTu/NFs3iqkcaQAPwhIH0gMIdfVKd5lbDYlmP26rCG5pdS+v7NuoSSFLJ4xxnaGV+Gjf4duYsJ8wQ==
   dependencies:
     argsarray "0.0.1"
     clone-buffer "1.0.0"
     immediate "3.3.0"
     inherits "2.0.4"
-    pouchdb-collections "7.3.0"
-    pouchdb-errors "7.3.0"
-    pouchdb-md5 "7.3.0"
+    pouchdb-collections "7.3.1"
+    pouchdb-errors "7.3.1"
+    pouchdb-md5 "7.3.1"
     uuid "8.3.2"
 
 pouchdb@^7.1.1:
-  version "7.3.0"
-  resolved "https://registry.yarnpkg.com/pouchdb/-/pouchdb-7.3.0.tgz#440fbef12dfd8f9002320802528665e883a3b7f8"
-  integrity sha512-OwsIQGXsfx3TrU1pLruj6PGSwFH+h5k4hGNxFkZ76Um7/ZI8F5TzUHFrpldVVIhfXYi2vP31q0q7ot1FSLFYOw==
+  version "7.3.1"
+  resolved "https://registry.yarnpkg.com/pouchdb/-/pouchdb-7.3.1.tgz#b9393cca6fd752ba345aeb34e4d5d4e2acd805ff"
+  integrity sha512-oanSnM3SD9lPRuVRwEZWVbtWKYluw0q5phT5BXWi2b9Zqd5mJUPWKbKWJu03cDPM9wySmKKd7yfl9O9/eIQ5fg==
   dependencies:
     abort-controller "3.0.0"
     argsarray "0.0.1"
@@ -7415,10 +8490,10 @@ qjobs@^1.1.4:
   resolved "https://registry.yarnpkg.com/qjobs/-/qjobs-1.2.0.tgz#c45e9c61800bd087ef88d7e256423bdd49e5d071"
   integrity sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==
 
-qs@6.10.3:
-  version "6.10.3"
-  resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.3.tgz#d6cde1b2ffca87b5aa57889816c5f81535e22e8e"
-  integrity sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==
+qs@6.11.0, qs@^6.5.1, qs@^6.7.0:
+  version "6.11.0"
+  resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a"
+  integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==
   dependencies:
     side-channel "^1.0.4"
 
@@ -7427,13 +8502,6 @@ qs@6.4.0:
   resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233"
   integrity sha512-Qs6dfgR5OksK/PSxl1kGxiZgEQe8RqJMB9wZqVlKQfU+zzV+HY77pWJnoJENACKDQByWdpr8ZPIh1TBi4lpiSQ==
 
-qs@^6.5.1, qs@^6.7.0:
-  version "6.11.0"
-  resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a"
-  integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==
-  dependencies:
-    side-channel "^1.0.4"
-
 qs@~6.4.0:
   version "6.4.1"
   resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.1.tgz#2bad97710a5b661c366b378b1e3a44a592ff45e6"
@@ -7444,6 +8512,11 @@ qs@~6.5.2:
   resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad"
   integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==
 
+querystringify@^2.1.1:
+  version "2.2.0"
+  resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6"
+  integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==
+
 random-bytes@~1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/random-bytes/-/random-bytes-1.0.0.tgz#4f68a1dc0ae58bd3fb95848c30324db75d64360b"
@@ -7553,7 +8626,7 @@ readable-stream@1.1.14:
     isarray "0.0.1"
     string_decoder "~0.10.x"
 
-"readable-stream@2 || 3", readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0:
+"readable-stream@2 || 3", readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.5.0, readable-stream@^3.6.0:
   version "3.6.0"
   resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198"
   integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==
@@ -7942,9 +9015,9 @@ safe-regex@^1.1.0:
     ret "~0.1.10"
 
 safe-stable-stringify@^2.3.1:
-  version "2.3.1"
-  resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.3.1.tgz#ab67cbe1fe7d40603ca641c5e765cb942d04fc73"
-  integrity sha512-kYBSfT+troD9cDA85VDnHZ1rpHC50O0g1e6WlGHVCz/g+JS+9WKLj+XwFYyR8UbrZN8ll9HUpDAAddY58MGisg==
+  version "2.4.1"
+  resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.4.1.tgz#34694bd8a30575b7f94792aa51527551bd733d61"
+  integrity sha512-dVHE6bMtS/bnL2mwualjc6IxEv1F+OCUpA46pKUj6F8uDbUM0jCCulPqRNPSnWwGNKx5etqMjZYdXtrm5KJZGA==
 
 "safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0:
   version "2.1.2"
@@ -8003,9 +9076,9 @@ semver@^6.0.0:
   integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
 
 semver@^7.3.5:
-  version "7.3.7"
-  resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f"
-  integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==
+  version "7.3.8"
+  resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798"
+  integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==
   dependencies:
     lru-cache "^6.0.0"
 
@@ -8326,9 +9399,9 @@ spdx-expression-parse@^3.0.0:
     spdx-license-ids "^3.0.0"
 
 spdx-license-ids@^3.0.0:
-  version "3.0.11"
-  resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz#50c0d8c40a14ec1bf449bae69a0ea4685a9d9f95"
-  integrity sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==
+  version "3.0.12"
+  resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz#69077835abe2710b65f03969898b6637b505a779"
+  integrity sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==
 
 speech-rule-engine@^3.0.0-beta.6:
   version "3.3.3"
@@ -8409,6 +9482,14 @@ stealthy-require@^1.1.1:
   resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b"
   integrity sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==
 
+stream-browserify@3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-3.0.0.tgz#22b0a2850cdf6503e73085da1fc7b7d0c2122f2f"
+  integrity sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==
+  dependencies:
+    inherits "~2.0.4"
+    readable-stream "^3.5.0"
+
 stream-events@^1.0.5:
   version "1.0.5"
   resolved "https://registry.yarnpkg.com/stream-events/-/stream-events-1.0.5.tgz#bbc898ec4df33a4902d892333d47da9bf1c406d5"
@@ -8532,6 +9613,11 @@ strip-json-comments@~2.0.1:
   resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
   integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==
 
+strnum@^1.0.5:
+  version "1.0.5"
+  resolved "https://registry.yarnpkg.com/strnum/-/strnum-1.0.5.tgz#5c4e829fe15ad4ff0d20c3db5ac97b73c9b072db"
+  integrity sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==
+
 stubs@^3.0.0:
   version "3.0.0"
   resolved "https://registry.yarnpkg.com/stubs/-/stubs-3.0.0.tgz#e8d2ba1fa9c90570303c030b6900f7d5f89abe5b"
@@ -8643,9 +9729,9 @@ tar-stream@^1.1.2:
     xtend "^4.0.0"
 
 tar@^6.1.11:
-  version "6.1.11"
-  resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621"
-  integrity sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==
+  version "6.1.12"
+  resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.12.tgz#3b742fb05669b55671fb769ab67a7791ea1a62e6"
+  integrity sha512-jU4TdemS31uABHd+Lt5WEYJuzn+TJTCBLljvIAHZOz6M9Os5pJ4dD+vRFLxPa/n3T0iEFzpi+0x1UfuDZYbRMw==
   dependencies:
     chownr "^2.0.0"
     fs-minipass "^2.0.0"
@@ -8667,15 +9753,15 @@ tcomb@^3.0.0, tcomb@^3.2.17:
   integrity sha512-di2Hd1DB2Zfw6StGv861JoAF5h/uQVu/QJp2g8KVbtfKnoHdBQl5M32YWq6mnSYBQ1vFFrns5B1haWJL7rKaOQ==
 
 teeny-request@^8.0.0:
-  version "8.0.1"
-  resolved "https://registry.yarnpkg.com/teeny-request/-/teeny-request-8.0.1.tgz#cd9ceb4fec107521daa707db6fae3c01847f0858"
-  integrity sha512-q1yTwqoS5aH1pjur3kBbI+wFpiAswdVirHMB3pYT5x/B0d+ulYdrruB/xVtbTEaxJemHu5aTbh11rsOLlFk/ZQ==
+  version "8.0.2"
+  resolved "https://registry.yarnpkg.com/teeny-request/-/teeny-request-8.0.2.tgz#c06a75101cf782788ba8f9a2ed5f2ac84c1c4e15"
+  integrity sha512-34pe0a4zASseXZCKdeTiIZqSKA8ETHb1EwItZr01PAR3CLPojeAKgSjzeNS4373gi59hNulyDrPKEbh2zO9sCg==
   dependencies:
     http-proxy-agent "^5.0.0"
     https-proxy-agent "^5.0.0"
     node-fetch "^2.6.1"
     stream-events "^1.0.5"
-    uuid "^8.0.0"
+    uuid "^9.0.0"
 
 test-exclude@^5.2.3:
   version "5.2.3"
@@ -8816,13 +9902,14 @@ tough-cookie@^2.2.0, tough-cookie@^2.3.3, tough-cookie@~2.5.0:
     punycode "^2.1.1"
 
 "tough-cookie@^2.3.3 || ^3.0.1 || ^4.0.0":
-  version "4.0.0"
-  resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4"
-  integrity sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==
+  version "4.1.2"
+  resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.2.tgz#e53e84b85f24e0b65dd526f46628db6c85f6b874"
+  integrity sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==
   dependencies:
     psl "^1.1.33"
     punycode "^2.1.1"
-    universalify "^0.1.2"
+    universalify "^0.2.0"
+    url-parse "^1.5.3"
 
 tough-cookie@~2.3.0:
   version "2.3.4"
@@ -8857,9 +9944,9 @@ tslib@^1.11.1, tslib@^1.9.0:
   integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
 
 tslib@^2.3.1:
-  version "2.4.0"
-  resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3"
-  integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==
+  version "2.4.1"
+  resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.1.tgz#0d0bfbaac2880b91e22df0768e55be9753a5b17e"
+  integrity sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==
 
 tunnel-agent@^0.6.0:
   version "0.6.0"
@@ -8898,10 +9985,10 @@ type@^1.0.1:
   resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0"
   integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==
 
-type@^2.5.0:
-  version "2.6.0"
-  resolved "https://registry.yarnpkg.com/type/-/type-2.6.0.tgz#3ca6099af5981d36ca86b78442973694278a219f"
-  integrity sha512-eiDBDOmkih5pMbo9OqsqPRGMljLodLcwd5XD5JbtNB0o89xZAwynY9EdCDsJU7LtcVCClu9DvM7/0Ep1hYX3EQ==
+type@^2.7.2:
+  version "2.7.2"
+  resolved "https://registry.yarnpkg.com/type/-/type-2.7.2.tgz#2376a15a3a28b1efa0f5350dcf72d24df6ef98d0"
+  integrity sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==
 
 typedarray@^0.0.6:
   version "0.0.6"
@@ -8922,9 +10009,9 @@ ua-parser-js@0.7.13:
   integrity sha512-B/VKhEqutx82qFz9+2h0nHqV9EpFktf1R2kuxjLy6FS80fRBCa96YxJcOX04abmu1Twa5GZZWlHyb7qH8Hk8Og==
 
 ua-parser-js@^0.7.30:
-  version "0.7.31"
-  resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.31.tgz#649a656b191dffab4f21d5e053e27ca17cbff5c6"
-  integrity sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ==
+  version "0.7.32"
+  resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.32.tgz#cd8c639cdca949e30fa68c44b7813ef13e36d211"
+  integrity sha512-f9BESNVhzlhEFf2CHMSj40NWOjYPl1YKYbrvIr/hFTDEmLq7SRbWvm7FcdcpCYT95zrOhC7gZSxjdnnTpBcwVw==
 
 uid-safe@2.1.5, uid-safe@~2.1.4, uid-safe@~2.1.5:
   version "2.1.5"
@@ -8992,11 +10079,16 @@ unique-stream@^2.0.2:
     json-stable-stringify-without-jsonify "^1.0.1"
     through2-filter "^3.0.0"
 
-universalify@^0.1.0, universalify@^0.1.2:
+universalify@^0.1.0:
   version "0.1.2"
   resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66"
   integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==
 
+universalify@^0.2.0:
+  version "0.2.0"
+  resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0"
+  integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==
+
 unpipe@1.0.0, unpipe@~1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
@@ -9027,6 +10119,14 @@ urix@^0.1.0:
   resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
   integrity sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==
 
+url-parse@^1.5.3:
+  version "1.5.10"
+  resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1"
+  integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==
+  dependencies:
+    querystringify "^2.1.1"
+    requires-port "^1.0.0"
+
 url-template@^2.0.8:
   version "2.0.8"
   resolved "https://registry.yarnpkg.com/url-template/-/url-template-2.0.8.tgz#fc565a3cccbff7730c775f5641f9555791439f21"
@@ -9097,6 +10197,11 @@ uuid@^7.0.0:
   resolved "https://registry.yarnpkg.com/uuid/-/uuid-7.0.3.tgz#c5c9f2c8cf25dc0a372c4df1441c41f5bd0c680b"
   integrity sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==
 
+uuid@^9.0.0:
+  version "9.0.0"
+  resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.0.tgz#592f550650024a38ceb0c562f2f6aa435761efb5"
+  integrity sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==
+
 v8flags@^3.2.0:
   version "3.2.0"
   resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-3.2.0.tgz#b243e3b4dfd731fa774e7492128109a0fe66d656"
@@ -9298,10 +10403,11 @@ winston-transport@^4.4.0, winston-transport@^4.5.0:
     triple-beam "^1.3.0"
 
 winston@^3.2.1:
-  version "3.8.1"
-  resolved "https://registry.yarnpkg.com/winston/-/winston-3.8.1.tgz#76f15b3478cde170b780234e0c4cf805c5a7fb57"
-  integrity sha512-r+6YAiCR4uI3N8eQNOg8k3P3PqwAm20cLKlzVD9E66Ch39+LZC+VH1UKf9JemQj2B3QoUHfKD7Poewn0Pr3Y1w==
+  version "3.8.2"
+  resolved "https://registry.yarnpkg.com/winston/-/winston-3.8.2.tgz#56e16b34022eb4cff2638196d9646d7430fdad50"
+  integrity sha512-MsE1gRx1m5jdTTO9Ld/vND4krP2To+lgDoMEHGGa4HIlAUyXJtfc7CxQcGXVyz2IBpw5hbFkj2b/AtUdQwyRew==
   dependencies:
+    "@colors/colors" "1.5.0"
     "@dabh/diagnostics" "^2.0.2"
     async "^3.2.3"
     is-stream "^2.0.0"
diff --git a/src/desktop/package.json b/src/desktop/package.json
index 0c336ab6c8e43bab226e50c3d15e7aad508bbbd9..b683d90cd8abcbda970209c5e17cb49cd2a9cc7c 100644
--- a/src/desktop/package.json
+++ b/src/desktop/package.json
@@ -1,6 +1,6 @@
 {
     "name": "sunbird",
-    "version": "5.0.1",
+    "version": "5.1.0",
     "description": "sunbird desktop app",
     "main": "main.js",
     "scripts": {